A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS –...

44
A2B31SMS 2. PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace Zvuky telefonu Hudební stupnice Tónová volba Tabulková (wavetable) syntéza Tabulkový oscilátor Interpolace Pitch posunutí Příklad tabulkové syntézy banja

Transcript of A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS –...

Page 1: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

A2B31SMS – 2. PŘEDNÁŠKA 9. října 2017

Číslicové signály

Aperiodické

Periodické

Aplikace

Zvuky telefonu

Hudební stupnice

Tónová volba

Tabulková (wavetable) syntéza

Tabulkový oscilátor

Interpolace

Pitch posunutí

Příklad tabulkové syntézy banja

Page 2: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

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?

Page 3: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Číslicové signály

• Neperiodické

• Periodické , harmonické

Page 4: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Exponenciální signál I

t=0:0.1:8;

a=0.8; b=-0.5;

x_t=a*exp(b*t);

btatx e)( ncanx ][

0 1 2 3 4 5 6 7 80

0.2

0.4

0.6

0.8x(t) = X eb t

t

x(t

)

0 1 2 3 4 5 6 7 8 9 100

0.2

0.4

0.6

0.8

Page 5: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Exponenciální signál I

doba=8; fs=10;

a=0.8; tau=2;

t=0:1/fs:doba-1/fs;

x_t=a*exp(-t/tau);

pb=10;

n=0:pb;

c=exp(-doba/(pb*tau));

x_n=a*c.^n;

% c=0.6703

btatx e)( ncanx ][

Page 6: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Exponenciální signál II

0 1 2 3 4 5 6 7 8 9 100

0.5

1a*cn

0 < c < 1 (c=0,67)

0 1 2 3 4 5 6 7 8 9 100

0.5

1

c = 1

0 1 2 3 4 5 6 7 8 9 100

50

100

150

c > 1 (c=1,67)

Page 7: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Exponenciální signál III

0 1 2 3 4 5 6 7 8 9 10-1

0

1a*cn

0 > c > -1 (c=-0,67)

0 1 2 3 4 5 6 7 8 9 10-1

0

1

c = -1

0 1 2 3 4 5 6 7 8 9 10-100

0

100

200

c < -1 (c=-1,67)

Page 8: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Jednotkový skok

0,0

0,1)(

t

ttu

0,0

0,1][

n

nnu

t=-2:0.01:6;

x_t = [t >= 0];

-2 -1 0 1 2 3 4 5 6

0

0.5

1

-2 -1 0 1 2 3 4 5 6

0

0.5

1

Page 9: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Jednotkový skok

0,0

0,1)(

t

ttu

0,0

0,1][

n

nnu

t=-2:0.01:6;

x_t = [t >= 0];

n=-2:6;

x_n = [n >= 0];

-2 -1 0 1 2 3 4 5 6

0

0.5

1

-2 -1 0 1 2 3 4 5 6

0

0.5

1

Page 10: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Jednotkový impulz (Dirac)

0,0

0,1][

n

nn

-5 0 5 10-0.2

0

0.2

0.4

0.6

0.8

1

n=-5:10;

x_n = [n == 0];

Page 11: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

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);

0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018 0.02

-1

0

1 = 50%

0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018 0.02

-1

0

1 = 25%

0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018 0.02

-1

0

1 = 75%

Page 12: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

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 =-.001; x_max =0.021;

>> y_min =-1.2; y_max =1.2;

>> axis([x_min x_max y_min y_max])

0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018 0.02

-1

0

1 = 50%

0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018 0.02

-1

0

1 = 25%

0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018 0.02

-1

0

1 = 75%

Page 13: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Pila

• sawtooth(om*t, DELTA)

– Stejné jako generování sin()

– DELTA … maximum na intervalu 0..1

>> p1_t = sawtooth(2*pi*f*t1,0);

0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018 0.02

-1

0

1 = 0

0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018 0.02

-1

0

1 = 0,5

0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018 0.02

-1

0

1 = 1

Page 14: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Pila

• sawtooth(om*t, DELTA)

– Stejné jako generování sin()

– DELTA … maximum na intervalu 0..1

