Param editor for MPT : VolFX Manager

Started by Paul Legovitch, September 24, 2009, 15:34:16

Previous topic - Next topic

Paul Legovitch

Hi ! I'm Paul, new here.
I love MPT (old version) but it doesn't have a param editor like OpenMPT. So I decided last week I would make one myself to manage IT effects, and now there it is : VolFX Manager.

Update : version 0.4.3 (10/05/2009)

XP version (1Mo) : VolFX Manager 0.4.3

Vista version : VolFX_Manager_0.4.3_Vista.rar

Seven version : VolFX_Manager_0.4.3_seven.zip

I thought some of you may be interested in using it too, it works with ModPlug or OpenMPT, only in the IT format (maximum 256 rows) :



snapshot with MPT :


How to use it ?

* Copy a track in ModPlug Tracker (Ctrl C).
* Click IN : PASTE in VolFX Manager.
* Select the effects you want to edit : v, p, Z(00-7F), Z(80-FF), O, X, V, and draw multiple envelopes on top of the track.
* Click OUT : VOLFX (or hit Enter) and paste the edited track in ModPlug Tracker.

Features :

* editing restrictions : EVERY ROWS/1ST-or-2ND EVERY 2/NOTES ONLY
1ST EVERY 2 (or 3, or 4) is usefull to mix two (or more) effects on the same column.
* other effects can be protected or not.

* Select only one instrument (1-199) to be edited.
* Select only one note (C0-B9) to be edited (usefull for drum-kit instruments).

* Z(00-7F) and Z(80-FF) are considered like 2 independent effects.
* you can select a maximum for Offset.

* Save and load your edited tracks (without the notes). Usefull to quickly try different things.
* the window is resizable and can stay on top, usefull to integrate it inside the ModPlug window.
* F4 for fullscreen.

* Randomize the current effect (1-100 percent).
* Erase the current effect.
* Define a function to set the values of the current effect :
variables :
x = number of the row (0 to max 255)
y = current effect's values (0 to 64 or 0 to 255).

Examples :
40  -->  (all values = 40)
2*y  -->  (double all values)
4*x  -->  fade in)
16*sin(x*pi/16) + 32  -->  (sine centered on the value 32)
y; if x<32 y:=10*sqrt(x) else y:=64--x  -->  (more in the help file)

Update : version 0.4.3 (10/05/2009) :

Right click menu :
* PITCH ENVELOPE : Creates an instrument envelope from the notes and rythm of the current track. This can be used as an arpeggiator for the pitch envelope.
How to use it :
- The maximum number of notes is 12. The length of the envelope is the same as the length of the track.
- You must choose the speed of the envelope (1 is for A01 replay speed and means one row equals one tick, 2 for A02 means one row equal 2 ticks, etc... 6 by default).
- The first note must be on the first row of the track.
- The reference note is C-5, the lowest possible is G#3, the highest is E-6.
- Go to the instrument editor of ModPlug to paste this envelope as pitch.

* STRETCH ENVELOPE : This will stretch the time coordinates of the current instrument envelope contained in the clipboard. All coordinates are rounded to the nearest integer.
How to use it :
- Copy an instrument envelope from ModPlug and select Stretch Envelope in VolFX.
- Choose the ratio you want to apply : from 0 to 1 is faster, more than 1 is slower.
- You can write fractions to be more accurate (5/6, 4/3, etc...).
Example :
If your envelope is suited for A06 replay speed but you want to change to A05, you can write the following ratio : 5/6.


VolFX is made with Game Maker (hence the 1Mo), and I still don't know wether the Vista version works or not (it should). I just finished it, so it's far from fully tested, sorry. Tell me if you find any bug, or if you like it but need other features. (sorry for the engrish).

Great forum by the way, very useful !

psishock

wow, this seems like a great addition for automation purposes, those curves looks really smooth. That you can use mathematical formulas makes things really interesting btw.
I'm as calm as a synth without a player.  (Sam_Zen)

Rakib

Very nice program, how about make built into the modplug source?
And another issue is to do something with cpu consumption, it's very demanding when pasting the notes.
^^

Paul Legovitch

