Vous êtes sur la page 1sur 2

halftone= 1.

0594630943592952645618252949463417007792043174941856285592;
// convertit un code midi en frquence
// (on utilise principalement les notes midi de 21 108)
function [f]=midi2freq(m)
f = 55*(halftone^(m-33))
endfunction
// Fonctions pour crer les quatre sons donc les formes sont reprsentes :
// https://en.wikipedia.org/wiki/File:Waveforms.svg
// Son (courbe sinusodale) sans enveloppe de frquence f et de dure d
// (sans harmonique)
function [y]=sinesound(f,d)
t = soundsec(d,44100)
x = 2 * %pi * t * f;
y = sin(x);
endfunction
// Son (courbe en scie) sans enveloppe de frquence f et de dure d
function [y]=sawsound(f,d)
t = soundsec(d,44100)
x = t * f;
y = 2*(x+.5 - int(x+.5))-1
endfunction
// // Son (courbe en carr) sans enveloppe de frquence f et de dure d
function [y]=squaresound(f,d)
t = soundsec(d,44100)
x = t * f;
y = 2-2*int(2*(x-int(x)))-1;
endfunction
// function [y]=squaresound(f,d) // version avec squarewave()
// t = soundsec(d,44100)
// x = 2* %pi * t * f;
// y = squarewave(x);
// endfunction
// Son (courbe en triangle) sans enveloppe de frquence f et de dure d
function [y]=trianglesound(f,d)
t = soundsec(d,44100)
x = t * f;
y = (4-4*int(2*(x+.25-int(x+.25)))-2) .* ( 2*(x+.75 - int(x+.75))-1 ) -1
endfunction
// Enveloppe le son s avec une enveloppe ADSR
// iatt : dure de l'attaque
// idec : dure du decay
// islev : amplitude du sustain (entre 0 et 1)
// irel : dure du release
function [z]=mkenvelope(s,iatt,idec,islev,irel)
iatt = round(iatt*44100);
idec = round(idec*44100);
irel = round(irel*44100);
d = size(s,'*');
isus = d-iatt-idec-irel;
line1 = linspace(0, 1, iatt); // attack
line2 = linspace(1, islev, idec);
line3 = linspace(islev, islev, isus);
line4 = linspace(islev, 0, irel);

envp = [line1, line2, line3, line4];


z = s .* envp;
endfunction
//playsnd(mkenvelope(sawsound(440,.125),0.0125,0.05,0.5,0.035))
x = sawsound(440,.25); sz = size(x); d = sz(2);
y = linspace(0,1,d);
s = sqrt(1-(2*y-1)^2)
z = x .* s;
// mapsound(z,dt=0.1,fmin=100,fmax=2500,simpl=1,rate=44100)
// playsnd(z,44100)
// z = mkenvelope(s4,0.01,.05,.6,.05)
//z = [s1, s2, s3, s4]
//mapsound(mkenvelope(sawsound(440,2),0.01,0.05,0.6,0.05),dt=0.1,fmin=100,fmax=2
500,simpl=1,rate=44100)
//playsnd(z,44100)
//playsnd(w,44100);
//mapsound(w,dt=0.1,fmin=100,fmax=2500,simpl=1,rate=44100)
//analyze(s4,fmin=100,fmax=3000,rate=44100);
//playsnd(s1,44100)
//quit

Vous aimerez peut-être aussi