Také byste si rádi vychutnali svoji oblíbenou melodii, leč nemáte k dispozici svůj hudební nástroj, na který byste si ji mohli zahrát? Ani reprodukovaná verze Vaší melodie není k mání? Nevadí!!! Zde je řešení! Svoji oblíbenou melodii si vytvořte sami! Ano, díky eRku můžete tvořit ke své vlastní libosti!

První krůčky při generování zvuku

Nejprve si zadáme základní parametry zvukového souboru: 1) f = frekvenci našeho zvuku 2) t = trvání našeho zvuku 3) fs = vzorkovací frekvenci;tato hodnota musí být větší než dvojnásobek maximální frekvence, kterou zvukový signál obsahuje; hodnota 44100 Hz se zpravidla používá pro zvukové soubory CD kvality 4) Ts = vzorkovací periodu, která udává časovou vzdálenost mezi vzorky 5) amplitudu 6) fázi

Tyto parametry použijeme pro sestavení skriptu pro naši sinusovku a výsledný zvuk.

library(seewave)
library(dygraphs)

fs <- 44100 # Hz
amplituda <- 0.8
f <- 880 #Hz
faze <- 0 # rad
trvani <- 1.5 #s

Ts <- 1/fs   # trvání jednoho vzorku 

t <- seq(0, trvani - Ts, by =  Ts)  # trvání sinusovky bez posledního vzorku


sig <- amplituda * sin(2*pi*f*t + faze) # pro vygenerování sinusovky - našeho zvuku

dygraph(list(x= t, y= sig)) %>%  # pro zobrazení sinusovky
  dyRangeSelector(dateWindow = c(0.62, 0.65)) 

savewav(sig, fs, 'tuhle1.wav') # výsledný zvuk si uložíme

Zvuk č. 1

Obrázek složený tón

Výše uvedeným skriptem jsme si vyrobili zvuk o jednom tónu. Naši sinusovku jsme si zobrazili v grafu.

Nyní si zkusíme k našemu tónu přidat tóny další. Náš skript doplníme o proměnnou I pro pro výpočet intervalu v půltónech.

fs <- 44100 # Hz
f <- 880
trvani1 <- 0.5 #s
trvani2 <- 1.5

amplituda <- 0.8

Ts <- 1/fs

I <- 2^(1/12) # interval 1 půltón (ST)

t <- seq(0, trvani1 - Ts, by =  Ts)
t1 <- seq(0, trvani2 - Ts, by =  Ts)

s1 <- amplituda * sin(2*pi*f*t)
s2 <- amplituda * sin(2*pi*f*I^-2*t) # o dva půltóny níže
s3 <- amplituda * sin(2*pi*f*t1)     
s4 <- amplituda * sin(2*pi*f*I^-2*t)

sig <- c(s1,s2,s3,s4)          #  pro výsledný signál o čtyřech položkách
savewav(sig, fs, 'tuhle2.wav')

Zvládli jsme tedy vyrobit velmi jednoduchou melodii o čtyřech položkách, ve které se střídají jen dva různé tóny. Také jsme prodloužili trvání jedné položky.

Což tahkle přidat si v následujícím skriptu ke každému našemu základnímu tónu harmonické složky? Slyšíte ten rozdíl ve srovnání s předchozí melodií?

fs <- 44100 # Hz
f <- 880

trvani <- 0.5 
trvani2 <- 1.5

amplituda <- 0.8

Ts <- 1/fs

I <- 2^(1/12)

t<- seq(0, trvani - Ts, by =  Ts)
t2 <- seq(0, trvani2 - Ts, by =  Ts)

s1_H1 <- 1*amplituda * sin(2*pi*f*t)       #a
s1_H2 <- 0.5*amplituda * sin(2*pi*f*2*t)   #a
s1_H3 <- 0.5*amplituda * sin(2*pi*f*3*t)   #a

s2_H1 <- 1*amplituda * sin(2*pi*f*I^-2*t)      #g
s2_H2 <- 0.5*amplituda * sin(2*pi*f*I^-2*2*t)  #g
s2_H3 <- 0.5*amplituda * sin(2*pi*f*I^-2*3*t)  #g

s3_H1 <- 1*amplituda * sin(2*pi*f*t2)          #a
s3_H2 <- 0.5*amplituda * sin(2*pi*f*2*t2)      #a
s3_H3 <- 0.5*amplituda * sin(2*pi*f*3*t2)      #a

s4_H1 <- 1*amplituda * sin(2*pi*f*I^-2*t)      #g
s4_H2 <- 0.5*amplituda * sin(2*pi*f*I^-2*2*t)  #g
s4_H3 <- 0.5*amplituda * sin(2*pi*f*I^-2*3*t)  #g

sig <- c(s1_H1+s1_H2+s1_H3,s2_H1+s2_H2+s2_H3,s3_H1+s3_H2+s3_H3,s4_H1+s4_H2+s4_H3)