>> p1_t = sawtooth(2*pi*f*t1,0);

>> p2_t = sawtooth(2*pi*f*t1,0.5);

0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018 0.02

-1

0

1 = 0

0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018 0.02

-1

0

1 = 0,5

0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018 0.02

-1

0

1 = 1

Page 15: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Pila

• sawtooth(om*t, DELTA)

– Stejné jako generování sin()

– DELTA … maximum na intervalu 0..1

>> p1_t = sawtooth(2*pi*f*t1,0);

>> p2_t = sawtooth(2*pi*f*t1,0.5);

>> p3_t = sawtooth(2*pi*f*t1,1);

0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018 0.02

-1

0

1 = 0

0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018 0.02

-1

0

1 = 0,5

0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018 0.02

-1

0

1 = 1

Page 16: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Analogově-číslicový převod

0 2 4 6 8 10 12 14 16 18 20-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

---> n

--->

x[n

]

T=1/f

Ts=1/fs

Page 17: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

)2sin()(0

tfXtxm

frekvence [Hz]

Harmonický signál

amplituda fáze [rad]

čas [s]

Page 18: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

)2sin()(00

tfXXtxm

Harmonický signál

? ?

?

?

Page 19: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

)2sin()(00

tfXXtxm

Harmonický signál

0,8 1

50

0,95

Page 20: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Generování harmonického

signálu v MATLABu

• Generujme 20 ms harmonického signálu o

frekvenci 440 Hz a vzorkovací frekvenci 8 kHz

• Generujme 4 periody signálu o frekvenci 440

Hz a vzorkovací frekvenci 8 kHz

• Generujme 25 vzorků signálu o frekvenci 440

Hz a vzorkovací frekvenci 8 kHz

Page 21: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Generování harmonického

signálu v MATLABu I

• Generujme 20 ms harmonického signálu o

frekvenci 440 Hz a vzorkovací frekvenci 8 kHz

>> f=440; fs=8000; doba=.02;

>> t1 = 0:1/fs:doba-1/fs;

>> x1_t = sin(2*pi*f*t1);

>> n1 = 0:1:fs*doba-1;

>> x1_n = sin(2*pi*f*n1/fs);

0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018 0.02-1

-0.5

0

0.5

1

---> t [sekundy]

0 20 40 60 80 100 120 140 160-1

-0.5

0

0.5

1

---> n [vzorky]

Page 22: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Generování harmonického

signálu v MATLABu II

• Generujme 4 periody signálu o frekvenci 440

Hz a vzorkovací frekvenci 8 kHz

>> f=440; fs=8000; pp=4;

>> t2 = 0:1/fs:pp/f-1/fs;

>> x2_t = sin(2*pi*f*t2);

>> n2 = 0:1:pp*fs/f-1;

>> x2_n = sin(2*pi*f*n2/fs);

0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01-1

-0.5

0

0.5

1

---> t [sekundy]

0 10 20 30 40 50 60 70 80-1

-0.5

0

0.5

1

---> n [vzorky]

Page 23: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Generování harmonického

signálu v MATLABu III

• Generujme 25 vzorků signálu o frekvenci 440

Hz a vzorkovací frekvenci 8 kHz

>> f=440; fs=8000; N=25;

>> t3 = 0:1/fs:N/fs-1/fs;

>> x3_t = sin(2*pi*f*t3);

>> n3 = 0:1:N-1;

>> x3_n = sin(2*pi*f*n3/fs);

0 0.5 1 1.5 2 2.5 3

x 10-3

-1

-0.5

0

0.5

1

---> t [sekundy]

0 5 10 15 20 25-1

-0.5

0

0.5

1

---> n [vzorky]

Page 24: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Zvuky telefonu

% a) Oznamovací tón: F = [425 0 425 0 ]; [Hz]

% T = [0.33 0.33 0.66 0.66 ]; [s]

%

% b) Vyzváněcí tón: F = [425 0]; [Hz]

% T = [1 3]; [s]

%

% c) Odkazovací tón: F = [950 0 1400 0 1800 0 ]; [Hz]

% T = [0.33 0.03 0.33 0.03 0.33 1.25]; [s]

