kallaballa / MidiPatch

MidiPatch is a scriptable and modular real-time software synthesizer using the PatchScript API
GNU Affero General Public License v3.0
12 stars 2 forks source link

MIDI Sequencing / Arpeggiator support #74

Open seclorum opened 4 years ago

seclorum commented 4 years ago

I can port the arpeggiators from the MagicShifter3000 project pretty easily to MidiPatch - only issue is how to handle MIDI I/O routing in the context of everything else.

Once the arp is in place, a step sequencer should be an obvious, fairly cheap next step ..

seclorum commented 4 years ago

Question is whether we should implement the MIDI ARP/Sequencer features in a separate daemon which communicates/gets commands from MidiPatch, or if it should be integrated into MidiPatch itself. Something to talk about next time we get a chance to review project architecture...

kallaballa commented 4 years ago

How would MIDI device allocation work in a daemon scenario? Can we allocate the same device twice? Also, if we opt for a daemon scenario, aren't there plenty of sequencers already out there we could use? How does your sequencer compare to other implementations?

seclorum commented 4 years ago

An onboard Arp could be routed thus:

a) to an individual onboard voice b) to multiple onboard voices, single arp c) to multiple onboard voices, independent arps (sync'ed) d) to external devices over MIDI

This requires consideration re: midi port/channel assignments and mixing of events across a buss.

Arps are useful during synth patch development since they give a base input line/theme from which to program new sounds - you can fire up an Arp in musically pleasing ways and then proceed through the patch-creation workflow - sort of like adding a 'third hand' to the session.

With regards to using other sequencers from the distro: I guess this is a scope issue. "Should MidiPatch have seq/arp features or should it wrap an existing sub-system?".

The MS3000 Arp is a decent arp engine, which can be easily extended with new patterns, editing, etc. It can do pattern select, octave range, hold/release, and so on - fairly standard Arp features.