Holiday Hackshop: Hack yer iPod! @ Eyebeam NYC, Sat, Dec 13th
http://www.eyebeam.org/engage/engage.php?page=unique&id=206
http://dev.eyebeam.org/projects/reware/wiki/Workshop
December 13, 2008
Sat., Dec. 13, 1PM -- workshops
6PM: Holiday party (think spiked eggnog, cider and holiday treats!)
540 W. 21st St.
Cost: Free. Calling all makers, residents, fellows, and friends ...
If you haven't yet experienced everyone's favorite holiday gift-making event, here's the scoop: For one day and one day only, Eyebeam becomes an all-ages, mutl-workshop electronic craft-making fair, with entertainment, decorations and plenty of holiday spirit.
Have an iPod you want to repurpose into a hackable music machine? Install iPodLinux and make music with Pd! Want to play Doom on your iPod Video? Come install Rockbox! Did your trusty iPod's battery finally die, or disk give in? Come and break open your iPod, either the software, the hardware or both. Give it new life and new purpose. Also, we have on hand our stash of old iPods for harvesting parts, and the newfound skills for frankensteining dead iPods into living ones. Join Hans-Christoph Steiner and Chris "the Widget" DiMauro with your own iPod, or try your hand to see if you can create a living one from our pile.
This workshop is a place to get exposed to the possibilities. We've been hacking on some iPods to see what's possible. Lots of this software is kind of raw, but you can do lots of fun stuff now. We are just getting started, we are having fun exploring the options. Now we want to help you do the same.
Check out our wiki to see if your devices are supported:
Interfacing PD with the Arduino ... how?
i got a problem in uploading the file to the board. ( I have press play, same error found. When I press upload to I/O, below error found)
anyone can help?
thx
////////////////////////////
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:61: error: typedef 'callbackFunction' is initialized (use __typeof__ instead)
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:61: error: 'byte' was not declared in this scope
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:61: error: expected primary-expression before 'int'
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:64: error: typedef 'sysexCallbackFunction' is initialized (use __typeof__ instead)
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:64: error: 'byte' was not declared in this scope
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:64: error: 'byte' was not declared in this scope
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:64: error: 'byte' was not declared in this scope
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:64: error: 'argv' was not declared in this scope
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:81: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:81: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:86: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:87: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:88: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:90: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:91: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:91: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:91: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:95: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:95: error: 'callbackFunction' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:96: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:97: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:98: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:98: error: 'sysexCallbackFunction' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:98: error: 'void FirmataClass::attach(int, int)' cannot be overloaded
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:95: error: with 'void FirmataClass::attach(int, int)'
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:99: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:104: error: 'byte' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:105: error: ISO C++ forbids declaration of 'byte' with no type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:105: error: expected ';' before '*' token
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:107: error: 'byte' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:108: error: 'byte' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:109: error: 'byte' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:110: error: 'byte' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:112: error: 'boolean' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:115: error: 'callbackFunction' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:116: error: 'callbackFunction' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:117: error: 'callbackFunction' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:118: error: 'callbackFunction' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:119: error: 'callbackFunction' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:122: error: 'sysexCallbackFunction' does not name a type
In function 'void setup()':
How do I get dumpOSC, sendOSC and outher Opens Sound objects to work?
I think I have the same problem, on the Mac OSX 10.5.2. I downloaded the source tarball off sourceforge (0.39-3), went to the oscx directory, did ./configure with no problem I noticed, and then make. With make I got this output:
June -d, 2008 @ 01:39:42AM: ~/Documents/projects/boogiepants/Pd-0.39.3-extended/externals/OSCx
[jstoner@erzulie]> make
cd libOSC && make
cc -c -g -O2 -DUNIX -Wall -Wimplicit -Wunused -Wmissing-prototypes -O3 -I../libOSC -I../../pd/src -I../../../pd/src -I../src -I../libOSC -I../../pd/src -I../../../pd/src -I../src OSC-client.c
OSC-client.c: In function ‘CheckTypeTag’:
OSC-client.c:341: warning: implicit declaration of function ‘printf’
OSC-client.c:341: warning: incompatible implicit declaration of built-in function ‘printf’
ar srv libOSC.a OSC-client.o
ar: creating archive libOSC.a
a - OSC-client.o
rm -f OSC-client.o
cc -c -g -O2 -DUNIX -Wall -Wimplicit -Wunused -Wmissing-prototypes -O3 -I../libOSC -I../../pd/src -I../../../pd/src -I../src -I../libOSC -I../../pd/src -I../../../pd/src -I../src OSC-timetag.c
ar srv libOSC.a OSC-timetag.o
a - OSC-timetag.o
rm -f OSC-timetag.o
cd src && make
cc -g -O2 -DUNIX -Wall -Wimplicit -Wunused -Wmissing-prototypes -O3 -I../libOSC -I../../pd/src -I../../../pd/src -I../src -I../libOSC -I../../pd/src -I../../../pd/src -I../src -c -o sendOSC.o sendOSC.c
cc -g -O2 -DUNIX -Wall -Wimplicit -Wunused -Wmissing-prototypes -O3 -I../libOSC -I../../pd/src -I../../../pd/src -I../src -I../libOSC -I../../pd/src -I../../../pd/src -I../src -c -o htmsocket.o htmsocket.c
cc -g -O2 -DUNIX -Wall -Wimplicit -Wunused -Wmissing-prototypes -O3 -I../libOSC -I../../pd/src -I../../../pd/src -I../src -I../libOSC -I../../pd/src -I../../../pd/src -I../src -c -o OSC-system-dependent.o OSC-system-dependent.c
OSC-system-dependent.c: In function ‘fatal_error’:
OSC-system-dependent.c:65: warning: implicit declaration of function ‘exit’
OSC-system-dependent.c:65: warning: incompatible implicit declaration of built-in function ‘exit’
cc -bundle -bundle_loader ../../../pd/bin/pd -flat_namespace -o sendOSC.pd_darwin sendOSC.o htmsocket.o OSC-system-dependent.o -lc -lm ../libOSC/libOSC.a
ld: file not found: ../../../pd/bin/pd
collect2: ld returned 1 exit status
make[1]: *** [sendOSC.pd_darwin] Error 1
make: *** [all] Error 2
any ideas?
OSC in pd ext 0.39.3 OSX ??
/Applications/Pd-extended.app/Contents/Resources/Scripts/../extra/OSC/OSC.pd_darwin: dlopen(/Applications/Pd-extended.app/Contents/Resources/Scripts/../extra/OSC/OSC.pd_darwin, 10): no suitable image found. Did find:
/Applications/Pd-extended.app/Contents/Resources/Scripts/../extra/OSC/OSC.pd_darwin: mach-o, but wrong architecture
OSC: can't load library
this is what i obtain...
Anyone working with chiptunes or console emulation?
Well for now I'm concerned about getting an authentic sound without worrying too much about emulating the specific operation of the hardware. I also want to add a few extras that the original didn't have, like vibrato, sweeping of the triangle channel, and maybe some other small odds and ends.
The pulse channel sound is simple to emulate, especially if you aren't concerned about timing their length & envelope data against other components, like the frame counter or interrupt lines. The triangle is a bit trickier to get authentic.
The noise channel is particularly difficult to emulate, at least for the inexperienced like me. The NES noise sound in itself is easy to reproduce as a sample using 4bit level quantized noise. The 2A03 actually uses a long shift register and a XOR gate to generate a new pseudo-random bitstream for noise samples. Rather than use my very own enveloping like I did for pulse and triangle channels, I will have to reproduce the native specs of the counters/timers and decay envelope modes, especially to get the looped-decay noise channel mode to sound authentic.
So I guess I will be using some of the same dataflow and control logic that the hardware uses, but I want to cut as many corners as I can right now, especially where I can easily provide userdata through the GUI instead of poking 6502 assembly. Then I can use my own, simpler methods for programmable manipulation of all of the inputs, but ideally get the same-sounding output as I would programming the actual hardware.
Right now I'm going through this document to try and get a full picture of the hardware:
http://nesdev.parodius.com/NESSOUND.txt
I believe that has everything needed to directly emulate the channels, I just gotta keep studying the hell out of it until I can determine all of the specifics on timing, mode switching, sample sizes and such.
The zenpho patch looks similar to what I want to use eventually for making real music, I'll probably refer to that a few times. I see he uses a completely diferent PWM routine than I do. Once I get the NES channels sounding properly, I plan to keep adding voices from other old sound chips I enjoy along with more extras and use it as my main synth.
Thanks alot for that headlessbarbie link. Really amazing stuff. I've had thoughts about later on trying to emulate the 2A03 hardware directly, so that I possibly could put pd on a board with a fast CPU (maybe a SuperH) that would be small enough to fit in a NES cart. Then I could use pd as just an interpreter between the user and the real live sound hardware.
Reactivision to reaktor patch
When I started using Reactivision, I really wanted to control Native Instruments Reaktor 5 with OSC but the messages weren't "simple" enough for Reaktor.
So I tweaked the TUIO client patch, for it to route simple OSC messages to reaktor.
I'm new to Pd so it might not be as perfect as you would expect.... but it works !
Instructions :
Open reactivision
Open the pd patch
Make sure you are receiving the TUIO messages ( the bang next to "TUIO client" will blink)
Start Reaktor
Stop the audio engine
System menu > OSC settings > click Activate
Make sure port 10000 is chosen as the local port
Start the audio engine
Go back to the pd patch and change the IP address in the bottom left "connect" box
click connect
go back to Reaktor, System > OSC settings. The OSC monitor should now receive OSC messages.
Reactivision simple fiducial marker patch
@obiwannabe said:
So the data is a set of distances between objects
on a plane (and their orientation?)
Yep. so you can chain a generator and an effect to the output, just by putting them on the plane.like this:
osc ------------ delay -------------- out (center of plane, represented by 0,0)
each module is represented by a marker on the table, and each one has 1 control (rotation: like a knob) + volume (determined by distance)
I've got this much done:
osc -------- out
with the rotation of the osc determining frequency, and the distance from the center determining volume. The subsystem for dynamically connecting things is in place (just send a float to fid-in like 5-in to connect to something other then 16: mainout)
@obiwannabe said:
With more than one occurance of the same symbol possible (or must they be unique?)
In the Tuio system, you can use fid (the number of the actual marker) or the individual id (sid or session_id) of the marker on the table. For performance, I didn't want to dynamically load/unload modules (it made it choppy) so I just went by fid, but you could use the sid, if you wanted to. I have no problem mapping hundreds of them at start time (in the main_snd and main_gfx parts) so going by fid works really well for me, and allows you to just map all the numbers that you have fiducials printed out for. Later, I could even read these mappings from a [textfile] but right now, I just want to get the logic worked out.
@obiwannabe said:
So you have the vetices of a fully connected graph of points
plus a rotation for each point as control data. Additionally each object
has a shape and the distance is between edges not center points
so an objects rotation affects its distance to all other objects
(or use perfect circles). Am I getting this?
Yep, I'm going by center point of the marker, so it's a circle. I'm using the coordinates to determine gain, so the further from center, the quieter. What I want is the same thing, but between individual markers. Right now, all the marker snd units have 1 ain and 1 aout, and if they are not effects, the 2 are just connected (I think it'd be cool to setup osc and phasor units that are normal, or ringmods depending on if they have audio input, but I need to work out distance logic, first.)
This might make a whole lot more sense if you download the thing, then download TuioCLient here and the reactable simulator here
Put TuioClient in your pd path (they have versions for mac, linux, and windows in the same file, I am using linux and mac)
Run the simulator (java -jar TuioSimulator.jar)
open my patches, and press the "0" connected to to start the graphics (in a window) I do it this way, so I can script it going into fullscreen (have a look at my shell script.) You can also leave it off, and just hear the sound stuff (without any graphic output) by not pushing the 0.
Move 16 (volume knob) onto the table area on the simulator and turn it. It will change the brightness of the center dot (to show gain) If you remove it from the table area, the gain will freeze at that level.
0, 4, 8, 12 are [phasors]'s
36,37,38,39 are [osc]'s
Put some of these on the table to hear them. you can get cool beating effects by moving a phasor close to the center, turning it so it slows to a click-beat, then putting some [osc]'s around on the table.
This is an example of what I've got so far. The reason all this is necessary, is that the reactable people haven't released any of the code they use to make graphics or sound, just interpret the actual camera data. I want to make a free, easy to use version, that does pretty much the same stuff, but on low-end hardware, all in pd, so non-opengl/dsp programmers can play with it.
I attached a screenshot of the gem window in Linux.
PD extended errors on osx
Hi
I am having trouble using pdp_v4l, pixelTango and osc patch on PD-extended .38 on mac os x (tiger)
If I try to load a PiDiP patch from the help file I get the following error message:
pdp_v4l /dev/video RGB24
... couldn't create
error: pdp_v4l: can't load abstraction within itself
pdp_v4l
... couldn't create
pdp_help_input.pd 0 0 4 0 (canvas->outlet) connection failed
pdp_help_input.pd 7 0 0 0 (message->canvas) connection failed
pdp_help_input.pd 13 0 0 0 (bng->canvas) connection failed
pdp_help_input.pd 35 0 0 0 (message->canvas) connection failed
If I try to put OSC object i get this error:
... couldn't create
OSC
... couldn't create
OSCroute object version 1.05 by Matt Wright. pd: jdl Win32 raf.
OSCroute Copyright 1999 Regents of the Univ. of California. All Rights Reserved.
OSC
... couldn't create
OSC
... couldn't create
OSC
... couldn't create
dumpOSC 9999
... couldn't create
OSC
... couldn't create
OSC
... couldn't create
OSC
... couldn't create
And PixelTango crashes completely. Has anyone else experience these errors or maybe I have my start up path set up wrong or I need to add some thing?
I deeply appricate your help and advise but I am at a loss!
Thanks again
C++
Hi,
I am trying with OSC. I followd the ling you gave me. From there I followed the pd link to http://barely.a.live.fm/pd/OSC/, that it is not working right now. But I found that in http://barely.a.live.fm/pd/OSC/OLD are some files. From those files I tried OSCx.tgz and OSCx.0.15b1.tgz. I tried to followed the instructions and I had a problem with tne m_imp.h with both packages. I got
In file included from dumpOSC.c:71:
m_imp.h:17: error: syntax error before "t_symbol"
followd by a huge list of errors.
I also tried with the flies from [url=http://cvs.sourceforge.net/viewcvs.py/pure-data/externals/OSCx/#dirlist,
]http://cvs.sourceforge.net/viewcvs.py/pure-data/externals/OSCx/#dirlis t,
I downloaded them manually because I don´t know a more smart way to do that. I followd the instructions in the readme file. When I get to execute the command "make OSC" in the folder OSC I get
/usr/lib/gcc/i386-redhat-linux/3.4.3/../../../crt1.o(.text+0x18): In function `_start':
: undefined reference to `main'
OSC.o(.text+0x17): In function `OSC_new':
: undefined reference to `pd_new'
followd by many lines.
How did you install the OSC library? Any idea where is my mistake?
tx
Your hardware equipment ?
as far as hardware for triggering events goes...you can pretty much use what ever you want. any MIDI compatible device would be fine. my suggestion is to use whatever you have or whatever you're comfortable with. Pd is flexible enough to allow you to map pretty much any input to any event or output.
one tip i can offer is that if you are serious about interfacing, consider using OSC (open sound control) for communication between your various components. it is more flexible than midi and is becoming more and more portable and adaptable. even if you are using midi connections, it can still be benificial to implement an OSC messaging system: lets say you have a midi keyboard controlling part of your patch. if you convert incoming midi messages to OSC messages, you can also control your patch from any other hardware or software application that supports OSC and is connected to your patch (either physically or virtually by a tcp/udp connection).
sorry if this is more confusing than helpful; let me know if you have questions. sometimes the pd OSC externs can be hard to track down but if you search this forum i know i have posted a link in the past.