jensKeyboard

a cheap little circuit that reads 10 analog controllers (8 knobs and 1 joystick). i built it for my neighbour jens' portable keyboard project. it's using an atmega88 and a 4051 multiplexer to get 10 analog-to-digital converters. a standard max232 with some caps lets the atmega88 talk to the serial port of the computer.
attached is schematics, avr firmware and a max/msp patch for testing.

AttachmentSize
Package icon jensKeyboard.zip65.23 KB

RedPDU

livecoding via sms anyone? an expensive and annoyingly hard hobby for sure.
but the RedPDU supercollider class makes this possible in any case. it can decode mobile phone text messages in the pdu format. and with a serial connection to your phone (bluetooth or cable), it is easy to directly download incoming sms from your phone into supercollider and interpret them. no additional hardware required.
the class is available here. (there is also a mxj java version for max/msp called f0.pdu here)

and here's a short demo video where i send a short message to myself...

RedPDU from redFrik on Vimeo.

the code i texted in this video was...

Pbind('degree', Pn(Pseries(0, 2, 5), 4), 'dur', 0.1, 'amp', 0.5).play

and the sc receiver function is in the helpfile. but note: on many phones it is impossible to type characters like {} [] \ | etc. you might want to add some find&replace functionality and use <> meaning curly brackets etc.

sort of unicode support for sc

this is a big ugly hack and gives far from complete support for these special characters. but still it is useful in some situations like for buttons or comment boxes in your gui.

(
w= Window(Umlaut.fix("åäö test"), Rect(100, 200, 150, 150));
Button(w, Rect(10, 20, 130, 40)).states_([[Umlaut.fixAll("schööön")]]);
Button(w, Rect(10, 70, 130, 40)).states_([[Umlaut.fixAll("Tätigkeit heiß")]]);
w.front;
)

all supported characters... (more can be added on request)

Umlaut.fixAll("åÅäÄöÖüÜéÉèÈêÊàÀîÎïÏëËçÇæÆãÃøØñÑßáÁíÍúÚóÓΩ∑∏π∆µ")

update: there is also asciiCorrect in the wslib quark by wouter snoei

AttachmentSize
Package icon Umlaut.zip3.42 KB

redUniverse: l-system and turtle

now added RedLSystem and RedLTurtle to my redUniverse quark. RedLSystem is a fairly standard string rewrite class. one special feature is that it saves the structure/tree/recursion depth of the rewrite process. RedLTurtle either plot l-systems or standard strings. it comes with a set of default drawing functions, but you can easily add your own commands.

(
l= RedLSystem("F", ($F: "F[+F--F]+F"));
6.do{l.next};
RedLTurtle(l, 40, 10, 0.9, 0.1).makeWindow;
)

(
l= RedLSystem("F", ($F: "|[-FFF--F]+F"));
6.do{l.next};
RedLTurtle(l, 20, 20, 0.95, 0.2).makeWindow;
)

(
l= RedLSystem("F", ($F: "|[--F][+F]-F"));
8.do{l.next};
RedLTurtle(l, 400, 20, 0.65, 0.1).makeWindow(initTranslate: Point(0.5, 0));
)

(
l= RedLSystem("F-F-F-F", ($F: "F[F]-F+F[--F]+F-F"));
5.do{l.next};
RedLTurtle(l, 6, 90, 0.9).makeWindow(initTranslate: Point(1, 0));
)

redTie

