Just a question, before I run off and duplicate anything. I use a lot of outboard MIDI stuff and am very interested in using chuck for glue and MIDI generation. As far as I can see, MIDI handling in chuck is fairly clumsy, particularly for MIDI generation. Is anyone currently working on developing a more friendly interface for this or is it worth taking some time over. Also, is the general push for this sort of thing to be put in core ChucK or to sit off to one side? B> -- Packrat (BSc/BE;COSO;Wombat Implementor) Nihil illegitemi carbovndvm
Hi Bruce!
Just a question, before I run off and duplicate anything. I use a lot of outboard MIDI stuff and am very interested in using chuck for glue and MIDI generation. As far as I can see, MIDI handling in chuck is fairly clumsy, particularly for MIDI generation.
Although the days of bit-wise MIDI op days of chuck-1.1 are gone (probably a good thing), things could certainly use some improvements. What, in particular, do you have in mind? If you can send some pseudocode that demonstrates the desired API functionalities, we can go from there.
Is anyone currently working on developing a more friendly interface for this or is it worth taking some time over. Also, is the general push for this sort of thing to be put in core ChucK or to sit off to one side?
To my knowledge, no one is working on the MIDI interface at the moment (please correct me if I am wrong). Depending on the generality of the interface, it could go either core or as a plug-in or library of some sort. Of course, the plug-in architecture is still not here yet (at least undocumented), but we will be working on that. Thanks! Ge!
On Sat, Jul 29, 2006 at 01:13:24PM -0400, Ge Wang wrote:
Hi Bruce!
Just a question, before I run off and duplicate anything. I use a lot of outboard MIDI stuff and am very interested in using chuck for glue and MIDI generation. As far as I can see, MIDI handling in chuck is fairly clumsy, particularly for MIDI generation.
Although the days of bit-wise MIDI op days of chuck-1.1 are gone (probably a good thing), things could certainly use some improvements.
What, in particular, do you have in mind? If you can send some pseudocode that demonstrates the desired API functionalities, we can go from there.
Well, unless I'm missing some vast cornucopia of MIDI functionality, the following would probably be nice. midinum_from_name(namestr) convert for eg a3 into a midi note number And the following methods for the MidiOut object: set_default_channel(channelnum) set default channels used by other commands noteon(notenum) noteon(notenum, velocity) noteon(notenum, velocity, channel) noteoff(notenum) noteoff(notenum, channel) noteoff_velocity(notenum, velocity) noteoff_velocity(notenum, velocity, channel) controller(controllernum, value) controller(controllernum, value, channel) program_change(prognum) program_change(prognum, channel) aftertouch(note, level) aftertouch(note, level, channel) channel_pressure(level) channel_pressure(level, channel) pitch(value) pitch(value, channel) alloff() alloff(channel) And a safe midi sending object (or an option to track the notes sent to keep track of all the notes which have been turned on but not off and then generate approprpriate noteoffs for them on closure, or calling of a cleanup function. I realise that this seems like a lot of extra stuff, but it seems like a sane starting point for gtting convenient access to midi output. When I start looking at the midi input, I'm sure that'll inspire something similar.
To my knowledge, no one is working on the MIDI interface at the moment (please correct me if I am wrong). Depending on the generality of the interface, it could go either core or as a plug-in or library of some sort. Of course, the plug-in architecture is still not here yet (at least undocumented), but we will be working on that.
I'd hope that basic MIDI protocol support would be in the core midi objects, things to talk to specific hardware should be in libraries. B> -- Packrat (BSc/BE;COSO;Wombat Implementor) Nihil illegitemi carbovndvm
On Mon, Jul 31, 2006 at 12:10:36AM +0800, Bruce Murphy wrote:
On Sat, Jul 29, 2006 at 01:13:24PM -0400, Ge Wang wrote:
What, in particular, do you have in mind? If you can send some pseudocode that demonstrates the desired API functionalities, we can go from there.
Well, unless I'm missing some vast cornucopia of MIDI functionality, the following would probably be nice.
And even if I have missed the implementation of it I've polished my ChucK writing up a bit by implementing everything I wanted in the attached public class file. I should probably clean it up a little more and there are some other functions I have in mind, but it should be useful for anyone using MIDI output in ChucK right now. It would be useful to have in the main distribution once it's finished. In particular it implements: * a settable default channel for MIDI comms * all MIDI commmands, including note on and off with velocity, aftertouch, controllers, channe pressure, pitch wheel, program change. * bank and subbank select. * polymorphic functions with sensible defaults where useful. * note counting (on by default), so an instance can send noteoffs for outstanding notes on one or all channels. * some convenience functions for volume, all_note_off controllers What I really want to work on is getting the chuck midi port names that I wrote that patch for available within chuck programs so that devices can be found like that. Not sure how the the interface between underlying code and the user-visible language in Chuck works, so I probably have more digging to do. B> -- Packrat (BSc/BE;COSO;Wombat Implementor) Nihil illegitemi carbovndvm
Bruce -- Might be worth trying my [chuck~] object if you're a max/msp user at all. I'm not a big max/msp person myself, but it does do a lot of interfacey-gunk that gets annoying otherwise (MIDI, for example). As far as MIDI generation, I added a couple of basic ugens to the ChucK source that allow it to send out values, lists of values and generate max 'bangs' from within a script. It seems fairly stable, I just finished a short piece using it: http://music.columbia.edu/~brad/chuck-max-beta/beta_v0.7/ brad http://music.columbia.edu/~brad On Sun, 30 Jul 2006, Bruce Murphy wrote:
Just a question, before I run off and duplicate anything. I use a lot of outboard MIDI stuff and am very interested in using chuck for glue and MIDI generation. As far as I can see, MIDI handling in chuck is fairly clumsy, particularly for MIDI generation.
Is anyone currently working on developing a more friendly interface for this or is it worth taking some time over. Also, is the general push for this sort of thing to be put in core ChucK or to sit off to one side?
B> -- Packrat (BSc/BE;COSO;Wombat Implementor) Nihil illegitemi carbovndvm _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
participants (3)
-
Bradford Garton
-
Bruce Murphy
-
Ge Wang