Tramontana app - Send phone sensor data as OSC messages to Sonic Pi

I discovered this as a library for p5.js to send phone data into a sketch, but it also has a feature to send phone sensor data (touch or accelerometer) as OSC messages. So obviously I had to try it with Sonic Pi. Super easy to get up and running. You just have to download the app to your phone and enter your ip and Sonic Pi OSC port # (4559).

Here’s the website:

This is the tutorial to use the OSC feature in the app. The tutorial shows it being used to communicate with Wekinator but just use the Sonic PI OSC port # instead and you will see the data automatically getting sent into Sonic Pi.

This thread was also helpful to map phone sensor data into usable parameter ranges:

Here are an example of using accelerometer data to change notes:

And another one using accelerometer to change synth cutoff:


This looks very interesting. Thanks for posting.


tried it out and it works quite well. Found the app a bit fiddly to set up, and also it doesn’t keep its settings. You have to reload them each time you start the app. However for a freebie it is a not at all bad.

1 Like

Yes, I agree that is a bit annoying. I also have changed the time setting for when the phone screen goes to sleep to avoid having to constantly reset it.

Yes I changed the sleep timeout too. It would be gray if the app would work in the background. You can’t easily use the touch sensor as it is although it does work. I set up programs using both x and y input. ( and z via tapping!)

Would love to see what you did.

Here’s the a combination of the two examples I made vids of. One axis controls the note and one controls the cutoff.

define :rMap do |rIn, rOut, v|
  dOut = rOut[1] - rOut[0]
  dIn = rIn[1] - rIn[0]
  dOut / dIn * (v - rIn[0]) + rOut[0]

live_loop :foo do
  b, c = sync "/osc/wek/inputs"
  set :yaw, c
  set :roll, b

n = scale(:e3, :aeolian, num_octaves: 2)
live_loop :osctest, sync: :foo do
  use_synth :tb303
  x = rMap([-3.5, 3.2], [1.0, 131.0], get[:yaw])
  y = rMap([-1.6, 1.6], [0.0, n.length], get[:roll])
  play n[y], cutoff: x
  sleep 0.25  
1 Like