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?!
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…
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
Hi Michael hab mir sowas fast gedacht. Hab leider keine Möglichkeit das Bild auf einen Server zu legen. Wäre nett wenn jemand hier aus dem Forum ein paar kB frei hätte.
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.
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.
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.
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
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?
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.
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…
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:
…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:
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.