! Preset_Piano.txt

Declareer a; b; x0; x1; g0; g1; p; q; Volume
Declareer BPM; Release; ReleaseTellen; CutOff
Declareer Decay; Release

Wis buffers
  Wis buffer (F1...F32, S1, S2, S3)    S1  |  S2  |  S3

Naam Buffer F1 = Begin
Naam Buffer F2 = Duur
Naam Buffer F3 = Toets
Naam Buffer F4 = Freq
Naam Buffer F5 = Amp
Naam Buffer F6 = Velocity
Naam Buffer F7 = Kanaal

Tempo: 120
BPM = 120
Decay = 200
Release = 1200
ReleaseTellen = Release * BPM / 60000

! x    | g[x] = a*x + b
! -----|----------------
! 55   |  800
! 3600 |  7200

! CutOff:
x0 = 55
x1 = 3600

!********************************************************************
g0 = 800      !**** met g0 en g1 bepaal je de helderheid van de klank 
g1 = 7200     !******************************************************
!********************************************************************

a = (g1 - g0) / (x1-x0)
b = g0 - x0*a

! ***************************************************************************
! de berekening van Amplitude van Feedbackgenerator
! Het bereik Amp[k] = 1128... 5969
! Het bereik van Toets[k] in dit stuk is 33 ..... 100.
x0 = 33
x1 = 100
g0 = 0,5           ! relatief volume laagste toon, dus bassen zijn zachter
g1 = 1             ! relatief volume hoogste toon
p = (g1 - g0) / (x1-x0)
q = g0 - x0*p
Print p
Print q

! ***************************************************************************

MIDI-kanaal: 1

FOR k = 0 TO 1168
  Print k
  
  ! Bereken voor elke toets de waarde van het volume en de Afsnijfrequentie:
  Volume = Amp[k] * (p * Toets[k] + q)
  CutOff = a * Freq[k] + b
  
  ! Twee licht ontstemde snaren op Spoor s1:
  Feedback generator
    Frequentie (Hz of TOETS)     Freq[k]
    Amplitude                    Volume
    Golfvorm                     zaag
    Spoor: S?[?]                 S3[0]
    Duur                         Duur[k]  TEL
    Fijnstemmer ('j' of 'n')     j
    Attack  (msec)               1
    Decay   (msec)               12500
    Sustain (0...1)              0
    Release (msec)               Release
    ADSR type ('lin' of 'exp')   exp
    Filtercoefficient a          0,95
    Filtercoefficient b          0,05
  
  ! tweede snaar aanzienlijk kortere Decay:
  Feedback generator
    Frequentie (Hz of TOETS)     Freq[k] * 1,005
    Amplitude                    Volume
    Golfvorm                     zaag
    Spoor: S?[?]                 S3[0]
    Duur                         Duur[k]  TEL
    Fijnstemmer ('j' of 'n')     j
    Attack  (msec)               1
    Decay   (msec)               2200
    Sustain (0...1)              0
    Release (msec)               Release
    ADSR type ('lin' of 'exp')   exp
    Filtercoefficient a          0,91
    Filtercoefficient b          0,09
  
  ! ***************************************************************************
  ! Hiermee hebben we een mix van twee licht ontstemde tonen. Die gaan we nu filteren.
  ! ***************************************************************************
  
  Butterworth Laagdoorlaat
    Input                         S3[0]
    Output                        S1[Begin[k]]  TEL
    Afsnijfrequentie (Hz)         CutOff
    Flanksteilheid (1,2,3...50)   2
    Duur (ook 'sec')              Duur[k] + ReleaseTellen TEL
    Volume (0...100)              1
    Additief ('j' of 'n')         j
  
  ! ***************************************************************************
  
  ! Wis "klad-"buffer S3:
  Bewerk signaal
    n0          0
    n1          Duur[k] + ReleaseTellen TEL
    Bewerking   S3[n] = 0
  
  ! ***************************************************************************
  
  ! Op spoor S2 twee andere snaren
  ! Twee licht ontstemde snaren op Spoor s1:
  Feedback generator
    Frequentie (Hz of TOETS)     Freq[k] * 1,003
    Amplitude                    Volume
    Golfvorm                     zaag
    Spoor: S?[?]                 S3[0]
    Duur                         Duur[k]  TEL
    Fijnstemmer ('j' of 'n')     j
    Attack  (msec)               1
    Decay   (msec)               12500
    Sustain (0...1)              0
    Release (msec)               Release
    ADSR type ('lin' of 'exp')   exp
    Filtercoefficient a          0,95
    Filtercoefficient b          0,05
  
  ! tweede snaar aanzienlijk kortere Decay:
  Feedback generator
    Frequentie (Hz of TOETS)     Freq[k] * 1,006
    Amplitude                    Volume
    Golfvorm                     zaag
    Spoor: S?[?]                 S3[0]
    Duur                         Duur[k]  TEL
    Fijnstemmer ('j' of 'n')     j
    Attack  (msec)               1
    Decay   (msec)               2200
    Sustain (0...1)              0
    Release (msec)               Release
    ADSR type ('lin' of 'exp')   exp
    Filtercoefficient a          0,91
    Filtercoefficient b          0,09
  
  Butterworth Laagdoorlaat
    Input                         S3[0]
    Output                        S2[Begin[k]]  TEL
    Afsnijfrequentie (Hz)         CutOff
    Flanksteilheid (1,2,3...50)   2
    Duur (ook 'sec')              Duur[k] + ReleaseTellen TEL
    Volume (0...100)              1
    Additief ('j' of 'n')         j
  
  ! ***************************************************************************
  
  ! Wis "klad-"buffer S3:
  Bewerk signaal
    n0          0
    n1          Duur[k] + ReleaseTellen TEL
    Bewerking   S3[n] = 0
  
NEXT k
