WaveWizard

...
Jim's Spaarbank hanteert een bijzondere manier van renteberekening.
Je krijgt elke dag 97% rente bijgeschreven over het saldo van gisteren, maar daar wordt 98% van het saldo van eergisteren van afgetrokken.
Het lijkt me zo dat alle banken deze formule meer en meer aan het toepassen zijn. ;)
 
Fibonacci Bank

Fibonacci Bank

Thx guys! ;)


Om de economie wat op te peppen verbouwen we Jim's Bank tot de lucratieve Fibonacci Bank. Hier krijg je elke dag 100% rente over het saldo van gisteren en ook 100% over het saldo van eergisteren. De eerste twee dagen zet je 1 euro in. Da's niet veel, maar de kassa gaat weldra rinkelen en binnen drie weken kun je al een heel vette synth bestellen!

Code:
! Maak Reeks van Fibonacci:

F[0] = 1
F[1] = 1
Bewerk signaal
  n0          2
  n1          100
  Bewerking   F[n] = F[n-1] + F[n-2]

We hebben nu de roemruchte reeks van Fibonacci: als je steeds twee opeenvolgende getallen op elkaar deelt krijg je een nieuwe reeks getallen die meer en meer nadert tot de Gulden Snede: (1+Wortel5)/2 = 1,61803398874989...

Code:
! Bereken verhouding tussen twee opeenvolgende 
! getallen van Fibonacci-reeks:

Bewerk signaal
  n0          1
  n1          100
  Bewerking   R[n] = F[n] / F[n-1]


Code:
      Fibonacci-    Verhouding met 
       reeks        vorige getal 
 0 |       1        -
 1 |       1        1                
 2 |       2        2                
 3 |       3        1,500000000000   
 4 |       5        1,666666666667   
 5 |       8        1,600000000000   
 6 |      13        1,625000000000   
 7 |      21        1,615384615385   
 8 |      34        1,619047619048   
 9 |      55        1,617647058824   
10 |      89        1,618181818182   
11 |     144        1,617977528090   
12 |     233        1,618055555556   
13 |     377        1,618025751073   
14 |     610        1,618037135279   
15 |     987        1,618032786885   
16 |    1597        1,618034447822   
17 |    2584        1,618033813400   
18 |    4181        1,618034055728   
19 |    6765        1,618033963167   
20 |   10946        1,618033998522   

Golden Ratio = 1,61803398874989

attachment.php


De reeks van Fibonacci ligt ook besloten in veel spiraalvormen die in de natuur voorkomen: de Gulden Spiraal.
Hieronder de code om de Gulden Spiraal te tekenen met WaveWizard:

Code:
Declareer Phi; a; b
a   = 0,05
Phi = 0,5 + 0,5*(5^0,5)  ! Golden Ratio
b   = ln(Phi)/(0,5*pi)

Parametrische kromme (2D)
  x(t)       a*e^(b*t)*cos(t)
  y(t)       a*e^(b*t)*sin(t)
  Domein t   0; 30
  Stap       0,01
 

Attachments

  • Gulden Spiraal.jpg
    Gulden Spiraal.jpg
    32,7 KB · Bekeken: 184
een goeie, korte uitleg van de reeks van Fibonacci en de Gulden Snede op YouTube: Khan Academy:
https://www.youtube.com/watch?v=5zosU6XTgSY

Khan begint bij het begin: de verdeling van een lijn in twee segmenten A en B, zodanig dat

A/B = (A+B)/A.

Dit is precies de manier waarop Plato het 2400 jaar geleden deed in "De Staat" (Politeia, Boek VI)!:geslaagd:
 
brom verwijderen.pdf

brom verwijderen.pdf

Op YouTube een serie lectures over akoestiek van de Koreaanse hoogleraar Yang-Hann Kim, met verrassende gezichtspunten, en hier en daar ook heel grappig. Helaas gaat er in lecture 4 iets mis met de transmissie van het dasspeld-microfoonsignaal; dat geeft een brom (blokgolf, 60 Hz) waarvan de sterkte afhangt van bewegingen:

Yang-Hann Kim Lecture 4-1: Forced response of string vanaf 30'
https://www.youtube.com/watch?v=W_B04ZsZX3k

Hieronder de WaveWizard code waarmee de brom wordt verwijderd. Het is een toepassing van het delay-feedforward filter van #547 (https://www.synthforum.nl/forums/showpost.php?p=1735931&postcount=547).

(...)


Uitleg van wat hier precies gebeurt vind je in http://muziekexact.nl/NLT/50%20Hz-brom%20verwijderen.pdf.
Dit is een nieuwe paragraaf voor hoofdstuk 4 van de NLT-module Sound Design, die deze maand het vijfde jaar ingaat en inmiddels op zo'n 30 VWO-scholen draait.

Er komt ook voor hoofdstuk 5 (filters) een extra paragraaf waarin het echo-effect als kamfilter wiskundig wordt afgeleid. Daar werk ik nu aan. Zal later hier een link posten.
 
Laatst gewijzigd:
Hier een voorbeeld van LPC spraakanalyse en synthese n.a.v. draad https://www.synthforum.nl/forums/showpost.php?p=1769244&postcount=1.

Eerst opent de preset een wav-bestand (de inmiddels vertrouwde Goundhog Day Weerman) en voert daarop een LPC-analyse uit.
Dan wordt op sporen S1 en S2 een pulstoon opgewekt met een zeer geringe zweving.
Beide sporen worden gefilterd met het LPC-synthesefilter; een time-stretch factor 2 wordt toegevoegd, waardoor de spraak lijzig gaat klinken.

De sporen worden opgeschaald naar een zeker geluidsniveau.
Het resultaat wordt automatisch opgeslagen als een 16-bits wav stereo-signaal.

Code:
!*******************************
! Preset LPC analyse en synthese
!*******************************

Wis buffers
  Wis buffer (F1...F32, S1, S2, S3)   S1 | S2 | S3

Open WAV
  WAV naam   weerbericht.wav
  vanaf      0
  duur       ?
  buffer     S1[0]

Print WAV_lengte/Fs

LPC analyse
  inputsignaal               S1[0]
  LPC M                      44
  Aantal samples per frame   1024
  Frame opschuiving (smp)    200
  Duur input (smp)           WAV_lengte
  buffer LPC-coef's          F17[0]
  LPC Internbuffer           F16[120]
  Restsignaal                nvt

!------------------------------------------------
Wis buffers
  Wis buffer (F1...F32, S1, S2, S3)   S1 | S2

!------------------------------------------------
! pulstoon S1
Feedback generator
  Frequentie (Hz of TOETS)     120 Hz
  Amplitude                    4000
  Golfvorm                     puls
  Spoor: S?[?]                 S1[0]
  Duur                         2*WAV_lengte
  Fijnstemmer ('j' of 'n')     j
  Attack  (msec)               1
  Decay   (msec)               0
  Sustain (0...1)              1
  Release (msec)               2000
  ADSR type ('lin' of 'exp')   exp
  Filtercoefficient a          1
  Filtercoefficient b          0

LPC Synthese
  buffer input            S1[0]
  buffer output           S3[0]
  buffer LPC-coefs        F17[0]
  LPC M                   44
  aantal frames           2760
  Duur output (sec)       2*WAV_lengte
  Gain                    0,001
  Additief ('j' of 'n')   n

!------------------------------------------------
! pulstoon S2
Feedback generator
  Frequentie (Hz of TOETS)     121 Hz
  Amplitude                    4000
  Golfvorm                     puls
  Spoor: S?[?]                 S2[0]
  Duur                         2*WAV_lengte
  Fijnstemmer ('j' of 'n')     j
  Attack  (msec)               1
  Decay   (msec)               0
  Sustain (0...1)              1
  Release (msec)               2000
  ADSR type ('lin' of 'exp')   exp
  Filtercoefficient a          1
  Filtercoefficient b          0

