This GitLab instance reached the end of its service life. It won't be possible to create new users or projects.

Please read the deprecation notice for more information concerning the deprecation timeline

Visit migration.git.tu-berlin.de to import your old projects to the new GitLab platform 📥

Commit 286c8ab0 by Henrik von Coler

Added .dsp files!

parent 61ba1018
File mode changed from 100644 to 100755
#N canvas 1326 695 450 300 10;
#X floatatom 50 173 0 0 0 0 - - -;
#X obj 31 122 notein;
#X floatatom 31 196 0 0 0 0 - - -;
#X floatatom 70 148 0 0 0 0 - - -;
#X text 65 196 note;
#X text 80 174 velocity;
#X text 100 150 channel;
#X floatatom 299 181 0 0 0 0 - - -;
#X floatatom 283 210 0 0 0 0 - - -;
#X floatatom 315 148 0 0 0 0 - - -;
#X obj 283 123 ctlin;
#X text 314 213 value;
#X text 330 174 controller number, f 10;
#X text 348 149 channel;
#X text 27 20 When connected to a MIDI device \, MIDI controller numbers
can be found using this patch (from the MIDI help files).;
#X connect 1 0 2 0;
#X connect 1 1 0 0;
#X connect 1 2 3 0;
#X connect 10 0 8 0;
#X connect 10 1 7 0;
#X connect 10 2 9 0;
File mode changed from 100644 to 100755
#N canvas 0 106 1920 974 10;
#X obj 927 21 cnv 15 700 350 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 101 395 cnv 15 700 350 empty empty empty 20 12 0 14 -233017
-66577 0;
#X obj 930 394 cnv 15 700 350 empty empty empty 20 12 0 14 -233017
-66577 0;
#X obj 104 16 cnv 15 700 350 empty empty empty 20 12 0 14 -233017 -66577
0;
#N canvas 0 50 450 250 (subpatch) 0;
#X array seq1 8 float 3;
#A 0 685.714 192.857 192.857 192.857 214.286 214.286 214.286 214.286
;
#X coords 0 1000 8 0 200 140 1 0 0;
#X restore 552 139 graph;
#X obj 454 242 array get seq1;
#X floatatom 454 262 5 0 0 0 - - -, f 5;
#N canvas 0 106 1920 974 step 0;
#X floatatom 122 135 5 0 0 0 - - -, f 5;
#X msg 324 80 0;
#X obj 165 64 i 0;
#X obj 165 97 + 1;
#X obj 237 115 moses 8;
#X obj 165 4 r clock;
#X obj 122 157 outlet;
#X connect 0 0 6 0;
#X connect 1 0 2 1;
#X connect 2 0 3 0;
#X connect 2 0 0 0;
#X connect 3 0 4 0;
#X connect 4 0 2 1;
#X connect 4 1 1 0;
#X connect 5 0 2 0;
#X restore 454 220 pd step;
#N canvas 0 50 450 250 (subpatch) 0;
#X array seq2 8 float 3;
#A 0 1.57143 0.385708 0.228571 0.185713 0.17857 0.171427 0.171427 0.171427
;
#X coords 0 2 8 0 200 140 1 0 0;
#X restore 196 127 graph;
#N canvas 0 106 1920 974 step 0;
#X floatatom 122 135 5 0 0 0 - - -, f 5;
#X msg 324 80 0;
#X obj 165 97 + 1;
#X obj 237 115 moses 8;
#X obj 165 4 r clock;
#X obj 122 157 outlet;
#X obj 165 64 i 0;
#X connect 0 0 5 0;
#X connect 1 0 6 1;
#X connect 2 0 3 0;
#X connect 3 0 6 1;
#X connect 3 1 1 0;
#X connect 4 0 6 0;
#X connect 6 0 2 0;
#X connect 6 0 0 0;
#X restore 119 31 pd step;
#X obj 119 53 array get seq2;
#X obj 154 277 oscformat subtractive_triggered trigger0;
#X obj 453 286 oscformat subtractive_triggered cutoff0;
#X text 28 830 Generate a clock and distribute it!;
#X text 503 91 a sequence for the cutoff;
#X text 228 72 a sequence for the trigger;
#N canvas 1 106 450 250 (subpatch) 0;
#X array seq4 8 float 3;
#A 0 150 214.285 278.571 389.284 492.855 560.712 399.999 335.713;
#X coords 0 1000 8 0 200 140 1 0 0;
#X restore 1387 117 graph;
#X floatatom 1289 240 5 0 0 0 - - -, f 5;
#N canvas 0 106 1920 974 step 0;
#X floatatom 122 135 5 0 0 0 - - -, f 5;
#X msg 324 80 0;
#X obj 165 64 i 0;
#X obj 165 97 + 1;
#X obj 237 115 moses 8;
#X obj 165 4 r clock;
#X obj 122 157 outlet;
#X connect 0 0 6 0;
#X connect 1 0 2 1;
#X connect 2 0 3 0;
#X connect 2 0 0 0;
#X connect 3 0 4 0;
#X connect 4 0 2 1;
#X connect 4 1 1 0;
#X connect 5 0 2 0;
#X restore 1289 198 pd step;
#N canvas 0 50 450 250 (subpatch) 0;
#X array seq3 8 float 3;
#A 0 0.414286 1.47143 1.38571 1.08571 0.5 1.25714 0.471429 0.914286
;
#X coords 0 2 8 0 200 140 1 0 0;
#X restore 1032 126 graph;
#N canvas 0 106 1920 974 step 0;
#X floatatom 122 135 5 0 0 0 - - -, f 5;
#X msg 324 80 0;
#X obj 165 64 i 0;
#X obj 165 97 + 1;
#X obj 237 115 moses 8;
#X obj 165 4 r clock;
#X obj 122 157 outlet;
#X connect 0 0 6 0;
#X connect 1 0 2 1;
#X connect 2 0 3 0;
#X connect 2 0 0 0;
#X connect 3 0 4 0;
#X connect 4 0 2 1;
#X connect 4 1 1 0;
#X connect 5 0 2 0;
#X restore 955 34 pd step;
#X text 1338 69 a sequence for the cutoff;
#X text 1064 71 a sequence for the trigger;
#X obj 990 276 oscformat subtractive_triggered trigger1;
#X obj 1288 264 oscformat subtractive_triggered cutoff1;
#X obj 955 56 array get seq3;
#X obj 1289 220 array get seq4;
#N canvas 1 106 450 250 (subpatch) 0;
#X array seq6 8 float 3;
#A 0 278.572 678.571 342.86 407.147 464.292 342.857 550.009 664.298
;
#X coords 0 1000 8 0 200 140 1 0 0;
#X restore 575 523 graph;
#X floatatom 477 646 5 0 0 0 - - -, f 5;
#N canvas 0 106 1920 974 step 0;
#X floatatom 122 135 5 0 0 0 - - -, f 5;
#X msg 324 80 0;
#X obj 165 64 i 0;
#X obj 165 97 + 1;
#X obj 237 115 moses 8;
#X obj 165 4 r clock;
#X obj 122 157 outlet;
#X connect 0 0 6 0;
#X connect 1 0 2 1;
#X connect 2 0 3 0;
#X connect 2 0 0 0;
#X connect 3 0 4 0;
#X connect 4 0 2 1;
#X connect 4 1 1 0;
#X connect 5 0 2 0;
#X restore 477 604 pd step;
#N canvas 0 50 450 250 (subpatch) 0;
#X array seq5 8 float 3;
#A 0 0.585713 0.557141 0.571429 0.542855 0.571429 0.499997 0.542857
0.528569;
#X coords 0 2 8 0 200 140 1 0 0;
#X restore 220 532 graph;
#N canvas 0 106 1920 974 step 0;
#X floatatom 122 135 5 0 0 0 - - -, f 5;
#X msg 324 80 0;
#X obj 165 64 i 0;
#X obj 165 97 + 1;
#X obj 237 115 moses 8;
#X obj 165 4 r clock;
#X obj 122 157 outlet;
#X connect 0 0 6 0;
#X connect 1 0 2 1;
#X connect 2 0 3 0;
#X connect 2 0 0 0;
#X connect 3 0 4 0;
#X connect 4 0 2 1;
#X connect 4 1 1 0;
#X connect 5 0 2 0;
#X restore 143 440 pd step;
#X text 526 475 a sequence for the cutoff;
#X text 252 477 a sequence for the trigger;
#X obj 143 462 array get seq5;
#X obj 477 626 array get seq6;
#X obj 178 682 oscformat subtractive_triggered trigger2;
#X obj 476 670 oscformat subtractive_triggered cutoff2;
#N canvas 1 106 450 250 (subpatch) 0;
#X array seq8 8 float 3;
#A 0 178.571 192.856 585.714 664.283 714.281 785.706 807.134 164.286
;
#X coords 0 1000 8 0 200 140 1 0 0;
#X restore 1368 498 graph;
#X floatatom 1270 621 5 0 0 0 - - -, f 5;
#N canvas 0 106 1920 974 step 0;
#X floatatom 122 135 5 0 0 0 - - -, f 5;
#X msg 324 80 0;
#X obj 165 64 i 0;
#X obj 165 97 + 1;
#X obj 237 115 moses 8;
#X obj 165 4 r clock;
#X obj 122 157 outlet;
#X connect 0 0 6 0;
#X connect 1 0 2 1;
#X connect 2 0 3 0;
#X connect 2 0 0 0;
#X connect 3 0 4 0;
#X connect 4 0 2 1;
#X connect 4 1 1 0;
#X connect 5 0 2 0;
#X restore 1270 579 pd step;
#N canvas 0 50 450 250 (subpatch) 0;
#X array seq7 8 float 3;
#A 0 0.442861 0.442861 0.442861 0.428571 0.500005 0.428575 0.385717
0.314286;
#X coords 0 2 8 0 200 140 1 0 0;
#X restore 1013 507 graph;
#N canvas 0 106 1920 974 step 0;
#X floatatom 122 135 5 0 0 0 - - -, f 5;
#X msg 324 80 0;
#X obj 165 64 i 0;
#X obj 165 97 + 1;
#X obj 237 115 moses 8;
#X obj 165 4 r clock;
#X obj 122 157 outlet;
#X connect 0 0 6 0;
#X connect 1 0 2 1;
#X connect 2 0 3 0;
#X connect 2 0 0 0;
#X connect 3 0 4 0;
#X connect 4 0 2 1;
#X connect 4 1 1 0;
#X connect 5 0 2 0;
#X restore 936 415 pd step;
#X text 1319 450 a sequence for the cutoff;
#X text 1045 452 a sequence for the trigger;
#X obj 936 437 array get seq7;
#X obj 971 657 oscformat subtractive_triggered trigger3;
#X obj 1270 601 array get seq8;
#X obj 1269 645 oscformat subtractive_triggered cutoff3;
#X text 385 23 VOICE0;
#X text 1238 31 VOICE1;
#X text 429 408 VOICE2;
#X text 1237 402 VOICE3;
#X obj 507 925 udpsend;
#X msg 640 916 disconnect;
#X msg 640 894 connect localhost 5510;
#X obj 507 875 list prepend send;
#X obj 507 897 list trim;
#X text 638 867 Connect to the synth;
#X obj 507 826 r msg;
#X obj 294 339 s msg;
#X text 514 784 Receive all messages and send them!;
#X obj 936 456 moses 1, f 9;
#X obj 448 715 s msg;
#X obj 1215 706 s msg;
#X obj 1204 333 s msg;
#X obj 90 898 metro 333;
#X obj 90 857 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X floatatom 141 858 5 0 0 0 - - -, f 5;
#X obj 90 918 s clock;
#X floatatom 135 138 5 0 0 0 - - -, f 5;
#X obj 225 891 r clock;
#X floatatom 225 914 5 0 0 0 - - -, f 5;
#X obj 143 481 moses 1, f 9;
#X obj 1174 836 oscformat subtractive_triggered trigger0;
#X obj 1176 893 oscformat subtractive_triggered trigger2;
#X obj 1174 867 oscformat subtractive_triggered trigger1;
#X obj 1174 921 oscformat subtractive_triggered trigger3;
#X obj 1093 797 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 1095 943 s msg;
#X msg 1093 817 0;
#X text 1217 790 MIDI Panic (all notes off);
#X floatatom 60 120 5 0 0 0 - - -, f 5;
#X msg 119 99 1;
#X msg 168 98 0;
#X msg 955 98 1;
#X msg 1004 97 0;
#X msg 143 504 1;
#X msg 192 503 0;
#X msg 936 479 1;
#X msg 985 478 0;
#X obj 119 76 moses 1, f 9;
#X obj 955 75 moses 1, f 9;
#X connect 5 0 6 0;
#X connect 6 0 12 0;
#X connect 7 0 5 0;
#X connect 9 0 10 0;
#X connect 10 0 82 0;
#X connect 10 0 91 0;
#X connect 11 0 60 0;
#X connect 12 0 60 0;
#X connect 17 0 24 0;
#X connect 18 0 26 0;
#X connect 20 0 25 0;
#X connect 23 0 65 0;
#X connect 24 0 65 0;
#X connect 25 0 92 0;
#X connect 26 0 17 0;
#X connect 28 0 37 0;
#X connect 29 0 35 0;
#X connect 31 0 34 0;
#X connect 34 0 73 0;
#X connect 35 0 28 0;
#X connect 36 0 63 0;
#X connect 37 0 63 0;
#X connect 39 0 48 0;
#X connect 40 0 47 0;
#X connect 42 0 45 0;
#X connect 45 0 62 0;
#X connect 46 0 64 0;
#X connect 47 0 39 0;
#X connect 48 0 64 0;
#X connect 54 0 53 0;
#X connect 55 0 53 0;
#X connect 56 0 57 0;
#X connect 57 0 53 0;
#X connect 59 0 56 0;
#X connect 62 0 89 0;
#X connect 62 1 90 0;
#X connect 66 0 69 0;
#X connect 67 0 66 0;
#X connect 68 0 66 1;
#X connect 71 0 72 0;
#X connect 73 0 87 0;
#X connect 73 1 88 0;
#X connect 74 0 79 0;
#X connect 75 0 79 0;
#X connect 76 0 79 0;
#X connect 77 0 79 0;
#X connect 78 0 80 0;
#X connect 80 0 74 0;
#X connect 83 0 11 0;
#X connect 83 0 70 0;
#X connect 84 0 11 0;
#X connect 84 0 70 0;
#X connect 85 0 23 0;
#X connect 86 0 23 0;
#X connect 87 0 36 0;
#X connect 88 0 36 0;
#X connect 89 0 46 0;
#X connect 90 0 46 0;
#X connect 91 0 83 0;
#X connect 91 1 84 0;
#X connect 92 0 85 0;
#X connect 92 1 86 0;
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
import("music.lib");
import("filter.lib");
freq = hslider("freq",300,20,2000,0.01) : smooth(0.999);
gain = hslider("gain",0.3,0,1,0.01) : smooth(0.999);
t = hslider("attRel (s)",0.1,0.001,2,0.001);
gate = button("gate") : smooth(tau2pole(t));
process = osc(freq),osc(freq*2),osc(freq*3) :> /(3) : *(gain)*gate;
// exponential.dsp
//
// Additive synthesizer with
// exponential spectral decay
//
// - triggered
// -
// - stereo output
//
// Henrik von Coler
// 2020-05-12
import("stdfaust.lib");
// define a fundamental frequency
f0 = hslider("FREQ", 100, 0.1, 1000, 0.1);
// define the number of partials
n_partial = 50;
trigger = button("Trigger");
slope = hslider("Slope", 1, 0.1, 7, 0.02);
slope_release = hslider("Slope Release", 1, 0, 2, 0.01);
amp_release = hslider("AMP Release",0.5,0.01,5,0.01);
// control the splitting of partials over time
split = hslider("Frequency Split",0,0,10,0.01);
// partial function
partial(partCNT, t, s, sr, ar) = os.oscrs(f) * volume * gain
// arguments
with {
f = f0 * ( (partCNT+1) + split * (1-en.arfe(0, ar, 0,t)));
// global gain envelope
gain = en.arfe(0.01, ar, 0,t);
// spectral slope is controlled by a temporal envelope
s2 = s* partCNT * en.arfe(0.01, sr, 0,t);
volume = 0.1 * exp(-s2);
};
// the processing function,
// running 50 partials parallel
// summing them up and applying a global gain
process = par(i, n_partial, partial(i, trigger, slope, slope_release, amp_release)) :>_ * hslider("Master Gain",0,0,1, 0.1) <: _,_;
\ No newline at end of file
///////////////////////////////////////////////////////////////////////////////////////////////////
//
// Grain Generator.
// Another granular synthesis example.
// This one is not finished, but ready for more features and improvements...
//
///////////////////////////////////////////////////////////////////////////////////////////////////
//
// ANALOG IN:
// ANALOG 0 : Population: 0=almost nothing. 1=Full grain
// ANALOG 1 : Depth of each grin, in ms.
// ANALOG 2 : Position in the table = delay
// ANALOG 3 : Speed = pitch change of the grains
// ANALOG 4 : Feedback
//
///////////////////////////////////////////////////////////////////////////////////////////////////
import("all.lib");
// FOR 4 grains - MONO
// read a set of wav files
s = soundfile("label[url:{'kick.wav'; 'cowbell.wav'; 'my_model.wav'}]", 1);
sample = so.sound(s, 2);
// UI //////////////////////////////////////////
popul = 1 - hslider("population", 1, 0, 1, 0.001); // Coef 1= maximum; 0 = almost nothing (0.95)
taille = hslider("taille", 100, 4, 200, 0.001 ); // Size in millisecondes
decal = 1 - hslider("decal",0,0,1,0.001); // read position compared to table srite position
speed = hslider("speed", 1, 0.125, 4, 0.001);
feedback = hslider("feedback",0,0,2,0.001);
freq = 1000/taille;
tmpTaille = taille*ma.SR/ 1000;
clocSize = int(tmpTaille + (tmpTaille*popul*10)); // duration between 2 clicks
// CLK GENERAL /////////////////////////////////
// 4 clicks vers 4 generateurs de grains.
// (idem clk freq/4 et un compteur...)
detect1(x) = select2 (x < 10, 0, 1);
detect2(x) = select2 (x > clocSize*1/3, 0, 1) : select2 (x < (clocSize*1/3)+10, 0, _);
detect3(x) = select2 (x > clocSize*2/3, 0, 1) : select2 (x < (clocSize*2/3)+10, 0, _);
detect4(x) = select2 (x > clocSize-10, 0, 1);
cloc = (%(_,clocSize))~(+(1)) <: (detect1: trig),(detect2: trig),(detect3: trig),(detect4: trig);
// SIGNAUX Ctrls Player ////////////////////////
trig = _<:_,mem: >;
envelop = *(2*PI):+(PI):cos:*(0.5):+(0.5);
rampe(f, t) = delta : (+ : select2(t,_,delta<0) : max(0)) ~ _ : raz
with {
raz(x) = select2 (x > 1, x, 0);
delta = sh(f,t)/ma.SR;
sh(x,t) = ba.sAndH(t,x);
};
rampe2(speed, t) = delta : (+ : select2(t,_,delta<0) : max(0)) ~ _
with {
delta = sh(speed,t);
sh(x,t) = ba.sAndH(t,x);
};
// RWTable //////////////////////////////////////
unGrain(input, clk) = (linrwtable( wf , rindex) : *(0.2 * EnvGrain))
with {
SR = 44100;
buffer_sec = 1;
size = int(SR * buffer_sec);
init = 0.;
EnvGrain = clk : (rampe(freq) : envelop);
windex = (%(_,size) ) ~ ( +(1) );
posTabl = int(ba.sAndH(clk, windex));
rindex = %(int(rampe2(speed, clk)) + posTabl + int(size * decal), size);
wf = size, init, int(windex), input;
};
// LINEAR_INTERPOLATION_RWTABLE //////////////////////////////////
// read rwtable with linear interpolation
// wf : waveform to read ( wf is defined by (size_buffer,init, windex, input ))
// x : position to read (0 <= x < size(wf)) and float
// nota: rwtable(size, init, windex, input, rindex)
linrwtable(wf,x) = linterpolation(y0,y1,d)
with {
x0 = int(x); //
x1 = int(x+1); //
d = x-x0;
y0 = rwtable(wf,x0); //
y1 = rwtable(wf,x1); //
linterpolation(v0,v1,c) = v0*(1-c)+v1*c;
};
// FINALISATION /////////////////////////////////////////////////////////////////////////////////////
routeur (a, b, c, d, e) = a, b, a, c, a, d, a, e;
processus = _ , cloc : routeur : (unGrain, unGrain, unGrain, unGrain) :> fi.dcblockerat(20);
process = _,_: ((+(_,_) :processus) ~(*(feedback))),((+(_,_) :processus) ~(*(feedback)));
\ No newline at end of file
// sine.dsp
//
// First example for Sound_Synthesis seminar.
//
// Henrik von Coler
// 2000-04-21
import("stdfaust.lib");
// input parameters with GUI elements
freq = hslider("frequency",100, 10, 1000, 0.001);
gain = hslider("gain",0.5, 0, 1, 0.001);
// a sine oscillator with controllable freuency and aplitude:
process = os.osc(freq)*gain;
......@@ -2,9 +2,8 @@
//
// Parameters
// freq: set the frequency in Hz
// reset: the phase is rest to 0 when going >= 0
//
// Todo: set trigger phase offset
// reset: the phase is reset when going >= 0
// offset: the phase value on reset
//
// HvC
// 2020-08-30
......@@ -21,7 +20,11 @@ ts = 1<<16; // size
time = (+(1) ~ _ ) , 1 : - ;
sinewave = ((float(time) / float(ts)) * twopi) : sin;
phase = os.hs_phasor(ts,freq,trig);
// the wrapper function keeps a signal above 0 and below m (max)
wrapper(m,x) = select2(x<=m, (x-m):max(0), x);
// phase is used with offset and wrap
phase = os.hs_phasor(ts,freq,trig) : +(off_trig*ts) : wrapper(ts);
// read from table
sin_osc( freq) = rdtable(ts ,sinewave , int(phase)) ;
......@@ -29,9 +32,13 @@ sin_osc( freq) = rdtable(ts ,sinewave , int(phase)) ;
// generate a one sample impulse from the gate
trig = pm.impulseExcitation(reset);
// a number only changed when triggered
// this avoids glitches when changing offset during play
off_trig = offset : ba.sAndH(trig);
// all control variables
reset = button ("reset");
freq = hslider("freq", 100, 0, 16000, 0.00001);
// offset = hslider("offset", 0, 0, 1, 0.00001);
offset = hslider("offset", 0, 0, 1, 0.00001);
process = sin_osc(freq);
\ No newline at end of file
///
// towards a hard-synced oscillator
//
// based on:
// Synchronous Programming in Audio Processing:
// A Lookup Table Oscillator Case Study
//
// no anti-aliasing
//
// HvC
// 2020-08-29
//import( "stdfaust.lib" ) ;
import( "all.lib" ) ;
// gate and single sample impulse
gater = button ("gater");
trig = pm.impulseExcitation(gater);
// some basic stuff
sr = SR;
twopi = 2.0*PI;
ts = 1<<16 ;
time = (+(1) ~ _ ) , 1 : - ;
// define the waveform
sawwave = ((float(time) / float(ts)) *2 -1)*-1;
pulsewidth = hslider("pulsewidth", 0, 0, 1, 0.01);
sqaurewave = sawwave : >(0.0);
dec ( x ) = x - floor (x) ;
// from the paper:
// phase ( freq ) = freq / float ( sr ) : (+ : dec ) ~ _ : * ( float (ts) ) ;
phase = os.hs_phasor(ts,f,trig);
saw_osc( freq) = rdtable ( ts , sawwave , int ( phase ) ) ;
square_osc( freq) = rdtable ( ts , sqaurewave , int ( phase ) ) ;
f = hslider("f", 440, 2, 20000, 1);
mix = hslider("mix", 0, 0, 1, 0.01);
process = saw_osc(f) *mix + square_osc(f)*(1-mix) <: _,_ ;
import("all.lib");
//process = nylonGuitar_ui_MIDI : _;
process = nylonGuitarModel(3,1,button("trigger")) : _;
\ No newline at end of file
import("stdfaust.lib");
speakers = (-45, 45, 135, -135);
n = 4;
angle = hslider("angle", 0.0, -180, 180, 0.01);
distance = hslider("distance", 0.5, 0, 10, 0.01);
process = _ <: par(i, n, *( scaler(i, n, angle, distance) : si.smooth(0.9999) ))
with {
scaler(i, n, angle, distance) = (distance/2.0+0.5)
* sqrt( max(0.0, 1.0 - abs(fmod(angle+0.5 + float(n-i) /n, 1.0) - 0.5) * n * distance));
};
\ No newline at end of file
declare name "panpot";
declare version "1.0";
declare author "Grame";
declare license "BSD";
declare copyright "(c)GRAME 2006";
//-------------------------------------------------
// Stereo panpot
//-------------------------------------------------
panpot(x) = sqrt(c)*x, sqrt(1-c)*x
with {
c=(nentry("[1]pan[style:knob]",0,-90,90,1)-90.0)/-180.0;
};
process = panpot;
\ No newline at end of file
declare name "quad_spat";
declare author "HvC";
import("stdfaust.lib");
angle = hslider("angle", 0.0, 0, 1, 0.01);
distance = hslider("distance", 0.5, 0, 1, 0.01);
process = vgroup("quad_spat", sp.spat(4, angle, distance));
\ No newline at end of file
declare name "quad_spat";
declare author "HvC";
import("stdfaust.lib");
angle = hslider("angle", 0.0, 0, 1, 0.01);
distance = hslider("distance", 0.5, 0, 1, 0.01);
process = vgroup("quad_spat", sp.spat(4, angle, distance));
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment