As discussed, a number of drivers need attention in order to work with Vangelis. We need your help to bring more plug & play friendliness to this version. The only ones I know work are(Edit: add more):
APC40 (suggested to be used as reference driver for Vangelis)
Launchpad mk3 and soon (once I get to a pull request) launchpad pro mk2
APC Key 25 mk2 (maybe)
TE OP-1
NanoKontrol 2
Links to original driver dev guidance from Riban & Jofe
I connected mine to my Vangelis machine a couple of days ago. It did not load the driver, and i could not figure out why (since the names where identical). Back from work now, i will give it another try.
(i really want to learn this driver stuff)
I’m struggling with one final (but important) part of the launchpad driver. When switching to note mode, I can’t get the notes to play through the active chain.
I’ve tried looking at the APC40 driver but I’m not even sure if this device has that functionality. It would be useful to have for other launchpad drivers too which appear to only function as launchers.
It should probably be something like below from APC40 driver which is the mute switch. I think the launchpad driver is failing with the chain information part (pos below?).
elif symbol == "mute": if mixbus and chan == 0: return # No control for main mixbus try: pos = self.chain_manager.get_pos_by_mixer_chan(chan, mixbus) - self.scroll_h if 0 <= pos < self.cols: lib_zyncore.dev_send_note_on(self.idev_out, pos, LED_ACTIVATOR, value) except TypeError: pass
Don’t use this. You should never try to “send notes from the driver to the chains” using function calls:
First, notes are not going to be routed adequately and you would need to do bizarre things to receive these notes in your chains
Second, you would have high latency and jitter, as “normal” driver code is not real time code.
Ideally, the events reaching the chains should never leave the jack’s Real Time stream. You have 2 different ways to manage this:
The simple way is using the “unroute_from_chains” class var:
unroute_from_chains = 0b0000001000000000 # Unroute MIDI channel 10
or
unroute_from_chains = 0b0000000000001111" # Unroute MIDI channels 0 to 3.
This allow to set the MIDI channels you want to unroute from the chains when your driver is loaded, so the events on these MIDI channels only reach your driver. By default, ALL MIDI channels will be unrouted, so no events reach your chains.
You will find several examples in the current drivers. For instance, worlde_mini_moder.
The powerful (but more complex) way is using midiproc. Basically, the “midiproc_task” is a real-time process that is called by the Jack Audio daemon in real time It’s better explained in this thread;
and you will find some interesting examples in the drivers folder (base_moder) or inside the “examples” subfolder.
After reading in the other thread it looks like @brumby had the same problem with the push 1 as I’m having. That problem is that all modes output on midi channel 1. The launchpad driver has been setup with 4 modes similar to Oscar’s APC Key 25 driver.
I can’t see how the push 1 was resolved though. So can I send only grid pads’ note on/off messages via midiproc to midi channel 2 and leave everything else untouched on the (default) midi chan 1? Ideally, it only happens when note mode is active and switches off in the other modes.
I gave it a try but it’s still outputting everything to chains.
I put the disable_note_filter into each mode switch area except for note mode which has the enable function.
There were a couple of things that vscode flagged like filter_enabled = which I set to 0 and the self.filter_enabled.value: changed to self.filter_enabled:
The jack import also was underlined as if it was not available.
I read the mididings docs a little but still not quite sure what to check next.