Skip to content

Instantly share code, notes, and snippets.


Xavier Riley xavriley

View GitHub Profile
xavriley /
Created Feb 5, 2016
Getting LADSPA plugins working on Sonic Pi

Getting LADSPA plugins working on Sonic Pi

This is an evil experiment at the moment but it works

  • Download and install LMMS from
  • Run the attached SuperCollider file to create the synthdef locally (Overtone doesn't have ladspa yet)
  • patch the named ruby files as per the other attachments
  • start Sonic Pi
xavriley /
Last active Jul 9, 2022
Using Sonic Pi to practice guitar

Using Sonic Pi to practice guitar

This is an implementation of a scale exercise widely used in jazz teaching. It's sometimes known as the "big scale" exercise.


Let's say you practice the saxophone and you want to make sure you know all your major scales. One way to test this would be to play the scale within the limits of your instrument - saxophones have a lowest note and a highest note (from :Db3 to :A5 at concert pitch in Sonic-Pi speak - see here - assuming you don't get fancy with harmonics!)

Playing an Eb major scale over the whole range of the instrument would mean playing from :D3 to Ab5 (concert) as the lowest and highest notes available don't appear in the scale (:Db3 and :A5 respectively). When you hit the upper or lower limit you just reverse the direction and carry on going.

xavriley /
Last active May 23, 2022
Sennheiser VSM201 Vocoder Emulation in SuperCollider
xavriley /
Last active Feb 2, 2022
Original NES Mario Theme for Sonic Pi

Making Chiptune Music using Sonic Pi v2.0

Warning: this might not work on a RaspberryPi yet

I was curious about making retro gaming sounds using Sonic Pi. A couple of months and a lot of Googling later, here's the original Mario Bros theme as it was heard on the NES console.

I'm (just about) old enough to remember rushing home from school to play this game at Philip Boucher's house, sitting cross-legged in front of the TV till my feet got pins and needles. Working out how to recreate it for Sonic Pi was a lot of fun!

Getting the sounds of the NES chip

xavriley / clyde_stubblefield.rb
Created Jun 10, 2014
Funky drummer with Sonic Pi
View clyde_stubblefield.rb
# The funky drummer
# The aim here is to experiment with
# a) sequencing drums
# b) playing with 'time feel' which is
# music-speak for how the beat feels,
# ranging from robotic (0.0 swing_time)
# to ultra funky Fresh Prince of Bel Air
# theme tune style (0.2+ swing_time)
current_bpm = 180.0
xavriley / pyin-lf.patch
Created Jan 17, 2022
pYin patch for detecting low frequencies
View pyin-lf.patch
commit 6ed838b60173dc354fcb432e27bccb3a7a1e5769
Author: Xavier Riley <>
Date: Mon Jun 28 12:47:19 2021 +0100
Reduce min frequency detectable from 61Hz to 22Hz
diff --git a/LocalCandidatePYIN.cpp b/LocalCandidatePYIN.cpp
index fc69308..4f04fbc 100644
--- a/LocalCandidatePYIN.cpp
+++ b/LocalCandidatePYIN.cpp
xavriley /
Created Jul 6, 2015
Setting up VNC on a Kindle 4
xavriley /
Created Oct 20, 2015
"A Protocol for Packet Network Intercommunication" - VINTON G. CERF AND ROBERT E. KAHN (Plain text for Kindle, ereaders, ipads etc)
xavriley /
Last active Oct 1, 2021
Example of using LilypondExport to produce MusicXML from Lilypond. See for instructions
% LilyBin
\version "2.18.2"
\include "oll-core/package.ily"
\loadPackage lilypond-export
opts.exporter = #exportMusicXML
xavriley /
Created Nov 13, 2017
SuperCollider wavetable experiments for Sonic Pi
// BEGIN code to convert AKWF wavetables from 600 samples in length to 1024
// because VOsc3 needs a buffer which is a power of two to work properly
// this pipes in stdout from ls
var p, l;
p ="find ~/Projects/sonic-pi/etc/wavetables/AKWF/AKWF_0001 -iname *.wav", "r"); // list directory contents in long format
l = p.getLine; // get the first line