Supersimples Midi -> CV Interface

3

3456778674

Guest
Wie hier: viewtopic.php?f=13&t=58211&start=25 schon mal angedroht, nimmt das supersimple Midi-Interface langsam Form an.

Ziel: mit möglichst wenigen, möglichst einfachen (.. ähm.. alles bei Reichelt bestellbar...) Teilen ein Basis Midi-> CV Interface zu bauen.

Derzeit brauche ich:
- einen Spannungsregler
- eine Wandwarze (bzw. Saft aus vorhandenem Synth, der Stromverbrauch ist vertretbar. )
- einen ATMEGA 88 (µController, programmiert, kann man von mir zum Selbstkostenpreis bekommen, hat dann einen Bootlader, so das Softwareupdates per Midi/Sys-Ex gehen. )
- einen oder zwei MCP4922 (günstiger 2 Kanal 12-Bit-DAC)
- einen 6N138 (Optokoppler)
- das übliche Kleinzeugs. (Taster, LED, ein paar Widerstände, Kondensatoren und ein Quarz)

Das ganze ist so einfach, dass es sich auf einer Lochrasterplatine aufbauen lässt. Wenn es Bedarf gibt kann man da auch eine Platine machen, wenn dann noch ein paar Features dazukommen, dann gibt es aber schnell andere Teile die das gleich können und kostengünstig zu kaufen sind.

Der Quelltext für den Controller ist komplett in C und steht unter der GPL. Die Entwicklungsumgebung kann man bei ATMEL kostenlos herunterladen. Damit kann dann auch jeder an seinem Kontroller rumprogrammieren, falls spezielle Wünsche bestehen. (Midi-Sync-baren LFO kann man ebenso programmieren, wie eine Hüllkurve, Pitch-Bend oder Portamento (ohne weiter Hardware) sind auch drin. Das einzige was im Controller knapp ist, ist RAM/EEPROM, d.h. alles was Speicher verbraucht stößt schnell an Grenzen. )

Die Wandler sind multiplizierend, wer mag kann da ein (leider nur unipolares) Signal durchschicken - das spart einen VCA. Für Velocity->VCA eine einfache Lösung.

Um die Schaltung einfach zu halten, nehme ich das Wandler-Ausgangssignal direkt her, das geht dann von 0 bis 5V. Das sind zwar nur 5 Oktave Umfang, dafür aber mit etwa 1,2 mV Auflösung, entsprechend etwa 1,5Cent.

Das ganze ist also eher für einfache Systeme gedacht - oder als Basis für eigene, spezielle Lösungen.
Wer ein dickes Interface mit 1000 Features haben möchte, ist mit anderen Lösungen besser dran.

Der Prototyp läuft soweit, wenn hier Interesse besteht, dann zeichne ich mal den Schaltplan dazu.
 
So, erste Version....


Der einstellbar LM317 Spannungsregler muss nicht sein, ist aber ganz praktisch, da man damit die CV-Skalierung feintrimmen kann. Wer mag, kann da auch einen 7805 Festregler nehmen, und das per Software trimmen.
 

Anhänge

  • simpel-cv.gif
    simpel-cv.gif
    61 KB · Aufrufe: 1.683
... und so etwa sieht das dann in echt aus (mein bisheriger Prototyp läuft auf einer anderen Platine, da ist noch anderes Gerümpel drauf, das will ich euch nicht zumuten) . )

Der Aufbau ist eher luftig, dann hat man noch etwas Platz, wenn man doch noch das eine oder andere dazufingern will.
 

Anhänge

  • simpel-cv-1.jpg
    simpel-cv-1.jpg
    106,7 KB · Aufrufe: 1.658
Hey,

Den würde ich auch gerne realisieren. Stellst du deinen Quellcode auch zur Verfügung?

Wäre eine gute Möglichkeit die Grundkenntnisse in C aus dem Studium mal anzuwenden. Natürlich würde der auch nicht an dritte einfach weiter gereicht :)

Gruss,

Tobi
 
Der Code steht unter der GPL* und weiterreichen ist ausdrücklich erwünscht.

Der Code ist fast der gleiche wie für den "MCV876 mit Atmel-Controller" Umbau, der steht ja schon hier im Wiki. Pinbelegung, DAC-Ansteuerung und DAC-Wert-Berechnung angepasst, fertig. Steht nur noch nicht Online, weil ich noch etwas dran rumbastel.


