2.3 Relaxatie-oscillator
2.3 Relaxatie-oscillator
2.3 Relaxatie-oscillator
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Sourcecode van het midifile-conversieprogramma<br />
Voor het conversieprogramma hebben we gebruik gemaakt van een programma dat we eerder geschreven<br />
hadden op een Atari ST in Pure-C (Borland C). Voor de PC moesten we de functies die specifiek<br />
te maken hadden met vensters en de afhandeling van de muis omzetten, zodat deze aan MS-Windows<br />
voldeed. Daarnaast hebben we bepaalde functies omgezet in methoden behorend bij de class CMyDlg.<br />
In vergelijking met Ansi-C hebben we hier een groot voordeel, doordat we functionaliteit van bijelkaar<br />
horende methodes kunnen samenvoegen. Bovendien blijft het programmeren van de grafische schil<br />
daaromheen overzichtelijk. We programmeren in Microsoft Visual C++ (2003).<br />
Het stroomdiagram waarin we de methode Convert beschrijven, behandelen we in hoofdstuk 5.<br />
Een overzicht van alle methoden die in de class CMyDlg voorkomen:<br />
Methoden voor de uitvoer naar het scherm GetMsg, SaveMsg<br />
Methoden voor het vragen van een filenaam voor de invoer- en uitvoerfile FileODlg, FileSDlg<br />
Methode voor het converteren van een MIDI File naar een textbestand Convert<br />
Alle constanten en ‘#define’-waarden staan in de bijbehorende headerfile ‘MyDlg.h’:<br />
#pragma once // just a compiler directive<br />
#define MHDR 0 // different kind of headers<br />
#define MSIG 1<br />
#define MTRK 2<br />
#define HDR 0 // kind of metaevents (META_TP)<br />
#define HBL 1<br />
#define FMT 2<br />
#define NTB 3<br />
#define RES 4<br />
#define SHDR 5<br />
#define SHL 6<br />
#define STAIL 7<br />
#define THDR 8<br />
#define TRKL 9<br />
#define TTAIL 10<br />
#define FINISH 11<br />
#define ERR 12<br />
#define MIDIEVNT 0 // kind of events, nb. second is running status<br />
#define SYSEXEVNT 2<br />
#define MTAEVNT 4<br />
#define META_FF 0 // order to parse metaevent<br />
#define META_TP 1<br />
#define META_LEN 2<br />
#define META_DATA 3<br />
#define SQN 0 // kind of metaevents (META_TP)<br />
#define TXT 1<br />
#define COPY 2<br />
#define SQTRNM 3<br />
#define INSTRNM 4<br />
#define LYRIC 5<br />
#define TXTMRK 6<br />
#define TXTCPT 7<br />
#define EOTR 0x2f<br />
#define TEMPO 0x51<br />
#define SMPTE 0x54<br />
#define TMSIG 0x58<br />
#define KEYSG 0x59<br />
#define SEQSP 0x7f<br />
#define AFTER_TOUCH 0x0d // kind of midi channel commands with 1 data byte<br />
#define PRG_CHNG 0x0c<br />
#define NOTE_ON 0x09 // kind of midi channel commands with 2 data byte<br />
64