Csound · Lydteknik · Musik · Programmering

Snurre oscillatorer

Vi starter med en enkelt sinuskurve med med Midi nr. 69 som svarer til kammertonen A (440 Hz)
Dette kan laves i Csound, på f.eks. denne måde:

<CsoundSynthesizer>
;Bjørn Houdorf, December 2011
<CsOptions>
</CsOptions>
<CsInstruments>

sr     = 44100
kr     = 4410
nchnls = 2
0dbfs  = 1

giFt1 ftgen  0, 0, 16384, 10, 1 ; Sinus kurve

instr 1

audio        oscili    0.3, cpsmidinn(p4), giFt1
outs audio, audio

endin

</CsInstruments>
<CsScore>

; Inst start  dur    midifreq
i1       0       10          69

</CsScore>
</CsoundSynthesizer>

I Sonic Visualiser kan det se sådan ud, vi ser at der er en enkelt frekevs på 440 Hz

Oscili opcode laver kun en enkelt sinustone.
Hvis man istedet bruger Buzz opcode i instr 1, så kan man samtidigt få mange harmoniske overtoner.
I dette tilfælde får man 16 (grundtonen 440 Hz samt 15 overtoner)

instr 1
audio        buzz    0.3, cpsmidinn(p4), 16, giFt1
outs audio, audio
endin

Vi kan se at de 16 frekvenser afbildes således:

Jeg har skrevet et regenerativt stykke i Csound, det er 4 grupper af oscillatorer som danner mærkelige akkorder som skifter med forskellige tidsintevaller. Hver gang filen køres så får man et andet og nyt forløb af stykket.

Her er selve tekstfilen:

;*****************************************************************************************************************

<CsoundSynthesizer>
<CsOptions>
</CsOptions>
<CsInstruments>

;”Snurre oscillatorer”
;Af Bjørn Houdorf, Januar 2012
;GNU General Public License version 2

;Opcoden “Buzz” giver mange harmoniske overtoner

;4 forskellige “stemmer” lyder på samme tid, og de danner ejendommelige “akkorder”. På tilfældige tidspunkter glides der ved glissando/portamento
;over i en ny akkord

;Denne .csd fil er regenerativ, så hver gang den eksekveres, så fremkommer der et nyt musikstykke der er forskelligt fra alle de andre

sr = 44100
ksmps = 8
nchnls = 2
0dbfs = 1

; Globale initializationer (“Instrument 0″)
seed 0 ; Nye tonehøjder, hver gang denne fil udføres
gkfreq1 init 0
gkfreq2 init 0
gkfreq3 init 0
gkfreq4 init 0

gimidia1 init 60 ;De fire stemmer starter ved forskellige Midi-frekvenser
gimidib1 init 60
gimidia2 init 64
gimidib2 init 64
gimidia3 init 67
gimidib3 init 67
gimidia4 init 70
gimidib4 init 70

; Funktionstabel
giFt1 ftgen 0, 0, 16384, 10, 1 ; Sinus kurve

instr 1 ; Kontrol instrument der styrer tonehøjde for instrument 2

test:
idurtest poisson 20 ;Varighed af hver test-løkke
timout 0, idurtest, execute

reinit test

execute:
gimidia1 = gimidib1
ital1 random -4, 4
gimidib1 = gimidib1 + ital1
gimidia2 = gimidib2
ital2 random -4, 4
gimidib2 = gimidib2 + ital2
gimidia3 = gimidib3
ital3 random -4, 4
gimidib3 = gimidib3 + ital3
gimidia4 = gimidib4
ital4 random -4, 4
gimidib4 = gimidib4 + ital4

idiv poisson 4

idurx = 0.01 ; Mikro slut segment for at skabe en fast endelig frekvens
ifreq1a = cpsmidinn(gimidia1)
ifreq1b = cpsmidinn(gimidib1)
gkfreq1 linseg ifreq1a, idurtest/idiv, ifreq1b, idurx, ifreq1b ;Portamento frekvens rampe
ifreq2a = cpsmidinn(gimidia2)
ifreq2b = cpsmidinn(gimidib2)
gkfreq2 linseg ifreq2a, idurtest/idiv, ifreq2b, idurx, ifreq2b
ifreq3a = cpsmidinn(gimidia3)
ifreq3b = cpsmidinn(gimidib3)
gkfreq3 linseg ifreq3a, idurtest/idiv, ifreq3b, idurx, ifreq3b
ifreq4a = cpsmidinn(gimidia4)
ifreq4b = cpsmidinn(gimidib4)
gkfreq4 linseg ifreq4a, idurtest/idiv, ifreq4b, idurx, ifreq4b
endin

