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!
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
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