% d) Obsazovací tón: F = [425 0]; [Hz]

% T = [0.33 0.42]; [s]

Page 25: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Hudební stupnice I

>> logspace(log10(261.63),log10(2*261.63),13)

>>261.63; 277.19; 293.67; 311.13; 329.63; 349.23; 370.00; 392.00; 415.31; 440.01; 466.17; 493.89; 523.26

Page 26: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Hudební stupnice III

close all,clear

x = []; % inicializace promenne

fs = 8000; % zmenit také ve funkci

klavesy = [40 42 44 45 47 49 51 52];

doby = 0.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

Page 27: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Tónová volbaI (DTMF - Dual Tone Multi-Frequency)

• Frekvence nejsou:

– násobkem jiné frekvence

– rozdílem či součtem frekvencí

Page 28: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Tónová volba II >> signal = DTMFvolba([6 0 3]);

function tony = DTMFvolba(cisla)

Fs = 8000;

t = (0:799)/Fs; % generovani casove osy

f = [697 697 697 770 770 770 852 852 852 941 941 941;

1209 1336 1477 1209 1336 1477 1209 1336 1477 1336 1209 1477];

tony=[];

for i=1:length(cisla),

if(cisla(i)==0), cisla(i)=10; end;

ton1 = 0.5*sin(2*pi*f(1,cisla(i))*t);

ton2 = 0.5*sin(2*pi*f(2,cisla(i))*t);

tony =[tony; ton1+ton2];

end;

tony=tony'; tony=tony(:);

Page 29: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Tabulková (wavetable) syntéza

• Při tabulkové

syntéze simulujeme

nástroj pomocí

vzorků vyjmutých ze

skutečného nástroje

Page 30: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Tabulková (wavetable) syntéza

Page 31: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Tabulková (wavetable) syntéza

Page 32: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

• 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

Page 33: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Tabulková (wavetable) syntéza

• Lineární prolínaní (crossfade)

Page 34: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Tabulková (wavetable) syntéza

*

=

t

t

t

Page 35: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Tabulková (wavetable) syntéza

t

peak

amplitude

duration

peak amplitude

Page 36: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Tabulková (wavetable) syntéza

t

t

t

high

med.

low

ff

mf

p

Page 37: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Tabulková (wavetable) syntéza

fs=8000;

f0=400;

N0=fs/f0;

n0=0:N0-1;

P=sin(2*pi*f0/fs*n0);

f1=f0*2^(1/12);

N1=fs/f1;

n1=0:N1-1;

delta=f1*length(P)/fs;

% delta=f1/f0; % delta=T0/T1;

ind = round(0:delta:delta*(N1-1))+1;

stem(n1,P(ind))

Page 38: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Tabulková (wavetable) syntéza % transformace tabulky s jednou periodou f0

% na libovolně dlouhý signál o délce doba a o frekvenci f1

doba=1;

ind = mod(round(0:delta:(delta*doba*fs-1)),N0)+1;

stem(ind),

stem(P(ind))

Page 39: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Tabulková (wavetable) syntéza

nT

int ceil

A

B

Page 40: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Tabulková (wavetable) syntéza % transformace tabulky s jednou periodou f0

% na libovolne dlouhy signal o frekvenci f1

% pomoci linearni interpolace

doba=1;

ind = mod(0:delta:(delta*doba*fs-1),N0)+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

B

ind

y

x

Page 41: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Tabulková (wavetable) syntéza

% priklad tabulkove syntezy banja

[x,fs]=wavread('banjo.wav');

P=x(144:172);

Page 42: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

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(0: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;

Page 43: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Tabulková (wavetable) syntéza

y=tabsynt(P,f0,doba,fs);

y=exp(-[0:length(y)-1]./fs./.1).*y;

Page 44: A2B31SMS 2. PŘEDNÁŠKA - cvut.czsami.fel.cvut.cz/sms/SMS02.pdf · 2020. 4. 16. · A2B31SMS – 2.PŘEDNÁŠKA 9. října 2017 Číslicové signály Aperiodické Periodické Aplikace

Tabulková (wavetable) syntéza