Skip to content

Instantly share code, notes, and snippets.

@fdmysterious
Last active October 24, 2023 14:59
Show Gist options
  • Save fdmysterious/9a0130ce9452064232b9f3f1fb9ead88 to your computer and use it in GitHub Desktop.
Save fdmysterious/9a0130ce9452064232b9f3f1fb9ead88 to your computer and use it in GitHub Desktop.
Fun with the Faust programming language for meditating sounds
// Load in FAUST IDE: https://faustide.grame.fr/?autorun=1&voices=0&name=noise_meditation&inline=aW1wb3J0KCJzdGRmYXVzdC5saWIiKTsNCg0KUSA9IDI7DQoNCm1hcCh2X21pbiwgdl9tYXgpID0gXyA6ICoodl9tYXgtdl9taW4pIDogKyh2X21pbik7DQoNCmZjX2wgPSBvcy5vc2NwKDAuMDgsIDAuMCkgOiAqKDAuNSkgOiArKDAuNSkgOiBtYXAoNTAwLCAxMDAwKTsNCmZjX3IgPSBvcy5vc2NwKDAuMDgsIDEpIDogKigwLjUpIDogKygwLjUpIDogbWFwKDUwMCwgMTAwMCk7DQoNCm9zY19uICA9IG5vLm5vaXNlOw0KZmlsdF9sID0gZmkucmVzb25scChmY19sLCBRLCAxLjApOw0KZmlsdF9yID0gZmkucmVzb25scChmY19yLCBRLCAxLjApOw0KDQpmaWx0X2MgPSBmaS5yZXNvbmxwKDE1MCwgNSwgNC4wKTsNCg0KY2hhbl9sID0gKG9zY19uIDogZmlsdF9sKSwgKG9zY19uIDogZmlsdF9jKSA6ICs7DQpjaGFuX3IgPSAob3NjX24gOiBmaWx0X3IpLCAob3NjX24gOiBmaWx0X2MpIDogKzsNCg0KZ2FpbiAgID0gaHNsaWRlcigiR2FpbiIsIDAuMiwgMC4wLCAxLjAsIDAuMDEpIDogc2kuc21vbzsNCg0KcHJvY2VzcyA9IGNoYW5fbCAqIDAuNCAqIGdhaW4sIGNoYW5fciAqIDAuNCAqIGdhaW47
import("stdfaust.lib");
Q = 2;
map(v_min, v_max) = _ : *(v_max-v_min) : +(v_min);
fc_l = os.oscp(0.08, 0.0) : *(0.5) : +(0.5) : map(500, 1000);
fc_r = os.oscp(0.08, 1) : *(0.5) : +(0.5) : map(500, 1000);
osc_n = no.noise;
filt_l = fi.resonlp(fc_l, Q, 1.0);
filt_r = fi.resonlp(fc_r, Q, 1.0);
filt_c = fi.resonlp(150, 5, 4.0);
chan_l = (osc_n : filt_l), (osc_n : filt_c) : +;
chan_r = (osc_n : filt_r), (osc_n : filt_c) : +;
gain = hslider("Gain", 0.2, 0.0, 1.0, 0.01) : si.smoo;
process = chan_l * 0.4 * gain, chan_r * 0.4 * gain;
// Load in FAUST IDE : https://faustide.grame.fr/?autorun=1&voices=0&name=notes_meditation&inline=aW1wb3J0KCJzdGRmYXVzdC5saWIiKTsNCg0Kbl9iYXNlICA9IDM1LjMyOw0KLy9uX2Jhc2UgID0gNTUuMzI7DQpuX25vdGVzID0gNDsNCg0KbWFwKHZfbWluLCB2X21heCkgPSBfIDogKih2X21heC12X21pbikgOiArKHZfbWluKTsNCg0KbGZvX2dsb2IocCkgPSBvcy5vc2NwKDAuNSxwKSA6ICooMC41KSA6ICsoMC41KSA6IG1hcCgtMC4xLCAwLjEpOw0KDQpvc2NzICAgPSBwYXIoaSwgbl9ub3Rlcywgbl9iYXNlICsgbGZvX2dsb2IoaSowLjIqbWEuUEkpICsgaSo3IDogYmEubWlkaWtleTJoeiAgOiBvcy5vc2NzaW4pIDo-IC8obl9ub3Rlcyk7DQoNCmNobyAgICAgPSBvc2NzIDogZGUuc2RlbGF5KDIwNDgsIDEyOCwgb3Mub3NjcCgxLCAwLjApIDogKigwLjUpIDogKygwLjUpIDogbWFwKDEwMCwgMjAwKSk7DQoNCm9zY3NfbCA9IG9zY3MsIGNobyA6ICsgOiAqKG9zLm9zY3AoMC4yLCAgICAgMC4wKSAqIDAuNSArIDAuNSkgOiAqKDEwKTsNCm9zY3NfciA9IG9zY3MsIGNobyA6ICsgOiAqKG9zLm9zY3AoMC4yLCBtYS5QSS8yKSAqIDAuNSArIDAuNSkgOiAqKDEwKTsNCg0KcHJvY2VzcyA9IG9zY3NfbCwgb3Njc19yIDogZG0ueml0YV9yZXYxOw%3D%3D
import("stdfaust.lib");
n_base = 35.32;
//n_base = 55.32;
n_notes = 4;
map(v_min, v_max) = _ : *(v_max-v_min) : +(v_min);
lfo_glob(p) = os.oscp(0.5,p) : *(0.5) : +(0.5) : map(-0.1, 0.1);
oscs = par(i, n_notes, n_base + lfo_glob(i*0.2*ma.PI) + i*7 : ba.midikey2hz : os.oscsin) :> /(n_notes);
cho = oscs : de.sdelay(2048, 128, os.oscp(1, 0.0) : *(0.5) : +(0.5) : map(100, 200));
oscs_l = oscs, cho : + : *(os.oscp(0.2, 0.0) * 0.5 + 0.5) : *(10);
oscs_r = oscs, cho : + : *(os.oscp(0.2, ma.PI/2) * 0.5 + 0.5) : *(10);
process = oscs_l, oscs_r : dm.zita_rev1;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment