Dr.Godfried-Willem RAES

Kursus Experimentele Muziek: Boekdeel 1: Algoritmische Kompositie

Hogeschool Gent : Departement Muziek & Drama


<Terug naar inhoudstafel kursus>

   

1043

Programmavoorbeeld: GOLF.BAS

 

Het hiernavolgend voorbeeldprogramma heeft als eerste bedoeling de studenten zo snel mogelijk vertrouwd te maken met Basic als programmeertaal. Er worden nogal wat grafische statements en funkties in gebruikt waarover verder in de kursus weinig tot niets wordt gezegd, omdat ze ook niet rechtstreeks in verband staan met de muzikale algoritmische kompositie. Daarmee wil echter niet gezegd zijn dat ze niets wezenlijks zouden kunnen bijdragen tot het inzicht van de studenten! Meer nog, zij moeten zelfs als essentieel worden beschouwd voor al wie zich ooit zou geroepen voelen een programma te schrijven dat ook nog door iemand anders dan hemzelf moet kunnen worden gebruikt.

De opbouw van grafische schermen en de programmering van interaktiviteit met de gebruiker noemt met in het jargon het 'user-interface' van een programma. Het staat los van het eigenlijke programma en alleen bijzonder slordige auteurs mengen elementen van het userinterface met de eigenlijke taken en algoritmes van het programma zelf.

De bedoeling van dit programma bestaat erin dat de studenten het -terwijl ze het met de hand intypen- grondig zouden analyzeren, dat ze elk gebruikt statement in de Basic manual zelfstandig opzoeken (syntax, betekenis en effekt) en dat ze erin slagen het uit te breiden:

1.- probeer het programma zo aan te passen dat de Y-as voorzien wordt van numerieke frekwentiewaarden.

2. Pas het programma zo aan dat de gebruiker zelf de frekwentie van de op het scherm te tonen golf kan bepalen.

3. Hoe pas je het programma aan om ook een varierende amplitude te tonen?

4. Probeer het programma de kompileren tot een autonoom uitvoerbare GOLF.EXE file.

5. Probeer de grafische routine onder te brengen in een procedure. (SUB)

6. Probeer de berekening van het sample onder te brengen in een funktie (FUNCTION)


' *********************************

' * Voorbeeldprogramma 'GOLF.BAS' *

' * kursus experimentele muziek *

' * Dr.Godfried-Willem RAES *

' *********************************

'$DYNAMIC

 

CONST Dat% = 1001

DIM Array!(0 TO Dat% - 1) ' dimensioneer een array voor de opslag

' van de golfvormgegevens.

SCREEN 12: CLS 0 ' VGA-mode 640 x 480 points

 

Wx1! = 0 ' set window coordinates

Wy1! = -1

Wx2! = Dat% - 1

Wy2! = 1

FOR i% = 0 TO Dat% - 1 ' bereken de gegevens voor een sinusgolf

Array!(i%) = SIN(i% * 20 / Dat%) ' (n.b.: dit zijn 'samples' !)

NEXT i%

 

' Teken het referentiekader op het scherm::

VIEW (50, 50)-(630, 350) ' set view port

WINDOW (Wx1!, Wy1!)-(Wx2!, Wy2!) ' set window

LINE (Wx1!, Wy1!)-(Wx2!, Wy2!), 7, B ' teken het buitenkader van de grafiek

FOR i% = 1 TO 9 ' teken een roosterverdeling

LINE (Wx2! / 10 * i%, Wy1!)-(Wx2! / 10 * i%, Wy2!), 7, , &HAAAA

LINE (Wx1!, (Wy2! - Wy1!) / 10 * i% + Wy1!)-(Wx2!, (Wy2! - Wy1!) / 10 * i% + Wy1!), 7, , &HAAAA

NEXT i%

' teken een centrale nul-lijn:

LINE (Wx1!, (Wy2! + Wy1!) / 2)-(Wx2!, (Wy2! + Wy1!) / 2), 7

' druk ook een schaalverdeling (-1 tot +1)

' af bij de grafiek voor de y-as:

LOCATE 4, 1: PRINT USING "######"; Wy2!

LOCATE 22, 1: PRINT USING "######"; Wy1!

 

' Teken nu hierbinnen de golfvorm:

Dx! = Wx1!

Dy! = Array!(0)

FOR i% = 1 TO Dat% - 1

PSET (Dx!, Dy!), 2

Dx! = i%

Dy! = Array!(i%)

LINE -(Dx!, Dy!), 2

NEXT i%

LOCATE 24, 60: PRINT "hit any key to exit.";

DO: LOOP UNTIL INKEY$ <> ""

 

VIEW (0, 0)-(639, 399)

CLS 0

END

Slaag je zonder al te grote problemen [-zonder voorafgaande ervaring zal je voor het afwerken van deze opdracht twee tot drie avonden (nachten?) moeten uittrekken- ] in het afwerken van de hiervoor gestelde opdrachten dan zien je toekomstmogelijkheden op het gebied van algoritmische kompositie er alvast veelbelovend uit.


Filedate: 970914

Terug naar inhoudstafel kursus: <Index Kursus>

Naar homepage dr.Godfried-Willem RAES