[sdiy] MIDI I/O c code..

sleepy_dog at gmx.de sleepy_dog at gmx.de
Fri Mar 20 22:39:20 CET 2020


I only had a handful of devices so far,
but from those, from different manufacturers,  I started to wonder
whether actually any device uses the real note-off thing.
All I ever saw "out there" was note-on with zero velocity.


Am 20.03.2020 um 21:37 schrieb ShedSynth:
>
> Hi all,
>
> is note-off-sent-as-zero-velocity-note-on a thing?
>
> Who would?
>
> Is there a particular instrument/controller that typically behaves
> like this?
>
> Thanks,
>
> Al
>
> (who suspects that his MIDI code hasn’t thought of this)
>
> *From:*Synth-diy <synth-diy-bounces at synth-diy.org> *On Behalf Of
> *Jean-Pierre Desrochers
> *Sent:* 20 March 2020 01:27
> *To:* 'dougall' <dougalli at gmail.com>; eidorian at aladan.net
> *Cc:* Synth-diy at synth-diy.org
> *Subject:* Re: [sdiy] MIDI I/O c code..
>
> >Are you handling running status and note off sent as zero velocity
> note on?
>
> Yes I handle both.
>
> Running status are ignored here,
>
> And I consider both NOTE OFF and NOTE ON with zero velocity
>
> As the end of a note.
>
> *De :*dougall [mailto:dougalli at gmail.com]
> *Envoyé :* 19 mars 2020 21:06
> *À :* eidorian at aladan.net <mailto:eidorian at aladan.net>
> *Cc :* Jean-Pierre Desrochers; Synth-diy at synth-diy.org
> <mailto:Synth-diy at synth-diy.org>
> *Objet :* Re: [sdiy] MIDI I/O c code..
>
> Are you handling running status and note off sent as zero velocity
> note on?
>
> -d
>
> On Fri, 20 Mar 2020 at 11:55, <eidorian at aladan.net
> <mailto:eidorian at aladan.net>> wrote:
>
>     Sorry, I don't have example code for you, but here is some
>     analysis that I hope might help point you in the right direction:
>
>     20MHz / 31,250Hz => ~640 instructions per MIDI data bit, or 6,400
>     instructions per MIDI data byte.  That's quite a lot of
>     instruction execution time between notes, so I'd be checking the
>     efficiency/optimisation of the code.
>
>     How long is it taking to update the analog outputs and do other
>     processing?  If it's updating all 8 CVs via a "slow" protocol like
>     I2C every time it loops then that might be taking a while, and
>     maybe you need a different approach (i.e. only update a CV output
>     when it changes).
>
>     How have you implemented the FIFO?  Do you have locking to ensure
>     the interrupt isn't writing to it while the main loop is updating it?
>
>     Create a debug version that has checks on the FIFO size in the
>     interrupt, and sets an LED on if it overflows, so you can confirm
>     for certainly whether or not that's the problem.
>
>     What I do (with 30+ years of programming experience) is pretend
>     I'm the CPU, and "execute" the code in my head (or on paper if
>     complex) in order to try to work out what unplanned or unexpected
>     things might be happening to cause the problematic behaviour.
>
>     Cheers,
>     A.
>
>     ---
>
>     On 20-03-2020 11:14, Jean-Pierre Desrochers wrote:
>
>         I’m working on a new polyphonic MIDI to CV module (8 voices).
>
>         So far I did my tests with an old PIC16F887 @ 20Mhz micro I
>         had on hand.
>
>         I use a USART interrupt driven c function to ‘catch’ all the
>         incoming MIDI bytes.
>
>         My code is pretty fast, but still, since I only read one MIDI
>         channel (1-16) at the time
>         when I play very fast chords on an external keyboard
>
>         all the notes are read in the incoming queue but sometimes
>
>         I get stuck notes or unread ones..
>
>         Same thing happens when playing MIDI files on Cakewalk SONAR
>         feeding my prototype with  a MIDI cable.
>         The interrupt function grabs each incoming byte and put them
>
>         In a receive buffer of 32 bytes and the main () reads and
>         treats them in a FIFO manner
>
>         Later in the main loop.
>
>         /-Would a 32Mhz micro do a difference in the USART interrupt
>         reading speed ?/
>
>         /-And is 32 bytes long enough for the RxBuffer to handle a 6
>         voices chords ?/
>
>         /-And finaly I checked the web for a ‘decent’ C code examples/
>
>         /  for MIDI reception (MIDI Tx is much easier to implement)
>         with no success..//
>         /‘Obscure’ Arduino libraries all around with no explainations
>         of its inner code.//
>
>         Did anybody use good C code available ?
>
>         JP
>
>         Synth-diy at synth-diy.org <mailto:Synth-diy at synth-diy.org>
>
>         _______________________________________________
>         Synth-diy mailing list
>         Synth-diy at synth-diy.org <mailto:Synth-diy at synth-diy.org>
>         http://synth-diy.org/mailman/listinfo/synth-diy
>
>     _______________________________________________
>     Synth-diy mailing list
>     Synth-diy at synth-diy.org <mailto:Synth-diy at synth-diy.org>
>     http://synth-diy.org/mailman/listinfo/synth-diy
>
>
>
> _______________________________________________
> Synth-diy mailing list
> Synth-diy at synth-diy.org
> http://synth-diy.org/mailman/listinfo/synth-diy


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://synth-diy.org/pipermail/synth-diy/attachments/20200320/d490391e/attachment.htm>


More information about the Synth-diy mailing list