[chuck-users] Expanding MIDI support

Mario Buoninfante mario.buoninfante at gmail.com
Tue Jul 2 17:29:56 EDT 2019


btw, I quickly tried sending SysEx from ChucK on MacOS Sierra 10.12.6 and
this seems to work, but it also sends spurious bytes when the msg is not a
multiple of 3.
Here's few lines of code I quickly put together to test this. I'll try on
Linux and it would be great if anybody could try on Windows as well.
On Mac I used MidiMonitor to check the MIDI out, on Windows a virtual port
and something like Pd or Max should do the trick.
No luck in receiving SysEx though, but I don't give up :P


//-------------------SYSEX-TEST-------------------
MidiOut m_out;
MidiMsg msg;

m_out.open(0); // select MIDI out

while( true )
{
    sysex_gen() @=> int buffer[];
    for( 0 => int c; c < buffer.size(); c++)
    {
        chout <= buffer[c] <= " ";
    }
    chout <= IO.nl();
    send_sysex( m_out, msg, buffer );
    2::second => now;
}

function int[] sysex_gen()
{
    Math.random2( 6, 128 ) => int length;
    int buffer[ length ];
    240 => buffer[0];
    247 => buffer[ length - 1 ];
    for( 0 => int c; c < length - 2; c++ )
    {
        Math.random2( 0, 127 ) => buffer[ c + 1 ];
    }

    return buffer;
}

function void send_sysex( MidiOut out, MidiMsg msg_out, int sys_msg[] )
{
    for( 0 => int c; c < sys_msg.size(); c++ )
    {
        if( c % 3 == 0 )
        {
            sys_msg[c] => msg_out.data1;
            if( c == sys_msg.size() - 1 )
            {
                0 => msg_out.data2;
                0 => msg_out.data3;
                out.send( msg_out );
            }
        }
        else if( c % 3 == 1 )
        {
            sys_msg[c] => msg_out.data2;
            if( c == sys_msg.size() - 1 )
            {
                0 => msg_out.data3;
                out.send( msg_out );
            }
        }
        else if( c % 3 == 2 )
        {
            sys_msg[c] => msg_out.data3;
            out.send( msg_out );
        }
    }
}

On Tue, 2 Jul 2019 at 22:15, Michael Heuer <heuermh at gmail.com> wrote:

> Great, thanks!  I'll start a new thread asking how best to use it!
>
>    michael
>
>
> On Jul 2, 2019, at 3:53 PM, Mario Buoninfante <mario.buoninfante at gmail.com>
> wrote:
>
> Nice :)
> MIDI clock works fine now (ChucK 1.4.0.0). There's a flag you can use to
> activate it that I don't remember whether is ON or OFF by default, but
> anyway is there.
> Like I said there's a flag for SysEx as well, but that doesn't seem to do
> much.
>
> Cheers,
> Mario
>
> On Tue, 2 Jul 2019 at 21:43, Michael Heuer <heuermh at gmail.com> wrote:
>
>> I'd say go for it!  It would be nice to have proper SysEx and MIDI clock
>> support in ChucK.
>>
>> I recall there was some progress on the latter; did I read somewhere that
>> clock messages are available via RtMidi but simply disabled in ChucK for
>> performance reasons?
>>
>>    michael
>>
>>
>> > On Jul 2, 2019, at 3:23 PM, Mario Buoninfante <
>> mario.buoninfante at gmail.com> wrote:
>> >
>> > Hi everybody,
>> >
>> > One month ago I got started with an Open Source project whose goal is
>> to support some hardware on various platforms/environments/programming
>> languages (Pd, SC, Processing, Lua, Python, JS, etc.) and of course my goal
>> is to have ChucK on board as well (hopefully I'll share more info about the
>> project in the next months).
>> > The only issue I've got at the moment is that I need to talk SysEx with
>> these gears, and as you know ChucK doesn't deal with SysEx.
>> > I really care a lot about this project, mainly because it's open source
>> and because will involve different communities (Pd, SC, JS, etc.) and would
>> really love to include ChucK in this since is the tool I'm mainly using to
>> experiment and make music and I truly believe has got something more than
>> other languages/environments.
>> > Thus, since I'm not a C++ person, I decided I'll ask a colleague of
>> mine (a C++ programmer) to help out with this, also because he'll get
>> involved in the project for other reasons anyway.
>> > But before doing this I wanted to ask the developers and all those who
>> are involved in maintaining ChucK, if there's any particular reason why
>> SysEx messages are not currently supported.
>> > From what I can see in the code (and after running few experiments)
>> with the current architecture SysEx messages could be sent out (3 bytes at
>> time though) but with a lot of limitations (didn't manage to receive SysEx
>> messages though).
>> > Also, I think RtMidi doesn't gate us from doing that (there's just a
>> flag used to 'turn on/off' SysEx communication).
>> > But it seems like there's nothing in place that allows to deal with
>> MIDI messages bigger than 3 bytes and, from a "non-C++ person", it seems
>> one way to fix this could potentially be to add a SysExIn/SysExOut and a
>> SysExMsg classes that deal with these kind of MIDI messages.
>> > Of course there could be a lot of things I'm missing here, and that's
>> why I'm asking you for some help, even before asking for other help :)
>> > Just to make sure there's nothing that prevents people from adding this
>> functionality.
>> > Then, last but not the least, ChucK is an open source project and I
>> love it. There are a lot of people working with it, and I was wondering
>> whether or not this would be a feature people are after.
>> > Basically I'd like to hear from the community before even getting
>> started with this.
>> >
>> > I hope this makes sense. Looking forward to hearing from you guys :)
>> >
>> > Cheers,
>> > Mario
>> > _______________________________________________
>> > chuck-users mailing list
>> > chuck-users at lists.cs.princeton.edu
>> > https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>>
>> _______________________________________________
>> chuck-users mailing list
>> chuck-users at lists.cs.princeton.edu
>> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>>
> _______________________________________________
> chuck-users mailing list
> chuck-users at lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>
>
> _______________________________________________
> chuck-users mailing list
> chuck-users at lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cs.princeton.edu/pipermail/chuck-users/attachments/20190702/ed7ff69f/attachment-0001.html>


More information about the chuck-users mailing list