Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Een (vaste) melodie spelen op de PC speaker MIDI variable-length integers interpreteren
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 2 Geluid maken (werkt alleen op XP!) #include Beep( Frequency, Milliseconds ); _sleep( Milliseconds );
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 3 noten : naam (= toon hoogte)
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 4 noten : duur
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 5 nootnaam frequentie
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 6 een geinitialiseerd array int Prime[ 9 ] = { 1, 2, 3, 5, 7, 11, 13, 17, 19 }; int Square[] = { 1, 4, 9, 16, 25, 36 };
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 7 een geinitialiseerd array (2) typedef struct { char naam[ 10 ]; float cijfer; } Student; Student Info[] = { { " hans ", 6.7 }, { " johan ", 3.2 }, { " michiel ", 7.8 }, { "", 0.0 } };
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 8 gebruik van #define (1) play( 4567, 400 ); play( 4793, 200 ); play( 4567, 400 ); play( 4793, 200 ); play( 4567, 400 ); play( 4793, 200 );
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 9 gebruik van #define (2) #define A 4567 #define B 4793 #define HALF 400 #define KWART 200 play( A, HALF ); play( B, KWART ); play( A, HALF ); play( B, KWART ); play( A, HALF ); play( B, KWART );
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 10 Opdracht 1 Maak een functie die je aanroept met -het MIDI noot nummer -de duur in milliseconden De functie moet dus het noot nummer vertalen naar de frequentie. De functie moet (voor debugging) ook de noot naam, nummer en duur afdrukken. Schrijf hiermee een programma dat een liedje laat horen. Gebruik #defines voor de lengtes (duur) van noten en eventueel voor de noten zelf. Gebruik een geinitialiseerd array om het liedje op te slaan.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 11 MIDI variable-length integer format -7 ‘data’ bits per byte -hoogste bit 0 voor ‘laatste’ byte -maximum is 4 bytes (dus 4x7=28 bits)
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 12 MIDI variable-length integer format
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 13 Opdracht 2 Schrijf een functie met de volgende definitie: int MIDI_Int( unsigned char **p ); Deze functie wordt aangeroepen met een pointer naar een pointer naar een (reeks) MIDI variable-length integers. De functie lees de eerste MIDI integer, veschuift de pointer tot net na die integer, en geeft die integer waarde terug. Test je functie.