Could Someone Give me Advice for Creating a Dynamic Live Performance with Sonic Pi?

Hello there,

I am new to Sonic Pi and have been thoroughly enjoying experimenting with its capabilities. I am particularly interested in using Sonic Pi for a dynamic live performance and could use some advice from more experienced users.

I want to create an engaging live coding music performance where I can interact with the audience by modifying the code in real-time. I aim to keep the performance fresh and responsive to the audience’s reactions.

I play the guitar and have a friend who plays the keyboard. We’re looking to integrate these live instruments with the sounds generated by Sonic Pi. Any tips on how to sync live instruments with Sonic Pi, possibly through MIDI or other interfaces, would be greatly appreciated.

Also, I have gone through this post: https://in-thread.sonic-pi.net/t/notes-and-ideas-about-tableau-challenge-of-live-coding/933 which definitely helped me out a lot.

I am looking for any general best practices for performing live with Sonic Pi. This includes managing performance anxiety, ensuring smooth transitions between different pieces of code, and any troubleshooting tips for common issues that might arise during a live performance.

Thankyou in advance for your help and assistance.

Hi and welcome.

I too am fairly new to Sonic Pi, but I am a seasoned computer music composer and performer, so I will presume to offer some general guidelines on live coding, in the hope that you will share your experiences too.

Firstly, you mention other musicians - guitar and keyboards; they will only need to ‘sync’ to Sonic Pi if they are using their own rhythms tracks. In Sonic Pi go to View/Show Metronome/Link, and you’ll find lots of guidance elsewhere on this forum. If they are performing purely as solo instrumentalists, they can perform independently, or you can process their live audio in Sonic Pi via synth :sound_in.

For live coding practice specifically, the most important element I’ve found is to use a central clock for all other loops to sync to, for example:

live_loop :metro do
  cue :myClock
  sleep 4
end

live_loop :test, sync: :myClock do
  play 48
  sleep 1
end

But this approach depends upon the style/genre and your own artistic goals. Also, I have noticed many live coders making use of customised function definitions (within another buffer in Sonic Pi), which they can then call on and vary parameters in real time.

As always, in any artistic endeavour, it is vital that we seek inspiration from expert peers. Watch as many Sonic Pi live coding performances as you can; record yourself, compare and contrast, ask friends’ opinions.

Many of my peers here will (hopefully) agree that a minimalist uncluttered approach works best, artistically - give me limitations.

And a pre-gig glass of Malbec never let me down :wink:

Sorry to be quite vague.

PD-Pi