Each example is contained in a post/ folder, but… a few things were missing – like the html wrappers for each example. They can be copied from http://webaudioapi.com/samples, using ‘view source’ and making these changes:
remove Google analytics code
change file refs for static/ folder to ../static
Then copy style.css and js/shared.js and place them in a static/ folder at the same level as posts. This way the examples will look right and have all shared refs.
My version of source is in: tkzic/web-audio-api/webaudioapi
iOS code that demonstrates AVCaptureSession, AUGraph. Also, how to write audio data to a file. Basically the app records from the built-in mic and process with an AU delay effect
<code>Error validating server certificate for 'https://subversion.assembla.com:443': - The certificate is not issued by a trusted authority. Use the fingerprint to validate the certificate manually! Certificate information: - Hostname: *.assembla.com - Valid: from Thu, 24 Mar 2011 19:30:40 GMT until Sun, 24 Mar 2013 19:30:40 GMT - Issuer: 07969287, http://certificates.godaddy.com/repository, GoDaddy.com, Inc., Scottsdale, Arizona, US - Fingerprint: ae:b0:b6:94:14:5f:4b:28:d2:82:68:ae:e9:18:85:b3:ea:36:ee:f2 (R)eject, accept (t)emporarily or accept (p)ermanently?</code>
Today I set up a subpatcher in Max to launch a ruby server, using [aka.shell]. I didn’t realize it was running, so I ran it again – then Max froze, so I force-quit out of it. This left a zombie process in control of the UDP port.
Later I found this command, which identifies all processes on the machine:
# ps -xo pid,ppid,stat,command
Anyway, its probably not a good idea to run servers from shell commands without a way to kill them.
Here’s a screenshot of the sub-patcher which figures out how to run a shell command in the same folder as the patch:
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.
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'
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.