MIDI enhancements

Good ideas, proposals, enhancements.
Post Reply
mctom
F8 - Hawthorn
Posts: 21
Joined: Sat Oct 06, 2018 1:19 pm
Location: Gdansk, Poland

MIDI enhancements

Post by mctom » Sun Oct 14, 2018 4:24 pm

I've decided to stuck it all in a single thread since there's a bunch of features I think of, but they're all somehow related to each other.

So first of all: I've got Launchpad Mini I wish to use as a loop controller. I also have a M-Audio keyboard that I'd like to use for recording MIDI sequences and then loop them in Giada. Aside from audio looping of course.

1) First thing first - I think we should consider separating MIDI inputs for control and channels input.
The reason is simple - I don't want to get my "loop control controller" actions captured on my channel. Sure, I could filter out whatever channel Launchpad is using, but I'd rather be able to use Chn1 on my keyboard.
If someone wishes to use a single controller for both, let them be free to pick the same controller in both settings.
The same applies to outputs - Separate lightning output, and channels output, so I can safely send lightning messages back to Launchpad, and feed synths with channels content.

2) MIDI controller shortcuts, or key combos.
I imagine using my Launchpad in a way that a single button means single channel. Pressing a button should start or stop a channel, obvious. However, in order to mute, solo, arm, kill or free a channel, a global function keys would be used.
Now there are two options, both with pros and cons.
a) While holding a function key, press the channel buttons to trigger an action on them. Just like pressing Ctrl+A->C->V to select-copy-paste without even releasing Ctrl key. The drawback is rather complicated volume and speed control, requiring pressing a volume function button, channel button, and operating a knob at the same time.
b) pressing function button while holding desired channel buttons. The pro of this solution is perfectly synced function processing for multiple channels. Also volume and speed control using separate MIDI knobs would be far easier - just turn a knob while holding a channel button. The major drawback of this solution is that the normal loop start/stop action would have to be moved to key-release event, rather than key-press like it is now. That might be unacceptable to some musicians.
I think that this feature could easily live in peace and harmony with currently existing "per channel" MIDI binding.

3) (I'll use word "Chn" for MIDI protocol channel, and "Channel" for Giada channel)...
MIDI Channels should be able to capture and play notes on any Chn. For now, sure, I can capture notes from any MIDI Chn, but then Giada doesn't remember which Chn was it. I think that ideally, Giada's default behavior should be to record anything it catches on its MIDI input, and then repeat it exactly the way it was. Chn filtering on input, or converting all channel contents to a specified Chn on an output, should be optional.
By the way, why is MIDI Channel Output disabled by default? Why would anyone do that? :roll:

4) Lightning output enhancements
I see it this way: If any channels are in solo, all the rest should be dimmed (simple Launchpads have 3 color intensities to pick from), or turn, say, orange. Muted channel should be dimmed itself unconditionally, just like Giada processes both mute and solo applied to the same channel.
For now, Giada sends "playing" lightning message on each beat #1. This essentially means that a single button on Launchpad can either show waiting/playing/stopping/stopped status on a given channel, because "playing" message eventually will overwrite any solo/mute lightning.
To achieve this, I think that:
a) solo should be handled as mute on any other playing channel (probably just like the engine does), or introduce a new event for that purpose, say "playing_inaudible"
b) mute should have higher "priority" than playing. More precisely, the lightning priority should go like this: stopped, stopping/waiting, mute, solo, playing_inaudible, playing.
c) giadamap file should allow more than one message per event (honestly, I just assume it doesn't),
d) all giadamap settings should be optional (I guess they are, but just to be sure..)
e) drop "playing" message on each beat #1? Unless there's any reason to keep it.

5) Giadamap file.
I bragged about it here in greater detail, but seriously, I think this is worth mentioning here. ;) Pre-assigning 64 Channels to 64 Launchpad buttons even before the channels are created sounds like a great convenience to me. I will provide an extended giadamap for Launchpad, don't you worry... :lol:

To wrap up my enormous wishlist, my last wish is for myself to help making it reality.. I have no experience with C++ in particular, I am an AVR ASM junkie, but maybe I'll be able to implement and test simpler ideas. I will provide giadamaps for Launchpads, that's for shizzle.
I really want this project to become the best open source looper the world has ever seen. And it's getting there!

Thanks for reading, any comments are well appreciated.

mctom
F8 - Hawthorn
Posts: 21
Joined: Sat Oct 06, 2018 1:19 pm
Location: Gdansk, Poland

Re: MIDI enhancements

Post by mctom » Wed Oct 24, 2018 2:33 pm

Okay, no hype whatsoever... :D

I've done some of that work just because it turns out that I know some C++ :D And I really needed some of those. So, 2a, 4a and 4d are finished and working. I'll post a demo sometime.

I took a liberty to cross out the ideas that frankly were not that good. ;)

Firing a channel on key release was definitely counter-intuitive, so I dropped 2b.
4b is nonsense, I didn't have enough insight about how Giada works under the hood.
4c is not really that necessary. I looked through Novation and Akai programming manuals and didn't find a good reason for that.
4e is not really a problem when 4a has been introduced.

5 is stupid because instead of pre-assigning keys to nonexisting channels, what I actually need are... template projects with pre-assigned controller buttons.
However, I still feel that a custom midi command sent on each beat is not that bad idea.

Post Reply