Andrew,
On Sun, Sep 13, 2009 at 10:23 PM, Andrew C. Smith
Hey Jim, thanks (to know you're looking at Snow Leopard as well). What did you end up adding to the fork of ChucK? I'm using all the new array methods, as well as the FileIO, so did you just use the CVS 1.2.1.3-whatever or do you have your own thing going?
You can see http://github.com/jimm/chuck for the details. I call it my "ChucK hack fork". I added a few String methods that did not exist or did not work the way I liked. For example, I implemented String.ch and added String.substr. // "foo".ch(0) returns "f" // Note that it returns a string, not an int. Returning an int was useless // to me. Now that I've implemented substr, this seems silly. I might switch // it back to returning an int. <<< "\"foo.ch(0)\" = ", "foo".ch(0) >>>; // "foo".ch(0, "abc") returns "abcoo" <<< "\"foo.ch(0, \"abc\")\" = ", "foo".ch(0, "abc") >>>; // "foo".substr(1) return "oo" <<< "\"foo.substr(1)\" = ", "foo".substr(1) >>>; // "foobar".substr(3, 2) returns "ba" <<< "\"foobar.substr(3, 2)\" = ", "foobar".substr(3, 2) >>>; // "foobar".substr(1, -2) returns "ooba" <<< "\"foobar.substr(1, -2)\" = ", "foobar".substr(1, -2) >>>; // Hmm...it's time to write some unit tests. This lets me write methods like these in ChucK, without resorting to C or other tricks: // Given a note/octave name string, returns MIDI note number. // // NOTE: this function requires my hacked version of ChucK which implements // string.at and string.substr. fun int n(string str) { str.lower() => str; str.ch(0) => string note_name; str.ch(1) => string accidental; 0 => int offset; 2 => int octave_str_index; if (accidental == "b") -1 => offset; else if (accidental == "#") 1 => offset; else 1 => octave_str_index; Std.atoi(str.substr(octave_str_index)) => int oct; int val; if (note_name == "c") 0 => val; else if (note_name == "d") 2 => val; else if (note_name == "e") 4 => val; else if (note_name == "f") 5 => val; else if (note_name == "g") 7 => val; else if (note_name == "a") 9 => val; else if (note_name == "b") 11 => val; return val + offset + (oct + 1) * 12; } // Given a note/octave name string, returns float frequency. Calls n(). fun float nf(string str) { return Std.mtof(n(str)); } I also implemented the File I/O methods. However I have NOT TESTED THEM. I'm thinking of adding MIDI file I/O so I can play MIDI files using ChucK to generate the sound. Jim
Andrew
On Sun, Sep 13, 2009 at 9:49 PM, Jim Menard
wrote: A follow up: advice in another thread suggested I use "-arch i386". I added that to CXX_LINK and FLAGS in makefile.osx, and it worked perfectly.
Jim
On Fri, Sep 4, 2009 at 1:56 PM, Jim Menard
wrote: I'm having problems compiling ChucK on SnowLeopard. (I have my own fork at https://github.com/jimm/chuck/tree where I've added a few String methods and implemented some File I/O methods.)
The error---which has nothing to do with my code---is this:
gcc -D__MACOSX_CORE__ -c -O3 rtmidi.cpp rtmidi.cpp: In function 'int get_device_name(SInt32, char*, int)': rtmidi.cpp:295: error: cannot convert 'void**' to 'MIDIObjectRef*' for argument '2' to 'OSStatus MIDIObjectFindByUniqueID(MIDIUniqueID, MIDIObjectRef*, MIDIObjectType*)' ...snip... make[1]: *** [rtmidi.o] Error 1 make: [osx] Error 2 (ignored)
The offending line of code:
ret = MIDIObjectFindByUniqueID(uniqueid, &object, &type);
It's saying that object, which is a void, can't be cast to
There are a TON of other warnings for this and other files, mainly around the size of ints vs. longs and casting warnings. I may have some time to look into this and see if a few header tweaks will help or not.
Jim -- Jim Menard, jimm@io.com, jim.menard@gmail.com http://www.io.com/~jimm/
-- Jim Menard, jimm@io.com, jim.menard@gmail.com http://www.io.com/~jimm/ _______________________________________________ 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
-- Jim Menard, jimm@io.com, jim.menard@gmail.com http://www.io.com/~jimm/