savewav(sig, fs, 'tuhle3.wav')

V následujícím zápisu ponecháme první čtyři tóny jako složené a k nim přidáme dalších pět tónů bez jejich harmonických složek. Rozdíl určitě ihned uslyšíte a dost pravděpodobně rozpoznáte, o jakou melodii se jedná:

fs <- 44100 # Hz
f <- 880

trvani <- 0.25 
trvani1 <- 0.5 #s
trvani2 <- 1.0

amplituda <- 0.8

Ts <- 1/fs

I <- 2^(1/12)

t<- seq(0, trvani - Ts, by =  Ts)
t1<- seq(0, trvani1 - Ts, by =  Ts)
t2 <- seq(0, trvani2 - Ts, by =  Ts)

s1_H1 <- 1*amplituda * sin(2*pi*f*t)       #a
s1_H2 <- 0.5*amplituda * sin(2*pi*f*2*t)   #a
s1_H3 <- 0.5*amplituda * sin(2*pi*f*3*t)   #a

s2_H1 <- 1*amplituda * sin(2*pi*f*I^-2*t)      #g
s2_H2 <- 0.5*amplituda * sin(2*pi*f*I^-2*2*t)  #g
s2_H3 <- 0.5*amplituda * sin(2*pi*f*I^-2*3*t)  #g

s3_H1 <- 1*amplituda * sin(2*pi*f*t2)          #a
s3_H2 <- 0.5*amplituda * sin(2*pi*f*2*t2)      #a
s3_H3 <- 0.5*amplituda * sin(2*pi*f*3*t2)      #a

s4_H1 <- 1*amplituda * sin(2*pi*f*I^-2*t)      #g
s4_H2 <- 0.5*amplituda * sin(2*pi*f*I^-2*2*t)  #g
s4_H3 <- 0.5*amplituda * sin(2*pi*f*I^-2*3*t)  #g

s5 <- amplituda * sin(2*pi*f*I^-4*t)      #f
s6 <- amplituda * sin(2*pi*f*I^-5*t)      #e
s7 <- amplituda * sin(2*pi*f*I^-7*t)      #d
s8 <- amplituda * sin(2*pi*f*I^-8*t1)     # cis
s9 <- amplituda * sin(2*pi*f*I^-7*t1)      #d

sig <- c(s1_H1+s1_H2+s1_H3,s2_H1+s2_H2+s2_H3,s3_H1+s3_H2+s3_H3,s4_H1+s4_H2+s4_H3,s5,s6,s7,s8,s9)

savewav(sig, fs, 'tuhle4.wav')

V ukázce, která následuje, budete mít možnost poslechnout si motiv předchozí melodie v jednotném provedení všech jejích tónů:

fs <- 44100 # Hz
f <- 880

trvani <- 0.25 
trvani1 <- 0.5 #s
trvani2 <- 1.0

amplituda <- 0.8

Ts <- 1/fs

I <- 2^(1/12)

t<- seq(0, trvani - Ts, by =  Ts)
t1<- seq(0, trvani1 - Ts, by =  Ts)
t2 <- seq(0, trvani2 - Ts, by =  Ts)

s1_H1 <- 1.0*amplituda * sin(2*pi*f*t)     #a
s1_H2 <- 0.5*amplituda * sin(2*pi*f*2*t)   #a
s1_H3 <- 0.5*amplituda * sin(2*pi*f*3*t)   #a
s1_H4 <- 0.25*amplituda * sin(2*pi*f*4*t)  #a
s1_H5 <- 0.25*amplituda * sin(2*pi*f*5*t)  #a

s2_H1 <- 1*amplituda * sin(2*pi*f*I^-2*t)      #g
s2_H2 <- 0.5*amplituda * sin(2*pi*f*I^-2*2*t)  #g
s2_H3 <- 0.5*amplituda * sin(2*pi*f*I^-2*3*t)  #g
s2_H4 <- 0.25*amplituda * sin(2*pi*f*I^-2*4*t) #g
s2_H5 <- 0.25*amplituda * sin(2*pi*f*I^-2*5*t) #g

s3_H1 <- 1*amplituda * sin(2*pi*f*t2)          #a
s3_H2 <- 0.5*amplituda * sin(2*pi*f*2*t2)      #a
s3_H3 <- 0.5*amplituda * sin(2*pi*f*3*t2)      #a
s3_H4 <- 0.25*amplituda * sin(2*pi*f*4*t2)     #a
s3_H5 <- 0.25*amplituda * sin(2*pi*f*5*t2)     #a

s4_H1 <- 1*amplituda * sin(2*pi*f*I^-2*t)      #g
s4_H2 <- 0.5*amplituda * sin(2*pi*f*I^-2*2*t)  #g
s4_H3 <- 0.5*amplituda * sin(2*pi*f*I^-2*3*t)  #g
s4_H4 <- 0.25*amplituda * sin(2*pi*f*I^-2*4*t) #g
s4_H5 <- 0.25*amplituda * sin(2*pi*f*I^-2*5*t) #g

