By Tame Impala
recommended by John Drew
By Tame Impala
recommended by John Drew
This code was adapted (i.e. stolen verbatim) from a stackoverflow post by drew010
http://stackoverflow.com/questions/10337984/using-the-curl-output
Here’s the code. It solves a huge problem for the class of projects which need to grab a large amount of tweets in real time to either save in a database, or trigger some action.
My version of the code is in tkzic/api/twitterStream1.php
<?php $USERNAME = 'youruser'; $PASSWORD = 'yourpass'; $QUERY = 'nike'; /** * Called every time a chunk of data is read, this will be a json encoded message * * @param resource $handle The curl handle * @param string $data The data chunk (json message) */ function writeCallback($handle, $data) { /* echo "-----------------------------------------------------------\n"; echo $data; echo "-----------------------------------------------------------\n"; */ $json = json_decode($data); if (isset($json->user) && isset($json->text)) { echo "@{$json->user->screen_name}: {$json->text}\n\n"; } return strlen($data); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://stream.twitter.com/1/statuses/filter.json?track=' . urlencode($QUERY)); curl_setopt($ch, CURLOPT_USERPWD, "$USERNAME:$PASSWORD"); curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'writeCallback'); curl_setopt($ch, CURLOPT_TIMEOUT, 20); // disconnect after 20 seconds for testing curl_setopt($ch, CURLOPT_VERBOSE, 1); // debugging curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate'); // req'd to get gzip curl_setopt($ch, CURLOPT_USERAGENT, 'tstreamer/1.0'); // req'd to get gzip curl_exec($ch); // commence streaming $info = curl_getinfo($ch); var_dump($info);
Today I got Csound running inside Pure Data (using the [csoundapi~] object) on Raspberry-Pi.
These instructions assume you have already installed pd-extended on R-Pi. See this post to learn how. https://reactivemusic.net/?p=4930
Install Csound
# sudo apt-get install cloud
Install csoundapi~
# sudo apt-get install pd-csound
Copy csoundapi~ library into the pd-extended extras folder
# cd /usr/lib/pd/csound/extras # sudo cp csoundapi~.pd_linux ../../pd-extended/extra
Here’s a test patch:
Here’s the Csound source file (should be in the same folder as the test patch)
<CsoundSynthesizer> <CsOptions> </CsOptions> <CsInstruments> ;Example by Joachim Heintz sr = 44100 nchnls = 2 0dbfs = 1 ksmps = 8 giSine ftgen 0, 0, 2^10, 10, 1 instr 1 kFreq invalue "freq" kAmp invalue "amp" aSin oscili kAmp, kFreq, giSine outs aSin, aSin endin </CsInstruments> <CsScore> i 1 0 10000 </CsScore> </CsoundSynthesizer>
Here are the source files:
http://zerokidz.com/rpi/csound/cstest2.pd
http://zerokidz.com/rpi/csound/control.csd
Here’s the command line to run the test:
# pd-extended -nogui -noadc cstest2.pd
Here are general instructions on running csound in Pure Data from Victor Lazzarini:
http://booki.flossmanuals.net/csound/_draft/_v/1.0/csound-in-pd/
A preliminary test before trying this in Raspberry-Pi, I used the general instructions for csound in pd from Victor Lazzarini found here:
http://booki.flossmanuals.net/csound/_draft/_v/1.0/csound-in-pd/
to get csound running in pd-extended in Mac OS.
Looks pretty straightforward – biggest question will be compiling the external if it doesn’t install via package manager.
local test files are in tkzic/rpi/pd/csound
Here’s something from Victor Lazzarini which shows csound running on R-Pi
http://csound.1045644.n5.nabble.com/csound-on-raspberry-pi-td5718623.html
Here is installation instructions from Richard Dobson
http://csound.1045644.n5.nabble.com/Raspberry-Pi-w-Csound-td5717410.html
For jit.uldl- status reports get sent out the right outlet and errors are reported in the Max window. However their doesn’t appear to be a way to get the http: status codes or other header data.
For curl, you can write the response (JSON for example) to a file. Then you can read the file using the [js] object and parse the JSON. If you are using [aka.shell] to run the curl command, the stdout and stderr can be routed from the object – for instance, into the Max window. The -v flag (verbose mode) causes curl to output a bunch of header data.
By John Biggs at Tech Crunch
http://youtu.be/avcdq7_-Iwg
Much of our driving experience is wrapped up in sounds that happen when you press the pedal to the metal. Like Superman emerging from a phone booth, this 2006 Jetta seems different. The project connects RPM data from an OBD2 diagnostic sensor with the input of the car radio. Via synthesizers.
[update 11/2013 – source code is available at https://github.com/tkzic/automax – this version features
This project uses the RPM data from an automobile OBD-II port to control the engine speed of an engine simulation from Andy Farnell’s book “Designing Sound”
Here’s the patch that polls and translates OBD-II data
patch is tkzic/automax/rpm4.maxpat
Here’s a Max version of the Farnell car engine simulation:
patch is tkzic/automax/waveguide_engine2e-1.maxpat
Update 6/2014: The Max patch is available from the max-projects archive: https://reactivemusic.net/?p=11130
original post
I had a difficult day with wiimotes…
Here’s a general purpose Max patch to read Wiimote Osc data from Osculator:
Located in tkzic/max teaching examples/wiimote/wiimote_read.maxpat
<code> ----------begin_max5_patcher---------- 1412.3oc2ZsrjahCEcs8WgJVSr06GYWlY0rJUMyxolJEFqzMorAW.ticmJ+6 iPxNF2sMPm1Hn7hz.JXw4dz8w4J3GSmDrHamtH.7Qv+BlL4GSmLwNT0.SNb8 jf0Q6hWEUXusfT82yV7sfP2+UodWoc3O+O+4Gxy1VpAygf4Hvb7waYSTY7iI oO7kbcbo6Iww7YbNiSUg.DGMCZN.kUGvvYPv+c3WltcsYFWoKsOY5gQ+ZVZY Qxy5pwPXyOxMr6NK2uQ6dFAAg092ulyjkV3ZLgOfYA0lxzn01eYvmxShVEbB BIoGQ.pZreNcZ0eBeezUgNcIHIeeCjDBBYyXHjjhL7ByROLRKjDrYRpt0SGb qeWCVuBo9kKROX7DOX7wYqWqSKek0GEGqWoyiJSxR+HXW39vm6XrBVQswJtC XQ6LQ9CKrWO6hbi7hbCdfcLhZhNjF+h9Kn.w8fs+0UYl4nq1ncQBHbYGIW0F wWxFoyDJnRH90iJ2XQk57unSiVrRWmadU5SCJiJqxctHJ8gS4OW7Pb1prb2M AmoXbAkYbIqfGz3nJ4Jt8xKkwEIFZWqlR3Jv39z0RNz19ttlk41a6pwPX0Yq u2SgUX3XfdOyE5thdQCcjabbC7NC+5JhpaWnKaL3aclMNt8snLlz1Wiy2RPT 7FJHRGPcnwOZrCMn7QMv7LVnyAkYf0Uje8wRRAetHd6pnxr7YfDcH36IIm5t aURpNNaapcJIWeEj.g1rCxP.EZEwxrGnuaQrW1s0GB7WrsrLKsoV3bgiHwwv wFCJQWyw6b+s5VIxK4eZRzDk7JQST9MK6yPqYJuAKmP3G8nOZ3zalgOzMmuo ACGaBfYmLZwsqVy.lLzEKWzz5MyZntdukhdrC7QgZ4y29oQdMWifNrppbqTn Hlmjq56UJ5NJ5w+r825dhcEilcVaSHHODrODD0gjYG1RMorGiqYiAMIXrs4f Ca6dOHJA26Ky45nkUpPWmUpAlxUEY4fkQkQfsEFaEjcTtJ3hhTwMzlAiMCcH nzoREiQ2FUpmbHdYunRJAQO0u.kAURaWo3KwtiCcsDmyCCaOvmQjDEDW6zam DWBxi1kfNioXBHwSFGV4OiSpfyvr9LxWI68P++5uqdgIcstpKot.0i4zQvAb 2gdSuz05Lyv8RWQPezZyZcQQzC5WQXysJDluIeektFI2HbxbBCxkJd0IbjRw LmfgD5oE1ttGGtFeEts2fXSePYsFe0Yp8xz4aUTAtOTyd1t.bGs+bJ7XnWg5 6zvcD4JGE84drAf6IhULlJIAlSZh9culwiEjvnVJHwdOEjtVQIAdLnp1z6IR IYbOI9jy8mocXuy7gjZnzit3eBL+OZU30Ai2kfAgICgGNGOJRI3bT.0jgc3z c6eFLOI2brXNpoNzTVWHkKMMeP3RDTMbj41kaLrgN4IMPAgv1oJ2KeRo5X2d uc0nmUmhHEDrcqBogVI1HDUb8chENJ7Jqdglcvoy8V0akIw+N9bWhcXuG2L6 DZ6b4EecuV6qZ7yorhrs4wGgzw0FvIabotnLI0typ0toJHV6ldLY4RcZc4NK SJpT.YMJ3EW75Jddwi5x3w1ND.Ml.j+XnpumY.tM.I7KdPsfGLzu3osErpO1 GOgGmuQaKXu.08If3cgendCNht.Gh+Vt5BdPb+4N2kDzUe0o9BOntfGkmCuH slfl5YD0ZFQOim1Vx33QFAI7GfrOpVcg7nGDsKwXdrhQmxA4uRpJbGvi+RIJ 6R7k+7djcpBleCtZS9ixyA6sk7Qp7KdZ0Y1e544cge3b+hmV62gf7KfZsZAV 4W.0dKpROVfuKEvTiM.I7LdZMH62DOtMEJZylmz4EGlRKTBVG8M2l3wCsWlj 5tzNiA45mRNd+xoUy1Om9+nVZpDJ -----------end_max5_patcher----------- </code>
Some tips…