Analiza dźwięku

przygotowała Klaudia Wrzask

Off[General::"spell"]
Off[General::"spell1"]

Tony i ich częstotliwości

Ton – dźwięk prosty mający sinusoidalny przebieg o ściśle określonej częstotliwości, amplitudzie i fazie. Dźwięk taki można wytworzyć przy pomocy kamertonu lub generatora elektro-akustycznego.
Ton to także inne określenie składowej harmonicznej. Każdy dźwięk (w rozumieniu akustyki) składa się z tonów. Okazuje się, że większość instrumentów muzycznych wytwarza dźwięki składające się z nieskończonej ilości tonów prostych o różnym natężeniu i częstotliwości będącej wielokrotnością tonu podstawowego (tworzących szereg harmoniczny). Barwa dźwięku zależy od natężenia występujących w nim tonów prostych lub pewnych pasm częstotliwości.
Poniżej tabela z tonami i ich częstotliwościami w Hz.
Poniżej przedstawiono tabelkę wybranych tonów podstawowych w Hz oraz używaną notacje w muzyce. 


h 	246,9
c1 	261,63
cis1 	277,18
d1 	293,66
dis1 	311,13
e1 	329,63
f1 	349,23
fis1 	369,99
g1 	392,00
gis1 	415,30
a1 	440,00
ais1 	466,16
h1 	493,88
c2 	523,25
cis2 	554,4
d2 	587,3
dis2 	622,3
e2 	659,3
f2 	698,5
fis2 	740,0
g2 	784,0
gis2 	830,6
a2 	880,0
ais2 	932,3
h2 	987,8
c3 	1046,5
cis3 	1108,7
d3 	1174,7
dis3 	1244,5
e3 	1318,5
f3 	1396,9
fis3 	1480,0
g3 	1568,0

Synteza dźwięków

Synteza dźwięku to proces, którego celem jest generowanie sygnału fonicznego oraz tworzenie barw (brzmień) na podstawie zdefiniowanych parametrów. Parametry te określają charakterystykę widmową oraz amplitudową dźwięku. Synteza dźwięku realizowana jest przez syntezatory.

Poza stosowanymi przez nas przebiegami sinusoidalnymi dla potrzeb syntezy dźwięku używane są inne przebiegi. Poniżej dźwięk na podstawie przebiegu właśnie sinusoidalnego c1 261Hz:

sinus=Plot[Sin[2 Pi 261 x],{x,0,0.008}]
Play[Sin[2 Pi 261 t],{t,0,3}]

Inne możliwe przebiegi:
Przebieg abs sin (ang. absolute sine wave lub full rectified sine wave) 
Nazywany także przebiegiem sinusoidalnym wyprostowanym pełnookresowo. Tak bowiem wygląda fala sinusoidalna po przejściu przez tzw. prostownik pełnookresowy.

abssin=Plot[Abs[Sin[Pi 261 t]],{t,0,0.008}]
Play[Abs[Sin[Pi 261 t]],{t,0,3}]

Przebieg pos sin (ang. positive part of sine wave lub half-rectified sine wave) 
Jest to przebieg sinusoidalny, którego ujemne połówki zostały zastąpione zerami. Nazywany też przebiegiem sinusoidalnym wyprostowanym półokresowo ponieważ odpowiada fali sinusoidalnej po przejściu przez prostownik półokresowy.

possin=Plot[Sin[2 Pi 261 t]UnitStep[Sin[2 Pi 261 t]],{t,0,0.008}]
Play[Sin[2 Pi 261 t]UnitStep[Sin[2 Pi 261 t]],{t,0,3}]

Przebieg trójkątny (ang. triangle wave) 
Jest to jeden z najczęściej spotykanych przebiegów (poza sinusoidalnym i prostokątnym). Brzmienie jego jest raczej łagodne – pośrednie między przebiegiem sinusoidalnym, a prostokątnym. Realizuje się go elektronicznie drogą okresowego ładowania i rozładowywania kondensatora ze źródła o stałym prądzie.

troj=Plot[Abs[261 x - Round[261 x]],{x,0,0.008}]
Play[Abs[261 t - Round[261 t]],{t,0,3}]