instr 2 ; Oscillatorer
iamp = p4
irise = p5
idur = p3
idec = p6
kamp = p7
imodfrq = p8
iharm = p9 ; Antal harmonisk frekvenser for Buzz opcoden

ky linen iamp, irise, idur, idec

kampfreq = 2
kampa oscili kamp, kampfreq, giFt1

klfo1 oscili kampa, imodfrq, giFt1, 0 ; Forskellige faser for de 4 stemmer
klfo2 oscili kampa, imodfrq, giFt1, 0.25
klfo3 oscili kampa, imodfrq, giFt1, 0.50
klfo4 oscili kampa, imodfrq, giFt1, 0.75

kzfrq = 0.1 ; Hvor hurtigt vil amplituden for Buzz’erne svinge ?

kx1 oscili 0.5, kzfrq, giFt1, 0 ; Amplitude mellem -0.5 og 0.5
kx2 oscili 0.5, kzfrq, giFt1, 0.25
kx3 oscili 0.5, kzfrq, giFt1, 0.50
kx4 oscili 0.5, kzfrq, giFt1, 0.75

k1=kx1+0.5; Tilføj 0.5 så amplituden svinger mellem 0 og 1
k2=kx2+0.5
k3=kx3+0.5
k4=kx4+0.5

itilf random -1, 1; Minimere interferens mellem kor oscillatorer

asig11 buzz ky*k1, (2.01*gkfreq1)+itilf+klfo1, iharm, giFt1
asig12 buzz ky*k1, gkfreq1 +klfo1, iharm, giFt1;                                               Stemme 1
asig13 buzz ky*k1, (1.51*gkfreq1)+itilf+klfo1, iharm, giFt1
aa1 =asig11+asig12+asig13

asig21 buzz ky*k2, (2.01*gkfreq2)+itilf+klfo2, iharm, giFt1
asig22 buzz ky*k2, gkfreq2 +klfo2, iharm, giFt1;                                               Stemme 2
asig23 buzz ky*k2, (1.51*gkfreq2)+itilf+klfo2, iharm, giFt1
aa2 =asig21+asig22+asig23

asig31 buzz ky*k3, (2.01*gkfreq3)+itilf+klfo3, iharm, giFt1
asig32 buzz ky*k3, gkfreq3 +klfo3, iharm, giFt1;                                               Stemme 3
asig33 buzz ky*k3, (1.51*gkfreq3)+itilf+klfo3, iharm, giFt1
aa3 =asig31+asig32+asig33

asig41 buzz ky*k4, (2.01*gkfreq4)+itilf+klfo4, iharm, giFt1
asig42 buzz ky*k4, gkfreq4 +klfo4, iharm, giFt1;                                               Stemme 4
asig43 buzz ky*k4, (1.51*gkfreq4)+itilf+klfo4, iharm, giFt1
aa4 =asig41+asig42+asig43

outs aa1+aa3, aa2+aa4

endin

</CsInstruments>
<CsScore>

; Kontrol instrument
; Inst start dur
i   1       0      99999

; Oscillatorer
; inst start idur   iamp irise idec kamp imodfrq iharm
i  2     0       99999    0.3     4       20    0.10        7            16

</CsScore>
</CsoundSynthesizer>
;*********************************************************************************************

Sådan kan de mange frekvenser se ud, når de afbildes grafisk. Bemærk de 2 steder hvor frekvenserne ændres, fordi der skiftes akkorder.

Hver gang filen køres så får man et andet og nyt forløb af stykket. Her er et eksempel på hvordan det lyder, men der er i virkeligheden uendelig mange måder som filen kan afvikles på:

Hvad kan man så bruge det til ?
Nogle gange lyder akkorderne godt, nogle gang lyder de skidt,
og nogle gange lyder de bare underligt.
Man ved aldrig helt hvad der kommer næste gang af akkordskift, og hvornår det kommer.
Derfor synes jeg at det er afslappende at lytte til.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s