s5_H1 <- 1*amplituda * sin(2*pi*f*I^-4*t)      #f
s5_H2 <- 0.5*amplituda * sin(2*pi*f*I^-4*2*t)  #f
s5_H3 <- 0.5*amplituda * sin(2*pi*f*I^-4*3*t)  #f
s5_H4 <- 0.25*amplituda * sin(2*pi*f*I^-4*4*t) #f
s5_H5 <- 0.25*amplituda * sin(2*pi*f*I^-4*5*t) #f

s6_H1 <- 1*amplituda * sin(2*pi*f*I^-5*t)      #e
s6_H2 <- 0.5*amplituda * sin(2*pi*f*I^-5*2*t)  #e
s6_H3 <- 0.5*amplituda * sin(2*pi*f*I^-5*3*t)  #e
s6_H4 <- 0.25*amplituda * sin(2*pi*f*I^-5*4*t) #e
s6_H5 <- 0.25*amplituda * sin(2*pi*f*I^-5*5*t) #e

s7_H1 <- 1*amplituda * sin(2*pi*f*I^-7*t)      #d
s7_H2 <- 0.5*amplituda * sin(2*pi*f*I^-7*2*t)  #d
s7_H3 <- 0.5*amplituda * sin(2*pi*f*I^-7*3*t)  #d
s7_H4 <- 0.25*amplituda * sin(2*pi*f*I^-7*4*t) #d
s7_H5 <- 0.25*amplituda * sin(2*pi*f*I^-7*5*t) #d

s8_H1 <- 1*amplituda * sin(2*pi*f*I^-8*t1)     #cis
s8_H2 <- 0.5*amplituda * sin(2*pi*f*I^-8*2*t1) #cis
s8_H3 <- 0.5*amplituda * sin(2*pi*f*I^-8*3*t1) #cis
s8_H4 <- 0.25*amplituda * sin(2*pi*f*I^-8*4*t1)#cis
s8_H5 <- 0.25*amplituda * sin(2*pi*f*I^-8*5*t1)#cis

s9_H1 <- 1*amplituda * sin(2*pi*f*I^-7*t1)      #d
s9_H2 <- 0.5*amplituda * sin(2*pi*f*I^-7*2*t1)  #d
s9_H3 <- 0.5*amplituda * sin(2*pi*f*I^-7*3*t1)  #d
s9_H4 <- 0.25*amplituda * sin(2*pi*f*I^-7*4*t1) #d
s9_H5 <- 0.25*amplituda * sin(2*pi*f*I^-7*5*t1) #d

sig <- c(s1_H1+s1_H2+s1_H3+s1_H4+s1_H5,s2_H1+s2_H2+s2_H3+s2_H4+s2_H5,s3_H1+s3_H2+s3_H3+s3_H4+s3_H5,s4_H1+s4_H2+s4_H3+s4_H4+s4_H5,s5_H1+s5_H2+s5_H3+s5_H4+s5_H5,s6_H1+s6_H2+s6_H3+s6_H4+s6_H5,s7_H1+s7_H2+s7_H3+s7_H4+s7_H5,s8_H1+s8_H2+s8_H3+s8_H4+s8_H5,s9_H1+s9_H2+s9_H3+s9_H4+s9_H5)

savewav(sig, fs,'tuhle5.wav')

Jestlipak jste poznali, o jaký hudební nástroj se jedná?

Poněkud zdlouhavý zápis, že ano… Naše melodie je tvořena devíti složenými tóny, každý z nich je složen z F0 (základní frekvence) a čtyřech harmonických složek.

Nezbývá, než základní motiv známé melodie dotáhnout do konce (v poněkud zjednodušenější verzi):

library (seewave)

fs <- 44100 # Hz
fs <- 44100 # Hz
f1 <- 880
f2 <- 440
f3 <- 220
f4 <- 110

trvani <- 0.15 
trvani1 <- 0.35 #s
trvani2 <- 1.0
trvani3<- 2.0

amplituda <- 0.8

Ts <- 1/fs

I <- 2^(1/12)

t<- seq(0, trvani - Ts, by =  Ts)
t1<- seq(0, trvani1 - Ts, by =  Ts)
t2 <- seq(0, trvani2 - Ts, by =  Ts)
t3 <- seq(0, trvani3 - Ts, by =  Ts)

delkaOkenko <- 400
okenko <- ftwindow(delkaOkenko)
okno <- c(okenko[1:(delkaOkenko/2)], rep(1, length(t)-delkaOkenko), okenko[(delkaOkenko/2+1) : delkaOkenko])
okno1 <- c(okenko[1:(delkaOkenko/2)], rep(1, length(t1)-delkaOkenko), okenko[(delkaOkenko/2+1) : delkaOkenko])
okno2 <- c(okenko[1:(delkaOkenko/2)], rep(1, length(t2)-delkaOkenko), okenko[(delkaOkenko/2+1) : delkaOkenko])
okno3 <- c(okenko[1:(delkaOkenko/2)], rep(1, length(t3)-delkaOkenko), okenko[(delkaOkenko/2+1) : delkaOkenko])


