| I too recommend and use ctrl7 whenever possible (instead of midiin). I
reserve midiin for keyboard input, and opt for ctrl7 with buttons when
possible.
Art Hunkins
----- Original Message -----
From: "David Akbari"
To:
Sent: Tuesday, February 14, 2006 2:21 PM
Subject: Re: [Csnd] midiin issue
> Hi Ben,
>
> Perhaps you can simplify your thought process by instead using the
> ctrl7 opcode.
>
> The first block could then be
>
> instr 70 ;midi switchboard
>
> knob1:
> kval1 ctrl7 1, 81, 0, 13
> gkosc1freq = kval1
>
> FLsetVal 81, gkosc1freq, giosc1freqhandle
>
> ...
> and so on.
>
> A couple of things that I might suggest haven trodden this path before.
>
> 1) Try to avoid using FLTK widgets whenever possible. I know it sounds
> counterintuitive, but they always seem to crash Csound when you say,
> for example try to control button widgets with program change messages.
> There are several other things such as that that seem to contribute to
> the instability of FLTK.
>
> 2) midiin seems to work most efficiently when encapsulated inside of a
> UDO, see
> http://www.csounds.com/udo/displayOpcode.php?opcode_id=71
> http://www.csounds.com/udo/displayOpcode.php?opcode_id=69
> http://www.csounds.com/udo/displayOpcode.php?opcode_id=68
> http://www.csounds.com/udo/displayOpcode.php?opcode_id=65
> http://www.csounds.com/udo/displayOpcode.php?opcode_id=74
>
> for more examples. Note that the last one of those UDO's actually takes
> the same formula for scaling as found in the source code for ctrl7, and
> thus can be quite useful when used in combination with raw midiin.
>
> In general I would suggest to start looking towards TclCsound for GUI
> display purposes. It seems much more robust and stable than the current
> FLTK implementation, as I've been having extreme difficulty making
> stable, cross-platform patches using FLTK, but not at all with
> TclCsound.
>
>
> -David
>
> On Feb 14, 2006, at 1:57 PM, Ben McAllister wrote:
>
> > Another realtime performance issue I'm trying to get around:
> >
> > I'm using an external midi controller to send midi controller change
> > messages to csound. My approach has been to have a single instrument
> > (like an event handler in UI programming) always on, monitoring the
> > midiin ugen for messages, and handling them conditionally, like this:
> >
> >
> > instr 70 ;midi switchboard
> > kstatus, kchan, kdata1, kdata2 midiin
> > ;
> > ; cc msgs from b-control
> > ;
> >
> > knob1:
> > if kstatus != 176 kgoto end
> > if kdata1 != 81 kgoto knob2
> > gkosc1freq = (kdata2 * .10236)
> >
> > FLsetVal kdata1,gkosc1freq, giosc1freqhandle
> > knob2:
> > if kstatus != 176 kgoto end
> > if kdata1 != 82 kgoto knob3
> > gkosc1shape = (kdata2 * .00787)
> > FLsetVal kdata1,gkosc1shape, giosc1shapehandle
> > knob3:
> > if kstatus != 176 kgoto end
> > if kdata1 != 83 kgoto knob4
> > gkosc1lev1 = (kdata2 * .00787)
> >
> >
> > etc...
> >
> >
> > The docs for midiin state:
> > "kstatus -- the type of MIDI message. Can be:
> > 128 (note off)
> > 144 (note on)
> > 160 (polyphonic aftertouch)
> > 176 (control change)
> > 192 (program change)
> > 208 (channel aftertouch)
> > 224 (pitch bend
> > 0 if no MIDI message are pending in the MIDI IN buffer"
> >
> > The problem is, the last message sent remains in the MIDI IN buffer,
> > even after it's read. I never get '0' back for status. For example,
> > I would expect a note-on message to appear once in the buffer. Once
> > I've read it via midiin, I should get 0 back until another message is
> > sent from the midi controller.
> >
> > This makes it difficult to do many things with control changes - if I
> > want to call another instrument given a controller change, that
> > instrument will be called repeatedly, at krate, until another message
> > turns up in the buffer.
> >
> > I don't see any ugen I should be using to clear the MIDIIN buffer
> > proactively, but maybe I'm missing something. What I'm encountering
> > may be a portmidi issue, I'm not sure.
> >
> > Thoughts and feedback appreciated.
> >
> >
> > b
>
> --
> Send bugs reports to this list.
> To unsubscribe, send email to csound-unsubscribe@lists.bath.ac.uk |