Fragen zu Midi-Protokoll und zu Simplesizer CV

Dieses Thema im Forum "Lötkunst" wurde erstellt von -FX-, 12. Februar 2006.

  1. -FX-

    -FX- Tach

    Nach sehr langer Mikrocontroller-Abstinenz aus dem Grund, da mein STK-200-kompatibler Programmer aus unerfindlichen Gründen mir dauernd meine Atmels zerschossen hat und ich darauf einfach keinen Bock mehr hatte habe ich letztes Wochenende meinen STK-500 kompatiblen Programmer mit HV für den Notfall fertiggestellt.
    Da mein Simplesizer auch schon geraume Zeit auf die Fertigstellung sowie ein Gehäuse wartet habe ich heute mal damit begonnen, mich wieder ein wenig einzuarbeiten, um demnächst ein Midi/CV-Interface mit einbauen zu können.

    Habe mit der Software bereits angefangen aber bevor es richtig losgeht stehen noch 2 Fragen im Raum.

    (1)
    In einer deutschen Beschreibung des Midiprotokolls habe ich gelesen, dass manche Geräte den Note-Off - Befel gar nicht verwenden sondern bei einem Note-On die Velocity einfach auf Null setzen. Auch soll es Keyboards, Sequencer etc geben, die das Statusbyte aus Timinggründen gar nicht erst wiederholen sondern nach der Setzung nur die Werte 1 und 2 bei Bedarf senden.
    Also habe ich mal Midiox aufgespielt, mein Keyboard analysiert und siehe da: tatsächlich wird statt dem Note-Off der Note-On-Befehl mit einer Velocity von Null verwendet.
    Ist euch zufällig bekannt ob das Protokoll mit dem fehlenden Statusbyte auch öfters Anwendung findet oder handelt es sich dabei eher um eine Seltenheit ?

    (2)
    Thema CV am Simplesizer. Wie habe ich das mit dem 1V/OKt. zu verstehen ? Heisst das beispielsweise bei 1/12 Volt kommt ein C heraus, bei 2/12 VOlt ein Cis, bei 3/12 Volt ein D u.s.w. (lineares verhalten ?)
    Das wäre wohl am einfachsten zu proggen aber in Frequencen ausgedrückt ist die Tonleiter ja auch nicht linear ...
     
  2. (1)
    note_on mit velocity von null ist nicht unüblich, um damit ein note_off auszulösen. der vorteil ist, das du im running_mode(*) den stream nicht unterbrechen musst, solange nicht controller oder ähnliches gesendet werden soll. jedes gerät sollte beide verfahren beherrschen, um eine note zu beenden.

    (*) running-mode bedeutet: man sendet nur einmal den befehl (zb note_on) und danach nur noch die parameter (notennummer und velocity) der befehl gilt dann so lange für die folgenden noten, bis ein anderes befehlsbyte gesendet wird. das reduziert zb bei akkorden den datenstrom um ca. ein drittel. das selbe gilt aber auch für controller und einige andere mehrbyte-midibefehle
    (achtung: der runningmode wird aber beendet und uU neu gestartet, wenn zb ein note_on auf einem anderen kanal oder ein realtime wie sync gesendet wird........ )


    (2)
    ich bin mir jetzt nicht sicher, ob es eine genormte spannung für die allererste note gibt. transponierungen sind ja im grunde nur die frage einer (positiven oder negativen) gegenspannung, und die maximale steuerspannungsbandbreite ist eine frage der schaltung und an welcher stelle diese spannung addiert wird.
    ansonsten liegst du richtig: 1/12volt pro halbton. das ist zumindest standard bei den meisten analogen synths. aber es gibt auch ausnahmen, die korg MS haben dagen eine andere kennlinie. (hertz/volt -> linear)

    der wandler sollte es so umsetzen:
    note 0 -> 0/12volt ..... 0volt
    note 1 -> 1/12volt
    note 2 -> 2/12volt
    ....etc
     
  3. -FX-

    -FX- Tach

    OK Danke, werde das ganze mal umsetzen sobald ich genug Zeit dafür habe.

    Wenn mir die Auflösung des "nur" 8 Bit DACs keine Probleme macht habe ich dann vielleicht bald ein Super Lowcost Simpliest-Face :)
     
  4. serenadi

    serenadi Tach

    Die Steuerspannung ist linear, da hast Du recht.
    Die Frequenzen verhalten sich aber exponentiell. Es ist ja 1V pro Oktave, wobei die Oktave ja Frequenz-Verdopplung bedeutet (A=440Hz, A'=880Hz, A''=1760Hz usw).
    Aber bei der Programmierung der Steuerspannungen brauchen dich die (durch andere Geräte erzeugten) Frequenzen ja gar nicht zu interessieren.
     
  5. wie kommst du auf 8 bit ? ;-)

    midi spezifiziert alle datenvalues auf 7 oder 14 bit, je nachdem welchen parameter du wandeln möchtest.


    am einfachsten realisierst du einen entsprechenden wandler über ein diskret aufgebautes latch und eine R2R kette aus metallfilmwiderständen...
     
  6. Anonymous

    Anonymous Guest

    So wie hier?

    http://www.ucapps.de/mbhp_aout_lc.html
     
  7. jo... die ucapps-schaltungen kann man sehr gut als ausgangsbasis nehmen, entweder 1:1 übernehmen... oder ändern/erweitern.
     
  8. -FX-

    -FX- Tach

    Mir ist klar, dass ich nur 7 Bit benötige, nur die handelsüblichen IC-Wandler haben nunmal 4,8,10,12 oder 16 Bit.

    Durch die Toleranzen bleibt die Sorge, dass es bei 8 Bit doch noch merkbare Schwankungen geben könnte. Bei R2R ist das sogar noch ausgeprägter.

    Bei dem UCapps - Projekt stört mich ehrlich gesagt das Maxim-IC, sonst wäre das schon genau das richtige.

    Ausserdem wollte ich den ATMega8 und keinen PIC benutzen.

    Habe als Tip einen sehr günstigen per SPI ansteuerbaren 16-Bit-Wandler den es sogar bei Reichelt gibt genannt bekommen.

    Werde mir das Teil mal auf die Vormerk-Liste für die nächste Bestellung setzen ...
     
  9. Anonymous

    Anonymous Guest

    Bitte erstmal die Seite anschauen und dann urteilen.

    Nur das AOUT Modul benötigt den Maxim-IC, das AOUT_LC nicht.

    Die einzigen IC's, die Du da brauchst sind:

    2 x 74HC 595
    1 x TL072
     
  10. -FX-

    -FX- Tach

    Sorry ich war an der Arbeit, da habe ich nicht so die Zeit reinzusehen.

    So in R2R ist zwar schön und gut aber

    1) platzaufweniger
    2) bei Verwendung von MPR-Widerständen um an die Genauigkeit von fertigen DA-Wandlern ranzukommen (vielleicht mit MPR sogar zu überschreiten) ganz schön teuer. Die kosten bei Reichelt ja auch immerhin 40 Cent / Stück

    Zwar wäre Ucapps mit Sicherheit die einfachere Lösung aber bei Selbtbau lernt man mehr :D
     

Diese Seite empfehlen