s1_H1 <- 1.0*amplituda * sin(2*pi*f1*t) * okno     #a
s1_H2 <- 0.5*amplituda * sin(2*pi*f1*2*t) * okno   #a
s1_H3 <- 0.5*amplituda * sin(2*pi*f1*3*t) * okno   #a
s1_H4 <- 0.25*amplituda * sin(2*pi*f1*4*t) * okno  #a
s1_H5 <- 0.25*amplituda * sin(2*pi*f1*5*t) * okno  #a

s2_H1 <- 1*amplituda * sin(2*pi*f1*I^-2*t) * okno      #g
s2_H2 <- 0.5*amplituda * sin(2*pi*f1*I^-2*2*t) * okno  #g
s2_H3 <- 0.5*amplituda * sin(2*pi*f1*I^-2*3*t) * okno  #g
s2_H4 <- 0.25*amplituda * sin(2*pi*f1*I^-2*4*t) * okno #g
s2_H5 <- 0.25*amplituda * sin(2*pi*f1*I^-2*5*t) * okno #g

s3_H1 <- 1*amplituda * sin(2*pi*f1*t2) * okno2          #a
s3_H2 <- 0.5*amplituda * sin(2*pi*f1*2*t2) * okno2      #a
s3_H3 <- 0.5*amplituda * sin(2*pi*f1*3*t2) * okno2      #a
s3_H4 <- 0.25*amplituda * sin(2*pi*f1*4*t2) * okno2     #a
s3_H5 <- 0.25*amplituda * sin(2*pi*f1*5*t2) * okno2     #a

s4_H1 <- 1*amplituda * sin(2*pi*f1*I^-2*t) * okno      #g
s4_H2 <- 0.5*amplituda * sin(2*pi*f1*I^-2*2*t) * okno  #g
s4_H3 <- 0.5*amplituda * sin(2*pi*f1*I^-2*3*t) * okno  #g
s4_H4 <- 0.25*amplituda * sin(2*pi*f1*I^-2*4*t) * okno #g
s4_H5 <- 0.25*amplituda * sin(2*pi*f1*I^-2*5*t) * okno #g

s5_H1 <- 1*amplituda * sin(2*pi*f1*I^-4*t) * okno      #f
s5_H2 <- 0.5*amplituda * sin(2*pi*f1*I^-4*2*t) * okno  #f
s5_H3 <- 0.5*amplituda * sin(2*pi*f1*I^-4*3*t) * okno  #f
s5_H4 <- 0.25*amplituda * sin(2*pi*f1*I^-4*4*t) * okno #f
s5_H5 <- 0.25*amplituda * sin(2*pi*f1*I^-4*5*t) * okno #f

s6_H1 <- 1*amplituda * sin(2*pi*f1*I^-5*t) * okno      #e
s6_H2 <- 0.5*amplituda * sin(2*pi*f1*I^-5*2*t) * okno  #e
s6_H3 <- 0.5*amplituda * sin(2*pi*f1*I^-5*3*t) * okno  #e
s6_H4 <- 0.25*amplituda * sin(2*pi*f1*I^-5*4*t) * okno #e
s6_H5 <- 0.25*amplituda * sin(2*pi*f1*I^-5*5*t) * okno #e

s7_H1 <- 1*amplituda * sin(2*pi*f1*I^-7*t) * okno      #d
s7_H2 <- 0.5*amplituda * sin(2*pi*f1*I^-7*2*t) * okno  #d
s7_H3 <- 0.5*amplituda * sin(2*pi*f1*I^-7*3*t) * okno  #d
s7_H4 <- 0.25*amplituda * sin(2*pi*f1*I^-7*4*t) * okno #d
s7_H5 <- 0.25*amplituda * sin(2*pi*f1*I^-7*5*t) * okno #d

s8_H1 <- 1*amplituda * sin(2*pi*f1*I^-8*t1) * okno1      #cis
s8_H2 <- 0.5*amplituda * sin(2*pi*f1*I^-8*2*t1) * okno1  #cis
s8_H3 <- 0.5*amplituda * sin(2*pi*f1*I^-8*3*t1) * okno1  #cis
s8_H4 <- 0.25*amplituda * sin(2*pi*f1*I^-8*4*t1) * okno1 #cis
s8_H5 <- 0.25*amplituda * sin(2*pi*f1*I^-8*5*t1) * okno1 #cis