Przebieg piłokształtny (ang. saw albo ramp)
Może występować w dwóch postaciach: ze zboczem opadającym, lub wznoszącym. Brzmieniowo są one tożsame. Przebieg ten można traktować jako silnie asymetryczny przebieg trójkątny. Generować można więc go w podobnych układach elektronicznych, jak przebieg trójkątny, z tą różnicą, że kondensator musi być ładowany szybko i rozładowywany gwałtownie (lub odwrotnie):

pila=Plot[261 x - Round[261 x],{x,0,0.008},PlotRange->All]
Play[261 t - Round[261 t],{t,0,3}]

Przebieg prostokątny (ang. square wave)
Przebieg ten jest bardzo łatwy w realizacji elektronicznej, stąd też był także jednym z najczęściej używanych. Jego generacja sprowadza się do okresowego włączania i wyłączania napięcia. Ma więc on tylko dwa stany: wysoki i niski. Nazwa tego przebiegu używana bywa (niezbyt ściśle) wyłącznie dla przebiegu o współczynniku wypełnienia równym 50% (szerokość prostokątów jest równa odległosci między nimi).

prost=Plot[UnitStep[Sin[2 Pi 261 x]],{x,0,0.008}]
Play[UnitStep[Sin[2 Pi 261 t]],{t,0,3}]

Przebieg impulsowy (ang. pulse). Jest to przebieg prostokątny współczynniku wypełnienia różnym od 50%, lub inaczej, asymetryczny przebieg prostokątny. Nazywany też bywa „ciąg impulsów”, bądź po prostu „impulsy”. Jeżeli współczynnik wypełnienia jest mniejszy od 50% - mówimy o impulsach dodatnich; jeżeli większy – o ujemnych. Jeżeli współczynnik wypełnienia impulsu dodatniego wynosi x, a ujemnego 100%-x, to impulsy te są symetryczne i nierozróżnialne słuchowo. Podobno, bo ja nie słyszę różnicy nawet pomiędzy przebiegiem prostokątnym a impulsowym o bardzo małym współczynniku wypełnienia. Później zobaczymy tą różnicę na widmie sygnału...

impuls=Plot[UnitStep[Sin[2 Pi 261 x]-0.75],{x,0,0.008}]
Play[UnitStep[Sin[2 Pi 261 t]],{t,0,3}]

Powyższe dźwięki charakteryzują się tą samą słyszalną podstawową częstotliwością (tonem), a jednak brzmią inaczej. 
Ton podstawowy jest najważniejszą częstotliwością wydawaną przez instrument. Częstotliwość ta praktycznie odpowiada za odczuwalną wysokość dźwięku. Jest to najniższa częstotliwość ze wszystkich tonów wytwarzanych przez instrument. Kolejne harmoniczne odpowiadają (ilość oraz wielkość amplitud) za barwę dźwięku, wzbogacają brzmienie. Z tego też powodu różne instrumenty pomimo wytwarzania tego samego dźwięku brzmią inaczej.
Przebadamy to na widmach:

fsin=ListPlot[Abs[Fourier[Table[Sin[2 Pi 261 n/8000], {n,1,8000}]]],PlotRange->All,Filling->Axis]

fabssin=ListPlot[Abs[Fourier[Table[Abs[Sin[Pi 261 n/8000]], {n,1,8000}]]],PlotRange->All,Filling->Axis]

fpossin=ListPlot[Abs[Fourier[Table[Sin[2 Pi 261 n/8000]UnitStep[Sin[2 Pi 261 n/8000]], {n,1,8000}]]],PlotRange->All,Filling->Axis]

ftroj=ListPlot[Abs[Fourier[Table[Abs[261 n/8000 - Round[261 n/8000]], {n,1,8000}]]],PlotRange->All,Filling->Axis]

fpila=ListPlot[Abs[Fourier[Table[261 n/8000 - Round[261 n/8000], {n,1,8000}]]],PlotRange->All,Filling->Axis]

fprost=ListPlot[Abs[Fourier[Table[UnitStep[Sin[2 Pi 261 n/8000]], {n,1,8000}]]],PlotRange->All,Filling->Axis]

