Skip to content

Instantly share code, notes, and snippets.

View vsandstrom's full-sized avatar
🌊
Working from home

Viktor Sandström vsandstrom

🌊
Working from home
View GitHub Profile
@vsandstrom
vsandstrom / midi_message.rs
Created July 15, 2025 09:32
MIDI message polymorphism
use crate::{
Arc, Mutex, MidiOutputConnection,
util::logging::err_send_log,
};
use std::marker::PhantomData;
const NRPN_MSB: u8 = 0x63;
const NRPN_LSB: u8 = 0x62;
const NRPN_DATA1: u8 = 0x06;
@vsandstrom
vsandstrom / osctest.cpp
Last active March 13, 2025 15:30
Portaudio example
#include <cstdio>
#include <cstring>
#include <iostream>
#include "../portaudio/include/portaudio.h"
#include "../dsp/dsp.h"
#include "../dsp/interpolation.hpp"
#include "../dsp/wavetable.hpp"
#include "../dsp/waveshape.h"
@vsandstrom
vsandstrom / 1.scd
Last active October 21, 2024 08:03
supercollider
~vals = (
dur: 2.55*(([[3.55*0.5, 3.55].dup(9).flat, [3.55].dup(9).flat,
[1.76].dup(20).flat].permute(4).flat) ++ [17.5]),
freq: [50].dup(4).flat ++ [100] ++ [75].dup(2).flat, // freq: [120].dup(16).flat ++ [100].dup(16).flat,
bs: 4,
fb: 1.8,
ev: [0, 0.75, 0.2, 0],
// et: #[0.01, 0.01, 0.01],
et: [2.51, 4.01, 5.01],
ec: [4, 0.4, -5],
@vsandstrom
vsandstrom / wavetable.hpp
Created September 23, 2024 20:16
wavetable impl
#include <utility>
#ifndef DEBUG
#define D(x)
#else
#include <assert.h>
#define D(x) x
#endif
namespace dspheaders {
class Wavetable {
@vsandstrom
vsandstrom / stack_overflow.md
Created August 16, 2024 16:10
stack_overflow

Rust DSP

[ stack overflow ] [ arrays ] [ alloc ]

förstod äntligen varför min optimisering i granulator-libbet och andra strukter som använder långa buffrar för inspelade samples, har krashat när jag försökt bygga de senaste 2 månaderna.

stack overflow
@vsandstrom
vsandstrom / iterators.md
Created August 8, 2024 12:09
Iteratorer och array access

Rust DSP

[ iterators ] [rust language ]


Enligt ett blogginlägg kring iterators och array-indexering framgick det att det naiva sättet att göra en for-loop tydligen hade en viktig detalj när det gäller performance. De beter sig inte som man tror att de ska göra.

@vsandstrom
vsandstrom / table_benching.md
Last active August 7, 2024 10:11
benchmarking av wavetables

Rust DSP

[ benchmarking ]


I anteckningen om Wavetables presenterades 3 olika implementationer av en oscillator av wavetable-typ. De som skilde dem åt var hur de hanterade ägandeskapet av vågtabellerna. En använde Arc<RwLock<Vec<f32>>>, en använde en

@vsandstrom
vsandstrom / table_borrow.md
Created August 6, 2024 19:44
Table Borrow

Rust DSP

[ wavetable ] [ borrow checker ]

Bestämde mig för att se om jag kunde bygga om WaveTable-oscillator-klassen så att de delar samma vågtabell-array. Detta var inte helt lätt, framförallt genom CPAL, där alla instanser måste 'flyttas' in i en ny tråd.

borrow checker
@vsandstrom
vsandstrom / wt_design.md
Last active August 6, 2024 14:42
wavetable design

Rust DSP

[ wavetable ] [ design ]

Olika typer av vågtabelldesign och vilka fördelar de har. Hur designen har utvecklats från första modell till sista.

Vågtabelldesign:

  1. Owned:
@vsandstrom
vsandstrom / limit5.scd
Last active July 5, 2024 19:17
5-limit Just Intonation
/*
5-Limit Just Intonation
*/
f = 261.0; // Stora C
// Förhållanden nedan representerar alla halvtoner på en oktav. Vi multiplicerar