s9_H1 <- 1*amplituda * sin(2*pi*f1*I^-7*t2) * okno2      #d
s9_H2 <- 0.5*amplituda * sin(2*pi*f1*I^-7*2*t2) * okno2  #d
s9_H3 <- 0.5*amplituda * sin(2*pi*f1*I^-7*3*t2) * okno2  #d
s9_H4 <- 0.25*amplituda * sin(2*pi*f1*I^-7*4*t2) * okno2 #d
s9_H5 <- 0.25*amplituda * sin(2*pi*f1*I^-7*5*t2) * okno2 #d



sig1 <- c(s1_H1+s1_H2+s1_H3+s1_H4+s1_H5,s2_H1+s2_H2+s2_H3+s2_H4+s2_H5,s3_H1+s3_H2+s3_H3+s3_H4+s3_H5,s4_H1+s4_H2+s4_H3+s4_H4+s4_H5,s5_H1+s5_H2+s5_H3+s5_H4+s5_H5,s6_H1+s6_H2+s6_H3+s6_H4+s6_H5,s7_H1+s7_H2+s7_H3+s7_H4+s7_H5,s8_H1+s8_H2+s8_H3+s8_H4+s8_H5,s9_H1+s9_H2+s9_H3+s9_H4+s9_H5)

z1_H1 <- 1.0*amplituda * sin(2*pi*f2*t) * okno     #a
z1_H2 <- 0.5*amplituda * sin(2*pi*f2*2*t) * okno   #a
z1_H3 <- 0.5*amplituda * sin(2*pi*f2*3*t) * okno   #a
z1_H4 <- 0.25*amplituda * sin(2*pi*f2*4*t) * okno  #a
z1_H5 <- 0.25*amplituda * sin(2*pi*f2*5*t) * okno  #a

z2_H1 <- 1*amplituda * sin(2*pi*f2*I^-2*t) * okno      #g
z2_H2 <- 0.5*amplituda * sin(2*pi*f2*I^-2*2*t) * okno  #g
z2_H3 <- 0.5*amplituda * sin(2*pi*f2*I^-2*3*t) * okno  #g
z2_H4 <- 0.25*amplituda * sin(2*pi*f2*I^-2*4*t) * okno #g
z2_H5 <- 0.25*amplituda * sin(2*pi*f2*I^-2*5*t) * okno #g

z3_H1 <- 1*amplituda * sin(2*pi*f2*t2) * okno2          #a
z3_H2 <- 0.5*amplituda * sin(2*pi*f2*2*t2) * okno2      #a
z3_H3 <- 0.5*amplituda * sin(2*pi*f2*3*t2) * okno2      #a
z3_H4 <- 0.25*amplituda * sin(2*pi*f2*4*t2) * okno2     #a
z3_H5 <- 0.25*amplituda * sin(2*pi*f2*5*t2) * okno2     #a

z4_H1 <- 1*amplituda * sin(2*pi*f2*I^-5*t1) * okno1      #e
z4_H2 <- 0.5*amplituda * sin(2*pi*f2*I^-5*2*t1) * okno1  #e
z4_H3 <- 0.5*amplituda * sin(2*pi*f2*I^-5*3*t1) * okno1  #e
z4_H4 <- 0.25*amplituda * sin(2*pi*f2*I^-5*4*t1) * okno1 #e
z4_H5 <- 0.25*amplituda * sin(2*pi*f2*I^-5*5*t1) * okno1 #e

z5_H1 <- 1*amplituda * sin(2*pi*f2*I^-4*t1) * okno1      #f
z5_H2 <- 0.5*amplituda * sin(2*pi*f2*I^-4*2*t1) * okno1  #f
z5_H3 <- 0.5*amplituda * sin(2*pi*f2*I^-4*3*t1) * okno1  #f
z5_H4 <- 0.25*amplituda * sin(2*pi*f2*I^-4*4*t1) * okno1 #f
z5_H5 <- 0.25*amplituda * sin(2*pi*f2*I^-4*5*t1) * okno1 #f

z6_H1 <- 1*amplituda * sin(2*pi*f2*I^-8*t1) * okno1      #cis
z6_H2 <- 0.5*amplituda * sin(2*pi*f2*I^-8*2*t1) * okno1  #cis
z6_H3 <- 0.5*amplituda * sin(2*pi*f2*I^-8*3*t1) * okno1  #cis
z6_H4 <- 0.25*amplituda * sin(2*pi*f2*I^-8*4*t1) * okno1 #cis
z6_H5 <- 0.25*amplituda * sin(2*pi*f2*I^-8*5*t1) * okno1 #cis

z7_H1 <- 1*amplituda * sin(2*pi*f2*I^-7*t2) * okno2      #d
z7_H2 <- 0.5*amplituda * sin(2*pi*f2*I^-7*2*t2) * okno2  #d
z7_H3 <- 0.5*amplituda * sin(2*pi*f2*I^-7*3*t2) * okno2  #d
z7_H4 <- 0.25*amplituda * sin(2*pi*f2*I^-7*4*t2) * okno2 #d
z7_H5 <- 0.25*amplituda * sin(2*pi*f2*I^-7*5*t2) * okno2 #d

