Skip to content

Instantly share code, notes, and snippets.

View sroccaserra's full-sized avatar
🐿️

Sébastien Roccaserra sroccaserra

🐿️
View GitHub Profile
@sroccaserra
sroccaserra / resample_interpolation.c
Created August 31, 2020 07:18
Basic resampling / audio pitch shifting
///
// from: https://discourse.libsdl.org/t/audio-pitch-question/4822/5
// resample without interpolation
for (i=0;i<len;i++)
{
pos=(int)wav_position;
assert(pos>=0);
assert(pos<=wav_length);
@sroccaserra
sroccaserra / main.rb
Last active July 4, 2020 22:08
Work in a 320x180 resolution in DragonRuby
# https://dragonruby.itch.io/
BUFFER_W = 1280.div(4) # 320
BUFFER_H = 720.div(4) # 180
def tick args
args.render_target(:buffer).sprites << {
x: 0,
y: 0,
w: BUFFER_W,
@sroccaserra
sroccaserra / bassline.muc
Last active July 1, 2020 23:09
FM Bassline (mucom88 MML)
#pcm mucompcm.bin
# *1{o3g8>gr<g>fr<g>gr<g>fr<g>f&g}
A T120 v15l16 @30 L [*1]4 k3 *1 k5 *1 k0 *1 <g8 r4. l8 r8 eff+
B T120 v13l2o5 @23 M30,1,6,4 L dfecdfega>c< b- a g1 <g2.r4
# *2{[r8gg]16 [r8 b- b-]4 [r8>cc]4 [r8<gg]8}
H T120 v12l16o5 @64 L *2
I T120 v12l16o5 @64 L k7 *2
@sroccaserra
sroccaserra / voice.dat
Created June 29, 2020 21:49
List of mucom88 default instruments
dgt1
......
......
back1
main2
main3
7thv04
back2
brass1
......
@sroccaserra
sroccaserra / convert.bash
Last active June 13, 2020 09:48
Convert wave files to 44100 kHz with SoX (useful for 44100 kHz only samplers like the Octatrack)
#!/usr/bin/env bash
# Note: requires bash 4.4+ for `readarray -d`
# Note: requires SoX - http://sox.sourceforge.net/
set -e
back="${PWD}"
function convert_samples_in_dir {
@sroccaserra
sroccaserra / 2020-04-23_Une_nuit_dans_l_hexagone.md
Last active April 24, 2020 09:57
2020-04-23 Une nuit dans l'hexagone (DDD Fr + Duchess France)

Une nuit dans l'hexagone (DDD Fr + Duchess France)

Programmation fonctionnelle et architecture hexagonale : l'architecture hexagonale ne cloisonne pas les effets de bord. Les services du domaine appellent des repositories qui ont des effets de bord, ce qui rend le domaine difficilement réutilisable. Dans ce cas on va préférer utiliser un pattern qui s'appelle "functional core, imperative shell".

Sur des services très techniques, qui n'ont pas de logique métier. Alors l'architecture hexagonale coûte cher : isoler le métier nécessite de dupliquer la représentation du domaine dans les adapteurs de droite et dans les adapteurs de gauche. (Note : voir la discussion sur les DTOs plus bas, qui tempère cette sensation.)

@sroccaserra
sroccaserra / list_brew_removeable_packages.md
Last active April 16, 2020 12:50
List brew removeable packages

For fish shell:

$ git diff --no-index (brew deps --installed | cut -d':' -f2- | tr ' ' "\n" | sed '/^$/d' | sort | uniq | psub) (brew list | psub)
@sroccaserra
sroccaserra / make_pulse.py
Last active December 23, 2021 01:45
Generate a single cycle pulse wave file in Python 3
import wave
fichier = 'pulse.wav'
def main(fichier):
"""
Generate a single cycle mono pulse of 600 unsigned 8 bytes samples at
44100 Hz. This should be a D. Loop it and add 10 steps in your sampler
to tune it to C.
@sroccaserra
sroccaserra / colors.awk
Created February 20, 2020 14:57
Add colors to clojure test runner
#!/usr/bin/env awk -f
{ color = 0 }
/actual/ { color = 31 }
/0 failures, 0 errors|expected/ { color = 32 }
{ print "\033["color"m"$0 }
@sroccaserra
sroccaserra / paysage.pde
Created January 8, 2020 14:52
Paysage des lunes en 3d de Jonathan pour la fête colorée de fin d'année
// https://paysage.xyz/playground/fcfa/programmer
// https://adventofcode.com/2019/day/12
var moons = [];
moons.push(new PVector(-6, 2, -9));
moons.push(new PVector(12, -14, -4));
moons.push(new PVector(9, 5, -6));
moons.push(new PVector(-1, -4, 9));