LPC Synthese
  buffer input            S2[0]
  buffer output           S1[0]
  buffer LPC-coefs        F17[0]
  LPC M                   44
  aantal frames           2760
  Duur output (sec)       2*WAV_lengte
  Gain                    0,001
  Additief ('j' of 'n')   n


!------------------------------------------------
! S1 opschalen
Amplitudo, Maximum, Minimum, Som, RMS
  Buffer   S1[0]
  Aantal   2*WAV_lengte

x = 15000/Amplitudo
Bewerk signaal
  n0          0
  n1          2*WAV_lengte
  Bewerking   S1[n] = x*S1[n]

!------------------------------------------------
! S3 opschalen en op S2 zetten
Amplitudo, Maximum, Minimum, Som, RMS
  Buffer   S3[0]
  Aantal   2*WAV_lengte

x = 15000/Amplitudo
Bewerk signaal
  n0          0
  n1          2*WAV_lengte
  Bewerking   S2[n] = x*S3[n]

Amplitudo, Maximum, Minimum, Som, RMS
  Buffer   S2[0]
  Aantal   WAV_lengte

!------------------------------------------------

WAV Opslaan
  WAV Naam   Weerbericht _LPC.wav
  bron       S1[0]
  duur       2*WAV_lengte
 

Attachments

  • Weerbericht _LPC.mp3
    979,6 KB · Bekeken: 211
Van mij mogen ze altijd het NOS journaal zo doen :)

Wat gebeurt er wanneer je aan de puls frequenties steutelt?
Of wanneer je deze een modulatie signaal krijgt?

Ja die tijd-strek was om de lijzigheid van het NOS-journaal uit te drukken ;)

Wat gebeurt er als je een zin uitspreekt terwijl je je stembanden steeds hogere of lagere tonen laat maken?
Als LPC niets anders is dan een model van het spraakkanaal (mond- en keelholte), dan zal er hetzelfde gebeuren als wanneer je sleutelt aan de frequentie van je stembanden.

Als je het excitatiesignaal eerst moduleert, ontstaat een signaal met een zekere frequentieverdeling. Dat gaat het filter in. De filter-output heeft weer diezelfde frequentieverdeling, want een filter is een lineaire bewerking.

WaveWizard is vooral gemaakt om dit soort boeiende vragen te beantwoorden!
Wat let je om zelf te sleutelen aan de code hierboven?
 
fluisterende weerman in tijdnood
 

Attachments

  • Weerbericht _LPC2.mp3
    245,9 KB · Bekeken: 189
Leuk die snelle weerman. :)

In m'n Kyma draad ook weer gepost.

Ja, had ik al gehoord, klonk goed en ik dacht: dat wil ik ook!

Dat snel door zo'n map met LPC-filters bladeren, wat jij met Kyma doet, is natuurlijk wel heel comfortabel :P
Met WaveWizard kun je het effect ervan wel nadoen, door een FOR k = 0 TO... ...NEXT lus met daarin een paar dingen aanpassen (rood)

Code:
LPC Synthese
  buffer input            S1[0]
  buffer output           S3[0]
  buffer LPC-coefs        F17[[B][COLOR="Red"]45*k[/COLOR][/B]]
  LPC M                   44
  aantal frames           [B][COLOR="Red"]1[/COLOR][/B]
  Duur output (sec)       [COLOR="Red"]lengte[/COLOR]
  Gain                    0,001
  Additief ('j' of 'n')   n
 
Ja, had ik al gehoord, klonk goed en ik dacht: dat wil ik ook!

Dat snel door zo'n map met LPC-filters bladeren, wat jij met Kyma doet, is natuurlijk wel heel comfortabel :P
Met WaveWizard kun je het effect ervan wel nadoen, door een FOR k = 0 TO... ...NEXT lus met daarin een paar dingen aanpassen (rood)