custom wireless system built for craftwife. the leds are to be sewn into real ties (update 090428: now done - http://www.youtube.com/watch?v=QUGKfC0SYck). there are 6 red leds per slave and each led can be dynamically controlled (pwm 0-255). all slaves run on battery (AA 3.6v lithium) and keep in contact with the master using 2.4ghz wireless transceivers (nordic nRF24L01+). the maximum working distance is about ~80m (line of sight).
the master talks to supercollider via the RedTieMaster and RedTieSlave classes (usb-serial 115200 baud).

schematics, firmware, partlist and sc classes attached below (gnu gpl v2)

redTie-master...

redTie-slaves...

master and slaves...

leds on ribbon cable...

total cable length: 135cm
distance between leds: 4cm

redTie-hardwareWireless from redFrik on Vimeo.

AttachmentSize
Package icon redTie.zip76.62 KB

pact - april

april 2009, 30 days, 1hour/day. do something and show the result to your contracting party. similar to our previous live-coding practising sessions (aug2006 and jun2007). this time i battle marcus fjellström. follow his daily work here.

my rules are: on the last day of march, code a single synthdef in supercollider that i'll force myself to make music with all throughout the month. i'm not allowed to use any other synthdefs! if i need to change the synth definition during the 30 days, all the music written up to that point will be affected. these constraints are both quite strict and quite silly i know, but i imagine it'll help me focus my 1hour work on controlling the synth instead of rewriting the synthesis part all the time (bad habit). of course it is not the optimal way to make music in sc. normally one would opt for smaller synthdefs that do less and are interconnect via busses. see that as a warning and don't copy my synthdef below. it's a big ugly beast.

so here's first the synthdef. coded on march 31st...

//this is the synthdef that i must use for all 30 days
SynthDef(\redMond, {
        arg     out= 0, pan= 0, det= 0,
                atk= 0.01, rel= 0.1, cur= -4, gate= 1,
                amp= 1, freq= 440, sel= 0, selFreq= 40,
                amp2= 0, freq2= 40, sel2= 0, selFreq2= 40,
                amp3= 0, freq3= 40, sel3= 0, selFreq3= 40,
                ringMix= -1, ringFreq= 440, ringGain= 0, ringRate= 1,
                distMix= -1, distFreq= 0.4, distDeep= 1,
                combMix= -1, combFreq= 40, combDecy= 1,
                moogMix= -1, moogFreq= 440, moogGain= 1,
                verbMix= -1, verbRoom= 0.4, verbDamp= 0.4;
        var     iii, aaa, bbb, ccc, zzz,
                ii, aa, bb, cc, zz,
                i, a, b, c, z,
                e;
        det= det+1;
        iii= SelectX.ar(sel3, [
                DC.ar(0),
                DC.ar(1),
                DC.ar(2),
                SinOsc.ar(selFreq3, 0, 1.5, 1.5),
                LFSaw.ar(selFreq3, 0, 1.5, 1.5),
                LFPulse.ar(selFreq3, 0, 0.3, 1.5, 1.5)
        ]);
        aaa= SinOsc.ar(freq3, 0, amp3);
        bbb= LFSaw.ar(freq3*det, 0, amp3);
        ccc= LFPulse.ar(freq3*det*det, 0, 0.3, amp3);
        zzz= Select.ar(iii, [aaa, bbb, ccc]);
        ii= SelectX.ar(sel2, [
                DC.ar(0),
                DC.ar(1),
                DC.ar(2),
                SinOsc.ar(selFreq2, 0, 1.5, 1.5),
                LFSaw.ar(selFreq2, 0, 1.5, 1.5),
                LFPulse.ar(selFreq2, 0, 0.4, 1.5, 1.5)
        ]);
        aa= SinOsc.ar(freq2+zzz, 0, amp2);
        bb= LFSaw.ar(freq2+zzz*det, 0, amp2);
        cc= LFPulse.ar(freq2+zzz*det*det, 0, 0.4, amp2);
        zz= Select.ar(ii, [aa, bb, cc]);
        i= SelectX.ar(sel, [
                DC.ar(0),
                DC.ar(1),
                DC.ar(2),
                SinOsc.ar(selFreq, 0, 1.5, 1.5),
                LFSaw.ar(selFreq, 0, 1.5, 1.5),
                LFPulse.ar(selFreq, 0, 0.5, 1.5, 1.5)
        ]);
        a= SinOsc.ar(freq+zz);
        b= Saw.ar(freq+zz);
        c= Pulse.ar(freq+zz);
        z= Select.ar(i, [a, b, c]);
        z= XFade2.ar(z, SinOsc.ar(ringFreq+SinOsc.ar(ringRate, 0, ringGain), 0, z), ringMix);
        z= XFade2.ar(z, SinOsc.ar(distFreq, z*(1+(distDeep*(8pi-1))))*0.5, distMix);
        z= XFade2.ar(z, CombN.ar(z, 1, combFreq.reciprocal, combDecy), combMix);
        z= XFade2.ar(z, MoogFF.ar(z, moogFreq, moogGain), moogMix);
        z= FreeVerb.ar(z, verbMix*0.5+0.5, verbRoom, verbDamp);
        e= EnvGen.ar(Env.asr(atk, 1, rel, cur), gate, doneAction:2);
        Out.ar(out, Pan2.ar(z, pan, e*amp));
}).memStore;

and here follows short mp3 excerpts. note: all the 30 files + synthdef can also be found the 'pact-apr09.zip' attached below.































AttachmentSize
Package icon pact-apr09.zip44.32 KB

redWirelessMaster

update100721: rewrote the firmware and changed a few things. also renamed the project. it was previously called redUniform2-master
update100724: added supercollider classes to the zip archive

this is my all-round master for wireless controllers like redUniform and redThermoKontroll. it's a rebuild of my previous redUniform-master. i generalised it, added some buttons, switches and leds and put it into a proper box. i also removed the on-chip ceramic antenna on the mirf transceiver and replaced it with a socket + a 4inch duck antenna. now the range of the system is much greater.
the buttons i will use either as additional controllers or as backup controllers if the slave fails during performance. the 4 leds are independently controlled and i imagine using them for visual feedback. usually i perform with the laptop hidden in the back and the laptop screen turned off. the leds will help to discretely show the status of the piece (form, section, sensor activity etc).

version3 firmware and schematics attached.

Pages

Subscribe to f0blog RSS