fimpuls=ListPlot[Abs[Fourier[Table[UnitStep[Sin[2 Pi 261 n/8000]-0.95], {n,1,8000}]]],PlotRange->All,Filling->Axis]

Poniżej przedstawione są przebiegi o tych samych częstotliwościach 261 Hz (na wykresach przedstawiono dwa pełne okresy podstawowe) i ich transformaty Fouriera na których widać, że oprócz podstawowej częstotliwości w sygnale występują także tak zwane składowe harmoniczne (czyli krotności częstotliwości 261 Hz) np. 552 Hz, 783 Hz, 1044Hz,...

GraphicsGrid[{{sinus,abssin,possin},{fsin,fabssin,fpossin},{troj,pila,prost,impuls},{ftroj,fpila,fprost,fimpuls}}]

Powyżej, na podstawie widma, dobrze widać różnice pomiędzy sygnałem prostokątnym a impulsem, (tak jak już pisałam ja tej różnicy nie słyszę).

Pytanie: dlaczego w niektórych przypadkach występuje pierwszy niezerowy pik i jaka jest jego interpretacja - może być na punkty dla pierwszych trzech osób :)

A teraz mała powtóra z jednego z pierwszych wykładów: w jaki sposób odczytujemy częstotliwości z wykresu widma? 
Wiadomo, że dokładnie w środku wykresu widma jest połowa częstotliwości próbkowania. Próbkowałam z częstotliowścią 8000 Hz, więc w środku mamy 4000 Hz. Skoro długość sygnału to 1s (mam 8000 próbek i próbkuję 8000 razy na sekundę) to w tym przypadku skala na pierwszej połowie wykresu to dokładnie częstotliwości. Poniżej zbliżenie, wzięłam tylko 400 próbek, widać, że pierwszy pik to może być ok. 261 Hz (akurat zaraz się okaże, że to 262 Hz...).

ListPlot[Take[Abs[Fourier[Table[261 n/8000 - Round[261 n/8000], {n,1,8000}]]],400],PlotRange->All,Filling->Axis]

Po obliczeniu maksimum wychodzi w 262 Hz (mogą występować błędy przecieku); drugi pik to "lustrzane odbicie" widma - ale nim się zajmować nie będziemy.

Position[Abs[Fourier[Table[261 n/8000 - Round[261 n/8000], {n,1,8000}]]],Max[Abs[Fourier[Table[261 n/8000 - Round[261 n/8000], {n,1,8000}]]]]]

Tutaj mamy wypisane miejsca 10 najwyższych pików w kolejnosci od najwyższego. Skorzystałam z funkcji Rewerse[] aby wypisywało mi w kolejności od najwyższego; Ordering[] aby wypisało mi 10 ostatnich pików i Take[] aby zająć się tylko połową widma (biorę pod uwagę 4000 pierwszych danych z listy).

Reverse[Ordering[Take[Abs[Fourier[Table[261 n/8000 - Round[261 n/8000], {n,1,8000}]]],4000],-10]]

Charakterystyka dźwięków naturalnych

Wczytywanie pliku wav:
Importing wav's:

Można chyba powiedzieć, że dźwięki generowane w powyższy sposób nie brzmią naturalnie. Dla porównania odsłuchamy teraz teraz trzy dzwięki: organy, wiolonczelę i pianino; także mają tony podstawowe c1 - 261 Hz:

Interpreter["Sound"][Import["c:/Users/wrzask/Desktop/PO/corg.wav","String"]]

Interpreter["Sound"][Import["c:/Users/wrzask/Desktop/PO/corg.wav","Sound"]]

corg=Flatten[Import["c:/Users/wrzask/Desktop/PO/corg.wav","Data"]];
Dimensions[corg]
corgSampleRate=Import["c:/Users/wrzask/Desktop/PO/corg.wav","SampledSoundList"][[2]]
ccello=Flatten[Import["c:/Users/wrzask/Desktop/PO/ccello.wav","Data"]];
Dimensions[ccello]
ccelloSampleRate=Import["c:/Users/wrzask/Desktop/PO/ccello.wav","SampledSoundList"][[2]]
cpiano=Flatten[Import["c:/Users/wrzask/Desktop/PO/cpiano.wav","Data"]];
Dimensions[cpiano]
cpianoSampleRate=Import["c:/Users/wrzask/Desktop/PO/cpiano.wav","SampledSoundList"][[2]]

Odtwarzanie dźwięku w Mathematice - używam tej samej "sample rate" co w oryginalnym pliku:
Playing sound data in Mathematica:

ListPlay[corg,SampleRate->44100]

ListPlay[ccello,SampleRate->44100]

ListPlay[cpiano,SampleRate->44100]

Analiza widma

A teraz analiza widma tych dźwięków

forg=ListPlot[Abs[Fourier[corg]],PlotJoined->True, PlotRange->All]
fcello=ListPlot[Abs[Fourier[ccello]],PlotJoined->True, PlotRange->All]
fpiano=ListPlot[Abs[Fourier[cpiano]],PlotJoined->True, PlotRange->All]

Odczytanie częstotliwości 261 Hz z wykresu:
Dla organów i wiolonczeli
Sampling rate: 44100
Number of samples: 220655
Duration: 5.00351 seconds = 220655/44100
Z tego wynika, że 261 Hz powinno znajdować się w punkcie 261*5.00351=1306 (1306 próbka odpowiada częstotliwości 261 Hz)
Natomiast dla pianina, wav jest troszkę dłuższy, mamy:
261 Hz jest w punkcie 261*5.49984=1435 (1435 próbka odpowiada częstotliwości 261 Hz)
Aby to sprawdzić wezmę tylko 6000 pierwszych próbek

ListPlot[Take[Abs[Fourier[corg]],6000],PlotRange->All,Filling->Axis]
ListPlot[Take[Abs[Fourier[ccello]],6000],PlotRange->All,Filling->Axis]
ListPlot[Take[Abs[Fourier[cpiano]],6000],PlotRange->All,Filling->Axis]

✔ Powyżej w przypadku organów (pierwszy wykres widma od góry) widać, że w widmie prócz częstotliowści 261 Hz występuje jeszcze częstotliwość o połowę niższa. Jest to tak zwana subharmoniczna lub podharmoniczna; dźwięk ten jest dokładnie o oktawę niższy - dlatego tak dobrze (na słuch) komponuje się z resztą widma. Własnie kompozycja subharminiczych  z maksymalnym pikiem 

✔ Podharmoniczne to częstotliwości poniżej częstotliwości podstawowej. Mają częstotliwości tonu podstawowego podzielone przez kolejne liczby naturalne. 

✔ Dla przykładu, jeżeli ton podstawowy ma częstotliwość 440 Hz jego podharmoniczne mają częstotliwości 220, 110, 55 Hz. Cześć instrumentów, gdy wydobywa z siebie dźwięk również wytwarza podharmoniczne. Jest to związane z nieidealnymi strunami, nieidealnymi wymiarami (rury, talerze), zjawiskiem dudnienia (mf1+nf2, mf1-nf2), dodatkowym obciążeniem.

✔ Najczęściej podharmoniczne można odnaleźć w instrumentach: piszczałki, gongi, tam-tamy, bębny, dzwony, organy, ksylofon, marimba, gitara.

✔ Można się także spotkać z celowym - syntetycznym uzyskiwaniem podharmonicznych, które mają na celu zwiększenia poziomu basów. Normalnie uzyskanie takiego poziomu basów nie mogłoby zostać wytworzone przez dany instrument.

Analiza widma organy

ListPlay[corg,SampleRate->44100]

Przyjrzymy się teraz dokładniej widmie organów, analizujemy pierwsze 6000 próbek:

ListPlot[Take[Abs[Fourier[corg]],6000],PlotRange->All,Filling->Axis]

✔ Już na pierwszy rzut oka widać, że przed częstotliwością słyszalną (główną) 261 Hz (próbka nr 1306) znajduje się podharmoniczna ok. 130 Hz. 
✔ Co więcej, w przypadku organów, 261 Hz wcale nie ma największego wkładu w widmo dźwięku. Z analizy maksimum wynika, że największy wkład ma częstotliwość ok. 524 Hz.

Analiza maksimów:
✔ wyznaczam maksymalną wartość widma przy pomocy funkcji Max[]  
✔ miejsce występowania tej próbki przy pomocy funkcji Position[] 
✔ całość dzielę na czas nagrania, aby otrzymać częstotliowści:

Position[Abs[Fourier[corg]],Max[Abs[Fourier[corg]]]][[1]]/5.00351

✔ To właśnie podharmoniczne częstotliwości 261 Hz (za chwilę z analizy widma okaże się, że to 262 - przyjmuje się, że dźwięk c1 to 261.63 Hz) z wyższymi harmonicznymi tworzą barwę dźwięku organów ze słyszalnym wrażeniem, że odbieramy dzwięk c1.

Prześledzimy jeszcze miejsca występowania 10 najwyższych pików:

Reverse[Ordering[Take[Abs[Fourier[corg]],100000],-10]]/5.00351

✔ Po pierwsze mamy tutaj do czynienia ze zjawiskiem przecieku widma (omawiane było w wykładzie nr 3). Aby lepiej pokazać przeciek, zrobię zbliżenie na jeden z pików 524 Hz:

ListPlot[Take[Abs[Fourier[corg]],{2600,2650}],PlotRange->All,Filling->Axis]

✔ Problem jednak polega na tym, że niektóre z tych pików nie powinny występować (mogą wynikać z przecieku), a inne występują i tworzą charakterystyczne dla danego instrumentu wibracje.

✔ Wracając do maksimów widma widzimy, że częstotliwości mające największy wkład w barwę dźwięku organów to 524 Hz (druga harmoniczna), 1048 Hz (czwarta harmoniczna), 131 Hz (podharmoniczna), a także 262 Hz (jest to częstotliowść główna - przez nas słyszalna). Dodatkowo częstotliowości bliskie podstawowych dają charakterystyczne wibracje, jednak część z tych pików może wynikać z błędu przecieku widma.

Analiza widma wiolonczela

ListPlay[ccello,SampleRate->44100]

Przyjrzymy się teraz dokładniej widmie wiolonczeli:

ListPlot[Take[Abs[Fourier[ccello]],6000],PlotRange->All,Filling->Axis]

Analiza maksimów - całość dzielę na czas nagrania, aby otrzymać częstotliowści:

Position[Abs[Fourier[ccello]],Max[Abs[Fourier[ccello]]]][[1]]/5.00351

✔ Z analizy widma i analizy maksimów widma wynika, że wszystko się zgadza z teorią - maksimum występuje dla 262 Hz. Tutaj występują także przecieki widma, więc przyjrzymy się dokładniej pierwszemu pikowi:

ListPlot[Take[Abs[Fourier[ccello]],{1280,1340}],PlotRange->All,Filling->Axis]

✔ Problem jest podobny jak w przypadku organów: niektóre piki, które widzimy powyżej nie powinny występować - wiąża się one z błędem przecieku widma, niektóre natomiast występuja i tworzą charakterystyczne dla instrumentu wibracje.


Prześledzimy jeszcze miejsca występowania 10 najwyższych pików:

Reverse[Ordering[Take[Abs[Fourier[ccello]],100000],-10]]/5.00351

Z analizy 10 najwyższych pików wynika, że 262 Hz ma największy wkład w widmo (jest to zarazem główna częstotliowość) i kolejna harmoniczna 524 Hz. Piki w miejscach zbliżonych do tych częstotliwości tworzą chcarakterystyczne wibracje, bądź są blędem przecieku.

Analiza widma pianino

ListPlay[cpiano,SampleRate->44100]

Analiza widma:

ListPlot[Take[Abs[Fourier[cpiano]],6000],PlotRange->All,Filling->Axis]

Analiza maksimów - całość dzielę na czas nagrania, aby otrzymać częstotliowści:

Position[Abs[Fourier[cpiano]],Max[Abs[Fourier[cpiano]]]][[1]]/5.49984

✔ Analiza pianina potwierdza teorię: pierwsza harmoniczna występuje w 261.6 Hz i ma największy wkład w widmie.

Przybliżony pik 261.6 Hz:

ListPlot[Take[Abs[Fourier[cpiano]],{1420,1460}],PlotRange->All,Filling->Axis]

Prześledzimy jeszcze miejsca występowania 10 najwyższych pików:

Reverse[Ordering[Take[Abs[Fourier[cpiano]],100000],-10]]/5.49984

✔ 261 Hz to główna częstotliowść, kolejne harnoniczne dające duży wkład w widmo (nadające barwę) to ok. 523 Hz (druga harmoniczna), 1047 Hz (czwarta harmoniczna) i 785 Hz (trzecia harmoniczna). Występują także piki bliskie harmonicznym nadające wibracje oraz niestety przecieki.

Próba syntezy wiolonczeli

Wycinam próbki dźwięku: 
✔ w pierwszym przypadku biorę dokładnie minutę (datatake), 
✔ drugie wycięcie to ok. 1.25 minuty (datatake2). 
✔ Wycięcie dokładnie dźwięku wiolonczeli bez ciszy na początku nagrania z pewnością pozwoli mi ograniczyć błąd przecieku.

datatake=Take[ccello,{41000,85099}];
Dimensions[datatake]
czas=N[Dimensions[datatake]/44100]
datatake2=Take[ccello,{35000,90000}];
Dimensions[datatake2]
czas2=N[Dimensions[datatake2]/44100]

Odtwarzam dźwięk

ListPlay[datatake,SampleRate->44100]

Widmo:

ListPlot[Abs[Fourier[datatake]],PlotJoined->True,PlotRange->All]

Cztery pierwsze piki w widmie - od góry dla oryginalnego dźwięku i dwóch wyciętych

ListPlot[Take[Abs[Fourier[ccello]],6000],PlotRange->All,Filling->Axis]
ListPlot[Take[Abs[Fourier[datatake]],1200],PlotRange->All,Filling->Axis]
ListPlot[Take[Abs[Fourier[datatake2]],1400],PlotRange->All,Filling->Axis]

Przybliżenie pierwszego piku:
✔ dla oryginalnego dźwięku
✔ 1 minuta danych
✔ 1.25 minut danych
✔ 1 minuta danych z oknem - próba minimalizacji przecieków
✔ 1.25 minut z oknem

ListPlot[Take[Abs[Fourier[ccello]],{1240,1380}],PlotRange->All,Filling->Axis]
ListPlot[Take[Abs[Fourier[datatake]],{220,300}],PlotRange->All,Filling->Axis]
ListPlot[Take[Abs[Fourier[datatake2]],{280,360}],PlotRange->All,Filling->Axis]
NN=44100;
Window1=Table[0.5-0.5 Cos[2 Pi n/NN],{n,0,NN-1}];
ListPlot[Take[Abs[Fourier[datatake Window1]],{220,300}],PlotRange->All,Filling->Axis]
NN2=55001;
Window2=Table[0.5-0.5 Cos[2 Pi n/NN2],{n,0,NN2-1}];ListPlot[Take[Abs[Fourier[datatake2 Window2]],{280,360}],PlotRange->All,Filling->Axis]

Widać, że udało się pozbyć przecieków - pytanie czy wystarczająco? Pewnie nie skoro widać, że w zależności od iloćsi próbek zbliżenie piku wygląda trochę inaczej. Tak czy inaczej poprawa jest. Dodatkowo została wprowadzona próba przepuszczenia danych przez okno (dwa ostatnie rys. powyżej) tak, aby zminimalizować przecieki.

Wyznaczam sto najwyższych pików:

piki=Reverse[Ordering[Take[Abs[Fourier[datatake Window1]],20000],-100]]

i ich wartości:

wartpikow=Table[Abs[Fourier[datatake]][[piki[[i]]]],{i,1,100}]

Na tej podstawie buduję szereg sinusów, który ma brzmieć jak wiolonczela (na razie to tylko próba...)

cellosynt[t_]:=Sum[wartpikow[[i]] Sin[2 Pi (piki[[i]]-1)t],{i,1,100}]
Play[cellosynt[t],{t,0,1}]

Porównuję wynik z oryginalnym

ListPlay[datatake,SampleRate->44100]

Wniosek z tego taki, że do syntezy wiolonczeli nie potrzebuje pików przy "głównych" częstotliwościach (wynikających z przecieków). Wyciągnę interesujące mnie częstotliwości ręcznie... 
Po prostu biorę pierwszy najwyższy pik z danej częstotliowści i trakutuję sąsiednie jako błędy przecieku:

piki=Reverse[Ordering[Take[Abs[Fourier[datatake Window1]],20000],-200]]
wartpikow=Table[Abs[Fourier[datatake]][[piki[[i]]]],{i,1,200}]
cellosynt[t_]:=Sum[wartpikow[[i]] Sin[2 Pi (piki[[i]]-1)t],{i,1,100}]
Play[cellosynt[t],{t,0,1}]

pikirecznie={1,263,525,788,1312,1050,1574,1836,2103,2365,2890,4458,4195,4720}
wartpikowrecznie=Table[Abs[Fourier[datatake]][[pikirecznie[[i]]]],{i,1,14}]
cellosyntrecznie[t_]:=Sum[wartpikowrecznie[[i]] Sin[2 Pi (pikirecznie[[i]]-1)t],{i,1,14}]
Play[cellosyntrecznie[t],{t,0,1}]

ListPlay[datatake,SampleRate->44100]

Może się zdarzyć, że niektóre z sąsiadujących pików, wcale nie wynikają z błędów - wchodzą w skład widma i stanowią "słyszalne wibracje" - nie wiem jak to nazwać lepiej. Dodałam jeszcze cztery ostatnie piki, sami oceńcie czy jest to bardziej podobne do wiolonczeli:

pikirecznie={1,263,525,788,1312,1050,1574,1836,2103,2365,2890,4458,4195,4720,258,268,782,793}
wartpikowrecznie=Table[Abs[Fourier[datatake]][[pikirecznie[[i]]]],{i,1,18}]
cellosyntrecznie[t_]:=Sum[wartpikowrecznie[[i]] Sin[2 Pi (pikirecznie[[i]]-1)t],{i,1,18}]
Play[cellosyntrecznie[t],{t,0,1}]

Na koniec te same piki odtworzone za pomocą nie sinusa, ale abs sin - dźwięk wydaje się trochę bardziej metaliczny:

pikirecznie={1,263,525,788,1312,1050,1574,1836,2103,2365,2890,4458,4195,4720,258,268,782,793}
wartpikowrecznie=Table[Abs[Fourier[datatake]][[pikirecznie[[i]]]],{i,1,18}]
cellosyntrecznie[t_]:=Sum[wartpikowrecznie[[i]] Abs[Sin[Pi (pikirecznie[[i]]-1)t]],{i,1,18}]
Play[cellosyntrecznie[t],{t,0,1}]

Syntezator cyfrowy

synteza subtraktywna

Synteza subtraktywna to jedna z pierwszych metod metoda syntezy dźwięku polegająca na odejmowaniu harmonicznych, poprzez przetwarzanie przebiegów głównie piłokształtnych i prostokątnych.

pilaf[frequency_,x_]:=frequency x - Round[frequency x];
Plot[pilaf[261,x],{x,0,0.008}]
Play[pilaf[440,t],{t,0,3}]

impulsf[frequency_,x_,d_]=UnitStep[Sin[2 Pi frequency x]-d];
Plot[impulsf[261,x,0.95],{x,0,0.008}]
Play[impulsf[261,t,0.95],{t,0,3}]

sound1data=Table[pilaf[261,n/8000]+pilaf[268,n/8000], {n,1,24000}];
Dimensions[sound1data]
ListPlay[sound1data]

filtrband[a_,b_]:=Table[UnitStep[-(n-a) (n-b) (n-24000+a) (n-24000+b)],{n,1,24000}];
ListPlot[filtrband[1000,3000]]

ListPlot[Abs[Fourier[sound1data]filtrband[1000,3000]],PlotRange->All]

ListPlay[Re[InverseFourier[Fourier[sound1data]filtrband[1000,3000]]]]

ListPlay[Re[InverseFourier[Fourier[sound1data]filtrband[2000,6000]]]]

Możliwe zadania do zrobienia

- stworzenie systetycznego dźwięki pianina lub/i organów
- można je spróbować tworzyć nie tylko za pomocą sin ale także innych przebiegów
- można spróbować "podkręcić basy" - dodać składowe podharmoniczne
- własne pomysły mile widziane