Audio samples from “Computer Music” and “Future Music”
http://www.musicradar.com/news/tech/sampleradar-13154-free-sample-downloads-217833/1
Audio samples from “Computer Music” and “Future Music”
http://www.musicradar.com/news/tech/sampleradar-13154-free-sample-downloads-217833/1
By Paul Marks at The New Scientist
http://www.newscientist.com/article/mg21729045.400-the-computer-that-never-crashes.html
An interesting experiment to try at home.
By Ferris Jabr at Scientific American
http://www.scientificamerican.com/article.cfm?id=brainless-slime-molds
Using node.js
Time compressed video of Irish railway data from November 30th 2012.
After many years…. I was able to get this running
Also using sample webSockets code from here to handle the map points: https://masteringjs.io/tutorials/node/websockets
I would like to update all of this in node for max – but its also nice to have an example of doing OSC communication with Max the old way.
This map is centered on Dublin. Each train is a different color and the train number gets printed next to the current position. So for example you can see P607 coming into Dublin from the South.
It gets updates every 10 seconds or so – but sometimes the trains seem to ‘jump’ so I don’t think the actual data itself gets updated that fast.
https://github.com/tkzic/internet-sensors
folder: trains
Install node.js on your computer (or a separate server). Instructions here: http://nodejs.org
In a terminal window go to the project folder ie., /internetsensors/trains
type: npm init
(just accept all the default values)
The following node packages are required. Install using npm. For example:
type: npm install request
Do the same with all these packages
These instructions are a bit confusing. A simpler UI is in the works. (that’s funny – I said it 8 years ago)
node ./max-train1.js
When you connect to the node server in a web browser, for example using the following url:
http://localhost:8124
You will get a message welcoming you and asking you to enter your name. After you enter your name, Max will send you a response. Then you can enter map points using the following format:
Dublin 53.15 -6.90
The map point will be drawn on the map in the Max patch.
Data communication is done with OSC messages. Here’s how
Here’s what the raw data looks like:
Note: if there’s no data at this link, check the time of day. Trains stop running around midnight UTC.
Essentially what this program does is collect current train position data from Ireland and display it as points on an XY grid.
components:
The server is written in node.js. This was my first real project using node. So I tried to make it do a bunch of things, just to test them out.The necessary features are
This is probably the most confusing part about this program. You can run it on the Mac in localhost mode, or you can run the node.js program on a separate server, as long as there is a direct ip path back to the computer where Max is running. Running a separate server makes more sense if you are using the chat or a remote web control aspect of this. I have run the node program on a Ubuntu server on my local network without making any changes other than to the IP addresses as explained next.
You need to make 2 changes to go from localhost mode, to separate server mode:
In the client program, max.html – near the top, change the ip address from localhost to the specific ip like this:
// note: if you want to run this program on something other than localhost, then put in the ip // address of the server here, instead of local host... // var socket = io.connect('http://localhost:8124'); // var socket = io.connect(192.168.1.10:8124');
In the server program, max-train1.js – change the destination address for UDP to the address of the computer where max is running:
var dSendAddress = '127.0.0.1'; // send response messages to max at this address // do this if max is running somewhere other than the same computer as the node server // var dSendAddress = '192.168.1.104'; // send response messages to max at this address
Also in the Max patch max-train3.maxpat you will need to change the [udpsend] object to give it the host address of the node server.
train-drawing4.maxpat
Data recorder:
To be able to save and replay data I included a data recorder in the patch. Its a revision of the data recorder from CNMAT by Michael Z. This version
The actual code for the patch is horrendous. Its filled with debugging objects and is a maze of patch cords lacking explanation. But it works…
Using xively.com and zapier.com
Note: To get this project to work you’ll need a Twitter account. And you’ll need to set up a device (feed) at xively.com and a ‘zap’ at zapier.com as directed in this post. It explains how to send tweets using triggers.
https://reactivemusic.net/?p=6903
Also, you may notice delays due to the number of steps involved.
Looking for an easier way? Send Tweets using ruby: https://reactivemusic.net/?p=7013
https://github.com/tkzic/internet-sensors
folder: twitter-curl
[aka.shell] download from here: http://www.iamas.ac.jp/~aka/max/ – and add the path to the folder to Options | File Preferences in Max
You can use curl for http: requests in Max by formatting the command line with [sprintf] and running it in [aka.shell]. There are a few idiosyncrasies – for example with escape sequences.
In tweetCurl5a.maxpat, the curl command is built in two sections:
Using ‘quotes’ with [sprintf]
You’ll notice a lot of backslashes used in [sprintf]. This is done to preserve quotes. Normally a quote in [sprintf] indicates a string. Use 3 backslashes to escape a quote:
\\\"
Passing arguments into [sprintf]
The [sprintf] code is obtuse because we are formatting JSON data. The resulting data looks like this:
{ "id":95586, "datastreams":[{ "current_value":"this is a tweet", "id": "tweet"}]}
Note that you can pass arguments into [sprintf] using %s – but if you are using a [textedit] to collect data from the user, you’ll need to use [tosymbol] to consolidate the text into a single symbol before passing into [sprintf]
Here’s the code which writes the formatted JSON data to a file:
The next step is to format the curl command, which will read the JSON data file and send an http: request to cosm.com. Here you can see the [sprintf] for this command.
At the very end of the [sprintf] you will see
>2&1
This is the linux method to redirect error messages and standard output from [aka.shell] to the same place, which in this case will be the Max window.
By the way, here is what the curl command will look like on the command line
curl -v --request PUT --data-binary @/tmp/abc.json --header "X-ApiKey: abcdefg1234567" http://api.cosm.com/v2/feeds/95586.json 2>&1
Note: The actual ApiKey above has been replaced with: abcdefg1234567 – so that you don’t accidentally send embarrassing Tweets from my account.
update 6/2014: Internet Sensors projects: https://reactivemusic.net/?p=5859
original post
http://zerokidz.com/internetMax.pdf
update 6/2014: latest version of MaxSDR offers FCD pro+ drivers: http://zerokidz.com/radio
original post
A fork of the David Pella code which was the basis for the MaxSDR project externals. It seems plausible that we could modify the drivers and get MaxSDR working with the funCube pro+.
By Alex Csete, OZ9AEC
http://www.oz9aec.net/index.php/funcube-dongle/479-the-funcube-dongle-propro-on-the-raspberry-pi
In this patch, Max uses the Soundcloud API to find available tracks for a user and then stream or download one of the tracks.
The Soundcloud API reference provides examples using curl.
http://developers.soundcloud.com/docs/api/reference
https://github.com/tkzic/internet-sensors
folder: soundcloud
By Ray Viljoen
https://github.com/RayViljoen/Raspberry-PI-SD-Installer-OS-X
Make sure the SD card is unlocked. It takes 5-10 minutes to copy a 4Gb card.
local downloaded files are in tkzic/rpi