Jump to content

MIDI-Master-Clock


Braintu
 Share

Recommended Posts

Hallo,

habe dieses Thema im Syth-Forum angesprochen:

http://www.synthesizerforum.de/synthesizer/viewtopic.php?p=107718#107718

Also es geht darum eine MIDI-Master-Clock zu bauen, welche diverse Geräte ein und ausschalten kann, einen Mastertakt halten kann...

Wenn jemand interesse hat, lasst doch mal drüber schreiben, was alles Sinn machen würde.

@TK: meinst du echt sowas geht in ner halben Stunde? also ich hab mal versucht sowas aufzubauen, hab aber nach kurzer Zeit aufgegeben. Naja liegt vermutlich dran, dass ich nicht wirklich Programmiererfahrung habe. Also ich kann ja mal so n kleines Productsheet erstellen - vielleicht findest dus ja so interessant, dass du es vielleicht einmal in einer ruhigen halben Stunde programmieren könntest  :)

Denke würd sich vielleicht auf deiner Seite garnicht so schlecht machen?!

Also schöne Grüße von

brain

Link to comment
Share on other sites

Hört sich gut an. Gibts jemanden der das Gerät fertig aufgebaut hat? - also ein paar Bilchen?

Ich dacht vielleicht noch an so Sachen wie zusätzlichen Pitchregler um Drumcomputer auch mal gescheit an Tempi anpassen zu können; Diverse Breakfunktionen, wie Takt, Beat und direkt....

Brain

Link to comment
Share on other sites

gibts;

ich weiß von einem seq (glaube von dr.bunsen), einfach mal hier und im wiki danach suchen...

und wegen dem "pitch-regler": ich vermute du meinst einen encoder; der ist per default schon dabei... steht auf der seite, die ich dir verlinkt habe:

Required hardware:

   o one MBHP_CORE module

   o one DINX1 module (or just a 74HC595 shift register + pull-up resistors)

   o one rotary encoder

   o 5 buttons

   o 2x16 LCD

grüße,

ac

Link to comment
Share on other sites

Hallo Brain,

ich hoffe, Du findest Deinen Artikel hier im deutschsprachigen Teil des Forums wieder.

Gibts jemanden der das Gerät fertig aufgebaut hat? - also ein paar Bilchen?

Ja, Sneakthief hat eine modifizierte Clockbox ohne Encoder in ein Ideal-Standardgehaeuse von Reichelt eingebaut: http://www.midibox.org/forum/index.php?topic=6147.0

Die Moeglichkeit, verschiedene MIDI Clocks auszugeben, und sie taksynchronisiert ein- und auszuschalten, halte ich fuer sehr sinnvoll. Und ich koennte diese Funktion mal auf die schnelle in die Clockbox einbauen, hierfuer muesste ich lediglich 0xf8 via "Bit Banging" auf die IO Pins geben: 128 uS Low-Pegel, 192 uS High-Pegel

Bleibt die Frage, wie das User Interface aussehen soll, aber hierzu hast Du Dir sicherlich schon Gedanken gemacht. Ich wuerde vorschlagen, dass Du die Beschreibung ins Wiki bringst, dann kann jeder daran herumbasteln, und am Ende haben wir eine neue Clockbox2 + eine fertige Dokumentation :)

Gruss,

        Thorsten.

Link to comment
Share on other sites

hallo Brain,

man kann das Bild dazu leider nicht sehen, weil man sich in deinem Wiki authentifizieren muss?

