B2M31SYN 2. PŘEDNÁŠKA 1. října 218 Generování číslicových signálů Aperiodické signály Periodické signály Zvuky telefonu Tónová volba Hudební stupnice Stupnice s rovnoměrným temperovaným laděním Příklad v MATLABu Tabulková (wavetable) syntéza Tabulkový oscilátor Interpolace Pitch posunutí Příklad tabulkové syntézy banja
Signály Signály - funkce jedné nebo více nezávisle proměnných, které nesou informaci o podstatě a vlastnostech svého zdroje (nebo informaci záměrně do signálu zakódovanou). Příklady signálů Co není signál?
Číslicové signály Neperiodické Periodické, harmonické
x(t) Exponenciální signál I x( t) = a e bt x[ n] = a c n.8 x(t) = X e b t t=:.1:8; a=.8; b=-.5; x_t=a*exp(b*t);.6.4.2 1 2 3 4 5 6 7 8 t.8.6.4.2 1 2 3 4 5 6 7 8 9 1
Exponenciální signál I x( t) = a e bt x[ n] = a c n doba=8; fs=1; a=.8; tau=2; t=:1/fs:doba-1/fs; x_t=a*exp(-t/tau); pb=1; n=:pb; c=exp(-doba/(pb*tau)); x_n=a*c.^n; % c=.673
Exponenciální signál II 1.5 a*c n < c < 1 (c=,67) 1 2 3 4 5 6 7 8 9 1 1.5 c = 1 1 2 3 4 5 6 7 8 9 1 15 c > 1 (c=1,67) 1 5 1 2 3 4 5 6 7 8 9 1
Exponenciální signál III 1 a*c n > c > -1 (c=-,67) -1 1 2 3 4 5 6 7 8 9 1 1 c = -1-1 1 2 3 4 5 6 7 8 9 1 2 c < -1 (c=-1,67) 1-1 1 2 3 4 5 6 7 8 9 1
Jednotkový skok u( t) = 1,, t t u[ n] = 1,, n n 1 t=-2:.1:6; x_t = [t >= ];.5-2 -1 1 2 3 4 5 6 n=-2:6; x_n = [n >= ]; 1.5-2 -1 1 2 3 4 5 6
Jednotkový impulz (Dirac) [ n] = 1,, n = n 1.8 n=-5:1; x_n = [n == ];.6.4.2 -.2-5 5 1
Obdélník square(om*t, delta) stejné jako generování sin() delta % z periody, které má být kladné >> o1_t = square(2*pi*f*t1); >> o2_t = square(2*pi*f*t1,25); >> o3_t = square(2*pi*f*t1,75); >> x_min =-.1; x_max =.21; >> y_min =-1.2; y_max =1.2; >> axis([x_min x_max y_min y_max]) 1-1 1-1 1 = 5%.2.4.6.8.1.12.14.16.18.2 = 25%.2.4.6.8.1.12.14.16.18.2 = 75% -1.2.4.6.8.1.12.14.16.18.2
Pila sawtooth(om*t, DELTA) Stejné jako generování sin() DELTA maximum na intervalu..1 1 = >> p1_t = sawtooth(2*pi*f*t1,); >> p2_t = sawtooth(2*pi*f*t1,.5); >> p3_t = sawtooth(2*pi*f*t1,1); -1 1-1 1.2.4.6.8.1.12.14.16.18.2 =,5.2.4.6.8.1.12.14.16.18.2 = 1-1.2.4.6.8.1.12.14.16.18.2
---> x[n] Analogově-číslicový převod 1.8.6.4 T=1/f.2 -.2 -.4 Ts=1/fs -.6 -.8-1 2 4 6 8 1 12 14 16 18 2 ---> n
Harmonický signál x( t) = X + X sin(2 f t + m ),95 5,8 1
Generování harmonického signálu v MATLABu Generujme 2 ms harmonického signálu o frekvenci 44 Hz a vzorkovací frekvenci 8 khz Generujme 4 periody signálu o frekvenci 44 Hz a vzorkovací frekvenci 8 khz Generujme 25 vzorků signálu o frekvenci 44 Hz a vzorkovací frekvenci 8 khz
Generování harmonického signálu v MATLABu I Generujme 2 ms harmonického signálu o frekvenci 44 Hz a vzorkovací frekvenci 8 khz >> f=44; fs=8; doba=.2; >> t1 = :1/fs:doba-1/fs; >> x1_t = sin(2*pi*f*t1); >> n1 = :1:fs*doba-1; >> x1_n = sin(2*pi*f*n1/fs); 1.5 -.5-1.2.4.6.8.1.12.14.16.18.2 ---> t [sekundy] 1.5 -.5-1 2 4 6 8 1 12 14 16 ---> n [vzorky]
Generování harmonického signálu v MATLABu II Generujme 4 periody signálu o frekvenci 44 Hz a vzorkovací frekvenci 8 khz >> f=44; fs=8; pp=4; >> t2 = :1/fs:pp/f-1/fs; >> x2_t = sin(2*pi*f*t2); >> n2 = :1:pp*fs/f-1; >> x2_n = sin(2*pi*f*n2/fs); 1.5 -.5-1.1.2.3.4.5.6.7.8.9.1 ---> t [sekundy] 1.5 -.5-1 1 2 3 4 5 6 7 8 ---> n [vzorky]
Generování harmonického signálu v MATLABu III Generujme 25 vzorků signálu o frekvenci 44 Hz a vzorkovací frekvenci 8 khz >> f=44; fs=8; N=25; >> t3 = :1/fs:N/fs-1/fs; >> x3_t = sin(2*pi*f*t3);.5 >> n3 = :1:N-1; >> x3_n = sin(2*pi*f*n3/fs); -.5 1.5 -.5-1.5 1 1.5 2 2.5 3 ---> t [sekundy] x 1-3 1-1 5 1 15 2 25 ---> n [vzorky]
Zvuky telefonu % a) Oznamovací tón: F = [425 425 ]; [Hz] % T = [.33.33.66.66 ]; [s] % % b) Vyzváněcí tón: F = [425 ]; [Hz] % T = [1 3]; [s] % % c) Odkazovací tón: F = [95 14 18 ]; [Hz] % T = [.33.3.33.3.33 1.25]; [s] % d) Obsazovací tón: F = [425 ]; [Hz] % T = [.33.42]; [s]
Tónová volbai (DTMF - Dual Tone Multi-Frequency) Frekvence nejsou: násobkem jiné frekvence rozdílem či součtem frekvencí
Tónová volba II >> signal = DTMFvolba([6 3]); function tony = DTMFvolba(cisla) Fs = 8; t = (:799)/Fs; % generovani casove osy f = [697 697 697 77 77 77 852 852 852 941 941 941; 129 1336 1477 129 1336 1477 129 1336 1477 1336 129 1477]; tony=[]; for i=1:length(cisla), if(cisla(i)==), cisla(i)=1; end; ton1 =.5*sin(2*pi*f(1,cisla(i))*t); ton2 =.5*sin(2*pi*f(2,cisla(i))*t); tony =[tony; ton1+ton2]; end; tony=tony'; tony=tony(:);
Ladění Čisté nebo přirozené Jako čistá nebo také přirozená ladění se označují ladění využívající pouze tóny, jejichž frekvence jsou ve vzájemných poměrech vyjádřitelných celými čísly. Temperované Temperované ladění je v hudbě způsob ladění, při kterém jsou některé čisté intervaly záměrně rozladěny, aby se docílilo přesnějšího naladění intervalů jiných.
Hudební stupnice I f = k 49 44 2 12 [Hz]
Hudební stupnice I >> logspace(log1(261.63),log1(2*261.63),13) >>261.63; 277.19; 293.67; 311.13; 329.63; 349.23; 37.; 392.; 415.31; 44.1; 466.17; 493.89; 523.26
Hudební stupnice stupnice - chromatická [ 1 2 3 4 5 6 7 8 9 1 11 12] 1 1 1 1 1 1 1 1 1 1 1 1 oktáva představuje 12 tónů chromatické stupnice stupnice - diatonická (sedm tónů - pět tónů a dva půltóny) - durová [ 2 4 5 7 9 11 12] 2 2 1 2 2 2 1 - mollová [ 2 3 5 7 8 1 12] 2 1 2 2 1 2 2 c1 (C4) c2 (C5)
Hudební stupnice kontinentální anglosaské c1 d1 e1 f1 g1 a1 h1 c2 C4 D4 E4 F4 G4 A4 B4 C5 A C1 C2 C3 C4 C5 C6 C7 C8
MIDI Převod mezi pořadím MIDI not (m= až 127) na frekvenci f [Hz] a naopak m = 69 + 12*log2(f/44); [MIDI, Hz] f = (44/32)*2.^((m-9)/12); [Hz, MIDI] MIDI umožňuje číslovat výšku tónu pořadím,1,...,127 přenos v rozsahu 8.18 Hz až 12544 Hz rozsah tónů na klavíru: od A = 27.5 Hz, MIDI=21 až do c5 = 4186 Hz, MIDI=18 A C1 C2 C3 C4 C5 C6 C7 C8 21 6 69 18
Komorní A https://cs.wikipedia.org/wiki/komorní_tón A = 44Hz jediný oficiální standard významné orchestry však ladí i na 441, 442, 443,
http://www.maths.abdn.ac.uk/~bensondj/html/maths-music.html Music: a Mathematical Offering Published by Cambridge University Press, Nov 26, 426 pages. ISBN: 521853877 (hbk), 521619998 (pbk). UK: Hardback 65 / Paperback 26 The current online version (23 August 27) is available FREE in pdf format here: music.pdf (1 megabytes, 53 pages).
Hudební stupnice II function ton = nota(klavesa,doba) % vstup: klavesa... por.klavesy pozadovane noty % c1=4; d1=42; e1=44; f1=45; % g1=47; a1=49; h1=51; c2=52 % doba... trvani signalu [s] % vystup:ton... generovany signal [Hz] fs = 8; f = 44 * 2 ^ ((klavesa-49)/12); t = :1/fs:doba-1/fs; ton = sin(2*pi*f*t);
Hudební stupnice III close all,clear x = []; % inicializace promenne fs = 8; % zmenit také ve funkci klavesy = [4 42 44 45 47 49 51 52]; doby =.5*ones(1,length(klavesy)); for k = 1:length(klavesy) ton = nota(klavesy(k),doby(k)); x = [x ton]; end soundsc(x,fs) % poslech hudebni stupnice
Tabulková (wavetable) syntéza Při tabulkové syntéze simulujeme nástroj pomocí vzorků vyjmutých ze skutečného nástroje
Tabulková (wavetable) syntéza Při tabulkové syntéze simulujeme nástroj pomocí vzorků vyjmutých ze skutečného nástroje
Tabulková (wavetable) syntéza
Tabulková (wavetable) syntéza
Tabulková (wavetable) syntéza Opatrný výběr period: velké změny v amplitudě (vytváří nežádoucí audio efekty) změny ve fázi (slyšitelná kliknutí) E.g. 1 E.g. 2
Tabulková (wavetable) syntéza Lineární prolínaní (crossfade)
Tabulková (wavetable) syntéza t * t = t
Tabulková (wavetable) syntéza duration peak amplitude t peak amplitude
Tabulková (wavetable) syntéza ff high med. low mf p t t t
Tabulková (wavetable) syntéza PPG Wave Series: Implementation of wavetable synthesis employed an array containing 64 pointers to individual single-cycle waves. Waldorf Microwave: Next generation PPG. Roland D-5 and Roland MT-32/variants: Linear Arithmetic synthesizers combined complex sampled attack phases with less complex sustain/decay phases (basically a wavetable synthesizer with a 2-entry wave sequence table). KorgWavestation: Vector synthesis - move through wavetables and sequences arranged on a 2- dimensional grid.
Tabulková (wavetable) syntéza fs=8; f=4; N=fs/f; n=:n-1; P=sin(2*pi*f/fs*n); f1=f*2^(1/12); N1=fs/f1; n1=:n1-1; delta=f1*length(p)/fs; % delta=f1/f; % delta=t/t1; ind = round(:delta:delta*(n1-1))+1; stem(n1,p(ind))
Tabulková (wavetable) syntéza % transformace tabulky s jednou periodou f % na libovolně dlouhý signál o délce doba a o frekvenci f1 doba=1; ind = mod(round(:delta:(delta*doba*fs-1)),n)+1; stem(ind), stem(p(ind))
Tabulková (wavetable) syntéza A B nt int ceil
Tabulková (wavetable) syntéza % transformace tabulky s jednou periodou f % na libovolne dlouhy signal o frekvenci f1 % pomoci linearni interpolace doba=1; ind = mod(:delta:(delta*doba*fs-1),n)+1; x=ind-floor(ind); P=[P P(1)]; A=P(floor(ind)); B=P(ceil(ind)); y=(b-a).*x+a; stem(ind) stem(y) A x y B ind
Tabulková (wavetable) syntéza % priklad tabulkove syntezy banja [x,fs]=wavread('banjo.wav'); P=x(144:172);
function y=tabsynt(p,f,doba,fs); % tabulkova (wavetable) synteza s linearni interpolaci % P = jedna perioda vzorkovaneho signalu (tabulka) % f = pozadovana frekvence vystupniho signalu % doba = trvani vystupniho signalu % fs = vzorkovaci frekvence výstupniho signalu % y = vystupni signal % Pouziti: y = tabsynt(p,f,doba,fs) % by Roman Cmejla P=P(:)'; delta=f*length(p)/fs; ind = mod(:delta:(delta*doba*fs-1),length(p))+1; x = ind-floor(ind); P = [P P(1)]; A = P(floor(ind)); B = P(ceil(ind)); y = (B-A).*x+A;
Tabulková (wavetable) syntéza y=tabsynt(p,f,doba,fs); y=exp(-[:length(y)-1]./fs./.1).*y;
Tabulková (wavetable) syntéza
Tabulková (wavetable) syntéza
Tabulková (wavetable) syntéza klarinet 5-1 1-5