sig2 <- c(z1_H1+z1_H2+z1_H3+z1_H4+z1_H5,z2_H1+z2_H2+z2_H3+z2_H4+z2_H5,z3_H1+z3_H2+z3_H3+z3_H4+z3_H5,z4_H1+z4_H2+z4_H3+z4_H4+z4_H5,z5_H1+z5_H2+z5_H3+z5_H4+z5_H5,z6_H1+z6_H2+z6_H3+z6_H4+z6_H5,z7_H1+z7_H2+z7_H3+z7_H4+z7_H5)


p1_H1 <- 1.0*amplituda * sin(2*pi*f3*t) * okno     #a
p1_H2 <- 0.5*amplituda * sin(2*pi*f3*2*t) * okno   #a
p1_H3 <- 0.5*amplituda * sin(2*pi*f3*3*t) * okno   #a
p1_H4 <- 0.25*amplituda * sin(2*pi*f3*4*t) * okno  #a
p1_H5 <- 0.25*amplituda * sin(2*pi*f3*5*t) * okno  #a

p2_H1 <- 1*amplituda * sin(2*pi*f3*I^-2*t) * okno      #g
p2_H2 <- 0.5*amplituda * sin(2*pi*f3*I^-2*2*t) * okno  #g
p2_H3 <- 0.5*amplituda * sin(2*pi*f3*I^-2*3*t) * okno  #g
p2_H4 <- 0.25*amplituda * sin(2*pi*f3*I^-2*4*t) * okno #g
p2_H5 <- 0.25*amplituda * sin(2*pi*f3*I^-2*5*t) * okno #g

p3_H1 <- 1*amplituda * sin(2*pi*f3*t2) * okno2          #a
p3_H2 <- 0.5*amplituda * sin(2*pi*f3*2*t2) * okno2      #a
p3_H3 <- 0.5*amplituda * sin(2*pi*f3*3*t2) * okno2      #a
p3_H4 <- 0.25*amplituda * sin(2*pi*f3*4*t2) * okno2     #a
p3_H5 <- 0.25*amplituda * sin(2*pi*f3*5*t2) * okno2     #a

p4_H1 <- 1*amplituda * sin(2*pi*f3*I^-2*t) * okno      #g
p4_H2 <- 0.5*amplituda * sin(2*pi*f3*I^-2*2*t) * okno  #g
p4_H3 <- 0.5*amplituda * sin(2*pi*f3*I^-2*3*t) * okno  #g
p4_H4 <- 0.25*amplituda * sin(2*pi*f3*I^-2*4*t) * okno #g
p4_H5 <- 0.25*amplituda * sin(2*pi*f3*I^-2*5*t) * okno #g

p5_H1 <- 1*amplituda * sin(2*pi*f3*I^-4*t) * okno      #f
p5_H2 <- 0.5*amplituda * sin(2*pi*f3*I^-4*2*t) * okno  #f
p5_H3 <- 0.5*amplituda * sin(2*pi*f3*I^-4*3*t) * okno  #f
p5_H4 <- 0.25*amplituda * sin(2*pi*f3*I^-4*4*t) * okno #f
p5_H5 <- 0.25*amplituda * sin(2*pi*f3*I^-4*5*t) * okno #f

p6_H1 <- 1*amplituda * sin(2*pi*f3*I^-5*t) * okno      #e
p6_H2 <- 0.5*amplituda * sin(2*pi*f3*I^-5*2*t) * okno  #e
p6_H3 <- 0.5*amplituda * sin(2*pi*f3*I^-5*3*t) * okno  #e
p6_H4 <- 0.25*amplituda * sin(2*pi*f3*I^-5*4*t) * okno #e
p6_H5 <- 0.25*amplituda * sin(2*pi*f3*I^-5*5*t) * okno #e

p7_H1 <- 1*amplituda * sin(2*pi*f3*I^-7*t) * okno      #d
p7_H2 <- 0.5*amplituda * sin(2*pi*f3*I^-7*2*t) * okno  #d
p7_H3 <- 0.5*amplituda * sin(2*pi*f3*I^-7*3*t) * okno  #d
p7_H4 <- 0.25*amplituda * sin(2*pi*f3*I^-7*4*t) * okno #d
p7_H5 <- 0.25*amplituda * sin(2*pi*f3*I^-7*5*t) * okno #d

p8_H1 <- 1*amplituda * sin(2*pi*f3*I^-8*t1) * okno1      #cis
p8_H2 <- 0.5*amplituda * sin(2*pi*f3*I^-8*2*t1) * okno1  #cis
p8_H3 <- 0.5*amplituda * sin(2*pi*f3*I^-8*3*t1) * okno1  #cis
p8_H4 <- 0.25*amplituda * sin(2*pi*f3*I^-8*4*t1) * okno1 #cis
p8_H5 <- 0.25*amplituda * sin(2*pi*f3*I^-8*5*t1) * okno1 #cis

p9_H1 <- 1*amplituda * sin(2*pi*f3*I^-7*t2) * okno2      #d
p9_H2 <- 0.5*amplituda * sin(2*pi*f3*I^-7*2*t2) * okno2  #d
p9_H3 <- 0.5*amplituda * sin(2*pi*f3*I^-7*3*t2) * okno2  #d
p9_H4 <- 0.25*amplituda * sin(2*pi*f3*I^-7*4*t2) * okno2 #d
p9_H5 <- 0.25*amplituda * sin(2*pi*f3*I^-7*5*t2) * okno2 #d


sig3 <- c(p1_H1+p1_H2+p1_H3+p1_H4+p1_H5,p2_H1+p2_H2+p2_H3+p2_H4+p2_H5,p3_H1+p3_H2+p3_H3+p3_H4+p3_H5,p4_H1+p4_H2+p4_H3+p4_H4+p4_H5,p5_H1+p5_H2+p5_H3+p5_H4+p5_H5,p6_H1+p6_H2+p6_H3+p6_H4+p6_H5,p7_H1+p7_H2+p7_H3+p7_H4+p7_H5,p8_H1+p8_H2+p8_H3+p8_H4+p8_H5,p9_H1+p9_H2+p9_H3+p9_H4+p9_H5)

d1_H1 <- 1*amplituda * sin(2*pi*f4*I^-7*t3) * okno3      #d
d1_H2 <- 0.5*amplituda * sin(2*pi*f4*I^-7*2*t3) * okno3  #d
d1_H3 <- 0.5*amplituda * sin(2*pi*f4*I^-7*3*t3) * okno3  #d
d1_H4 <- 0.25*amplituda * sin(2*pi*f4*I^-7*4*t3) * okno3 #d
d1_H5 <- 0.25*amplituda * sin(2*pi*f4*I^-7*5*t3) * okno3 #d

d2_H1 <- 1*amplituda * sin(2*pi*f3*I^-8*t2) * okno2      #cis
d2_H2 <- 0.5*amplituda * sin(2*pi*f3*I^-8*2*t2) * okno2  #cis
d2_H3 <- 0.5*amplituda * sin(2*pi*f3*I^-8*3*t2) * okno2  #cis
d2_H4 <- 0.25*amplituda * sin(2*pi*f3*I^-8*4*t2) * okno2 #cis
d2_H5 <- 0.25*amplituda * sin(2*pi*f3*I^-8*5*t2) * okno2 #cis

d3_H1 <- 1*amplituda * sin(2*pi*f3*I^-5*t2) * okno2      #e
d3_H2 <- 0.5*amplituda * sin(2*pi*f3*I^-5*2*t2) * okno2  #e
d3_H3 <- 0.5*amplituda * sin(2*pi*f3*I^-5*3*t2) * okno2  #e
d3_H4 <- 0.25*amplituda * sin(2*pi*f3*I^-5*4*t2) * okno2 #e
d3_H5 <- 0.25*amplituda * sin(2*pi*f3*I^-5*5*t2) * okno2 #e

d4_H1 <- 1*amplituda * sin(2*pi*f3*I^-2*t2) * okno2      #g
d4_H2 <- 0.5*amplituda * sin(2*pi*f3*I^-2*2*t2) * okno2  #g
d4_H3 <- 0.5*amplituda * sin(2*pi*f3*I^-2*3*t2) * okno2  #g
d4_H4 <- 0.25*amplituda * sin(2*pi*f3*I^-2*4*t2) * okno2 #g
d4_H5 <- 0.25*amplituda * sin(2*pi*f3*I^-2*5*t2) * okno2 #g

d5_H1 <- 1*amplituda * sin(2*pi*f3*I^1*t2) * okno2      #be
d5_H2 <- 0.5*amplituda * sin(2*pi*f3*I^1*2*t2) * okno2  #be
d5_H3 <- 0.5*amplituda * sin(2*pi*f3*I^1*3*t2) * okno2  #be
d5_H4 <- 0.25*amplituda * sin(2*pi*f3*I^1*4*t2) * okno2 #be
d5_H5 <- 0.25*amplituda * sin(2*pi*f3*I^1*5*t2) * okno2 #be

d6_H1 <- 0.5*amplituda * sin(2*pi*f4*I^-7*t2) * okno2      #d
d6_H2 <- 0.25*amplituda * sin(2*pi*f4*I^-7*2*t2) * okno2  #d
d6_H3 <- 0.25*amplituda * sin(2*pi*f4*I^-7*3*t2) * okno2  #d
d6_H4 <- 0.1*amplituda * sin(2*pi*f4*I^-7*4*t2) * okno2 #d
d6_H5 <- 0.1*amplituda * sin(2*pi*f4*I^-7*5*t2) * okno2 #d