Code:
LPC Synthese
  buffer input            S1[0]
  buffer output           S3[0]
  buffer LPC-coefs        F17[[B][COLOR=Red]45*k[/COLOR][/B]]
  LPC M                   44
  aantal frames           [B][COLOR=Red]1[/COLOR][/B]
  Duur output (sec)       [COLOR=Red]lengte[/COLOR]
  Gain                    0,001
  Additief ('j' of 'n')   n

Kijk, DAT bedoel ik!
Vanmiddag weer verder geëxperimenteerd. Met als live input de Clavia NMG2 en Kyma Crossfilters, Reresonators. Binnenkort plaats ik weer hier iets over.
Ja, Kyma is zeer comfortabel maar ik zie dat WW makkelijk is aan te passen.
 
Resofilter

Resofilter

Interessante posts van Roland in Kyma-Pacarana over formanten:
https://www.synthforum.nl/forums/showpost.php?p=1772731&postcount=80.

Een formant is een (niet al te scherpe) piek in het spectrum. Spraakklanken bestaan meestal uit twee of drie van zulk pieken. Het woord formant stamt uit de spraak- en instrumentakoestiek. Het is hetzelfde als wat algemener in de signaalverwerking en in de synth-wereld een "resonantie" wordt genoemd.

Technisch gesproken is een resonantie de bewerking die een puls omzet in een gedempt sinusvormige trilling. Zo'n gedempte sinus maak je met de Bank-van-Jim procedure, zie
https://www.synthforum.nl/forums/showpost.php?p=1749009&postcount=598 en verder. Maar omdat dit een heel veel voorkomende berekening is, heeft WaveWizard er een aparte, snelle instructie voor. Die heet Resofilter en heeft dezelfde instellingen als in Kyma (zie figuur): resonantiefrequentie, bandbreedte (= scherpte van piek) en schaal.
In WaveWizard heten ze ResoFreq, Bandbreedte en Gain. In het code-voorbeeldje een AA-klank met een vibrato.

Code:
!**********************
! Preset twee formanten
!**********************

! https://www.synthforum.nl/forums/showpost.php?p=1772731&postcount=80

Declareer duur; f; w

duur = 5*Fs
f    = 5
w    = 2*pi*f*Ts

Wis buffers
  Wis buffer (F1...F32, S1, S2, S3)    S1  |  S2  |  S3

Toongenerator ADSR
  Frequentie (Hz of TOETS)     150 + 4*sin(w*n)
  Amplitude                    8000 + 500*sin(w*n)
  Golfvorm                     zaag
  Spoor: S?[?]                 S1[0]
  Duur                         duur
  Aantal harmonischen          90
  Attack (msec)                300
  Decay (msec)                 5000
  Sustain (0...1)              0
  Release (msec)               2000
  ADSR type ('lin' of 'exp')   exp

Resofilter
  Input                               S1[0]
  Output                              S2[0]
  Gain                                0,251189
  ResoFreq                            1000
  bandbreedte                         70
  duur                                duur
  additief ('j' of 'n')               n
  filtercoef's in Memo ('j' of 'n')   j

Resofilter
  Input                               S1[0]
  Output                              S2[0]
  Gain                                0,281838
  ResoFreq                            2700
  bandbreedte                         100
  duur                                duur
  additief ('j' of 'n')               j
  filtercoef's in Memo ('j' of 'n')   j

Amplitudo, Maximum, Minimum, Som, RMS
  Buffer   S2[0]
  Aantal   duur

w = 25000 / Amplitudo
Bewerk signaal
  n0          0
  n1          duur
  Bewerking   S2[n] = w*S2[n]
 

Attachments

  • 2FormantElement.jpg
    2FormantElement.jpg
    53 KB · Bekeken: 179
  • AA.mp3
    391,8 KB · Bekeken: 176
Leuk, die similarities! :)

Er zullen bij mij nog een paar posts volgen over formanten.

In mijn Bach voorbeeld heb ik een random modulatie op de 'scales' gezet.
Natuurlijk kan je ook tijds gevarieerde modulaties( b.v. EG) laten plaatsvinden op zowel de frequentie, als op de bandbreedte.
 
Back
Top