MBTA API in Max

Sonification of Mass Ave buses, from Nubian to Harvard.

Updated for Max8 and Catalina

This patch requests data from MBTA API to get the current location of buses – using the Max js object. Latitude and Longitude data is mapped to oscillator pitch. Data is polled every 10 seconds, but it seems like the results might be more interesting to poll at a slower rate, because the updates don’t seem that frequent. And buses tend to stop a lot.

Original project link from 2014: https://reactivemusic.net/?p=17524

MBTA developer website: https://www.mbta.com/developers

This project uses version 3 of the API. There are quality issues with the realtime data. For example, there are bus stops not associated with the route. The direction_id and stop_sequence data from the buses is often wrong. Also, buses that are not in service are not removed from the vehicle list or indicated as such.

The patch uses a [multislider] object to graph the position of the buses along the route – but due to the data problems described above, the positions don’t always reflect the current latitude/longitude coordinates or the bus stop name.

download

https://github.com/tkzic/internet-sensors

folder: mbta

patches:

  • mbta.maxpat
  • mbta.js
  • poly-oscillator.maxpat
authentication

You will need  to replace the API key in the message object at the top of the patch with your own key. Or you can probably just remove it. The key distributed with the patch is fake. You can request your own developer API key from MBTA. It’s free.

instructions
  • Open mbta.maxpat
  • Open the Max console window so you can see what’s happening with the data
  • click on the yellow [getstops] message to get the current bus stop data
  • Toggle the metro (at the top of the patch) to start polling
  • Turn on the audio (click speaker icon) and turn up the gain

Note: there will be more buses running during rush hours in Boston.  Try experimenting with the polling rate and ramp length in the poly-oscillator patch. Also, you can experiment with the pitch range.

Soundcloud API in Max8

updated version of  https://reactivemusic.net/?p=5413

This project is part of the internet-sensors project: https://reactivemusic.net/?p=5859

In this patch, Max uses the Soundcloud API to search tracks and then select a result to download and play. It uses the node.js soundcloud-api-client https://github.com/iammordaty/soundcloud-api-client

For information on the soundcloud API http://developers.soundcloud.com/docs/api/reference

download

https://github.com/tkzic/internet-sensors

folder: soundcloud

files

main Max patch
  • sc.maxpat
node.js files
  • scnode.js

authorization

  • The Soundcloud client-id is embedded in scnode.js – you will need to edit this file to replace the worthless client-id with your own. To get a client ID you will first need a Soundcloud account. Then register an app at: http://soundcloud.com/you/apps

first time instructions

  • Open the Max patch: sc.maxpat
  • In the green panel, click on [script npm init]
  • In the green panel , click on [script install soundcloud-api-client]

instructions

  • Open the Max patch sc.maxpat
  • open the max.console window so you can see the API data
  • click [script start]
  • click the speaker icon to start audio
  • type something into the search box and press <enter> or click the button to the left to search for what is already in the box.
  • select a track from the result menu, wait for it to download and start playing

Remote radio – client

How to set up the client side of the remote radio system.

(under construction) patches have not been uploaded to github

This client works with the sever described in the previous post. We are running a MacBook Pro OSx 10.11.4. with the following:

  • logmein hamachi VPN
  • Soundjack VOIP
  • Max/MSP
  • Novation launchpad
  • DJ-Tech CDJ-101 controller

VPN

Install and set up LogMein Hamachi. It is free, for a limited number of computers.  Set up a Hamachi server on both the server and client. It should look something like this:

 

VOIP

We are using Soundjack VOIP. It is also free. Use the following parameters on the client side.

  • mic: soundflower 2ch (or something that is not currently producing input!)
  • headphone: default output (or whatever you want to listen on)

Screen Shot 2016-04-05 at 12.23.54 AM

You can ignore the rest of the settings, since we are not sending audio. Most of the configuration is done on the server side.

Max

We are using several patches, depending on which hardware controllers you are using. Make sure that the hardware controllers are connected before opening Max.

patches:
  • eagle-ui5.maxpat – User interface and main entry point for client communication and CDJ-101 abstrations

Screen Shot 2016-04-05 at 12.28.56 AM

  • freqdb4.maxpat – database handler

Screen Shot 2016-04-05 at 12.29.17 AM

  • lp_radio2.maxpat – launchpad driver

Screen Shot 2016-04-05 at 12.28.41 AM

After the max patches are loaded, you should be able to control the radio using the UI and the CDJ-101 controller. The red Mixer button in the upper right corner of the Launchpad should be lit.

Instructions:

to be continued…

Remote radio – server

How to run the server side (base station) of the remote shortwave radio system.

(Under construction) The patches have not been uploaded to github yet.

Assuming that the radio and antenna system are operating. We are using an internet connected MacBook Pro running OSx 10.9.5, with a MOTU 828 MK3 audio interface.

VPN

Install and set up LogMein Hamachi. It is free, for a limited number of computers.  Set up a Hamachi server on both the server and client. It should look something like this:

 

VOIP

We are using Soundjack VOIP. It is also free. Use the following parameters on the server side.

Local Settings:
  • mic: audio interface channel that is connected to radio audio output
  • headphone: doesn’t matter
  • volume: 0
  • audio block samples: 512
  • channels: 2
  • network packet samples 512
  • quality: high
  • userlist: manual

Screen Shot 2016-04-05 at 12.38.03 AM

User list:

UDP/IP: enter hamachi IP of client.

When Soundjack is set up on the client. Press the green start button on the right side of the user list window on the server.

If all goes well, you should hear the radio on the client. Note: The input meter under local settings should be registering audio from your radio. If not, there is a problem with the audio interface.

Max Server

The Max/MSP server exchanges CAT commands via the server serial port to the radio. The command data is exchanged with a Max patch on the client using OSC (over UDP).

Screen Shot 2016-04-05 at 12.46.02 AM

patch:

eagle-cat8.maxpat

instructions:
  • select the radio serial port from the menu (for example: usbmodem 14531)
  • initialize port settings
  • set toggle to poll the serial port

At this point you should be able to try the example commands, for instance to get the version or set frequency. If the commands are not working, it indicates a problem with the serial connection to the radio.

Next, check the IP address of the udpsend object. It should be the hamachi IP of the client.

 

See yourself in Code

“Commissioned for the BBC’s make it digital event, the brief was ‘to get children into code’. My installation downloaded the event’s twitter feed in real time and displayed the page’s body text inside the bodies of passing people. Moving their hands around allowed people to scroll through the html/js/CSS.”

By Robin Price

http://robinprice.net/2015/03/do-you-see-yourself-in-code/

20150227-Robin-10-1024x683

 

This project uses:

  • maxurl
  • jit.gl.text2d
  • jit.openni
  • kinect

https://cycling74.com/project/do-you-see-yourself-in-code/