QuoteThat you can use mathematical formulas makes things really interesting btw.
Yes, thanks. I've been messing with it a little now and the only limit is that you can't edit the notes, but that could be easily changed if some of you come with a cool idea/request about formulas to edit the notes. The notes could be changed into a number from 0 (C-0) to 119 (B-9) to be part of a formula... any ideas ?

QuoteVery nice program, how about make built into the modplug source?
That would be great, but I wouldn't know how to do that... Unfortunately I don't know any "serious" programming language (only game maker). If someone want to look into the scripts and add it to modplug, I would be the first to download that ! All algorithm are very simple and the track itself is a text file, easy to edit :
ModPlug Tracker  IT
|C#501v58Z2F
|C#501v54Z35
...

QuoteAnd another issue is to do something with cpu consumption, it's very demanding when pasting the notes.
It didn't really show on my computer, but that would be a game maker issue (possibly a bit CPU demanding). The program is on low CPU priority, but when pasting, the 'while' loop must be consuming quite a lot. I wouldn't know how to change that, sorry.

Aside from that, I will certainly add a little feature that has nothing to do with the effects : create a pitch envelope from a track (13 notes maximum I think) with C5 being the center note. I've seen a really cool module with melodic pitch envelopes, I want to see what can be done with that. I noticed that envelopes (with loops) are very simple text files too. Again, if you have any idea/request about envelopes, please let me know.

About the function option :
I will add some precisions in the Help file about some variables you can use :
n = total number of rows (do not change its value !)
useful to write formulas that will adapt to any track length.
data[x,0] contains the note and the instrument number, (more precisions on the format in the future help file)
data[x,1] = 'v' or 'p' (or 'a', 'b', 'c', ...) : contains the letter of the vol column effect (can be changed only if the current effect is in the FX Column).
data[x,2] = '00'  (the string of the vol column value)
data[x,3] = 'Z' or 'z' (Z for values above 80), 'O', 'X', 'V'  (or A, B, C, ...) : contains the letter of the FX column effect (can be changed only if the current effect is in the Vol Column).
data[x,4] = '00'  (the string of the FX column value)
Also if you need to define a temporary variable in the formula, it can be done like that :
y; var temp_v1; temp_v1:=..... etc.

Saga Musix

QuoteI've seen a really cool module with melodic pitch envelopes, I want to see what can be done with that.

Manwe's 1 channel track? :)

Anyway, nice tool (I didn't try it but it looks promising), it would be indeed nice to have an advanced effect editor in OpenMPT, but that's not one of my priorities at the moment.
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

Paul Legovitch

QuoteManwe's 1 channel track?

Yes, that must be the one (I guess it's famous ?)
It was very impressive and in the end a really good track.

Saga Musix

Well, it's famous because it's 4kb and one channel, and it still sounds good. :)
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

Paul Legovitch

I've uploaded a new version (0.4.3) with two new options regarding envelopes (right click menu) :

* pitch envelope creator from the notes of the track (I use it as an arpeggiator).
* envelope time stretching (I use it to adapt envelopes to the replay speed Axx).
* bug fixed (wrong values of the Z effect).

The pitch envelope can be used as a filter envelope for cool rythmic effects as well.
I'm having a lot of fun with these two options (playing instruments with a midi keyboard) !

XP version (1Mo) : VolFX Manager 0.4.3
Vista version : VolFX_Manager_0.4.3_Vista.rar

QuoteRight click menu :
* PITCH ENVELOPE : Creates an instrument envelope from the notes and rythm of the current track. This can be used as an arpeggiator for the pitch envelope.
How to use it :
- The maximum number of notes is 12. The length of the envelope is the same as the length of the track. The envelope is looped.
- You must choose the speed of the envelope (1 is for A01 replay speed and means one row equals one tick, 2 for A02 means one row equal 2 ticks, etc... 6 by default).
- The first note must be on the first row of the track.
- The reference note is C-5, the lowest possible is G#3, the highest is E-6.
- Go to the instrument editor of ModPlug to paste this envelope as pitch.

* STRETCH ENVELOPE : This will stretch the time coordinates of the current instrument envelope contained in the clipboard. All coordinates are rounded to the nearest integer.
How to use it :
- Copy an instrument envelope from ModPlug and select Stretch Envelope in VolFX.
- Choose the ratio you want to apply : from 0 to 1 is faster, more than 1 is slower.
- You can write fractions to be more accurate (5/6, 4/3, etc...).
Example :
If your envelope is suited for A06 replay speed but you want to change to A05, you can write the following ratio : 5/6.
I now realize (reading this) that OpenMPT is not as limited as ModPlug with the number of envelope segments. I will certainly remove the limitation of 12 notes next time (I guess it will be 120 notes max then).

maleek

I cannot stress how exiting I think this project is. Thanks for making it available to the community!

It would be nice to have it work with the experimental OMPT-format. But you probably have your reasons for making it work with .IT alon.e :)

Paul Legovitch

You're quite welcome ! I'm excited about it myself, it already makes things easier  for me.

The next thing I will try to implement is a conversion of the volume and panning values (v, p, V, X, ...) into volume and panning slides (D, c/d, W, P,...) based on the replay speed of the track and using the difference between 2 values to set the amount of sliding needed to interpolate the two values. This can be a bit tricky though...

Another similar thing I'm planning to do is to be able to draw a pitch curve on the track like any other effect : from -1/2 tone at the bottom of the graph to +1/2 tone at the top (with the possibility to set the maximum value). The curve would be interpreted in E/F portamento effects, again based on the replay speed of the track and using the difference between 2 values of the graph to set the amount of sliding.
The goal is to be able to easily simulate fretless bass slides (things like that), just by drawing a curve after a note (to add more natural musical expression).

By the way, is there some documentation on the formulas used for the sliding effects, in relation with the replay speed ? If any of you have this kind of info, please let me know ! :D

Quote from: "maleek"It would be nice to have it work with the experimental OMPT-format. But you probably have your reasons for making it work with .IT alon.e :)
If you have any kind of request, please don't hesitate to ask for effects, macros, or anything that can be written in a track or pasted from the clipboard. Non-IT effects can be added, any ideas are welcome.

Saga Musix

QuoteBy the way, is there some documentation on the formulas used for the sliding effects, in relation with the replay speed ? If any of you have this kind of info, please let me know !
I fear that is really not the easiest thing to do, since you have to differentiate between amiga slides and linear slides (although linear slides are by far the more common method - well, when using XM/IT at least, MOD and S3M onyl support amiga slides), but for linear slides it's easier to implement because they don't depend on the frequency of the notes, just on speed.
Maybe this can help you: http://eval.sovietrussia.org/wiki/ITTECH.TXT#Mathematics
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

Paul Legovitch

Thanks a lot, this looks very much like what I need !
Quotefor linear slides it's easier to implement because they don't depend on the frequency of the notes, just on speed.
I noticed that by doing a bit of testing, I won't be messing with amiga slides then... ;)
Linear slides work like this:
Final frequency = Original frequency * 2^(SlideValue/768)

I guess this is per tick ?
Ok, I quickly read the document and it provides all information needed, now all I have to do is find the time to work on this :D

Again, thanks.

Saga Musix

it's calculated on every tick but the first. every effect either happens on the first tick or on every but the first tick, and slides belong to the latter fx type.
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

Paul Legovitch

Sorry if I'm a bit tired to understand this...
When you say nothing happens on the first tick it's because the beginning of the tick is the start of the slide so nothing is changed, that's what you mean ? The resulting frequency is what we obtain at the end of each tick after the slide ?
For example :
If the replay speed is A06, the effect Fxx will multiply the frequency by 2^(4*xx/768) 6 times : that's 2^(6*4*xx/768) at the end of a (6-ticks) row.
Is that right ?

EDIT :
I'm wrong apparently... Slide effects do not work at A01. So what you said was just what you said :oops:
At A06, the Fxx effect will result in multiplying the frequency by 2^(4*xx/768) only 5 times.
At A05 only 4 times, etc...
I tried this :
Sliding one tone down in one row should be : freq*2^-1/6
1/6=4*xx/768
xx=32  ->  xx=20 HEX
I tried E20 and it slides the note one tone down at A02 ! That's strange but I guess there are good reasons behind this !

Saga Musix

Paul, you should seriously upgrade to OpenMPT and never trust ModPlug 1.16 when it comes to playback. It plays some many things wrong, including portamentos.
Obviously, the "every tick but the first tick" formula does not apply for speed 1. In that case, the one and only tick is used for tone portamentos of course.
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.