sig4 <- c(d1_H1+d1_H2+d1_H3+d1_H4+d1_H5,d6_H1+d6_H2+d6_H3+d6_H4+d6_H5+d2_H1+d2_H2+d2_H3+d2_H4+d2_H5,d6_H1+d6_H2+d6_H3+d6_H4+d6_H5+d3_H1+d3_H2+d3_H3+d3_H4+d3_H5,d6_H1+d6_H2+d6_H3+d6_H4+d6_H5+d4_H1+d4_H2+d4_H3+d4_H4+d4_H5,d6_H1+d6_H2+d6_H3+d6_H4+d6_H5+d5_H1+d5_H2+d5_H3+d5_H4+d5_H5) 


g1_H1 <- 1*amplituda * sin(2*pi*f3*t2) * okno2          #a
g1_H2 <- 0.5*amplituda * sin(2*pi*f3*2*t2) * okno2      #a
g1_H3 <- 0.5*amplituda * sin(2*pi*f3*3*t2) * okno2      #a
g1_H4 <- 0.25*amplituda * sin(2*pi*f3*4*t2) * okno2     #a
g1_H5 <- 0.25*amplituda * sin(2*pi*f3*5*t2) * okno2     #a

g2_H1 <- 1*amplituda * sin(2*pi*f3*I^-5*t2) * okno2      #e
g2_H2 <- 0.5*amplituda * sin(2*pi*f3*I^-5*2*t2) * okno2  #e
g2_H3 <- 0.5*amplituda * sin(2*pi*f3*I^-5*3*t2) * okno2  #e
g2_H4 <- 0.25*amplituda * sin(2*pi*f3*I^-5*4*t2) * okno2 #e
g2_H5 <- 0.25*amplituda * sin(2*pi*f3*I^-5*5*t2) * okno2 #e

g3_H1 <- 1*amplituda * sin(2*pi*f3*I^-3*t3) * okno3      #fis
g3_H2 <- 0.5*amplituda * sin(2*pi*f3*I^-3*2*t3) * okno3  #fis
g3_H3 <- 0.5*amplituda * sin(2*pi*f3*I^-3*3*t3) * okno3  #fis
g3_H4 <- 0.25*amplituda * sin(2*pi*f3*I^-3*4*t3) * okno3 #fis
g3_H5 <- 0.25*amplituda * sin(2*pi*f3*I^-3*5*t3) * okno3 #fis



sig5 <- c(d6_H1+d6_H2+d6_H3+d6_H4+d6_H5+g1_H1+g1_H2+g1_H3+g1_H4+g1_H5,d6_H1+d6_H2+d6_H3+d6_H4+d6_H5+ g2_H1+g2_H2+g2_H3+g2_H4+g2_H5,d6_H1+d6_H2+d6_H3+d6_H4+d6_H5+g3_H1+g3_H2+g3_H3+g3_H4+g3_H5)


sig <- c(sig1,sig2, sig3, sig4, sig5)

savewav(sig, fs, "tuhle6.wav")

A na závěr si představíme skript, jehož výsledkem bude naše známá melodie opatřená ozvěnou. Budeme tedy pracovat se vstupním signálem (námi vyrobená melodie) a se signálem impulzní odezvy (ozvěna, dozvuk).Použijeme funkci konvoluce.

Odkaz na zvuk s impulzní odezvou: LukasKirche.wav

library(seewave)
library(tuneR)
## tuneR >= 1.0 has changed its Wave class definition.
## Use updateWave(object) to convert Wave objects saved with previous versions of tuneR.
vstupWav <- readWave("tuhle6.wav") # námi vyrobená melodie
vstupWav
## 
## Wave Object
##  Number of Samples:      875385
##  Duration (seconds):     19.85
##  Samplingrate (Hertz):   44100
##  Channels (Mono/Stereo): Mono
##  PCM (integer format):   TRUE
##  Bit (8/16/24/32/64):    16
fs <- vstupWav@samp.rate
vstup <- vstupWav@left

impWav <- readWave("LukasKirche.wav") # impulzní odezva
impWav
## 
## Wave Object
##  Number of Samples:      183407
##  Duration (seconds):     4.16
##  Samplingrate (Hertz):   44100
##  Channels (Mono/Stereo): Mono
##  PCM (integer format):   FALSE
##  Bit (8/16/24/32/64):    32
impulsniOdezva <- impWav@left


M <- length(vstup)
N <- length(impulsniOdezva)

delka <- M + N -1
delka <- 2^ceiling(log2(delka)) # Výrazné zrychlení!
vstup0 <- c(vstup, rep(0, delka - M))
impulsniOdezva0 <- c(impulsniOdezva, rep(0, delka-N))

vystup <- convolve(vstup0, impulsniOdezva0, conj = FALSE, type = "circular")
# vystup
plot(vystup, type = "l")    # graf výstupního signálu
abline (h = 0)

savewav(vystup, fs, "vystup6.wav") # výsledný signál s impulzní odezvou                        

Odkaz na výsledný zvuk: vystup6.wav