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
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
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
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@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@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users