!******************************************** ! Preset_sinustoon_sonogram_en_grafiek_3D.txt ! jan 2011 !******************************************** Declareer a; b; duur; startfreq; eindfreq !******************************************** ! N.B.!!! ! Open eerst SpectraalLandschap_Raster.bmp !******************************************** Grafiekvenster naar Intern Venster ! beeldschermkleuren instellen en wissen: Achtergrondkleur Rood 90 Groen 110 Blauw 150 Wis Grafiekvenster Wis buffers Wis buffer (F1...F32, S1, S2, S3) S1 | S2 | S3 !-------------------------------------------------------------- ! maak een stuursignaal voor een linair toenemende frequentie: ! freq[n] = a*n + b ! freq[0] = startfreq --> b = startfreq ! freq[duur] = 2000 --> a*duur + startfreq = eindfreq ! --> a = (eindfreq - startfreq) / duur !-------------------------------------------------------------- duur = 3 * Fs startfreq = 83 * Fs / (2^12) ! 893 Hz eindfreq = 166 * Fs / (2^12) ! 1787 Hz b = startfreq a = (eindfreq - startfreq) / duur !-------------------------------------------------------------- ! toon opwekken: Toongenerator ADSR Frequentie (Hz of TOETS) a*n + b Amplitude 8000 Golfvorm sinus Spoor: S?[?] S1[0,5*Fs] Duur duur Aantal harmonischen 1 Attack (msec) 0,1 Decay (msec) 0 Sustain (0...1) 1 Release (msec) 1 ADSR type ('lin' of 'exp') exp !-------------------------------------------------------------- Sonogram Buffer en index (s1, s2, s3) S1[0] lengte fragment (ook 'sec') 4 sec FFT-venster (in bits: 8...16) 12 Venstergrootte (ook 'sec') 2000 vensterverplaatsing (ook 'sec') 0,02 sec weergave in decibel ('dB') of lineair ('lin') dB kleur van laagste amp ('R', 'G' of 'B') 240 kleur van hoogste amp ('R', 'G' of 'B') 60 helderheid 16 Hann-window ('j' of 'n') j Raster ('j' of 'n') j ! ---------------------------------------------------------------------------------------------- ! Teken het sonogram in 3D als "spectraal landschap" door gebruik te ! maken van de functie'Grafiek van functie met 2 variabelen (3D)'. ! Als je achter 'expressie y(x,z)' een formule invult waarin het woord ! 'sonogram' voorkomt, dan wordt automatisch het sonogram omgerekend naar ! het spectrale berglandschap. Daarbij stelt de x-dimensie de tijd voor ! en de z-dimensie de frequentie. ! ! De sonogram-expressie: ! 'sonogram' is een variabele die de hoogte bevat van elk punt in het ! spectrale landschap. Als je schrijft: '0,1 * sonogram', wordt de ! hoogte van het landschap met een factor 10 "ingedukt". ! Je kunt daarnaast bijv. ook een decibel-weergave maken. Dan neem je ! de logaritme uit elke hoogtewaarde. Die kunnen in een sonogram nooit ! negatief zijn, maar wel nul. Aangezien log(0) niet bestaat, tel je ! bij alle hoogtewaarden bijv. 1 op. ! Je krijgt dan bijv: ! 20* log(sonogram+1) ! Dus eerst wordt van elk punt de logaritme genomen, zodat een ! "decibel-landschap" ontstaat en dat landschap wordt 20 maal zo hoog ! gemaakt (puur om visuele redenen) ! ! De berglandschappen van sonogrammen kunnen heel 'hobbelig' verlopen ! en dan is het vaak prettig om die wat glad te strijken. Dat doe je ! door het sonogram te filteren: hoe vaker je filtert deste gladder ! het landschap wordt. ! Het filteren geef je aan door een puntkomma (;) achter de sonogram- ! expressie met daarachter een getal. Zo krijg je bijv: ! 0,3* sonogram ^0,5 ; 2 ! Hier wordt de wortel getrokken uit de hoogten en daarna wordt het ! landschap 2 keer gefilterd. (Een "wortel-landschap" is een soort ! compromis tussen een lineair en een log-landschap.) ! ! Tijd: ! In het sonogram loopt de tijd van 0 naar 4 sec. De vensterverplaatsing ! is 0,02 sec, dus er zijn 4 / 0,02 = 200 tijdstippen waarop het spectrum ! wordt berekend. ! Daarmee krijg je voor x0 = 0 en x1 = 199. ! ! Frequentie: ! Het sonogram is ingesteld op 2^12 frequenties ('FFT-venster'). ! De frequentieresolutie is dan Fs / (2^12) = 10,76 Hz. ! Als je een frequentiegebied tot bijv. 2500 Hz wilt afbeelden, ! moeten er 2500 / 10,76 = ongeveer 250 frequenties worden afgebeeld. ! Dan is z0 = 0 en z1 = 249. ! ! ---------------------------------------------------------------------------------------------- Grafiek van functie met 2 variabelen (3D) expressie y(x,z) 0,01 * sonogram; 0 ! lineair landschap x0 0 x1 199 z0 0 z1 249 vergroting x (breedte) 1 rotatie y-as (graden) 40 verschuiving x (breedte) -80 verschuiving y (hoogte) -800 verschuiving z (diepte) 1400 breedte grafiek (pixels) 1500 linksboven hor (pixels) 600 linksboven vert (pixels) 1800 kleur x-lijnen (of vlakken) geen kleur z-lijnen (of vlakken) geen stap x-lijnen 1 stap z-lijnen 1 pendikte (in pixels) 1 'draad', 'dicht' of 'schaduw' schaduw