da mein 808 Clone nun schon fast fertig ist suche ich nach einem geeigneten Midiinterface. Ein Aout habe ich bereits, dann müssten zwar ein paar Instrumente ein und die selbe Velocity Leitung nehmen, die wichtigsten haben aber eine eigene - wäre also kein Problem.
Das große Problem bei der Midibox CV ist aber, dass ich nur 8 Gates habe, aber 12 brauche. Kann man da kein DOUT dran anschließen und so ein paar mehr Gates bereitstellen? Hallucinogen hat das bei seiner 808 so gemacht - musste dann aber wahrscheinlich auch die Firmware anpassen, was ich auf keinen Fall hinbekommen würde
Wenn es da wirklich keine Lösung für gibt, bleiben mir nur 2 Möglichkeiten.
Ich verzichte auf Velocity, dann kann man aber nicht so schöne organische Patterns machen
Ich baue ein Midio128 und eine MidiboxCV und baue beide ein - was nen ganzen Core verschwenden würde.
ich weiss nicht, ob ich jetzt total auf dem schlauch stehe, aber wenn du velocity steuern willst, brauchst du doch zusätzliche cvs und nicht gates!?!
falls es dir auf mehr gates ankommt: ich dachte immer es stehen 10x gate zur verfügung: 2x auf dem aout und 8x beim core - aber vielleicht stehe ich auch da etwas daneben!?!
Nein die Sache ist so: Die 808 hat 12 Instrumente, die alle Trigger/Gate und Velocity BRÄUCHTEN. Da man mit einem aout aber nur 8 mal Velo steuern kann teilen sich 5 Instruemente eine Leitung, was auch nicht schlimm ist, solange BD, HH, SD etc dynamisch gespielt werden können.
Trigger/Gate könnten sich zwar mehrere Instrumente teilen, dann kann man die aber nicht mehr zur gleichen Zeit benutzen.
Naja ob jetzt 8 oder 10 - mir fehlen dummer Weise immer noch 2 dann
Richtig cool würde mein Vorhaben dann, wenn der aout multiplexer von der midibox cv unterstüzt würde, wobei ich mit 8 mal Velo leben könnte, nur solange Gate/Trigger fehlen ist das ganze halt sinnlos leider.
Das es hardwaremäßig geht, sieht man bei hallucinogen nur kann ich halt die Software nicht selber anpassen.
Brauchst halt zwei Cores, macht ja nüx, hoff ich. Solange du ein festen Patch benutzt (und das hört sich ja danach an) sollte es der Funktionalität überhaupt keinen Abbruch tun.
ne das ist doch nicht im sinne des erfinders - nen zweiten core der sich dann mit midio “an den füßen spielt”
ich habe heute die anwendung von hallucinogen bekommen (fetten dank an dieser stelle!)
funzt dann auch ohne display - einfach nen core + dout + aout und es macht exact was ich brauche - speilt man noten ab c2 so wird der erste dout 1ms getriggert - aout1 gibt velocity aus, note d2 = dout2 + aout2 usw…
ist schon sehr speziell die anwendung, dennoch sollte man an dieser stelle mal über die einbindung der dout’s als trigger/gate’s in midibox cv nachdenken, denn mir fallen da ja direkt noch mehr anwenungen dafür ein… wobei richtig sinnig wird die midibox-cv-dout-erweiterung erst mir dem aout multiplexer, denn die meisten leute brauchen wohl zu jedem trigger auch velocity (bräuchte ich ja auch, gehe aber vorerst den kompromiss ein, dass sich mehrere instrumente eine leitung teilen)
wenn man mal so das netz durchstöbert ist die midibox cv die mit abstand beste und günstigste lösung, wäre von daher sehr cool wenn man das noch ausbauen könnte.
mit ca. 10 zusaetzlichen Codezeilen in main.asm koennte man bis zu 128 digitale gates hinzufuegen. Doch die waeren dann nur statisch vergeben (heisst: feste Note, fester Kanal).
ja das wäre doch ne option, denn so viele gates bräuchte man ja eigentlich wirklich nur für nen vintage drummer - dann könnte man sagen kanal 10 und ab c2. wenn das möglich wäre, wäre doch super. ich habe wie gesagt so programmiertechnisch überhaupt nix aufm kasten *schäm* aber wie bei deinen anderen app’s könnte man das ja einbauen so das der user das mit einer zeile anschalten könnte.
ich denke da vor allem an die midifizierung der 808 (auch der gekauften), denn was da im netz so an midi-kits angeboten wird ist echt super teuer und teils auch wirklich nicht so der brüller (selbst teure midi-kits haben ein gate zu wenig, so dass man sich entscheiden muss auf welches instrument man verzichten muss).
naja bin jetzt auch echt am überlegen was ich mir baue - ich glaube ich baue zur sicherheit ne platine mit lcd und multiplexer auf, so kann ich die anwendung von halucinogen benutzen und wenn das mit den gates und dem multiplexer mal klappt kann ich umswitchen auf midibox cv und habe dann auch genug velo leitungen - den rest kann ich dann auch rausführen für andere sachen. habe auch ein paar 909 clones gebaut, kick und snare, die ich im moment mit meiner 606 triggere - die hätten dann auch direkt ein ordentliches interface
aber mal zurück zu den “paar zeilen code”: wenn du die statisch vergibst, wäre immer noch das problem der zuordnung - was ich meine ist folgendes: bei nur 8 velo leitungen müsste es so sein, dass der erste dout getriggert wird und der erste aout die velo ausgibt - ab dem 8. dout müsste immer der 8 aout die velo ausgeben, also auch beim 9. 10. usw dout. wäre das machbar?
aber mal zurück zu den “paar zeilen code”: wenn du die statisch vergibst, wäre immer noch das problem der zuordnung - was ich meine ist folgendes: bei nur 8 velo leitungen müsste es so sein, dass der erste dout getriggert wird und der erste aout die velo ausgibt - ab dem 8. dout müsste immer der 8 aout die velo ausgeben, also auch beim 9. 10. usw dout. wäre das machbar?
Jeder CV Kanal bietet unter anderem einen eigenen MIDI Kanal, einen Event Typ, und eine Split Zone.
Du muesstest also lediglich alle CVs auf den gleichen MIDI Kanal legen, den Event Typ Velocity anwaehlen, und die Split Zones auf eine oder mehrere Noten setzen.
Die Gates des entspr. CV Kanals koenntest Du somit ebenfalls verwenden. Und die restlichen Gates liefert dann die 10-Zeilen-Erweiterung ueber das/die DOUT register
also ich habe gerade bei reichelt die benötigten teile bestellt - auch nen display, werde also dann die komplette cv bauen mit nem dout x2 und erstmal auf hallocinogens code verzichten (kann ich ja wenns gar nicht hinhaut immer noch benutzen).
ich denke ende nächster woche habe ich alles zusammengebaut - leider fehlt mir der 6007b hatte bei maxim samples geordert, die kamen auch, aber nicht dran gedacht dass ich den auch brauche - irgendne ahnung wo ich den her bekomme?
wenn das teil dann vor mir liegt kann man besser sprechen/testen als so theoretisch…
allerdings muss ich wirklich dazu sagen, dass wenn mir niemand die 10 zeilen vorgibt, ich das wohl nicht hinbekommen werde. naja mal abwarten, die platine mit aout/dout/core ist fertig und ich warte auf die teile…
Grüße, Chris
EDIT: Gerade noch mal mit der netten Dame von Maxim gesprochen - der 6007 kommt im laufe der Woche nach…
Das ist wirklich ein erstaunlich guter Support von Maxim!
Code Aenderung: folgendes gehoert in das main.asm (nach dem USER_MPROC_NotifyReceivedEvent Label suchen…):
USER_MPROC_NotifyReceivedEvent
;; BEGIN --- control DOUT pins via Note events at channel #1
movf MIOS_PARAMETER1, W ; Note Off -> Note On with velocity 0
andlw 0xf0
xorlw 0x80
bnz USER_MPROC_NRE_NoNoteOff
USER_MPROC_NRE_NoteOff
bsf MIOS_PARAMETER1, 4
clrf MIOS_PARAMETER3
USER_MPROC_NRE_NoNoteOff
movlw 0x90 ; check for Note On at channel #1
IFNEQ MIOS_PARAMETER1, ACCESS, rgoto USER_MPROC_NRE_NoNoteChn1
USER_MPROC_NRE_NoteChn1
;; MIOS_DOUT_PinSet expects pin number in WREG, value in MIOS_PARAMETER1
movf MIOS_PARAMETER3, W ; velocity == 0: off, velocity != 0: on
skpz
movlw 0x01
movwf MIOS_PARAMETER1
movf MIOS_PARAMETER2, W ; pin number: note number - 0x24, we start with C-2
addlw -0x24
andlw 0x7f
call MIOS_DOUT_PinSet
USER_MPROC_NRE_NoNoteChn1
;; END --- control DOUT pins via Note events at channel #1
[/code]
Es sind uebrigens nur deshalb mehr wie 10 Zeilen, weil ich noch eine automatische Note Off-\>Note On Konvertierung eingebaut habe.
Die wesentlich besser dokumentierte C version befindet sich uebrigens hier: [http://www.ucapps.de/mios\_c\_set\_dout.html](http://www.ucapps.de/mios_c_set_dout.html)
Doch MBCV vertraegt sich nicht mit C...
Gruss,
Thorsten.
danke erstmal - ich denke ende nächster woche kann ich es testen. werd mich dann noch mal melden.
zu maxim:
hab da auch erzählt das ich lehrer sei und wir in einer ag in der schule ein projekt machen würden für das die schüler die chips brauchen *lol* "wären wir super dankbar wenn sie uns netter weise… " und schon waren die bei maxim natürlich feuer und flamme - gut funktioniert nur einmal, dafür hab ich sie portofrei und kostenlos
wobei ich heute mittag mal nach dem 6007 geschaut habe - habe keinen distributor gefunden, wo man den kaufen könnte - nur bei maxim direkt - und dann muss man gleich 25 stück nehmen. wie bist du damals bei der entwicklung eigentlich dadrauf gekommen, die teueren maxim chips zu benutzen? gibts da nichts günstigeres?
wie bist du damals bei der entwicklung eigentlich dadrauf gekommen, die teueren maxim chips zu benutzen? gibts da nichts günstigeres?
Die Entscheidung ist mir damals auch nicht einfach gefallen, letztendlich habe ich mich an die Empfehlung von verschiedenen Leuten hier im Forum gehalten. Grundsaetzliche Vorteile das MAX525: gute Linearitaet (das ist bei einem MIDI CV wesentlich wichtiger als die Aufloesung!), 4 Kanaele on Chip (spart im Endeffekt Kosten wenn mehrere Kanaele benoetigt werden), serielles, kaskadierbares Interface (davon gibt es nicht so viele)
Na klar, es gibt tausende verschiedene DACs von vielen Firmen, und wer sich mit Hardware auskennt, sollte kein Problem damit haben, den Treiber an einen alternativen DAC anzupassen, hierfuer muessen nur wenige Zeilen im Code geaendert werden.
Doch leider kommt es nur extrem selten vor, dass jemand dem MIDIbox Projekt auch mal etwas zurueck gibt, in dem er bspw. solch eine Schaltung entwickeln, dokumentieren und vor allem supporten wuerde…
Ich hoffe, es ist verstaendlich, dass fuer mich selbst kein Interesse besteht, nun noch ein drittes AOUT Board anzubieten (mein persoenlicher Bedarf ist ja schon laengst gedeckt…)
sollte ja kein Vorwurf sein - verglichen mit komrz. MIDI-CV Adaptern ist das aout extrem leistungsstark und günstig. Hab auch einige günsdtigere dac’s gefunden aber du hast schon recht, wenn man die auf 8 hochrechnet wirds auch schon teurer - und was auch stimmt ist das viele dac’s sehr ungenau arbeiten, was vielen leuten aber auch egal ist da es “früher” ja auch ungenau war. nutzt man das aout aber für 1v/oktave sind gute dac’s natürlich von vorteil.
für meinen sid habe ich mir das lc halb (1channel) gebaut und steuere damit cutoff von einem externen filter - funzt auch zu 100% und das war extrem billig - hab noch nicht mal selected und es ist ok
ich eagle mir gerade ein netzteil für den 808 clonne. den gleichrichter und den 7805 vom core lasse ich natürlich wech und integriere das einfach in das hauptnetzteil, welches also +15/-15 und 5v für den core liefern soll.
jetzt die frage: der tl074 vom aout arbeitet ja auch mit +15/-15 volt - MUSS ich den wie in der doku vom aout mit +12/-12 betreiben oder kann ich den auch mit +15/-15v betreiben ohne, dass der rest des aout’s “leidet”?
ok die hardwaretestumgebung steht - jetzt das problem
hab mir die sources von midibox cv geladen
dann ein bischen gestöbert und mplab installiert (noch nie was mit assembler gemacht!)
dann habe ich ein neues project erstellt und einfach alle dateien aus dem midibox_cv verzeichniss hinzugefügt
dann ging es schon los: die original funktion die ich suchen sollte, habe ich auch gefunden - aber an welcher stelle muss ich den code da einfügen? einfuch in diesem label nach dem goto … ?? ich habe keine ahnung…
zweite frage ist dann: ich kann die main.asm ja dann speichern - wie kann ich dann compilieren? einfach den wizard benutzen und immer ok drücken?
so, der gesamte abschnitt bis zum nächsten kommentar sieht jetzt so aus:
;; --------------------------------------------------------------------------
;; This function is called by MIOS when a complete MIDI event has been received
;; Input:
;; o first MIDI event byte in MIOS_PARAMETER1
;; o second MIDI event byte in MIOS_PARAMETER2
;; o third MIDI event byte in MIOS_PARAMETER3
;; --------------------------------------------------------------------------
USER_MPROC_NotifyReceivedEvent
;; process MIDI event
call CV_MIDI_NotifyReceivedEvent
;; for best latency: branch to USER_Tick so that the new CV values
;; will be mapped immediately
rgoto USER_Tick
USER_MPROC_NotifyReceivedEvent
;; BEGIN --- control DOUT pins via Note events at channel #1
movf MIOS_PARAMETER1, W ; Note Off -> Note On with velocity 0
andlw 0xf0
xorlw 0x80
bnz USER_MPROC_NRE_NoNoteOff
USER_MPROC_NRE_NoteOff
bsf MIOS_PARAMETER1, 4
clrf MIOS_PARAMETER3
USER_MPROC_NRE_NoNoteOff
movlw 0x90 ; check for Note On at channel #1
IFNEQ MIOS_PARAMETER1, ACCESS, rgoto USER_MPROC_NRE_NoNoteChn1
USER_MPROC_NRE_NoteChn1
;; MIOS_DOUT_PinSet expects pin number in WREG, value in MIOS_PARAMETER1
movf MIOS_PARAMETER3, W ; velocity == 0: off, velocity != 0: on
skpz
movlw 0x01
movwf MIOS_PARAMETER1
movf MIOS_PARAMETER2, W ; pin number: note number - 0x24, we start with C-2
addlw -0x24
andlw 0x7f
call MIOS_DOUT_PinSet
USER_MPROC_NRE_NoNoteChn1
;; END --- control DOUT pins via Note events at channel #1
kompilieren ging mit f10 glaube ich - mal sehen ob’s geht - bin auf der arbeit und kann erst heut abend testen…
Zum bauen eines neues .hex Files kannst Du den MPASMWIN auch direkt aufrufen, das ist einfacher und weniger fehleranfaellig (ich traue dem Wizard nicht). Eine Anleitung gibt es hier: http://www.ucapps.de/howto_tools_mpasm.html
Mit deiner derzeitigen Variante wird es ein Problem geben (welches dann auch im main.err File erscheinen wird): das Label USER_MPROC_NotifyReceivedEvent existiert nun zweimal, es darf aber nur einmal gesetzt werden. Ein Label ist nichts anderes als ein Verweis auf eine Adresse.
Ein weiteres Problem: MIOS springt auf USER_MPROC_NotifyReceivedEvent, wenn ein neues Event empfangen wurde. Von dort aus wird die Funktion CV_MIDI_NotifyReceivedEvent aufgerufen, anschliessend verzweigt das Programm zu “USER_Tick”. Der Code dahinter wird also niemals aufgerufen.
Stattdessen muesstest Du den zusaetzlichen Code also vor das rgoto setzen. Oder noch besser, direkt unter das USER_MPROC_NotifyReceivedEvent Label (also vor dem call und vor dem rgoto) - dies ist auch der Grund, warum ich das Label in meinem Codeschnippsel angegeben habe
ok klappt auch nicht - naja jetzt habe ich noch ein anderes prob - der 7805 wird wegen den 18volt vom rinkerntraffo etwas “warm” *g* man kennt das ja - irgendwann bricht die spannung ein, so kann man nicht ordentlich testen - werde mal eben nach conrad fahren und nen kühlkörper kaufen
dann noch mal was: ich habe vorhin auch einfach mal die normale midibox-cv anwendung aufgespielt um mich mal ein wenig damit vertraut zu machen (so gut es ging, in 5 minuten intervallen weil der spannungsregler ja immer versagte) - eigentlich muss ich doch gar nix einstellen oder? der code den du gepostet hast bewirkt doch, das bei einem note event auf dem ersten channel, der entsprechende dout getriggert wird- richtig?
wenn ich also bei keyboard-zone als erste note C-2 einstelle - sonst habe ich auch noch gar nix konfiguriert - und dann ein c-2 spiele müsste also der erste dout getriggert werden, ooooder?
ok ich habs funktioniert - allerdings wurde ich etwa 2 stunden durch die fehlerhafte vorlage für das doutx2 aufgehalten - solltest du aus dem netz nehmen…
kein plan ob der rest nach meiner codeänderung noch geht - werde ich aber gleich noch testen und dann posten…
lustig ist auch, das ich zwar 5v habe wenn ich eine note spiele - aber aus irgendeinem grund kann ich damit nicht triggern *lol* - bedarf also noch ein wenig forschungsarbeit - hoffentlich hat es nichts mit der der dauer des triggern’s zu tun, hallocinogen schrieb mir, das er einen impuls von 1ms benutzt - naja muss mal sehen, hab auch kein oszi hier im moment, sonst würde ich mal messen was aus der 606 kommt - damit klappt es nämlich
wenn ich mit meinem finger den gate-in der 909-kick berühre kann ich sie damit triggern - nicht aber mit 5v aus dem dout - egal erstmal den rest bauen dann weiter testen…