More midi macros

Started by seventhson, June 04, 2007, 18:13:07

Previous topic - Next topic

seventhson

I'd like to have more midi macros (like the title says  :lol: )
Right now there are only 15 slots and since i started to use more effects and synths i also started to use more automation,so basically i'm running out of slots.

pelya

Quote from: "seventhson"I'd like to have more midi macros (like the title says  :lol: )
Right now there are only 15 slots and since i started to use more effects and synths i also started to use more automation,so basically i'm running out of slots.
Maybe instead of SFx/Zxx macros write into pattern editor MIDI macro as-is using some special "note" command, like note-cut or note-off

^^  02         < note cut
C-4 02 v64 SD3 < plain note
MF0 03      10 < set plugin dry/wet ratio to value 10
MF0 81      3F < set plugin param 01 to value 3F
MBK 08      50 < set MIDI CC Panposition to 50

LPChip

Actually, that would work quite well, and give us the ability to use VST's in a much better way.

Midi messages need something to get them triggered, so it would also work for other midi speciffic messages.
"Heh, maybe I should've joined the compo only because it would've meant I wouldn't have had to worry about a damn EQ or compressor for a change. " - Atlantis
"yes.. I think in this case it was wishful thinking: MPT is makng my life hard so it must be wrong" - Rewbs

seventhson

I'm not sure i understand what you guys mean lol

*edit i think i do now*
Wouldn't that just complicate thing?
Not every synth/effect has the same midi message for the different parameters.

pelya

Quote from: "seventhson"
Not every synth/effect has the same midi message for the different parameters.
You're talking that MIDI message will be sent to 1-st effect plugin attached to channel, but not to VSTi or chained effect plugins? Then maybe make it look like this:

C-4 02 v64 SD3 < plain note
MF0 01  83  10 < send MIDI msg "F0F08310" to plugin 01 (set plugin 01 param 03 to 10)

That will require to make volume value column hexadecimal (only with MIDI message!) and set maximum value of instrument column to the number of available plugins, not instruments. And then when you make song cleanup the instrument numbers will shift and everything will glitch.
Edit: There's another option to avoid touching mod command structure so deeply - make three new effect commands - first will choose plugin to edit, second will choose parameter number, and third will set new value of that parameter. Minimum 2 rows per parameter - seems that SFx/Zxx macros are better.

LPChip

Its not possible to use the volume effect for such extensive commands, as the volume command is only one byte.

But I guess such feature would be best to only implement in the MPTM format, and leave the IT alone. That way, you could temper with anytthing.
"Heh, maybe I should've joined the compo only because it would've meant I wouldn't have had to worry about a damn EQ or compressor for a change. " - Atlantis
"yes.. I think in this case it was wishful thinking: MPT is makng my life hard so it must be wrong" - Rewbs

Snu

hmm, i think rewbs was working on a new way of doing macros... i cant remember any details, and i dont know how far he got tho.

my thoughts tho...
what we need (in the mptm format of course) is the ability to customize the effects for vst. for instance, since Oxx does nothing, you could set it to whatever midi CC you want (on a per-instrument basis).
of courese, you would also be able to change the 'normal' commands, like Dxx if that particular vsti doesnt respond to volume.

seventhson

Quote from: "pelya"
Quote from: "seventhson"
Not every synth/effect has the same midi message for the different parameters.
You're talking that MIDI message will be sent to 1-st effect plugin attached to channel, but not to VSTi or chained effect plugins?

Say you used the midi message that has been predefined as filter cutoff and you use it on different synths,on synth A (V-station) it might automate the cutoff but perhaps in synth B (Polysix) it might automate something totally different because the structure is different.
Also the thing about the midi message being send to the first plugin is a good point.

But to be honest i feel you guys are overcomplicating matters here.
Compare it to the request (which was made some time ago) where someone wanted to have more plugin slots,and you would've responded with "yeah i'd like to have more slots,but why not make it modular too,that'd really rock".
It's a good thought and might be really cool but to implement something like that will take so much more time then the easy fix of just adding more slots.
Reprogramming the entire internal structure vs. improving and adding to the existing structure.

rewbs

Quote from: "Snu"hmm, i think rewbs was working on a new way of doing macros... i cant remember any details, and i dont know how far he got tho.
I have a prototype where you can enter special commands (called 'fluctuators') instead of notes, where the volume column represents a plugin slot and the instrument column a parameter number (a bit like Pelya's suggestion but focussed on plugin params rather than generic MIDI messages).

The effect column is used to specify the type of fluctuation to apply to the parameter, e.g. just set it to a specific value, start a slide between 2 values over x rows, start an oscillation etc... Extra parameters can be set with #xx (oscillation has amplitude, frequency etc..). I also had a plan to have a fluctuator type that would map on to hand-drawn envelopes. Basically it is a beefed up rip-off of Psycle's tws/twk commands.

I did this against an old build a long time ago, and never committed it due to compatibility issues, and loads of unsolved questions, like what happens if you cut the 'volume' column from a series of these special commands (which actually represent plugin numbers) and paste it over normal notes, how to handle the pattern transforms like Pelya mentioned (cleanups, mod type conversion etc...).

I also got discouraged by the fact that the feature quickly became cryptic due to lack of flexibility in the pattern editor GUI and the internal file format.. so I decided the first step was to improve those, but never got around to it. :)

I'll try to merge at least a small part of it in as an experimental feature in the next release.

Edit: I also agree that:
- We need a short term solution for being able to automate more than 16 (note: not 15 ;) ) param positions.
- Mapping pattern effects to midi messages on a per instrument basis would be cool.

seventhson

I forgot there were 16  :lol:
The prototype solution sounds quite nice if i understand it correctly.
I had been thinking about something like that too,where one would have multiple slots per plugin,but i didn't know how to explain such a thing and how that should work inside the pattern so i thought it'd be better ask to get the short term fix first.
Thanks for the input guys.  :D

LPChip

Don't we have an Extend command effect for everything?

I believe its #..?

Can't we use that in combination with SFx? to select the plugin?

Eg. SF0 to SFF = 0 to 15.

Then #01 + SF0 to SFF = 1*16 + 0 to 15, resulting in numbers 16 to 31.

You could then have 256*16+16 different numbers.
"Heh, maybe I should've joined the compo only because it would've meant I wouldn't have had to worry about a damn EQ or compressor for a change. " - Atlantis
"yes.. I think in this case it was wishful thinking: MPT is makng my life hard so it must be wrong" - Rewbs

bvanoudtshoorn

Wouldn't it be easier (from a composition point of view) to have "automation channels"? That is, special "channels" which do nothing but control a particular plug's (or plugs') params? Basically, in my idea you would specify the plug, then the param, then the value. Changing the value could be done by immediately setting it (eg =20), by sliding to it (eg /2f), by adding to or subtracting from it immediately (eg +08 or -0c), or by adding to or subtracting from it and sliding to the new value (eg <08 or >0c). Maybe this beautiful ascii-art diagram will help. =)

  +--------+--------------+
  | Chan 1 | Automation 1 |
  +--------+--------------+
01 |C-5 01..| 02 08 =20    |  // Plug 02 Param 08: set to 20
02 |... ....| 02 08 \2f    |  // Plug 02 Param 08: slide to 2f
03 |G-5 01..| 02 08 +04    |  // Plug 02 Param 08: add 4
04 |... ....| 02 08 -20    |  // Plug 02 Param 08: subtract 20
05 |E-5 01..| 04 02 +04    |  // Plug 04 Param 02: add 4
06 |... ....| 04 02 >20    |  // Plug 04 Param 02: add 20 and slide
07 |G-5 01..| 02 08 <30    |  // Plug 02 Param 08: subtract 30 and slide

Saga Musix

Interesting idea... :) but i guess it's a rather hard job to implement this :D
» 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.

Snu

Quote from: "bvanoudtshoorn"Wouldn't it be easier (from a composition point of view) to have "automation channels"? That is, special "channels" which do nothing but control a particular plug's (or plugs') params? Basically, in my idea you would specify the plug, then the param, then the value. Changing the value could be done by immediately setting it (eg =20), by sliding to it (eg /2f), by adding to or subtracting from it immediately (eg +08 or -0c), or by adding to or subtracting from it and sliding to the new value (eg <08 or >0c). Maybe this beautiful ascii-art diagram will help. =)

  +--------+--------------+
  | Chan 1 | Automation 1 |
  +--------+--------------+
01 |C-5 01..| 02 08 =20    |  // Plug 02 Param 08: set to 20
02 |... ....| 02 08 \2f    |  // Plug 02 Param 08: slide to 2f
03 |G-5 01..| 02 08 +04    |  // Plug 02 Param 08: add 4
04 |... ....| 02 08 -20    |  // Plug 02 Param 08: subtract 20
05 |E-5 01..| 04 02 +04    |  // Plug 04 Param 02: add 4
06 |... ....| 04 02 >20    |  // Plug 04 Param 02: add 20 and slide
07 |G-5 01..| 02 08 <30    |  // Plug 02 Param 08: subtract 30 and slide

hmm, so basically, what buzz does?
personally, i dont like that method as much, makes the tracks very spread out.
and and in my opinion it would be rather sloppy/redundant to combine that method and the current one.

bvanoudtshoorn

Well, ideally, it would be the only system - a complete replacement for the current system. Note that I don't anticipate each channel having an automation channel - there could be an arbitrary number of each, arranged in an arbitrary fashion. I know that my example doesn't really show that very well...

Another idea that I had was to have two viewing modes for this "automation channel" - the one that I outlined above, and another, graphical one. Imagine the effect visualiser thinggy over on its side. Because there can be multiple plugs being manipulated, each would have a different colour for its lines. For the sake of clarity, the node boxes could be toggled on and off, and the ones that you're not editing could be semi-transparent. Using a graphical representation like this would make it a lot easier to see at a glance what's happening to the various params you're manipulating during the course of a pattern.

With this graphical mode, you could theoretically resize its width to any arbitrary size (I'm using "arbitrary" a lot, aren't I? =P) That way, you could still see what's happening without spacing out your tracks much. And you could be doing everything in just one channel, over on the left or the right or wherever. I know that you could just pull up the effect visualiser thinggy on the other system proposed, but that has problems when you're manipulating multiple plug params within one channel (for example, changing both the filter cutoff and peak).

As another idea, maybe this "graphical" mode could actually collapse multiple automation channels into one graphical view. That way, you could see all of the automation in just one channel, again stuck over to the side or whatever. That could actually save space, because if you're using exclusively vst's (which I very nearly do), you could just hide the effects column (which I do, most of the time...)