Send Midi CC+PrgCH?

where can I find the plug in after it has been installed ? in the Midi FX ?

Found it and it works . You can control Ostirus as described above … great .

2 Likes

It doesn’t really work .
Does the CC device really only send on the midi channel it is loaded into or always on Midi Ch1?
Nothing works on my external synths. Midi PrgCh does not react either.

In the Ostirus plug in (multimode) only the first channel can be controlled via Midi CC no matter which channel I load the CC device into.

Somehow I don’t understand the midi flow in the Zynthian.

https://wiki.zynthian.org/index.php/Zynthian_UI_User's_Guide_-_Oram#Basic_concepts

@Riban

Would it be possible to tell the Midi CC send device like in Bitwig on which Midi channel the CC data should be sent.
I think this is the problem.

Here is a screenshot from Bitwig where you can tell the device on which channel to send the CC data.
channel it should send. With these settings it is possible to control Ostirus in multimode on several channels.
MSB and LSB must also be activated on the PrgCh device so that you can change the presets.

In the last update I pushed there is a global MIDI channel selector and each CC knob may have its MIDI channel set to this global value or its own individual channel. Program change and bank select are sent on the global MIDI channel.

I have only inplemented MSB bank select. I was pondering implementing a continuous 14-bit bank select from 0 to 32767 but this is likely to be suboptial. Most synths only use MSB so only every 256th value would be relevant and controlling with a touch screen would be a substantial challenge.

Do we want / need a separate control for LSB?

[Edit] I have added seperate controls for MSB & LSB Bank Select. The next question is, should we send Program Change after Bank Select. I think that is uncommon but it is what I have currently implemented. BTW, the current code has quantity of controllers set to 8. I wonder whether we should have a single plugin with a set quantity or several with different quantities. (I haven’t figured out a way with DPF to dynamically change control quantity or parameters.)

Tangentially, is there a way to send MIDI commands to external hardware on selecting a snapshot or subsnapshot? I’d like to be able to configure external gear (maybe other zynthians) on choosing a snapshot.

@riban You are amazing . Unbelievable .

I’ll try it out this afternoon.
I would say 8 controllers are enough.
If you need more you can load another Midifx CC send instance.

Has anyone else here already tested it? Externally with a synth or internally with Ostirus in multimode ?

1 Like

Correct @Kirtai

It would of course be an advantage if the Ccsend plugin would at least send the PrgCH automatically when loading a new snapshot.
So that the appropriate presets are also selected on the external devices for the new song.

Sending MIDI Program Change on snapshot or ZS3 selection would not be implemented in the CC Send plugin. If implemented it would be a core feature. May I request that you make a feature request in the issue tracker? I can see it being advantageous but there are various things to consider, e.g. snapshots and ZS3 can be recalled by Program Change message so you may not want a situation where a PC triggers andother PC. This kind of detail (to be discussed within the issue tracking system) leads to better or more flexible design.

@highsiderr (or anyone) do you have a opinion on whether to automatically send a program change after a bank select?

@Riban

Would it be possible to automatically send PrgCh and Bankselect when charging the CCSend device?

So you could load the snapshot and when the channel is loaded and initialized with the CC Send device, the PrgCh is sent once.

It’s just an idea, I don’t know if this is feasible.

Secondly.

I have no opinion on this. If you do it, you not only switch the bank but also the preset.
It’s certainly not wrong because you also get an acoustic confirmation that you have switched the bank.

I can’t say whether it’s good or bad.

It wouldn’t bother me.

I don’t understand your question. Will you explain the full workflow you envisage?

I will leave it as it is now, i.e. sending a Bank Select will also send a Program Change, unless someone else has a differing opinion.

Yes, do it that way, that sounds good.

Excuse me, I often don’t know how to express myself in English.
Descriptions are difficult for me .

To my question .

When a snapshot (song) is loaded, all channels are rebuilt.
Or am I wrong ?

So if the channel in which the CC send device is located is loaded, the CC device is initialized and the stored values are loaded into it.
Once this has happened, the device should automatically send the PrgCH and the bank select.

This is roughly my idea.

When a snapshot is loaded, unused plugins (not existing in new snapshot) are unloaded and new plugins (not used in old snapshot) are loaded. (This does not happen for LV2 plugins which are all unloaded then loaded due to a technial constraint which may be changed in the future.) After loading the plugins, any presets are applied then audio and MIDI routing is made.

Initially I thought this may result in the state of the Send CC plugin being sent when snapshot is loaded but I suspect that would happen before MIDI routing so the messages would not reach the target devices. It may prove challenging to make that work. I will have a look but may not be able to implement that feature.

FYI I have just pushed a change that adds a configuration parameter (control) to enable / disable sending program change after bank select so the user can now decide their preferred behaviour. It defaults to ON but if users have a preference, I could reverse the default behaviour. I also changed the names of the controls so that we use letters (A, B, C…) to avoid confusion. Users may previously have assumed the controller called “CC 1” send messages with CC number 1.

I think this plugin is pretty much complete. (Or at least I feel that I have spent more time than I should working on it!) So, unless there are any further comments, I will add this to the repository so that users can access it more easily.

Actually, I have another question. This plugin does not benefit from MIDI input. It passes its MIDI input directly to its MIDI output. The only reason it has a MIDI input is so that it appears in the MIDI plugin selector. (Due to the logic used in zynthian.) Should the plugin be put somewhere else, e.g. “Special”? I just encountered an issue where I enabled MIDI output to “Router Feeback” and created a howl-round loop with messages continuously flowing round the loop. This is obviously undesirable and I can’t think of a scenario where this plugin needs to be in a MIDI chain.

Thank you for that. It’s amazing how quickly you implemented this.
You are the master of code.

I’m really looking forward to trying out the latest version of the CCsend device.

I just tested snapshot behaviour. As expected, recalling a snapshot does not trigger CC Send to send a program change but, and difference in its parameters (CC A-F, PC, BS) are sent when recalling a ZS3. This is probably desirable behaviour. When you recall a ZS3 (which is the performance mode state recall) then the CC, Bank and Program are all sent if they differ to the current plugin values so I think this pretty much gives the desired behaviour.

So just the question about where to put this little plugin?

Maybe where the other CC tools are (map to CC, Note to CC and so on).

I can’t think of the name of this category right now.

MIDI tool → Others

That is where it is now but, see my earlier comment about risk of howl-round and the fact that this plugin makes little sense having a MIDI input.

MIDI tool → Generator