HSB invite Wesen for a workshop at void*pointer; he did great stuff designing the mididuino : his own opensource midi device based on ATMega32 (including opensource software usb-midi stack) & integrating this in the Arduino IDE. The workshop will probably take place the weekend of 21-22 of March.
Links
- ruin & wesen website
- his lecture at 25c3 : Algorithmic Music in a Box
- a blurb of info at createdigitalmusic
- svn repo at googlecode here
Notice
- take your midi-gear over if you got some laying around /
Schedule
Saturday 21 Mar
- doors open at 12h (there be some food)
- we'll start at 14h with a presentation by wesen on the tools he created and how we can use them during the weekend (till 17h or so)
- then we'll split up in smaller working-groups to toy around with midi+arduino / mididuino / midi keyboards and synths and create our own algo-rythmics & music
- doors are not closing, go/come-in when you like to
Sunday 22 Mar
- doors at 12h (again there be some food somehow)
- at 14h we'll kick off with yesterdays results and throw them together
- open till 20h or so
Video
http://etherpad.com/jeoDylMsmX
Pictures
Wesen has posted some pictures on his Twitpic, but it seems that Twitpic generates a temporary url for the images:
Results
wolfram cellular automata
class CellularAutomaton {
// cellular automaton based on wolfram rules
private:
uint8_t len;
public:
uint8_t rule;
uint32_t g;
CellularAutomaton(uint8_t l):
len(l){
if(len>32){
len=32;
}
}
void evolve(){
// wolfram CA rules
uint32_t ng;
for (uint8_t i = 0; i < len; i++) {
uint8_t nl = (i - 1) % len;
uint8_t nr = (i + 1) % len;
uint8_t match = IS_BIT_SET(g,nl) << 2 | IS_BIT_SET(g,i) << 1 | IS_BIT_SET(g,nr);
bool rule_apply = IS_BIT_SET(rule,match);
if(rule_apply){
SET_BIT(ng,i);
}
else{
CLEAR_BIT(ng,i);
}
}
g = ng;
}
};
uint8_t arpPitches[] = {
0, 3, 7, 10, 12, 15, 19, 22 };
uint8_t pitches[32];
const uint8_t len = 32;
const uint8_t velocity = 20;
RangeEncoder rule(0,255,"RUL");
RangeEncoder pitch(30,127,"PTCH");
EncoderPage page(&rule, &pitch);
void handleGui() {
if (BUTTON_PRESSED(Buttons.BUTTON1)) {
g = random();// 0x002f2fd4f;
for (uint8_t i = 0; i < len; i++) {
pitches[i] = arpPitches[random(18)];
}
}
}




