Skip to content

Instantly share code, notes, and snippets.

View albedozero's full-sized avatar

Bill Peterson albedozero

View GitHub Profile
@albedozero
albedozero / squishbox-install.bash
Last active June 7, 2021 16:52
Install script for SquishBox and/or headless Raspberry Pi synth
#!/bin/bash
installdir=""
UPDATED=false
UPGRADE=false
PYTHON_PKG=""
ASK_TO_REBOOT=false
promptorno() {
read -r -p "$1 (y/[n]) " response < /dev/tty
@albedozero
albedozero / chisqprob_demo.py
Last active November 24, 2021 17:29
Chi-square probability using scipy
import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import chi2
# load the data
data = np.loadtxt('chisqprob_demo.py', delimiter=',', skiprows=30, max_rows=3200)
vmeas = data[:,0]
vmodel = data[:,1]
sd_volts = 0.06 # voltage measurement uncertainty (estimated)
@albedozero
albedozero / lesson1.yaml
Last active November 29, 2021 02:43
The example fluidpatcher bank file constructed in video lesson 1: https://youtu.be/k6_rTFHzgo0
# basic bank file
patches:
Electric Piano:
1: FM Piano.sf2:000:000
Synth:
1: VintageDreamsWaves-v2.sf2:000:042
Jazz Combo:
1: FluidR3_GM.sf2:000:004
10: FluidR3_GM.sf2:128:000
2: FluidR3_GM.sf2:000:033
@albedozero
albedozero / lesson2.yaml
Last active December 6, 2021 08:41
The example fluidpatcher bank file constructed in video lesson 2: https://youtu.be/wF9XhXp0ONs
# fluidsettings and bank vs. patch level
patches:
Piano:
1: FluidR3_GM.sf2:000:000
Rhodes EP:
1: FluidR3_GM.sf2:000:004
fluidsettings:
synth.reverb.room-size: 0.1
Legend EP:
1: FluidR3_GM.sf2:000:005
@albedozero
albedozero / lesson3.yaml
Last active December 9, 2021 19:16
The example bank file constructed in fluidpatcher lesson 3: https://youtu.be/53OFZnKhPa8
# router rules
patches:
Layered Piano/Strings:
1: FluidR3_GM.sf2:000:000
2: FluidR3_GM.sf2:000:042
router_rules:
- {type: note, chan: 1=2}
Split EP and Bass:
3: FluidR3_GM.sf2:000:004
2: FluidR3_GM.sf2:000:033
@albedozero
albedozero / lesson4.yaml
Last active February 6, 2022 01:30
The example FluidPatcher (https://github.com/albedozero/fluidpatcher) bank file constructed in lesson 4 (https://youtu.be/K_TKv0kQubU)
# messages keyword and init block
init:
fluidsettings:
synth.reverb.level: 1.0
synth.reverb.room-size: 0.8
synth.reverb.damp: 0.8
synth.reverb.width: 5.0
messages: [cc:1:74:0, cc:1:91:60]
messages:
@albedozero
albedozero / linreg.py
Created February 24, 2022 05:05
Quick script for calculating linear fit with uncertainty from x, y values
import sys
import numpy as np
class LinFit:
def __init__(self, x, y):
d = x.size * np.sum(x ** 2) - np.sum(x) ** 2
self.intercept = (np.sum(x ** 2) * np.sum(y) - np.sum(x) * np.sum(x * y)) / d
self.slope = (x.size * np.sum(x * y) - np.sum(x) * np.sum(y)) / d
self.s_y = np.sqrt(np.sum((y - self.intercept - self.slope * x) ** 2) / (x.size - 2))
self.s_intercept = self.s_y * np.sqrt(np.sum(x ** 2) / d)
@albedozero
albedozero / cc_patches.yaml
Created April 5, 2022 05:10
bank file that routes CC messages to increment/decrement patches or select a specific patch
# a demo bank that shows how CCs can be used to select patches
router_rules:
- {type: cc, par1: 45, par2: 1-127=1, patch: select} # CC45 selects patch 1 (Piano)
- {type: cc, par1: 46, par2: 1-127=2, patch: select} # CC46 selects patch 2 (Rhodes)
- {type: cc, par1: 47, par2: 1-127=3, patch: select} # CC47 selects patch 3 (FM Piano)
- {type: cc, par1: 48, par2: 1-127=4, patch: select} # CC48 selects patch 4 (Vibes)
- {type: cc, par1: 49, par2: 1-127, patch: -1} # CC49 decrements patch
- {type: cc, par1: 50, par2: 1-127, patch: 1} # CC50 increments patch
@albedozero
albedozero / glissando.yaml
Created June 1, 2022 18:34
Demonstration of playing glissandos using sequencers and arpeggiators
patches:
Glissandos:
2: FluidR3_GM.sf2:000:000
sequencers:
CMaj:
tdiv: 32
notes: [note:2:C4:100, note:2:D4:100, note:2:E4:100, note:2:F4:100,
note:2:G4:100, note:2:A4:100, note:2:B4:100, note:2:C5:100]
Dm7:
tdiv: 32
@albedozero
albedozero / breath.yaml
Last active July 9, 2022 19:41
A simple fluidpatcher (https://github.com/albedozero/fluidpatcher) bank demonstrating use of a breath controller i.e. EWI
patches:
Flute:
1: FluidR3_GM.sf2:000:073
router_rules:
- {type: cc, par1: 2=11} # route breath to expression
messages:
- cc:1:68:127 # enable legato playing