image-et-son / p600fw

GliGli based Prophet 600 firmware upgrade
10 stars 4 forks source link

Provide way to switch off MIDI to arpeggiator #99

Closed image-et-son closed 2 years ago

image-et-son commented 2 years ago

Some people may want to play normally over the arpeggiator using external MIDI. With the recent change that external MIDI plays into the arpeggiator that is no longer possible. Therefore the user should be able to configure the behaviour.

Proposal: in "local on" mode external MIDI plays on top of the arpeggiator and in "local off" external MIDI plays into the arpeggiator. Reasoning: using the external MIDI to play into sequencer and arpeggiator is most relevant in a) the studio and/or b) when there is something wrong with the local keyboard. In the first case there is no need to support additional free play and in the second case the arpeggiator depends on eternal MIDI anyway.

el-folie commented 2 years ago

Alpha 13.4

I can confirm the above functionality, while there´s still one problem left:

In Local Off mode the internal keyboard sends notes into the arp, which is correct, but additionally also into the synth engine, even without any external MIDI loop. As the notes get sent out the MIDI output, this could cause problems with double triggering the synth engine in a MIDI loop.

image-et-son commented 2 years ago

OK, thanks. The problem is actually more fundamental: the arp itself sends MIDI while playing. If MIDI out is reconnected to MIDI in, then the arp plays into itself. It is impossible to distinguish between MIDI notes from keyboard and notes from running arp. So there are three choices: 1) I interrupt the cycle by not sending MIDI notes from arp in local off mode (easiest but somewhat arbitrary) 2) I undo the change that the arp can be controlled by external MIDI (there might be people who need this) 3) Introduce a local on mode variant which toggles whether external MIDI plays into arp or not and never play external MIDI into arp (and sequencer) in local off mode (obviously the most versatile but more work)

el-folie commented 2 years ago

I needed to think a moment on this. Purely from a logical viewpoint and how I know/remember local off behaviour I´d assume a behaviour like this:

Internal keyboard sends its notes as MIDI notes out of the MIDI port > MIDI loop into a computer and back to the P600 MIDI input port > MIDI gets sent to the internal arp, which plays the notes.

So, method 1. should really do as a simple solution. To avoid double MIDI notes simply different MIDI channels for sending/receiving would do.

Does this make sense or am I overlooking something?

Edit: Maybe the arp just needs a seperate MIDI output channel parameter, so that when receiving MIDI on channel 1 the arp would send MIDI data on channel 2 or something. That way, both the internal keyboard MIDI and the arp MIDI coud still be recorded at the same time in local off mode to different MIDI channels and without double triggering the synth engine.

The main problem is that the arp is being triggered by the internal keyboard in local off mode, it should only get triggered by external MIDI in case of local off, at least to my understanding.

el-folie commented 2 years ago

alpha 13.5: To me it´s perfect now! Arp triggers only via MIDI out>in loop, nice!