! Preset_Piano.txt

Declareer a; b; x0; x1; n0; n1; 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


! CutOff:
! exp. functie
! g[n] = b*a^n
n0 = 1128        ! min(Amp)
n1 = 5969        ! max(Amp)
g0 = 600
g1 = 1900

! g[n] = b*a^n
! b*a^0 = b = g0
! b*a^n1 = g1  -->
! a^n1 = g1/b  -->
! (a^n1)^(1/n1) = (g1/b)^(1/n1)   -->

b  = g0
a  = (g1/b)^(1/n1)

! ***************************************************************************
! de berekening van Amplitude van Feedbackgenerator
! Het bereik Amp[k] = 1128... 5969
! Het bereik van Toets[k] in dit stuk is 33 ..... 100.
n0 = 33
n1 = 100
g0 = 0,1             ! volume laagste toon, dus bassen zijn zachter
g1 = 1               ! volume hoogste toon

q  = g0
p  = (g1/q)^(1/n1)

! ***************************************************************************

FOR k = 0 TO 1168
  Print 1168-k
  
  ! Bereken voor elke toets de waarde van het volume en de Afsnijfrequentie:
  Volume = 1,9 * Amp[k] * (q*p^Toets[k])
  CutOff = b * (a^Amp[k]) + 300 * (q*p^Toets[k])
  
  ! Twee licht ontstemde snaren op Spoor s1:
  Feedback generator
    Frequentie (Hz of TOETS)     Freq[k]
    Amplitude                    Volume
    Golfvorm                     snaar(0,127; 0,01)
    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,45
    Filtercoefficient b          0,55
  
  ! tweede snaar aanzienlijk kortere Decay:
  Feedback generator
    Frequentie (Hz of TOETS)     Freq[k] * 1,0017
    Amplitude                    Volume
    Golfvorm                     ruis
    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,7
    Filtercoefficient b          0,3
  
  ! ***************************************************************************
  ! 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,001
    Amplitude                    Volume
    Golfvorm                     snaar(0,118; 0,03)
    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,48
    Filtercoefficient b          0,52
  
  ! tweede snaar aanzienlijk kortere Decay:
  Feedback generator
    Frequentie (Hz of TOETS)     Freq[k] * 1,0012
    Amplitude                    Volume
    Golfvorm                     ruis
    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,65
    Filtercoefficient b          0,35
  
  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
