Dplug
Dplug copied to clipboard
MIDI Output
Sometimes requested by prospective Dplug users:
- [x] VST2 (supported: everything except SYSEX)
- [x] VST3 (supported: Note on, Note Off, CC, and Pitch Bend)
- [ ] AUv2 doesn't really send MIDI out
- [x] LV2 (supported: everything except SYSEX)
- [x] AAX (Note on, Note off, Pitch bend, Polyphonic aftertouch, Bank select, Program change, Channel aftertouch, no CC?)
- [x] API design ok
- [x] priority queue (generic client holds a pqueue, format clients empty that and send in bulk)
- [x] MIDI queue needs to be growable... so that any number of message can be sent or received
- [x] not too sure about clearing the MIDI queues on reset
- [x] buffer-splitting complicates things! Since enqueued MIDI message have an offset relative to sub-buffers, but as output they need an offset relative to full buffer. If one pop output MIDI message just after each sub-buffer it will be OK, this needs another temporary buffer of course. (EDIT: no, just accumulating messages in a generic client's buffer)
- [x] Eventually, add a nice way to (synchronizedly) add MIDI to be output as quick as possible by the plugin, from the UI. In VST3, those messages will need the "Live" flag. (or at least a zero offset) (EDIT: for now, Live flag unused)
- [ ] a bit of testing on macOS
- [x] change website and README.md
- [x] test in Pro tools + Windows => unable to route MIDI in that host, seems to work
Hello, I would love to have a midi out solution in dplug !!! when do you may work on such possibility ? thx !
@rstephane no SYSEX ok with you?
MidiQueue, used to sanitize MIDI input, can be reused as is to sanitize the user MIDI output (and allow out-of-buffer note off for instance).
@rstephane no SYSEX ok with you?
Yes, I don't need SYSEX :) jsut midi out ;-) almost ;-)
I did not think of it :( I would need 8 full midi message at the smae time (that represent 8 tracks of 8 notes). tell me if I a not clear :)
Le jeu. 27 janv. 2022 à 17:19, p0nce @.***> a écrit :
@rstephane https://github.com/rstephane what is the maximum amount of MIDI message you possibly would want to send in a 400ms buffer?
— Reply to this email directly, view it on GitHub https://github.com/AuburnSounds/Dplug/issues/577#issuecomment-1023398375, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABJK2BUGO37MNVMEVXP3RWDUYFWBXANCNFSM5C26RJQQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you were mentioned.Message ID: @.***>
OK I have everything I need :)
LV2 probably needs a new output port lv2_events_out
.
Example from whalesynth:
lv2:port [
a lv2:OutputPort, atom:AtomPort ;
atom:bufferType atom:Sequence ;
lv2:index 4 ;
lv2:name "Events Output" ;
lv2:symbol "lv2_events_out" ;
rsz:minimumSize 2048
] ;
In Cubase / FLStudio and Studio One + Windows, currently putting an Arpejoe in VST2 or VST3 tends to do the following: all sound is off, even if the MIDI effect is on another track. Not sure what happens.
How Chtulu works (VST2 + Reaper): (same for Kirnu)
- it is a VSTi, it takes MIDI as input
- it can generate its own audio (as a normal synth) or bypass
- additionally, it can output MIDI (turn note into arpeggios)
How MidiShaper works (VST2 + Reaper):
- same, takes MIDI input, MIDI output can go to another device for listen
- not classified as "VSTi" but "VST" in reaper
In order to be a MIDI effects with a chance to work in hosts, one need to:
- take MIDI input, even to do nothing
- bypass incoming audio N-N
- (optional) it's best to have a way to emit sound over this bypass
- perhaps must declare
isSynth
?
For some reason, I've not seen those fake "MIDI effects" in VST3 format.
OK now that Arpejoe example does midi in, audio bypass, it works good on Windows. It is classified as "VST" not "VSTi" in most hosts.
Tests so far:
- [x] test AAX: didn't manage to route MIDI in Protools, but seemingly no blocker. Perhaps it works.
- [x] test Live + Windows => VST2 and VST3 OK, it is like in https://www.youtube.com/watch?v=5-jiYR3e9Kk you have to use a separate MIDI track and route the MIDI because unlike Bitwig and REAPER a MIDI track doesn't accept a VST plugin first in the track
- [x] Cubase + Windows: VST2 and VST3 OK, even with effect on same track as instrument. Works well even. Having a MIDI effect generates notes for the track it is in looks strange, but it works with a special processing mode.
- [x] test FLStudio + Windows => works in VST2 and VST3. FLStudio doesn't display paramters for such a VST3 without UI...
- [x] test Studio One + Windows => OK in VST2 and VST3, needs to go on a separate tracks.
- [x] test Bitwig + Windows => OK, VST2 and VST3. Super easy, best support for this kind of things thanks to no separation of MIDI vs audio tracks. Great UX!
- [x] test REAPER + Windows => yes, everything works flawlessly in VST2/VST3/LV2, can process MIDI with a MIDI effect also
=> Bitwig and REAPER have best model for tracks
TODO implement AUv2
- [ ]
kAudioUnitProperty_MIDIOutputCallbackInfo
- [ ]
kAudioUnitProperty_MIDIOutputCallback