not sure whether this sort of thing is possible or whether this is a feature request.
Let’s say I have on stream of rhythm (Note On, Note Off) coming on MIDI channels 1…8, only one note per channel at a time.
Then I also have a chord being held on channel 9.
I want to create an output on MIDI channel 10 that would contain
The notes from channel 1 with the pitch of the first note played in the chord
The notes from channel 2 with the pitch of the second played note of the chord
-…
The notes from channel 8 with the pitch of the eighth played note of the chord
As you can see I am trying to implement an extension of the classic arpeggiator idea that would be based on holding a chord with the rhythm coming from a differemt stream of notes.
One of the properties of this solution would be that unlike a classic arp, the output could contain more than one note at the time.
Hope this makes sense. I am unsure whetrher I can achieve such a thing with MIDIHub or whether I need to go deeper and program my own MIDI processor.
(Incidentally, is there a way to implement a new pipeline by developing say my own dll that MIDIHub Editor would load in. In other words is MIDIHub extensible via some API defined by yourselves ?)
That might be a good starting point to build your own.
Be sure to look at the different modes of Dispatcher; you can use them to dictate whether the channel order is dependent on Note On order or Chord order
(PS. So all your held chords will have exactly 8 notes?)
is MIDIHub extensible via some API defined by yourselves
No, Blokas have not indicated recently that they have any plans for this.
Having said that, firmware updates are full of improvements that have come directly from users such as ourselves.
...
Perhaps the new phrase will be
There are some things Midihub can’t do; for everything else there’s pimidi!
Hi resonotter, thanks for the late night (well it is here) response. Sounds promising !
if I understood the idea correctly, every note pressed down on the chord channel would be sent to one of the rhythm channels.
So I would end up with two Note events on say Channel 1 - one from the rhythm and one from the dispatcher that would hold the pitch. Am still struggling to see how I’d merge those two together ? AFAICS there is no merge of two notes functionality anywhere. Or variables to store pitches in …
Thanks,
Peter
P.S. all chords will have 8 notes to start with, then if this works, I will be thinking on about holding less notes and seeing what that could mean
Late here too @psirca so I may just be talking Never Mind the Sex Pistols..!
The way I see it, you have
a Ch9 Chord Pipeline
it has a Dispatcher so your 8-note chord is split over 8 channels (in some order)
this is followed by 8 Transforms, each picking up a distinct channel and creating a distinct CC whose value holds the note# of that channel’s note
These CCs then map to the Rhythm pipeline where they set the note# of the respective Note On/Off messages on each channel
–again via channel Transforms
(I’m assuming the velocity is set by the Rhythm notes themselves)
That’s the rough shape of it. Care may need to be taken with Note Offs on the Rhythm line depending on the Chord timing (not insurmountable)
(The trickier bit is deciding what do when <8 note chords are held)
I think I get the sex pistols ref, albeit I never listened to them
Thank you for the solution description. I woke up this morning with the exact same idea in my head.
Like you know Blues Brother film, that scene where Dan Akkroyd sees the light in the church and realises that “The Band” is the way to go. Same happened to me, only the light was telling me “CC” !!!
Yes, much more thinking to do, but so far I am satisfied that I can at least partially solve this knot by using MIDIHub. I was thinking of doing it analog way with Eurorack modules, which is doable but very expensive.
Come back with any queries you have and/or your solution preset!
CC indeed; Midihub’s superpower is the ability to use Transform to jump between message types to do exactly what you want.
subtleties
Just realised; not necessary as can use just one to send the mapping CC’s (will still need 8 in the Rhythm line to store the 8 note#'s long enough to get the correct Note Off)
Adapting to say a 6-note chord “populating” 8 Rhythm notes is quite a bit trickier, especially when considering 8-note → 6-note → triad (– “outdated” note information is “left” behind ). (I suspect the ideal solution will be partially dictated by your timing when pressing & releasing the chord in relation to the rhythm)
… mapping CC’s (will still need 8 in the Rhythm line to store the 8 note#'s long enough to get the correct Note Off)
This is very useful, thanks! Another piece of knowledge I was not fully aware of:
setting a CC value is like setting a variable, it persists until it is changed.
A superpower indeed, this almost enables a complete programming environment.
Arrays/lists are still missing but hopefully I can live aithout them …
Alas I left UK after 20 years when Covid hit. Now I am a contractor in Slovenia, working remotely for UK company and hoping to return to London again in not too distant future.
I see that MidiHub is currently avail on SIgnalSounds. Alas if I order it there I will end up paying customs fee and EU VAT on top of any UK VAT
Also I am still not convinced that it would not be better to simply buy a Windows tablet and program a service in C++ or Delphi that would handle what I need.
It may need more work but ultimately I could achieve a lot more without having to shoehorn the logic into pipes.
thanks, not sure about Switzerland <> EU duties ,but now it is back in stock anyways.
A good question ! For me roll my own is going to be more fun in the long run, which gives me an insight into my own motivation, music making takes a backseat to programming
However for 164€ I could have some form of “the arp” up and running in days, so will probably go for it.