Using internet ping data to control a synthesizer in Max
This project uses ‘ping’ times to about 40 Google domains, like google.ca, google.de, etc., to control pitch and amplitude of a 20 voice droning synthesizer.
Imagine working in a Google control center. A soothing low pitched drone fills the room. Then Suddenly you hear a slowly rising pitch. You check the monitors – Google Paraguay is experiencing network failure. You light a cigarette and wait for things to calm down.
update 2/6/2021
Not using ruby to ping – due to API shutting down. The new version uses the Max [shell] external to ping from the command line.
download
https://github.com/tkzic/internet-sensors
folder: ping
files
main Max patch
- sound-of-a-new-machine3.maxpat
abstractions and other files
- [shell] from https://github.com/jeremybernstein/shell/releases/tag/1.0b2 download this external and add the folder to Options | File Preferences, in Max
- google.txt (list of domains for [coll] object
instructions
- Open the Max patch: sound-of-a-new-machine3.maxpat
- Turn on audio. Turn up the gain.
- In the Max patch, click the toggle box to start polling. It may take a minute to hear any sounds, while the oscillators are loading. Increase polling speed to 400 or so if you can’t wait.
- Another reason you might not hear anything interesting is if the clip threshold is too low. Watch the incoming ping times and set the clip threshold above the average level.
- Adjust the pitch multiplier to your desired pitch range. It will take some time for all of the oscillators to adjust after a pitch change.
- If you hear clicks or pops, try reducing the sample rate to 44.1 KHz, or increasing the IO vector size (in Options | Audio Status).
note: Occasionally the server program will time-out when its launched. Try launching again, or edit it and increase the timeout value in [p shellping].
deprecated information for previous version using ruby
The server is a ruby script which handles the http: requests using the Mashape ping-uin API and sends messages to Max using OSC
The synth has a weird clustering drone like effect like some kind of alien life force.
The patch design is kind of embarrassing. Its obvious I forgot how to use [poly~]. Maybe by the time you read this, we’ll have addressed this. Hey billions of patch cords look cool.
Here’s an example of the Mashape API in curl
curl --include --request GET 'https://igor-zachetly-ping-uin.p.mashape.com/pinguin.php?address=google.ca' \ --header 'X-Mashape-Authorization: YOUR-MASHAPE-API-KEY'
Here’s a list of Google domains
http://en.wikipedia.org/wiki/List_of_Google_domains
download
https://github.com/tkzic/internet-sensors
folder: ping
files
main Max patch
- sound-of-a-new-machine2.maxpat
abstractions and other files
- google.txt (list of domains for [coll] object
ruby
- domain-ping.rb
ruby gems
install the following ruby gems using: sudo xcrun gem install <gem-name>
- require ‘osc-ruby’
- require ‘patron’
- require ‘json’
authorization
- Register with mashape http://mashape.com to get an API-key for ping-uin
- Then edit domain-ping.rb to enter your mashape API-key.
instructions
- Open the Max patch: sound-of-a-new-machine2.maxpat
- Turn on audio. Turn up the gain.
- From a terminal window type the following command
# ./domain-ping.rb
- In the Max patch, click the toggle box to start polling. It may take a minute to hear any sounds, while the oscillators are loading. Increase polling speed to 400 or so if you can’t wait.
- Another reason you might not hear anything interesting is if the clip threshold is too low. Watch the incoming ping times and set the clip threshold above the average level.
- Adjust the pitch multiplier to your desired pitch range.
- When you’ve had enough, type <ctrl-c> in the terminal window to stop the server.
note: Occasionally the server program will time-out when its launched. Try launching again, or edit it and increase the timeout value.