Skip to content

Instantly share code, notes, and snippets.

View jarmitage's full-sized avatar

Jack Armitage jarmitage

View GitHub Profile
@jarmitage
jarmitage / midimapping_2026-04-08_12-52.json
Created April 8, 2026 12:10
Strudel.cc MIDI CC input mappings to PAM (http://map.audio)
[
{
"channel": 1,
"enabled": true,
"id": "macro_volume_default",
"invert": false,
"mode": "absolute",
"number": 1,
"paramId": "macro_volume",
"range": {
@jarmitage
jarmitage / CycleMonitor.hs
Created December 11, 2025 17:30
TidalCycles prompt live monitor, see e.g. https://www.youtube.com/watch?v=_N0cikVFu-o
-- Research VSCode plugin/sidebar?
-- https://code.visualstudio.com/api/references/vscode-api#StatusBarItem
-- https://github.com/microsoft/vscode-extension-samples/blob/main/statusbar-sample/src/extension.ts
-- https://github.com/tidalcycles/vscode-tidalcycles/blob/master/src/main.ts
-- t:120 | l0 . c:0 . 190_operon(1,2,5 | pc,bd,syn): [35/64, -29 | 1:20s, 50s]
-- TODO:
-- Link clients
@jarmitage
jarmitage / speaker 2 remover.py
Created November 25, 2025 19:50
Annoying podcast host remover
#!/usr/bin/env python3
"""
Extract audio segments for Speaker 1 from an SRT file and M4A audio.
"""
import re
from pathlib import Path
from pydub import AudioSegment
{
"functions": {
"fast": "speedy",
"slow": ["sluggish", "tardy"]
},
"colors": {
"red": "rouge",
"blue": ["bleu", "bleue"]
}
}
@jarmitage
jarmitage / lava_new_version.py
Created June 15, 2024 14:37
Taichi Python version of "Lava New Version" by MelisaHot on Shadertoy https://www.shadertoy.com/view/ssKBzm
"""
"Lava New Version" by MelisaHot on Shadertoy
https://www.shadertoy.com/view/ssKBzm
"""
import taichi as ti
ti.init(arch=ti.vulkan)
@ti.func
@jarmitage
jarmitage / sardine_signalflow.py
Last active June 20, 2024 15:56
Sardine x SignalFlow example
from sardine_core.run import *
import os
import signalflow as sf
graph = sf.AudioGraph()
audio_path = "/signalflow/examples/audio/stereo-count.wav"
buf = sf.Buffer(audio_path)
player = sf.BufferPlayer(buf, loop=True)
player.play()
@jarmitage
jarmitage / sinebank.py
Created February 17, 2024 21:56
tolvera signalflow sketch
import numpy as np
from tolvera import Tolvera, run
from tolvera.osc.update import Updater
from tolvera.utils import map_range
from signalflow import *
class Sine(Patch):
def __init__(self, freq=880, gain=1.0, pan=0.0):
super().__init__()
freq = self.add_input("freq", freq)
@jarmitage
jarmitage / IntechGrid.svg
Created September 12, 2023 14:22
Intech Studio Grid SVG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@jarmitage
jarmitage / cirklon_json_to_tidal.py
Last active September 5, 2023 15:45
Cirklon JSON MIDI mapping file to Tidal MIDI CC mapping
import json
import argparse
def load_json(name):
with open(name) as f:
data = json.load(f)
return data
def make_tidal_map(cc_dict, prefix):
tidal_map = []
@jarmitage
jarmitage / taichi_cv_videocapture.py
Created May 8, 2023 22:08
Taichi OpenCV VideoCapture Webcam GGUI Window
import taichi as ti
import cv2 as cv
cap = cv.VideoCapture(0)
if not cap.isOpened():
print("Cannot open camera")
exit()
ti.init(arch=ti.vulkan)
x,y = 1920,1080