Midi Recorder

Stel hier je vragen over audioapparatuur en audioschakelingen
Plaats reactie
Stefy
Berichten: 32
Lid geworden op: zo 19 okt 2003, 19:58

Midi Recorder

Bericht door Stefy »

Hallo,

Ik ben op zoek naar een bouw schema van een Midi Recorder , of als iemand weet hoe ik het zelf kan ontwerpen.

Alvast bedankt,

Stefy Lory.
Mat Janssen
Moderator
Moderator
Berichten: 11503
Lid geworden op: wo 10 dec 2003, 18:36
Locatie: nederweert. .. .. .. .. .. .. .. .. .

Bericht door Mat Janssen »

Midi recorder,
Wil jij de zaak op een harddisk of gewoon in ram laden en weer terug lezen?
ik denk dat via google heel veel is te vinden.
Lukt het jou niet willen wij wel zoeken maar dan wel iets laten weten.
Jo
Moderator
Moderator
Berichten: 24
Lid geworden op: wo 10 dec 2003, 9:11
Locatie: Zoetermeer

Bericht door Jo »

Kan gedaan worden met een PIC processor en een hoeveelheid RAM geheugen. Iedere binnenkomende statusbyte opslaan met daaraan vooraf een tijdcode afhankelijk van de verstreken tijd t.o.v. de vorige statusbyte. Overige bytes gewoon opslaan na de statusbyte.
Kost wat programmeerwerk en het ontwerp van een goede interface naar de RAM, bv I2C.
Jo
Mat Janssen
Moderator
Moderator
Berichten: 11503
Lid geworden op: wo 10 dec 2003, 18:36
Locatie: nederweert. .. .. .. .. .. .. .. .. .

Bericht door Mat Janssen »

Het PIC idee is leuk.
Ook is het mogelijk eeprom aan een PIC ship te koppelen zodat de zaak na uitschakelen nog bewaard kan blijven.
Alleen RAM zal altijd erbij moeten omdat het tijd kost eeprom te beschrijven.
Ik zie het al helemaal voor me hoe zoiets eruit komt zien qua hardware en ook qua software een beetje.
Het enige wat ik nog moet bestuderen is hoe ziet er een komplete MIDI string eruit samen met de tijdcode en de rest van de eventuele erbij geplaatste instrumenten.

Jo, misschien komen we er samen wel uit!
Mat
Jo
Moderator
Moderator
Berichten: 24
Lid geworden op: wo 10 dec 2003, 9:11
Locatie: Zoetermeer

Bericht door Jo »

Hierbij een protocol dat ik gebruikt heb. Ik heb SPI memory gebruikt, ik vond de interfacing wat makkelijker dan I2C, maar het blijkt dat de chips weer moeilijker verkrijgbaar zijn.
Groet, Jo

==
PIC16F873 of mischien ook F628 bruikbaar.
Klokfrequentie op 20 MHz
Tmr0 gebruiken als klok, precounter op 16
tmr0 genereert interrupt en houdt daarin 2 counters bij, cnt1 en cnt2
cnt 2 incrementeert als cnt1 overflowt.

Geheugen chips bv I2C of SPI type interfacen naar PIC. (eeprom).
Een buffer creeren op bank 1 direct na de hardware adressen, van 64 bytes.
Binnenkomende data samen met timing in die buffer schrijven en als de buffer vol is
deze in blokvorm naar het externe geheugen overbrengen.

Procedures:
het programma leest binnenkomende byte van serial input.
ignore f8 f9 fa, fb fc ff en f6, dit soort statusbytes
komt in gewone midi eigenlijk niet voor, en zou de zaak maar verstoren.
Als een byte binnenkomt wordt deze opgeslagen in de buffer maar eerst wordt
de tijdcode opgeslagen:
dat gaat dan als volgt: Als cnt1 en cnt2 beide 0 zijn, wordt geen tijdcode tussengevoegd,
als cnt2 0 is wordt eerst code f8 verstuurd en daarna de inhoud van cnt1. Als
cnt2 geen 0 is dan wordt f9 verstuurd met daarna de inhoud van cnt2 en cnt1.
Op die manier is met het kleinst mogelijke aantal bytes steeds de volledige tijd
tussen 2 midibytes meegegeven.
Tussen de bytes van één message is altijd cnt1=0, de bytes komen vlak na elkaar, dus
een message wordt nooit onderbroken door tijdcodes.
Na iedere byte die zo in de buffer geplaatst is, moet cnt1 en cnt2 gecleard worden.
De tijden zijn zo altijd relatief t.o.v. het vorige message.

Voor een compleet message (3 bytes) zijn zo 5 of 6 bytes nodig. Meestal 5.
Deze procedure blijft ook goed werken met z.g. running status!

Aan het eind van de opname nog een speciale code, bv ff toevoegen aan de opgeslagen data.

Bij afspelen de omgekeerde volgorde.

Via poll routines de input checken, dus alle bedieningstoetsen en de seriele input.
Plaats reactie