!*************************** ! Preset_DonaldDuck_effect !*************************** !================================================================================ ! N.B. Doe eerst de opdrachten over Tijdschaalverandering en Granulaire Synthese! !================================================================================ ! Open Weerbericht.wav Declareer q; t; Versterking; AantalFragmenten; Strek; DuurGeluid; DuurFragment; Verplaatsing; N DuurGeluid = 13*Fs ! tijdsduur van geluid, uitgedrukt als aantal samples (maar goed leesbaar in seconden) DuurFragment = 0,03*Fs ! duur van fragmenten uitgedrukt als aantal samples Verplaatsing = DuurFragment / 20 ! tijdafstand tussen twee opeenvolgende (overlappende) fragmenten Versterking = 0,4 ! deze waarde vind je door te experimenteren. In Memo verschijnt een melding als volume te hoog is. Strek = 2 ! factor waarmee het geluid wordt uitgerekt (>1) of samengeduwd (<1) N = DuurFragment ! N = lengte Hann-venster ! Het te bewerken geluid moet op S1 staan. Het bewerkte geluid komt op S3. Wis buffers Wis buffer (F1...F32, S1, S2, S3) S2 | S3 ! Maak Hann-venster Bewerk signaal n0 0 n1 N-1 Bewerking F1[n] = 1 + cos(2*pi*(n-N/2)/N) ! Tijd samendrukken met factor 1/Strek, hierdoor stijgt ook de toonhoogte en verandert de klankkleur ! als gevolg van formantverschuiving, in dit geval een "Donald Duck-effect", want de tijd wordt samengedrukt. ! Het resultaat komt op spoor S2. Bewerk signaal n0 0 n1 DuurGeluid Bewerking S2[n] = S1[n*Strek] ! Nu de tijd weer oprekken met factor Strek zodat je weer de oorspronkelijke tijdschaal 1:1 krijgt. ! Dit keer gebruiken we Granulaire Synthese, zodat geen toonhoogteverandering en geen ! formantverschuiving optreden. Dus de nieuwslezer gaat wel weer in normaal tempo praten, ! maar raakt dat hoge Donald Duck-stemmetje niet meer kwijt... AantalFragmenten = DuurGeluid /(Strek*Verplaatsing) FOR k = 0 TO AantalFragmenten Print AantalFragmenten - k t = k*Strek*Verplaatsing + random(0; Strek*Verplaatsing) q = k*Verplaatsing Bewerk signaal n0 0 n1 DuurFragment-1 Bewerking S3[n+t] = S3[n+t] + Versterking*F1[n]*S2[n+q] NEXT k Bewerk signaal n0 0 n1 DuurGeluid Bewerking S2[n] = S3[n] Bewerk signaal n0 0 n1 DuurGeluid Bewerking S1[n] = S3[n]