130 likes | 258 Views
geluid, MIDI. Wat gaan we doen: Een (vaste) melodie spelen op de PC speaker MIDI variable-length integers interpreteren. Geluid maken (werkt alleen op XP!). #include <windows.h> Beep( Frequency, Milliseconds ); _sleep( Milliseconds ); Let op: B eep!. noten : naam (= toon hoogte).
E N D
geluid, MIDI Wat gaan we doen: • Een (vaste) melodie spelen op de PC speaker • MIDI variable-length integers interpreteren Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
Geluid maken (werkt alleen op XP!) #include <windows.h> Beep( Frequency, Milliseconds ); _sleep( Milliseconds ); Let op: Beep! Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
noten : naam (= toon hoogte) Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
noten : duur Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
nootnaam frequentie Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
een geinitialiseerd array int Prime[ 9 ] = { 1, 2, 3, 5, 7, 11, 13, 17, 19 }; int Square[] = { 1, 4, 9, 16, 25, 36 }; Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
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 } }; Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
gebruik van #define (1) play( 4567, 400 ); play( 4793, 200 ); play( 4567, 400 ); play( 4793, 200 ); play( 4567, 400 ); play( 4793, 200 ); Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
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 ); Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
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. In dit array moet het MIDI nummer van een noot staan, niet de frequentie. Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
MIDI variable-length integer format • In het laatste (‘laatste’, laagstwaardige) byte staat het hoogste bit op 0 • Als er nog een volgend bit komt dan staat het hoogste bit op 1 • De byte met ”meestwaardige” bits staat voorop • 7 ‘data’ bits per byte • maximum is 4 bytes (dus 4x7=28 bits) Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
MIDI variable-length integer format Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
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. Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology