I've been working on a monome project that uses multiple instances of the game of life all clocked/looped/midified by reaktor. You have multiple games of life all running, addressable by the bottom row of buttons on the monome, all real-time editable by holding down the 0,0 button. It is hard to imagine, so I'll post a video as soon as I can. Here is a 10min or so clip of me just jamming live with this setup. It is VERY rough around the edges...I'd call the software alpha for sure. If anyone is interested in this I'll post up all the files. http://gotascii.com/files/Monome2.mp3
on 13.02.2007 12:48
on 13.02.2007 12:57
sounds great. nice work! where does the ruby come into play? and yeah, i'd always like to see the project files, source, etc.
on 13.02.2007 13:21
Well I had originally wrote this in reaktor and thing just got out of hand. I'm much more comfortable in an OO language so Ruby takes care of the heavy lifting. The design is layered: OSCGateway (based on the ruby OSC library), MonomeGateway, ReaktorGateway all receive and send osc messages. Monome is a simple ruby object-based interface/representation of the monome. It doesn't really know anything about osc, it uses the MonomeGateway to send/receive. Monolife uses rlife (which I found on rubyforge), an instance of Monome, and the reaktor gateway to implement a single instance of the game that evolves each time it gets a clock message from reaktor. Each tiem it evolves it sends the state of the board back into reaktor where reaktor turns the board state into midi triggers using the newscool implementation. Multilife just keeps track of multiple instances of monolife, overrides the bottom row of buttons to switch between instances and keeps track of who is sending messages to the gateway. The ruby code is available via svn http://dev.gotascii.com/svn/monome/ and via zip at http://gotascii.com/files/monome.zip I'm going to make a video, a simplified reaktor ensemble, and proper documentation tonight.
on 06.03.2007 16:54
Sorry this took a long time. Lots of insanity/change in the month of Feb. Here is a crappy video:<br/><br/> http://gotascii.com/movies/40h.mov<br/><br/> Inside the reaktor patch you set a loop length and speed. On each clock tick in reaktor each game of life evolves. The current board that is being displayed on the monome sends its board state to reaktor and reaktor transforms the board state into 8 midi triggers. Once the end of the loop is reached the original pattern you entered is reloaded and the game starts again. This way you can get rhythmical patterns from the game of life. Since each board evolves even if it is not the current board you can also switch between the currently displayed board while the sequencer is running. You can also edit the base board state while the sequencer is running. In the first minute or so of the video I go through each life board and set the base pattern (yes the lights in the board selection row should light up to indicate which board you are on...I'm working on it :p I start up reaktor and just cut between cycling patterns for a minute or so. I cut out some of the video...the next minute is me editing the grid while the sequence keeps running. The last minute or so is just me making weird noises. Sometimes its hard to get interesting patterns, sometimes things sound really sweet, kinda Autecherish. I guess thats how life is...ups and downs :p I'm working on a way to save various board states inside reaktor. Also, since this thing pumps out midi data you could hook it up to anything that can be triggered via midi (i.e. you don't have to use the weird sounding drum machine that may annoy the crap out of you :p I updated the code and I'm using the chuck life implementation instead of the cellgrid code that was in there before. It needs to be cleaned up a bit...I'll get right on that... http://gotascii.com/files/monome.zip
on 06.03.2007 16:56
hmm I wasn't logged in when I just posted (cant edit) and my br's got rendered so heres the video link again: http://gotascii.com/movies/40h.mov
on 06.03.2007 16:58
There is an assumed osc port setup for this to work out of the box. If anyone wants to get this running without looking at the code/patch let me know. I'll post the patch tonight (it is on my computer @ home).
on 07.03.2007 16:24
really nice demo vid. having multiple instances really expands the performance capability. mind if i create a wiki page for this project?
on 07.03.2007 23:37
tehn wrote: > really nice demo vid. having multiple instances really expands the > performance capability. > > mind if i create a wiki page for this project? Nope not at all, I would greatly appriciate it :) I'm cleaning up the reaktor patch so its just the midi generator pieces. I'll update the wiki from here on out with instructions/updates/etc.
on 19.03.2007 14:19
gotascii wrote: > There is an assumed osc port setup for this to work out of the box. If > anyone wants to get this running without looking at the code/patch let > me know. I'll post the patch tonight (it is on my computer @ home). I'd really like to give this a tryout but will need some help. Can this run on XP? How do I get going? Would you be able to provide a simple sequential list of things to do? I was very inspired by the video - hence this request. Cheers.
on 22.03.2007 07:41
cep wrote: > gotascii wrote: >> There is an assumed osc port setup for this to work out of the box. If >> anyone wants to get this running without looking at the code/patch let >> me know. I'll post the patch tonight (it is on my computer @ home). > > I'd really like to give this a tryout but will need some help. Can this > run on XP? How do I get going? Would you be able to provide a simple > sequential list of things to do? > > I was very inspired by the video - hence this request. Cheers. bump
on 22.03.2007 14:02
Hey guys, I haven't abandoned this project by any means. It has been on hold as I've had guests at my house the past two weeks and it has been hard to get some coding done. I'll get an update here as soon as I can. I've actually been planning on moving the whole thing into max but I'm a max noob so I'll go ahead and finish up the reaktor/ruby based one first. I can tell you that this was more of a proof of concept deal and installing it from scratch will require you install ruby, the ruby osc module and have reaktor and serialio setup. I've never tried to do this on an XP box so its functionality would be limited to however far along serialio (or whatever app provides serialio like functionality in XP) is.
on 22.03.2007 19:28
making lazyfish's specific Reaktor 5 newscool/life sequencer in max would not be an easy task unless you just did your own implimentation!
on 27.03.2007 10:57
kid-sputnik wrote: > making lazyfish's specific Reaktor 5 newscool/life sequencer in max > would not be an easy task unless you just did your own implimentation! At this point not too much of the implementation relies on pieces of lazyfish's work. The only piece that gets used is the part that takes the list of 1/0s and turns them into midi triggers. That algorithm is pretty easy to understand. The actual life implementation (the hard part) is in ruby. Also, I would just be making a midi triggerer in max. I have no intention of porting the drum machine to max, that would be pretty near impossible. I just want to consolidate the entire package into one language be it ruby/chuck/max/etc.
on 28.03.2007 09:19
gotascii wrote:
I just want to consolidate the entire package
> into one language be it ruby/chuck/max/etc.
oh, definately!
on 03.04.2007 22:20
So I went ahead and ported a large portion of this project into chuck. Right now the chuck app is only a single instance but all the pieces are there for the multiple instance ability. I figure that the single instance is cool enough that someone might wanna play around with it. How to use it: * The midi setup is similar to the monogrid app. It sends midi out device 0. On my mac I created IAC ports called in/out. * The app generates midi notes on C2-C3. You can change this in the Midifier class in the notes array. * The clock is generated inside of chuck. I'm not sure if this is the best way. Maybe someday I'll make it synced to a host master clock. Regardless, you set the number of steps and the speed in ms near the bottom of the file: clk.set_num_steps(16); clk.set_speed(150); * Start up serialio, then run the chuck app. * Hold down button 0,0 to go into edit mode. While holding 0,0 press some other buttons to create a base pattern. * The app is always looping even while you are editing. When you let go of 0,0 it will display your pattern looping. Hit 0,0 and edit at any time. * You'll need to configure your host app to accept midi-in from the iac port. I am using a modified newscool (a sweet reaktor patch) that triggers based on midi. You could use anything. Two last things, because this is in chuck you can actually throw several instances of this app onto the shreduler. This results in amazingly unpredictable behavior as far as editing/output goes but also creates some wicked polyrhythm action. Use at your own risk :) Lastly, this is my first chuck app feel free to fix it, update it, hate on it. It most likely has bugs (but I haven't found any yet) so let me know if you find something.
on 04.04.2007 03:51
this is REALLY nice! works great...thanks for the effort! just spent several hours enjoying the sounds coming out of my synths as they came to life. really cool. i'm starting to really like chuck... dp
on 04.04.2007 08:38
d-p wrote: > this is REALLY nice! works great...thanks for the effort! just spent > several hours enjoying the sounds coming out of my synths as they came > to life. really cool. > i'm starting to really like chuck... > dp nice! I realized last night that you can have several chuck apps start at the same time by running "chuck app1.ck app2.ck" from the command line. If you setup the clocks and save in two different files you can get the two instances syncd. Also on line176 "144 => msg.data1;" you can change the midi channel. 144 is channel 1, 145 channel 2 etc. So you can have different instances running at different speeds going to different channels. The actual editing is still totally weird as you are editing and seeing both instances at the same time but still fun nonetheless.
on 06.04.2007 00:24
Being a noob at this whole midi thing, I'm trying to think of something to try this out with. Would any synth stand alone or VST work? Or would I have to remap some midi notes?
on 06.04.2007 01:52
Guest wrote: > Being a noob at this whole midi thing, I'm trying to think of something > to try this out with. Would any synth stand alone or VST work? Or > would I have to remap some midi notes? The app generates midi notes in the range c2-c3 (c2, d2, e2, f2, g2, a2, b2, c3) so anything that can be triggered by midi notes will work. You could change that scale by editing this line: [48, 50, 52, 53, 55, 57, 59, 60] @=> int notes[]; in the Midifier class.