Du kannst das Bild dann auch direkt einbinden: {{http://myserver.de/mypic.jpg}}

Ich habe die Page außerdem auf der Startseite unter dem bekannten Titel ClockBox verlinkt!

Grüße,

Michael

Link to comment
Share on other sites

Ok, ich denke, dass im wesentlichen die MIDI Clock Ausgabe ueber bis zu 8 MIDI Out Ports und die Ansteuerung eines 7-Segment Displays als Beispiel interessant waeren, den Rest mueste jemand weiterprogrammieren, der die Hardware auch selbst aufbaut.

Hast Du C Kenntnisse?

Gruss,

        Thorsten.

Link to comment
Share on other sites

Hi,

also C-Kenntnisse hab ich. Wir haben halt ein Sem. programmiert, allerdings nur auf PC-basis, dh. alles immer WIN32-konsolenanwendungen.

Ich wäre bereit die Kiste aufzubauen, bräuchte aber Hilfe/Anleitung, da ich sowas noch nicht programmiert habe.

brain

Link to comment
Share on other sites

Hallo Brain,

das ist super! Bei mir ist die Situation so, dass ich so etwas zwar schnell auf die Beine stellen koennte, sie aber ohne die entspr. Hardware nicht testen kann. Bzw., wenn ich etwas blind programmiere, baue ich vielleicht einen Bug ein, den ich mit einer realen MIDIbox die vor mir steht sofort sehen wuerde.

Ausserdem liegt bei mir die Prioritaet momentan auf die Entwicklung von MBSEQ V3, anschliessend MBSID V2...

Deshalb moechte ich eigentlich nur die grundlegenden Funktionen einhacken und selber testen, den Rest muesstest Du dann weiterprogrammieren. Dabei wirst Du sicherlich die eine oder andere Idee fuer Verbesserungen haben, die Du dann selbst umsetzen kannst.

Ich habe heute mal die Funktion zum Senden von einem MIDI Clock ueber 8 Pins programmiert, auf dem Scope sieht es ganz gut aus. Die Pins lassen sich maskieren, und die Synchronisierung auf 1/4 Note klappt auch. Morgen werde ich mit den Clocks mal zwei MBSEQ, eine MBSID und einen RM1x ansteuern, wenn das funktioniert, werde ich die modifizierte "Clockbox" Variante veroeffentlichen. Darauf kannst Du dann aufsetzen.

Falls dann spezielle Programmierfragen offen sind, kann ich natuerlich weiterhelfen. Es gibt ein paar Programmierbeispiele auf meiner Webseite, welche die Grundlagen erklaeren.

Gruss,

        Thorsten.

Link to comment
Share on other sites

Hallo,

der Test ist erfolgreich verlaufen. Mir ist aufgefallen, dass es sehr unguenstig ist, wenn man den MIDI Clock einfach nur wegschaltet, weil der Sequenzer dann u.U die angespielten Noten solange haelt und nicht loslaesst, bis er wieder Clocks empfaengt. Deshalb sendet die Clockbox nun ein Stop Event wenn ein Slave angehalten werden soll (der Sequenzer stoppt dann alle Noten), und ein Continue Event wenn der Clock wieder freigeschaltet wird.

Weitere Details gibt es hier: http://www.midibox.org/forum/index.php?topic=5691.msg48932#msg48932

Die Play/Stop Button Logik entspricht nicht Deiner Beschreibung, aber sie laesst sich einfach anpassen (ich finde es so praktischer). Der Code steht in mclock.c

Gruss,

        Thorsten.

Link to comment
Share on other sites

Hi Thorsten.

Ich habs mir mal angeschaut. Eigentlich ists mit den Tastern auch so besser gelöst. Das andere Konzept ist aufwändiger und vermutlich wird mans auch kaum nutzen.

Mit der Midi-Clock kann man jetzt also 8 Kanäle zu und weg schalten! Dh. das ganze "Pitch-Management" wäre jetzt meine Sache. Das seh ich doch richtig, dass die Midi-Clock den Takt selbst erzeugt? - Also müsste ich den AD-Wert mit dem Takt erzeugen in zusammenhang bringen? Ich bin noch nicht durch das MIOS-System durchgestiegen, aber könntest du mir einfach mal den C-Code schicken, den du in die Clock geflashed hast?

Noch eine Sache: Ich hab mir mal den Interconnections-plan angeschaut und gesehen, dass du Start- und Stoptaster benutzt hast. Aber die Taster haben doch nur eine Funktion, soll heißen: es reicht doch ein Taster der dan "getoggelt" wird.? - oder seh ich da was falsch?

Schöne Grüße

Brain

Link to comment
Share on other sites

Hallo Brain,

die Pitch Funktion laesst sich aehnlich wie unter http://www.ucapps.de/mios_c_send_ain.html beschrieben realisieren - nur sendet man keine MIDI Events wenn der Fader bewegt wird, sondern aendert stattdessen die BPM Rate - das geht mit 'MCLOCK_BPMSet(pin_value >> 2);'

(pin_value ist ein 10bit Wert, mit ">> 2" wird er zu einem 8bit Wert)

Evtl. musst Du hier auch noch einen Offset (+48 oder so) hinzurechnen, ich weiss gerade nicht die minimale BPM Rate auswendig

Ich hab mir mal den Interconnections-plan angeschaut und gesehen, dass du Start- und Stoptaster benutzt hast. Aber die Taster haben doch nur eine Funktion, soll heißen: es reicht doch ein Taster der dan "getoggelt" wird.? - oder seh ich da was falsch?

Ich fand die Idee fuer eine separate Start und Stop Taste eigentlich sehr livetauglich. Wenn man bspw. mit dem naechsten Beat die ersten drei Clocks deaktivieren moechte, muss man nicht lange ueberlegen, welche Tasten man nun druecken darf (welcher Clock laeuft noch, welcher wurde bereits deaktiviert), man drueckt einfach auf die ersten drei Stop Tasten.

Gruss,

        Thorsten.

Link to comment
Share on other sites

Hallo.

Ich fand die Idee fuer eine separate Start und Stop Taste eigentlich sehr livetauglich. Wenn man bspw. mit dem naechsten Beat die ersten drei Clocks deaktivieren moechte, muss man nicht lange ueberlegen, welche Tasten man nun druecken darf

=> stimmt daran habe ich nicht gedacht ;-)

Also mit dem MIOS programmieren ist so eine Sache. Ich denke, dass ich noch ein bißchen brauche um das ganze soweit verstanden zu haben, um selbst zu programmieren. Ich denke ich werde mir in der nächsten Zeit mal die Core-Platine und eine paar In- und Outplatinen bestellen und dann das komplette MIOS mal installieren. Ich hab halt auch noch keiene PICs übers MIOS programmiert - und C für PICs hab ich auch noch nichts gescheites gefunden, aber ich werde mal die auf deiner HP beschriebene C-Variante probieren.

Die MIOS-Sachen auf deiner HP habe ich mir auch mal zu gemüte geführt, aber ich denke sowas versteht man am besten, wenn mans mal selber alles macht. Falls du ein paar Tips für den Einstieg hast...

Schöne Grüße

Brain

Link to comment
Share on other sites

also, C für PICs ist eigentlich nur C ohne irgendwas anderes dazu; mit bitoperatoren muss man sich allerdings erst mal anfreunden, um multiplikationen/divisionen großräumig umgehen zu können...

ansonsten kann ich nur empfehlen, das mf-(motorfader)-programm anzuschauen, das ist komplett in C-geschrieben...,

ein Blick ins applicationDev im Wiki schadet auch nichts:

http://www.midibox.org/dokuwiki/doku.php?id=application_development

...dort findest du auch nochmal die ganzen pin-tabellen, um einzelne pins in C ansprechen zu können (was du wahrscheinlich brauchst)...

ansonsten ist es eigentlich recht einfach, aber man muss höllenmäßig konzentriert sein und möglichst alles doppelt und dreifach nach buffer-overflows (zu kleine variablentypen, evtl. volatiles verwenden) abzusuchen...

Grüße,

ac

ps: bei Galileo gibt's ein super OpenBook über C (html) zum schnellen Nachlesen:

http://www.galileocomputing.de/openbook/c_von_a_bis_z/

Link to comment
Share on other sites

Hi AC, danke für den Buchtipp - ein gutes C-Buch kann man doch immer brauchen.

Ja ich denke C ist nicht das Thema, sondern durch die ganzen Funktionen durchzusteigen und soweit zu kommen, dass man programmieren und compilieren kann.

Ich werde mir mal in nächster Zeit mal ein bißchen von der Hardware zulegen und dann versuch ich das ganze mal!

Denn ich denke das MIOS-System ist so ausgereift, dass man damit noch einige MIDI-Sachen basteln kann ohne wie auch hier beschreiben sich um jedes Bit-Timing zu kümmern.

Schöne Grüße

Brain

Link to comment
Share on other sites

hmmm, also so ein bißchen steig ich langsam durch, aber ich versteh nicht wo das hauptprogramm ist.

also in main.c wird der pic und das mios als header includiert und dann werden eine menge leerer funktionen aufgerufen, aber es fehlt ja auch die int main(void)-funktion.

und vor allem muss doch irgendwo ein richtiger programmablauf stehen. weil in den funktionen in main steht ja auch "wird bei einem bestimmten ereignis vom mios aufgerufen"

Wo find ich das komplette mf-programm eigentlich???

MfG Brain

Link to comment
Share on other sites

hallo Braintu,

das mf-programm ist (wie alles andere zum downloaden auch) auf uCApps unter downloads.

die Funktionen, die du siehst, haben darüber im Kommentar eine Beschreibung, wozu sie da sind. z.B., musst du was in den Init() Bereich schreiben, wenn du was initialisieren möchtest, also beispielsweise einen Timer einreichten. Der Timer dann wiederum pollt die Funktion Timer() an... ganz einfach.

Wenn du etwas mit einem Button machen möchtest (=DIN) musst du nur die entsprechende Abfrage in die Funktion DIN_Notifiy_Change() schreiben, denn die wird von MIOS aufgerufen, sobald sich ein Wert eines DIN-Pin ändert.

Analog das gleiche mit AIN_Notify_Change()...

MIDI-Messages werden im MPROC_() abgefangen. Hier muss man nur zwischen einer kompletten 2- oder 3-byte langen Message unterscheiden -> MPROC_NotifyReceivedEvnt(); einer vorkonfigurierten MIDI-Message -> MPROC_NotifyFoundEvent() oder z.B. einem Statusbyte -> MPROC_NotifyReceivedByte()

Aber wie gesagt, steht eigentlich alles in den Kommentaren über der jeweiligen Funktion.

Grüße,

Michael

Link to comment
Share on other sites

MIOS ist das Hauptprogramm, dort befindet sich auch so etwas wie eine main() Funktion (die aber nicht so heisst). An MIOS selbst musst Du jedoch nichts aendern, es laeuft als Betriebssystem im Hintergrund, und ruft - wie von Michael erwaehnt - bei bestimmten Ereignissen die sogenannten "Hooks" auf. In diese Hooks kannst Du dann Deine eigenen Routinen einhaken.

Der wesentliche Vorteil dieser Methode ist, dass die MIOS Routinen assembleroptimiert und gut getestet sind - jede MIDIbox laeuft damit, egal ob Synthesizer, Sequenzer oder Controller

Gruss,

        Thorsten.

Link to comment
Share on other sites

  • 1 year later...

Hallo, ist die 7SEgment LED anzeige für BPM schon implementiert? weil auf dieser http://www.midibox.org/dokuwiki/doku.php?id=midimasterclock SKIZZE ist sie ja drauf, nur bei der Zugehörigen PDF nicht http://www.ucapps.de/mios/clockbox_multi.pdf

???

Frage, weil ich schon die multi clocbox mit LCD aufgebaut hab, und ich sie ein bißchen spärig finde, wollte deshalb ne kompakte platine entwerfen, mit 3 so 7segment anzeigen einen rotary und ein paart tasten.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...