<CsoundSynthesizer>
<CsOptions>
;;; Direkte Ausgabe zur Soundkarte
-odevaudio -b512 -M0 -+rtmidi=virtual
;;; Paramenterinfo:
; für externe MIDI-Kontrolle "virtual-MIDI" abschalten!
; -odevaudio -- Realtimesoundausgabe
; --iobufsamps (-b) von 512 erzeugt rund 12ms Latenz -- Default 256 (Linux) bzw. 4096 (Windows)
; --hardwarebufsamps (-B) mind. eine Zweierpotenz höher als -b -- Default = 1024 (Linux) bzw. 16384 (Windows)
; --midi-device (-M): Device-Nummer; bei +rtmidi=alsa einen Namen angeben (z.B. -M hw:Cardnr,Devicenr / -M hw:1,0)
</CsOptions>
<CsInstruments>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; G R U N D L E G E N D E S ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
sr = 44100 ; Sample Rate
ksmps = 100 ; Anzahl der Audio Samples pro Controll-Zyklus
nchnls = 2 ; Anzahl der Kanäle (2=stereo)
0dbfs = 1 ; max. Sound Intensität
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; I N T E R F A C E ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Farben
FLcolor 128, 64, 0
; Fensterdefinition
; | WIDTH | HEIGHT | X | Y | BORDER
FLpanel "Zugriegel", 600, 300, 30, 30, 3
; size, font, align, red, green, blue
FLlabel 10, 1, 1, 0, 0, 0
; Textausgabe
;ihandle FLbox "label", type, font, size, width, height, x, y
idummy FLbox "Amplitude", 1, 1, 15, 197, 20, 400, 5
idummy FLbox "Distortion", 1, 1, 15, 197, 20, 400, 60
idummy FLbox "./.", 1, 1, 15, 197, 20, 400, 120
idummy FLbox "./.", 1, 1, 15, 197, 20, 400, 180
; Slider MIN | MAX | EXP | TYPE | DISP | WIDTH | HEIGHT | X | Y
gkPartAmp1, ihPartAmp1 FLslider "16", 1, 0, 0, 24, -1, 35, 245, 20, 35
gkPartAmp2, ihPartAmp2 FLslider "5 1/3", 1, 0, 0, 24, -1, 35, 245, 60, 35
gkPartAmp3, ihPartAmp3 FLslider "8", 1, 0, 0, 24, -1, 35, 245, 100, 35
gkPartAmp4, ihPartAmp4 FLslider "4", 1, 0, 0, 24, -1, 35, 245, 140, 35
gkPartAmp5, ihPartAmp5 FLslider "2 2/3", 1, 0, 0, 24, -1, 35, 245, 180, 35
gkPartAmp6, ihPartAmp6 FLslider "2", 1, 0, 0, 24, -1, 35, 245, 220, 35
gkPartAmp7, ihPartAmp7 FLslider "1 3/5", 1, 0, 0, 24, -1, 35, 245, 260, 35
gkPartAmp8, ihPartAmp8 FLslider "1 1/3", 1, 0, 0, 24, -1, 35, 245, 300, 35
gkPartAmp9, ihPartAmp9 FLslider "1", 1, 0, 0, 24, -1, 35, 245, 340, 35
; Anzeigeboxen für eingestellte Werte WIDTH | HEIGHT | X | Y
; Amplitude
idamp FLvalue " ", 50, 18, 440, 30
; Distortion
iddist FLvalue " ", 50, 18, 440, 90
; unbelegt
idxxx1 FLvalue " ", 50, 18, 440, 150
idxxx2 FLvalue " ", 50, 18, 440, 210
; Knöppe MIN | MAX | EXP | TYPE | DISP | WIDTH | X | Y
gkamp, ihamp FLknob "", 0, 1, 0, 4, idamp, 35, 400, 20
gkdist, ihdist FLknob "", 0, 1, 0, 4, iddist, 35, 400, 80
gkxxx1, ihxxx1 FLknob "", 0, 1, 0, 4, idxxx1, 35, 400, 140
gkxxx2, ihxxx2 FLknob "", 0, 1, 0, 4, idxxx2, 35, 400, 200
; Farbe der Slider
FLsetColor 128, 64, 0, ihPartAmp1
FLsetColor 128, 64, 0, ihPartAmp2
FLsetColor 255, 255, 255, ihPartAmp3
FLsetColor 255, 255, 255, ihPartAmp4
FLsetColor 0, 0, 0, ihPartAmp5
FLsetColor 255, 255, 255, ihPartAmp6
FLsetColor 0, 0, 0, ihPartAmp7
FLsetColor 0, 0, 0, ihPartAmp8
FLsetColor 255, 255, 255, ihPartAmp9
;Colors of Knöppe
FLsetColor 0, 0, 0, ihamp
FLsetColor 0, 0, 0, ihdist
FLsetColor 0, 0, 0, ihxxx1
FLsetColor 0, 0, 0, ihxxx2
; Startwerte VALUE | HANDLE
FLsetVal_i 1, ihPartAmp1
FLsetVal_i 1, ihPartAmp2
FLsetVal_i 1, ihPartAmp3
FLsetVal_i 0, ihPartAmp4
FLsetVal_i 0, ihPartAmp5
FLsetVal_i 0, ihPartAmp6
FLsetVal_i 0, ihPartAmp7
FLsetVal_i 0, ihPartAmp8
FLsetVal_i 0, ihPartAmp9
FLsetVal_i 0.05, ihamp
FLsetVal_i 0.0, ihdist
FLsetVal_i 0.0, ihxxx1
FLsetVal_i 0.0, ihxxx2
FLpanel_end
; Ende Paneldefinition
; Das Panel starten
FLrun
;End Panel
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; T A B E L L E N ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Table #1 - eine normae 12-Töne Hammond-Organ Skala.
; numgrades = 12 (12 Töne)
; interval = 2 (eine Oktave)
; basefreq = 440 (Kammerton A)
; basekeymidi = 69 (MIDI-A)
gitemp ftgen 1, 0, 64, -2, 12, 2, 440.0, 69, 1.00, 1.05929, 1.12208, 1.18881, 1.25942, 1.33499, 1.41414, 1.49818, 1.58678, 1.68182, 1.78182, 1.88698, 2.00000
; Table #2 - Distortion-Tabelle
gifn ftgen 2,0, 257, 9, .5,1,270
; Tabellen -experimentell- für Röhren-Distortion ggf. gegen gifn austauschen
; gitube1 ftgen 3, 0, 8192, 7, -.8, 934, -.79, 934, -.77, 934, -.64, 1034, -.48, 520, .47, 2300, .48, 1536, .48
; gitube2 ftgen 4, 0, 8192, 8, -.8, 336, -.78, 800, -.7, 5920, .7, 800, .78, 336, .8
; gitube3 ftgen 5, 0, 8192, 7, -.9, 336, -.6, 800, -.7, 5920, .7, 800, .9, 336, .6
; Sinus-Tabelle generieren
gisine ftgen 0, 0, 4096, 10, 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; I N S T R U M E N T E ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Instrument 1 definieren
instr 1
ifn = 1 ; benutze Table 1 = Hammond-Skala
icps cpstmid ifn ; MIDI-Input
; iamp ampmidi 0.5 ; Velocity-Werte von MIDI-Input einlesen
; kamp = iamp * gkamp ; setze kamp auf MIDI-Noten multipliziert mit mit dem Einstellknopf-Wert gkamp
kamp = gkamp ; kein MIDI Velocity-Wert
kfund = icps ; Grundton setzen (gem. MIDI-Input)
kdist = gkdist ; Verstärkung
; einzelne Oszillatoren berechnen jede Fußlage
; Amplitude = Grundeinstellung * Zugriegel * LFO
; Frequenz = Grundfrequenz * Fußlage
; Funktion = Sinus gem. Tabelle gisine
;OUTPUT OPCODE AMPLITUDE | FREQUENCY | FUNCTION_TABLE
apart1 oscili kamp*(1-gkPartAmp1), (kfund/2), gisine ; 16
apart2 oscili kamp*(1-gkPartAmp2), (kfund/2*3), gisine ; 5 1/3
apart3 oscili kamp*(1-gkPartAmp3), kfund, gisine ; 8
apart4 oscili kamp*(1-gkPartAmp4), (kfund*2), gisine ; 4
apart5 oscili kamp*(1-gkPartAmp5), (kfund*3), gisine ; 2 2/3
apart6 oscili kamp*(1-gkPartAmp6), (kfund*4), gisine ; 2
apart7 oscili kamp*(1-gkPartAmp7), (kfund*5), gisine ; 1 3/5
apart8 oscili kamp*(1-gkPartAmp8), (kfund*6), gisine ; 1 1/3
apart9 oscili kamp*(1-gkPartAmp9), (kfund*8), gisine ; 1
; Einzelne Oszillatoren aufsummieren
amix sum apart1,\
apart2,\
apart3,\
apart4,\
apart5,\
apart6,\
apart7,\
apart8,\
apart9
; Hüllkurve zur Klickunterdrückung
aenv linsegr 0,0.01,1,0.1,0
; Output mit Verzerrung gem. Einstellung beaufschlagen
aout distort (amix*aenv), kdist, gifn
; Signal auf beide Ausgäng legen
outs aout, aout
endin
; Ende Instrument 1
</CsInstruments>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; S C O R E ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
<CsScore>
f 0 3600 ; Dumy-Tabelle um auf Realtime-Input zu warten
</CsScore>
</CsoundSynthesizer>