*GNU Public Licence, die erlaubt freie Verwendung, allerdings muss der Quellcode immer wieder verfügbar sein, wenn man etwas mit verändertem Code weitergibt. Wenn jemand die Schaltung gewerblich verkaufen will, dann darf er das ausdrücklich, er muss eben nur den Quelltext wieder zur Verfügung stellen, falls dieser nicht Original ist, sonst auf das Original verweisen.
 
Ah, ein Thread der mich endlich vom passiven Lesen zum Registrieren gebracht hat. An dieser Stelle: Servus allerseits!

Zum Thema: mit einem AVR Basiertem MIDI-to-CV Konverter habe ich mich zumindest gedanklich seit längerem befasst und wenn man bei gut erhältlichen Teilen bleiben mag, so würde meine Hardware-Wahl nicht anders aussehen. Vielleicht würde ich es mit einem ATtiny85 versuchen. Habe ein paar viel versprechende Versuche mit V-USB (MIDI over USB) gemacht und bin der Meinung dass man grad so mit den verfügbaren Pins auskommen müsste um parallel zum USB auch I2C für die DAC(s) bedienen zu können.

Eine weitere Überlegung war: wie machen es die andere? Ein Blick unter die Haube bei Döpfer: http://www.doepfer.de/A100_pictures/a-190-3.jpg - hier wird ein Quad 8Bit DAC (TLC5620CN http://www.ti.com/litv/pdf/slas081e) angesteuert mit einem PIC. Offenbar reicht die 8-Bit Auflösung und der PIC eignet sich prima als USB Interface. Was ich dort gesehen habe und in deiner Schaltung vermisse ist ein OP-Amp zum Buffern. Hier kommt natürlich auf den DAC, habe die Datenblätter was die Belastungsfähigkeit der analogen Ausgänge angeht nicht verglichen.

Eine weitere Idee wäre so einen CV Konverter etwas auszubauen und um eine Tuning-Funktion zu erweitern. Einen selbst gebauten VCO müsste man dann gar nicht so perfekt kalibrieren, sondern mit einer Lookup-Table in der Firmware des CV Converters verbinden. Zum Auto-Tunen würde man also das Rechtecksignal des VCOs zurück zum CV Konverter leiten und die besagte Tabelle für MIDI Note -> DAC Value aufbauen können.

Hat schon einer mit einem PWM Signal mit einem Lowpass-Filter als CV herumexperimentiert?
 
Für Auto-Tuning braucht man (mindestens) 12Bit. (Und da habe ich schon drüber nachgedacht... der Preliminary Stempel ist u.a. der Tatsache geschuldet, das ich noch mal gucken wollte, die Timer-Pins nicht unnötig belegt zu haben... )

8Bit-Wandler sind nicht so dolle, die gehen schon etwas aufs Tuning. Und preislich sind die Microchip-Wandler mit 2,10€/Stück doch voll ok, oder?
Mit 12 Bit Wandlern kann immerhin schon mal Glide oder Pitch-Bend in Software probieren.

Die "fehlenden" Puffer-OPs sind schlichtweg dem "supersimpel" zum Opfer gefallen. Denn eigentlich kommt man mit den 0...5V so schon sehr gut hin.

USB hat den Nachteil der fehlenden galvanischen Trennung. Außerdem braucht man für USB halt den Protokoll-Stack und einen Controller, der auch USB hat. Die USB-per-Software Lösung gefällt mir nicht. Alleine die USB-Geschichte zum laufen zu bringen dürfte mehr Zeit kosten, als hier die ganze Software gebraucht hat.

Der ATmega hat einen UART (f. Midi) und ein SPI-Interface (für den Wandler). Dadurch ist das alles sehr geradeaus zu programmieren, und damit auch entsprechend fehlerfarm. Außerdem hat man dann genug Rechenpower über, um auch mal eine Hüllkurve oder einen LFO in Software zu machen.
 
ich habe noch ein wenig näher hin geschau und glaube fast, dass Döpfer 2 DACs zusammenschaltet um auf 16 Bit für 1v/oct zu kommen? Ich weiß nicht, ob das nicht eine Milchmädchen-Rechnung ist, ich beschäftige mich mit dem ganzen Lötkram erst seit einem halben Jahr.
 
Super feines Projekt - wenn man den Schaltplan für Anfänger wie mich aufbauen würde und ich den PIC nicht selber brennen müsste .......
Wenn ich das richtig sehe hat die Version 2 x CV und ein Gate ....
Die Idee mit dem Ersatz(vom MCV876) des Controller-PIC's und der Verwendung von 12bit DAC ist mir super sympatisch ....
auch wenn es gegen die "supersimpel"-Basis-Idee verstösst - Frage: könnte man den noch erweitern -> CV/GATE? (klar, bei Modular muss ja ein bischen Grössenwahn sein .. oder :) )
 
Der Controller ist ein Atmel ATMega, kein PIC. Den gibt es bei mir, vorprogrammiert zum Selbstkostenpreis. Da ist dann auch ein Bootlader drinnen, so dass man ihn einfach über Midi mit neuer Software updaten kann.

Solche "neue Software" kann sich sogar jeder, der etwas programmieren kann, selber anpassen. Denn die Entwicklungsumgebung, die man dazu braucht, kann man bei ATMEL kostenlos runterladen, und ein kleines Tool, was dann aus der Programmdatei ein "Midi-Sys-Ex" macht, gibt es auch schon.

2 weitere CV sind kein Problem, dafür braucht man nur einen weiteren Wandlerchip (SCK und SDI werden parallel geschaltet, der neue /CS kommt an einen freien Controllerport).

Ein paar mehr Gates (=einfache Steuerausgänge) sind noch einfacher, die kommen direkt an eines der freien Controller-Beinchen - fertig.

In der Software sind derzeit halt die Funktionen aus meiner MCV876 Lösung drinnen (s. Wiki), die zu Nutzen ist sehr einfach. Weitere Funktionen erfordern dann noch ein paar Zeilen Code, manches eher einfach, anderes schon etwas aufwendiger.
 
nordcore schrieb:
Der Controller ist ein Atmel ATMega, kein PIC. Den gibt es bei mir, vorprogrammiert zum Selbstkostenpreis. Da ist dann auch ein Bootlader drinnen, so das man ihn einfach über Midi mit neuer Software updaten kann.

Solche "neue Software" kann sich sogar jeder, der etwas programmieren kann, selber anpassen. Denn die Entwicklungsumgebung, die man dazu braucht, kann man bei ATMEL kostenlos runterladen, und ein kleines Tool, was dann aus der Programmdatei ein "Midi-Sys-Ex" macht, gibt es auch schon.

2 weitere CV sind kein Problem, dafür braucht man nur einen weiteren Wandlerchip (SCK und SDI werden parallel geschaltet, der neue /CS kommt an einen freien Controllerport).

Ein paar mehr Gates (=einfache Steuerausgänge) sind noch einfacher, die kommen direkt an eines der freien Controller-Beinchen - fertig.

In der Software sind derzeit halt die Funktionen aus meiner MCV876 Lösung drinnen (s. Wiki), die zu Nutzen ist sehr einfach. Weitere Funktionen erfordern dann noch ein paar Zeilen Code, manches eher einfach, anderes schon etwas aufwendiger.

Sorry für die dummen Fragen, bin erst seid kurzem DIYer und noch nicht so bewandert im Vokabular ..... aber ich glaube die Idee gefällt mir so gut, das ich mit von der Party bin ....... Lochrasterplatine habe ich noch rumliegen ..... :)
 
pulsar schrieb:
Zum Auto-Tunen würde man also das Rechtecksignal des VCOs zurück zum CV Konverter
Sägezahn, Sinus oder Dreieck gehen auch, denn der ATMega hat einen analogen Komparator und kann dessen Ausgangssignal mit seinem 16Bit-Timer ausstoppen. Der Eingang braucht nur etwas Pegel (Schaltschwelle bei ca. 1,2V), was aber im Modularsystem gar kein Problem darstellt. Ein Widerstand (der kümmert sich um zu große Eingangsspannungen) und fertig ist der Tune-Eingang.

Da weiß man doch gleich wieder, warum man so einen sündhaft teuren Controllerchip (3,55€/Stück) hergenommen hat.
 
nordcore schrieb:
Der Controller ist ein Atmel ATMega, kein PIC. Den gibt es bei mir, vorprogrammiert zum Selbstkostenpreis

Ich glaube für den Einstieg werde ich dann doch lieber auf das Angebot zurückkommen. Daher -----> PN
 
nordcore schrieb:
pulsar schrieb:
Zum Auto-Tunen würde man also das Rechtecksignal des VCOs zurück zum CV Konverter
Sägezahn, Sinus oder Dreieck gehen auch, denn der ATMega hat einen analogen Komparator und kann dessen Ausgangssignal mit seinem 16Bit-Timer ausstoppen. Der Eingang braucht nur etwas Pegel (Schaltschwelle bei ca. 1,2V), was aber im Modularsystem gar kein Problem darstellt. Ein Widerstand (der kümmert sich um zu große Eingangsspannungen) und fertig ist der Tune-Eingang.

Da weiß man doch gleich wieder, warum man so einen sündhaft teuren Controllerchip (3,55€/Stück) hergenommen hat.

Haben nicht alle AT(mega|tiny) einen Comparator drauf? Zumindest müsste das in allen mit einem echten PWM Ausgang mit dabei sein. Ich habe hier ein paar 168er und einen USBProg hier herumliegen. Würde mich also als Hilfe beim Debuggen gerne anbieten.

Man könnte auch für relativ wenig Geld Platinen in China machen lassen und das ganze als Bausatz zum Selbstkostenpreis weitergeben. Wollte schon seit längerem den PCB Service von Seeedstudio testen. 5x5cm dual layer PCB 10 Stück: $10 + Versand - http://www.seeedstudio.com/depot/fusion ... ?cPath=185 - Natürlich nachdem man einige Prototypen getestet und testen lassen hat.
 
So, der Aufbau läuft....


... und so sieht das von der Lötseite aus:
 

Anhänge

  • scv-loet.jpg
    scv-loet.jpg
    163 KB · Aufrufe: 1.518
  • scv-test.jpg
    scv-test.jpg
    154,9 KB · Aufrufe: 1.526
+1

habe mich mal ein wenig in den C-Code des MCV-Updates aus der Wiki und das Datenblatt des Amtel eingelesen ...... schon der Hammer was mit dem Ding möglich ist ......
 
... ich halte den Lochrasteraufbau inzwischen für etwas grenzwertig (Aufwand, Fehleranfälligkeit) ... ich denke mal, da fahren die meisten mit einer Platine besser. Vor allem, wenn man dann doch eher auf 4 statt auf 2CV hinaus will.

Weitere GATEs (bzw. Clock-Out) sind im Lochraster unproblematisch, die bestehen ja nur aus dem Steckverbinder.

Insofern werde ich den einfachen Lochrasteraufbau, genau so, wie gezeigt, dokumentieren, dann ist der fertig. Aber alles weitere geht dann eher in Richtung Platine. Den Schaltplan habe ich schon mal in Eagle eingegeben...

Einfache Platinen (ohne Lötstopplack und ohne Bestückungsdruck) aus dem Prototypen-Service kosten unter 10€/Stück, das ist also nicht so das Problem.
 
Der Taster macht die Bedienung: kräftig Vorstellen, was du willst, drauf drücken, fertig.

(Kanal-Einstellung, "tiefste Note" Einstellung, Interface-Total-Reset, Panik-Button (=All Note Off), je nachdem wann und wie lange man ihn drückt. Ist etwas nervig, geht aber besser als zu befürchten. Anleitung steht im Wiki (https://www.sequencer.de/synth/index.php ... #Bedienung ) ... )


Midi-Clock gibt es sozusagen schon, der Clock-Ausgang muss nur angeschlossen (und in der Software auf den richtigen Pin gelegt) werden.
Das sind dann zwei Signale: Midi-Clock und Midi-Start/Stop. Die Clock (1/2, 1/4, 1/16 ....) kann man derzeit per SysEx einstellen, da hatte ich aber überlegt, ein Poti für herzunehmen. (Das effektiv als Drehschalter arbeitet, ist nur billiger und hat weniger Strippen. Mindestens 12 Stellungen lassen sich da passabel unterbringen. )
 
nordcore schrieb:
Der Taster macht die Bedienung: kräftig Vorstellen, was du willst, drauf drücken, fertig.

(Kanal-Einstellung, "tiefste Note" Einstellung, Interface-Total-Reset, Panik-Button (=All Note Off), je nachdem wann und wie lange man ihn drückt. Ist etwas nervig, geht aber besser als zu befürchten. Anleitung steht im Wiki (https://www.sequencer.de/synth/index.php ... #Bedienung ) ... )


Midi-Clock gibt es sozusagen schon, der Clock-Ausgang muss nur angeschlossen (und in der Software auf den richtigen Pin gelegt) werden.
Das sind dann zwei Signale: Midi-Clock und Midi-Start/Stop. Die Clock (1/2, 1/4, 1/16 ....) kann man derzeit per SysEx einstellen, da hatte ich aber überlegt, ein Poti für herzunehmen. (Das effektiv als Drehschalter arbeitet, ist nur billiger und hat weniger Strippen. Mindestens 12 Stellungen lassen sich da passabel unterbringen. )

klingt gut! koenntest du den potiwert im atmel nicht abgreifen und per software das umschalten auf 1/2, 1/4 etc erledigen lassen? dann waere ein drehschalter ueberfluessig. ich hab sowas mal auf einem arduino programmiert. ist eigentlich relativ simpel und ließe ggf. auch per cv dann steuern.
 
a.xul schrieb:
klingt gut! koenntest du den potiwert im atmel nicht abgreifen und per software das umschalten auf 1/2, 1/4 etc erledigen lassen? dann waere ein drehschalter ueberfluessig. ich hab sowas mal auf einem arduino programmiert. ist eigentlich relativ simpel und ließe ggf. auch per cv dann steuern.

Wäre das nicht was viel???? Reicht nicht eine Clock und dann ein Clockdivider als Modul??
Ich meine, ich könnte auch mehr CV's gebrauchen (8 wären nett) und der Multi_2 Mode wir auch seeehr interessant wenn ich denn dann ein paar VCO's habe .....

Die Software kann man sich ja anpassen (oder lassen) - ne Platine die beim löten zulässt, das man wahlweise nen PCB oder PCD als Gate nimmt oder zu nem MCP weiterleitet wäre natürlich der Hammer --- (so Art alternative Aufbauten)
Frage ist nämlich, wenn man das einmal fertig hat - wie oft man dann via Sysex dadrin noch rumfummelt - ich würde den einmal fertig machen und dann nurnoch updates rüberschieben ("o.k. dran denken nen 2ten Amtle mit zu bestellen falls ich einen bricke" *höhö*)
 
ungleichklang schrieb:
a.xul schrieb:
klingt gut! koenntest du den potiwert im atmel nicht abgreifen und per software das umschalten auf 1/2, 1/4 etc erledigen lassen? dann waere ein drehschalter ueberfluessig. ich hab sowas mal auf einem arduino programmiert. ist eigentlich relativ simpel und ließe ggf. auch per cv dann steuern.

Wäre das nicht was viel???? Reicht nicht eine Clock und dann ein Clockdivider als Modul??
ich halte einen drehschalter mit 12 stellungen und die dann zu verloeten fuer viel, auch noch ein extra divider als modul waere viel. 1 poti mit 3 pins und einem clockausgang ohne extra cmos mit auf der platine waere eleganter. den teiler per cv zu steuern ist ja nur eine idee. koennte dann ja jeder selbst fuer sich machen.
 
a.xul schrieb:
koenntest du den potiwert im atmel nicht abgreifen und per software das umschalten auf 1/2, 1/4 etc erledigen lassen?
Jupp, genau so hatte ich das gemeint (und geplant).

ungleichklang schrieb:
("o.k. dran denken nen 2ten Amtle mit zu bestellen falls ich einen bricke" *höhö*)

Den Controller kann man nicht bricken. Zumindest so lange man die Updates nur über Midi/Sys-Ex macht.
Denn es gibt einen extra Bootlader(bereich), den man auf die Weise nicht überschreiben kann. Egal, was für einen Murks man da reinschiesst: Beim Einschalten die Taste festhalten, und er geht in einen "Bootlader-Modus", in dem er auf ein neues File (per Midi) wartet.

(Kleine Begriffsklärung: "Bricken" ist ein Ableitung von engl. "brick"=Ziegelstein, und meint das verwandeln eines Gerätes durch ein schief gegangenes Software-Update in einen Gegenstand mit grob vergleichbarem Nutzwert. Kommt bei DVD-Laufwerken, Routern, DSL-Modems usw. schon mal vor ... )
 


Neueste Beiträge

Zurück
Oben