Wachtwoord kwijt?
Home arrow MIDI-dirigent
MIDI-dirigent Print E-mail
Artikel Index
MIDI-dirigent
Pagina 2
Pagina 3
Pagina 4
Pagina 5
 

De beschrijving van het μP programma

Als MIDI commando heb ik gekozen voor "Channel After Touch". Deze keuze is gemaakt, omdat dit commando slechts twee bytes omvat: de status byte en één data byte.
Als kanaal gebruik ik kanaal 16. Ik gebruik dit kanaal altijd voor allerlei speciale commando's.

Het data formaat

De status byte hiervan is: 1011 1111 = 223 = DFh.
Als data byte heb ik gekozen: 0000 0001 = 1 = 01h voor de eerste tel in de maat
0000 0010 = 2 = 02h voor de tweede tel;
0000 0011 = 3 = 03h voor de derde tel;
0000 0100 = 4 = 04h voor de vierde tel;
0000 0101 = 5 = 05h voor de vijfde tel;
0000 0110 = 6 = 06h voor de zesde tel;
0000 0111 = 7 = 07h voor de zevende tel;
0000 1000 = 8 = 08h voor de achtste tel;
0000 0000 = 0 = 00h voor alle LED's uit.

Het aantal tellen in de maat heb ik beperkt tot acht. Dit zal in bijna alle gevallen genoeg zijn.
De andere data byte mogelijkheden kunnen gebruikt worden voor directe aansturing van de eerste zeven LED's om ieder gewenst patroon zichtbaar te maken (LED acht kan nu niet aangestuurd worden omdat de eerste bit van de data byte altijd nul is). Men kan dit b.v. gebruiken als "lichtorgel".
Een voorbeeld is: 01011101 = 93 = 5Dh voor LED 1,3,4,5 en 7 aan.

De interface

Het display kan op drie manieren worden aangestuurd, instelbaar via interne dipschakelaars (A0,1):

  1. Flits mode: hierbij worden de LED's één voor één aangezet en na de flitstijd weer uit gezet. De flitstijd kan door interne dipschakelaars (A2-7) ingesteld worden en zal altijd korter zijn dan de kortste tel in de muziek;
  2. Looplicht mode: hierbij worden de LED's één voor één aangezet en iedere LED gaat uit als de volgende tel begint en dus een volgende LED aangaat;
  3. VU-meter mode: hierbij worden de LED's zodanig aangestuurd dat, naarmate er meer tellen in de maat zijn, de "balk" steeds langer wordt.

De software implementatie

Het programma bestaat uit twee onderdelen:

  1. Interrupt routine: dit regelt het ontvangen van MIDI-commandos, het decoderen ervan en het ophalen van de gewenste display mode;
  2. Hoofdprogramma: dit regelt het aansturen van het LED display, de flitstijd en de standby mode.

De interrupt routine

Als een MIDI byte ontvangen is door de UART in de μP, zal de interrupt routine worden gestart. Deze begint met het controleren of de ontvangen byte een "Channel After Touch, kanaal 16" byte is. Als dit het geval is, wordt de "Touch" vlag gezet. Bovendien wordt de
ingestelde display mode uitgelezen en de hierbij behorende vlaggen gezet. De volgende interrupt zal normaal gesproken van de bij déze status byte horende data byte zijn (tenzij de MIDI-commando's verstoord zijn). Dan wordt de byte, afhankelijk van de gekozen display-mode, gedecodeerd en het antwoord in een LED-register klaar gezet voor het hoofdprogramma. Als laatste wordt er een "Ready" vlag gezet, dat aangeeft dat een geldig commando ontvangen is. Alle andere ontvangen MIDI-commando's worden genegeerd.

Code-tabel
Code-tabel
 

Het hoofd programma

Dit programma deel wacht op de "Ready" vlag die gezet wordt als de interrupt routine een MIDI-commando "Channel After Touch, kanaal 16" ontvangen en gedecodeerd heeft. Zodra dit optreedt wordt zo snel mogelijk de waarde in het LED-register naar de uitgangspoort gestuurd, waarna de LED versterkers de LED's aan- en uitzetten. Bovendien wordt, als de flitsmode gekozen is, de flitstijd ingelezen. Daarna gaat het hoofdprogramma weer in de wachtmode. Als er een lange tijd (± 70s) géén vlaggen meer ontvangen worden, zal de μP in standby mode gaan om energie te sparen als de metronoom uit een batterij gevoed wordt. Nieuwe MIDI commando's zullen het programma automatisch weer aanzetten.

Interruptprogramma 



Laatste aanpassing ( woensdag, 21 november 2007 )
 
< Vorige   Volgende >
© 2012 HCCmuziek.nl
Joomla! is Free Software released under the GNU/GPL License.