Impressum | Datenschutz | Shop | DIY | TT @ Twitter | TT-Cabs
Anzeigen der neuesten Beiträge

Entwicklung eines Midi-Switching-Systems auf Arduino-Basis

  • 145 Antworten
  • 75823 Aufrufe

0 Mitglieder und 1 Gast betrachten dieses Thema.

*

Offline Dirk

  • Dirk M.
  • Administrator
  • YaBB God
  • *****
  • 12.955
  • 2T or not 2T
Versorgungsspannung der Relais über ein Relais frei geben welches vom µC direkt geschaltet wird und erst nachdem der Expander fertig ist ?

Du könntest auch mal die Demo von Bascom laden und damit das Programm erstellen um zu sehen ob es an Deinem Programm oder wirklich der Hardware liegt.

In Bascom müsste das Programm so aussehen (die Taktrate $crystal muss aber noch auf Dein Qarz eingestellt werden und das Beispiel ist für einen Atmega816)

$regfile "m168def.dat"
$PROG &HFF , &HCF , &HDF , &HF9
$crystal = 7372800

Config Sda = Portd.5
Config Scl = Portd.4

Const Pcf8574write = &H70
Const Pcf8574read = &H71

Do
  I2cstart
  I2cwbyte Pcf8574write
  I2cwbyte 0
  I2cstop
  Waitms 500
  Reset Portd.6
  I2cstart
  I2cwbyte Pcf8574write
  I2cwbyte 255
  I2cstop
  Waitms 500
Loop

End

Gruß, Dirk

Für Support und Produktanfragen bitte das offizielle Kontaktformular im Shop verwenden. PMs werden nicht beantwortet.

*

Offline Nils H.

  • YaBB God
  • *****
  • 3.067
Versorgungsspannung der Relais über ein Relais frei geben welches vom µC direkt geschaltet wird und erst nachdem der Expander fertig ist ?
Gruß, Dirk

Genau so mache ich's jetzt, ich gebe nach der Businit-Routine über einen freien Pin (gut, dass noch einer da ist  ;D ) die Spannung für die Relais frei. Zwischen Pin und Relais ist noch ein kleiner Schalttransistor, damit der µC die Last nicht direkt schalten muss. Sind zwar nur 12,5 mA, aber 2,2 mA finde ich entspannter.

Gruß und gute Nacht
Nils

*

Offline Nils H.

  • YaBB God
  • *****
  • 3.067
Das Hirn funktioniert besser, wenn man 'ne Nacht geschlafen hat.

Die zwei Sekunden entstehen natürlich durch den Bootloader, der auf ein Programm wartet und erst dann die Software startet.
 
Gruß, Nils

*

Offline Dirk

  • Dirk M.
  • Administrator
  • YaBB God
  • *****
  • 12.955
  • 2T or not 2T
Die zwei Sekunden entstehen natürlich durch den Bootloader, der auf ein Programm wartet und erst dann die Software startet.

Was für ein Bootloader ? Verwendest Du einen Arduino Atmel ?

Gruß, Dirk
Für Support und Produktanfragen bitte das offizielle Kontaktformular im Shop verwenden. PMs werden nicht beantwortet.

*

Offline Nils H.

  • YaBB God
  • *****
  • 3.067
Moin Dirk,

ich hatte das weiter oben schon mal geschrieben, ich habe auf dem µC einen Arduino Bootloader installiert, um den Controller über den UART / per USB programmieren zu können (außerdem habe ich beim Rackgerät eh den ISP-Wannenstecker weggelassen). Ich hab allerdings keinen Arduino-Atmel gekauft, sondern den Bootloader mit meinem Programmiergerät selbst auf den nackten Controller gebrannt. Sonst sind die ja viel zu teuer  ;D .Ich hab den Bootloader außerdem selbst kompiliert, weil ich irgendwas anpassen musste - kann mich aber nicht mehr erinnern, was.

Wenn ich das Teil endgültig zusammen- und ins Rack baue, kommt der Bootloader vorher wieder runter. Ich hab das auch mal ausprobiert, ohne Bootloader kommt das Relais für die Einschaltverzögerung quasi sofort nach dem Einschalten. Ob die Einschaltverzögerung jetzt sinnlos war oder nicht, lasse ich mal dahin gestellt. Schaden tut's nicht, wenn man die Relaisspannung per µC überwachen kann.


Ich nutze die Gelgegenheit dann gleich mal für ein Resümee, denn gestern ist die Software für die Rackeinheit quasi fertig geworden. Zusammenfassend hat meine Anlage jetzt folgende Features:


Floorboard

Features:
  • 16 numerische Taster zur Programm- (Presetmodus) bzw. Effektwahl (Stompboxmodus), dazu Up/Down/Edit/Direct, 20 LED und ein großes 2x16 Zeichen LCD
  • Preset- und Stompboxmodus
  • 400 Presets in 25 Bänken zu 16 Presets
  • Für jeden der 16 Midikanäle ein Gerät namentlich anlegbar
  • über die 16 Taster Zugriff auf 32 Instant Access Taster, jeder Taster also doppelt belegt (Shiftfunktion)
  • Presetwechsel im Stompboxmodus über Up/Down möglich
  • Pro Preset können bis zu 16 PC- und 32 CC-Befehle gesendet werden
  • Vier Modi für die Fußtaster: Taster, Schalter, Schalter mit senden des gespeicherten Status bei Presetwechsel, Tap Tempo[1]
Fehlende Features / To Do:
  • Mischbetrieb aus Preset- und Stompboxmodus, also z.B. Vier Preset- und 12 IA-Taster: Weiß nicht ob ich das noch realisiere, mal abwarten, ob ich's brauche. Mein Bedarf, Presets zu schalten, ist überschaubar, der Stompboxmodus ist zu 95% der, den ich brauche.
  • Tastergruppen: Taster, die sich gegenseitig zurücksetzen, z.B. für Kanalwahl am Amp - Kanal 1 / 2 / 3, und immer nur einer darf aktiv sein. Mache ich evtl. noch
  • Die Software hat im Bereich des Editierens noch ein paar Bugs / Inkonsistenzen in der Menü- und Benutzerführung. Funktionell ist alles top, von daher bleibt das wahrschinlich liegen  ;D .
  • Zugriff auf die Shiftfunktion der Taster: Bisher schalte per dezidiertem Taster zwischen 1-16 und 17-32 um. Schön wäre, durch langes Drücken die Sekundärfunktion des Tasters auslösen zu können. Funktioniert auch, beißt sich aber, wenn ein Fußtaster als Tastfunktion eingerichtet ist. Habe ich noch keine Lösung für, ist mir aber das wichtigste fehlende Feature und wird daher bestimmt irgendwie noch kommen.
  • Eventuell baue ich beim Presetabruf noch mal eine Verzögerung von ein paar Milisekunden zwischen dem Senden von PC und CC ein. Bei meinem G-Major2 habe ich festgestellt, dass die CCs für die Effektblöcke ohne Probleme ausgewertet werden, die CCs für die Modifikatoren (ich nutze z.B. MOD2 zur Geschwindigkeitsumschaltung des Vibe) scheinen aber verloren zu gegen.

Rackeinheit


Features:
  • 12 Loops organisiert in drei Ketten zu je vier Loops
  • 6 potentialfreie Schaltkontakte
  • Anzeige des Loop-/Schalterstatus per LED [2]
  • Hardwareseitig vorbereitet für bis zu 32 Relais, 18 bisher genutzt
  • Empfang auf Midikanal 1
  • Schalten der Relais über CC#
Fehlende Features / To Do:
  • Keine Presets, keine Programmierung
  • Midikanal nicht[3] konfigurierbar
  • CC# nicht[3] konfigurierbar
[1] Die Tap Tempo Funktion ist noch unausgereift. Ein Tap Taster arbeitet wie ein Schalter, aber die LED blinkt dann im getappten Tempo. Derzeit gibt es nur eine Timerroutine dafür, also auch nur einen LED-Blinkrythmus. Außerdem verschluckt sich das ganze manchmal. Ist also noch Überarbeitungsbedarf da.

[2] Die LED sind nicht programmierbar, sondern den Relais einfach parallel geschaltet

[3] Nicht ohne Eingriff in die Software. Für den Midikanal baue ich evtl. noch ein Mäuseklavier ein, Einstellbarkeit der CC# bringt für mich keinen Mehrwert.


An der Floorboardsoftware mache ich auf jeden Fall noch was, die Rackeinheit ist für meinen Bedarf, glaube ich, fertig, die kommt diese oder nächste Woche wieder ins Rack.

Insgesamt bin ich sehr zufrieden mit dem vorläufigen Ausgang des Projekts, weil ich auch sehr viel dabei gelernt habe - für mich immer fast wichtiger als die Fertigstellung der eigentlichen Gerätschaft. Mein Ziel, meine Anlage zu midifizieren und so die Bedienung meiner Pedale unter einen Hut zu bringen mit 19"-Gerätschaften habe ich, wenn auch erst nach sehr langer Zeit, erreicht. Beide Geräte sind sehr schnell. Latenzen konnte ich bisher nicht feststellen, zumindest sind sie nicht spürbar.

Dem aktuellen Stand der Technik hinken meine Gerätschaften natürlich schon wieder hoffnungslos hinterher - siehe z.B. die Entwicklung der RJM- oder der Axefx-Controller. Andererseits bieten meine Teile schon jetzt deutlich komplexere Möglichkeiten als ich brauche, insofern: Who cares.

Die nächsten Tage gehe ich noch mal über alle Platinen und Pläne und schaue, wie komplett und fehlerfrei die sind, und dann stelle ich die noch mal ein. Wie immer gilt bei mir aber, dass das Zeug eher als Infomaterial nutzbar denn nachbaubar ist, weil beim Aufbau auch wieder einiges improvisiert wurde.

Wer die Software haben will, kann sich bei mir melden. Den (letzten?) Softwarestand werde ich dann wahrscheinlich auch hier einstellen. Auch hier gilt: Nur bedingt zum Nachbau geeignet. Und, ich hab's schon mal gesagt, ich bin programmiermäßig eher ein Rookie, weshalb der Code weder schön noch resourcenschonend oder besonders performant ist. Besserer Code käme möglicherweise mit einem kleineren Controller als dem 328P aus, aber da ich nicht in Serie gehe noch mal: Who cares.

In diesem Sinne,
Nils
« Letzte Änderung: 6.01.2014 10:24 von Nils H. »

*

Offline Dirk

  • Dirk M.
  • Administrator
  • YaBB God
  • *****
  • 12.955
  • 2T or not 2T
ich hatte das weiter oben schon mal geschrieben,

das habe ich doch jetzt glatt übersehen...  ;D

Aber mal eine bescheidene Frage: braucht man wirklich solch ein grosses Board ? Bei meinem Controller der fast fertig ist habe ich mich auf 8 Patches pro Preset festgelegt und 5 Presets pro Bank. Damit kann ich dann mit einem Tastendruck 8 verschiedene MIDI-Befehle (PC oder CC) auf 8 verschiedenen Kanälen raus schicken, was nach meiner Ansicht gut 95% der Anforderungen erschlägt.
Außerdem ist der Controller so kompakt wie möglich ausgelegt und in der Grundfunktion bereits mit 3 Tasten (7 Tasten maximal) zu bedienen damit zu wenig Platz wie möglich auf dem Board verwendet werden muss.
Na ja, es sind halt zwei total unterschiedliche Konzepte, aber hast Du wirklich so viele Midi-Geräte ?

Gruß, Dirk


Für Support und Produktanfragen bitte das offizielle Kontaktformular im Shop verwenden. PMs werden nicht beantwortet.

*

Offline Nils H.

  • YaBB God
  • *****
  • 3.067
Moin Dirk,

das habe ich doch jetzt glatt übersehen...  ;D

Aber mal eine bescheidene Frage: braucht man wirklich solch ein grosses Board ? Bei meinem Controller der fast fertig ist habe ich mich auf 8 Patches pro Preset festgelegt und 5 Presets pro Bank. Damit kann ich dann mit einem Tastendruck 8 verschiedene MIDI-Befehle (PC oder CC) auf 8 verschiedenen Kanälen raus schicken, was nach meiner Ansicht gut 95% der Anforderungen erschlägt.
Außerdem ist der Controller so kompakt wie möglich ausgelegt und in der Grundfunktion bereits mit 3 Tasten (7 Tasten maximal) zu bedienen damit zu wenig Platz wie möglich auf dem Board verwendet werden muss.
Na ja, es sind halt zwei total unterschiedliche Konzepte, aber hast Du wirklich so viele Midi-Geräte ?

Gruß, Dirk

Naja wer braucht das schon.... ;) das ist auch viel "weil's geht" dabei.

Das Midiboard an sich muss schon so "groß" sein, weil es eben mein Ersatz fürs Pedalboard ist. Ich hab's oben schon angedeutet, bin kein Presetspieler, sondern klassischer Stompboxer. Im Rack habe ich 8 Pedale, dazu ein G-Sharp und seit ein paar Monaten ein G-Major 2. Das G-Sharp nutze ich im Prinzip als Einzeleffekt, am G-Major so drei oder vier Presets, von denen eines mein "Standardpreset" ist, bei dem ich per CC die Effektblöcke ein- und ausschalte. Dazu kommen noch die sechs Schaltausgänge, die ich alle nutze - drei für Kanalwahl und Boost am Amp, einmal Speed am Rotosphere und zwei für einen selbstgebauten Phase45, bei dem ich zwischen zwei Geschwindigkeiten und Vibrato umschalten kann. So erklärt sich mein Bedarf an physischen Tastern.

Natürlich habe ich keine 16 Midi-Geräte. Ob ich in der Boardsoftware aber nun 2, 8 oder 16 unterbringe macht keinen Unterschied (naja ein paar Bytes im EEPROM), und die Geräte 3-16 sind ja auch deaktiviert. Von den 32 (virtuellen) Tastern nutze ich aber tatsächlich die erste Ebene vollständig und die zweite zur Hälfte.

Zum Rackgerät: 10 der 12 Loops sind in Benutzung, und alle der 6 Schaltausgänge, insofern war es schon sinnvoll, bei der Auslegung der Mikrocontrollersteuerung von vorneherein Raum für Erweiterung zu lassen. Außerdem kommt's auch hier nicht drauf an, ob ich drei Portexpander mit ULN2803 verbaue, oder gleich vier davon.

Wie gesagt, mein Setup läuft zu 95% im Stompboxmodus, weswegen ich den großen Controller tatsächlich brauche. Der Rest ist "nur" Software und frißt kein Brot, und die Stellen, an denen ich ohne Verluste hätte herunterskalieren können haben keinen großen Programmieraufwand gekostet. Und einiges ist halt auch "Proof of Concept", weil's geht und meine übliche Gigantomanie  :devil: .

Gruß, Nils

*

Offline Nils H.

  • YaBB God
  • *****
  • 3.067
damit zu wenig Platz wie möglich auf dem Board verwendet werden muss.

Um das noch mal heraus zu stellen: Der Controller IST ja mein Board.... ich hab sonst nix vor den Füßen außer Wah und Tuner.

*

Offline Dirk

  • Dirk M.
  • Administrator
  • YaBB God
  • *****
  • 12.955
  • 2T or not 2T
Hi,

Danke dir für die Ausführung.
Wie schon oben angedeutet geht es in der Tat um zwei verschiedene Konzepte. Und da ist man in der Tat mit den µCs sehr flexibel.

Gruß, Dirk
Für Support und Produktanfragen bitte das offizielle Kontaktformular im Shop verwenden. PMs werden nicht beantwortet.

*

Offline Nils H.

  • YaBB God
  • *****
  • 3.067
Und da ist man in der Tat mit den µCs sehr flexibel.

Ich bin da im Moment auch sehr begeistert von. Die Midigeschichte war jetzt das erste Mal, dass ich was mit Miktrocontrollern gemacht habe, aber bestimmt nicht das letzte  ;D . Wenn man's erst mal begriffen hat, wie's geht, macht's auch echt Laune.

*

Offline Nils H.

  • YaBB God
  • *****
  • 3.067
Moin Dirk,

PS: da fällt mir noch ein konntest Du das Dumpen der Bank/Preset-Daten vom und zum µC realisieren ?

um das noch mal aufzugreifen: Im Moment läuft's gerade recht gut (gestern Abend konnte ich erstaunlich problemlos die Routinen für das Abfragen von zwei Expressionpedalen implementieren), habe ich mir vorgenommen, die Bulk-Dump-Baustelle als nächste anzugreifen. Sofern man keine eigene Software schreiben will (ich jedenfalls nicht), funktioniert das ja wohl über Sysex, unter Windows geht das wohl ganz gut mit MIDI-OX, für OS-X und Linux gibt's da bestimmt auch Entsprechungen. Die Grundlagen zum Protokoll liefert ja der entsprechende Abschnitt im Wikipedia-Artikel, ich werde die Tage da mal dran basteln.

Gruß, Nils
 

*

Offline Nils H.

  • YaBB God
  • *****
  • 3.067
Re: Entwicklung eines Midi-Switching-Systems auf Arduino-Basis
« Antwort #116 am: 17.01.2014 22:55 »
Moin,

weil ich gerade alles im Wohnzimmer stehen habe stelle ich mal zwei Bilder ein. Dem Controller habe ich heute mal eine etwas hübschere Beschriftung verpasst. Ansonsten hat das System morgen seinen ersten Liveeinsatz auf der Geburtstagsparty unseres Keyboarders. Ich hoffe, es stürzt nicht zwischendurch ab  :devil: .

Gruß, Nils

*

Offline kugelblitz

  • YaBB God
  • *****
  • 1.724
  • be seeing you...
Re: Entwicklung eines Midi-Switching-Systems auf Arduino-Basis
« Antwort #117 am: 17.01.2014 23:56 »
 :topjob: nice, vorallem scheinbar den  hinteren Deckel als Pedalboard zu benutzen :) wollte ich auch immer aber bei meinem geht es sich leider nicht aus (6HE und hinten ist die Steckerleiste im Weg :( )

Gruß,
Sepp

*

Offline Nils H.

  • YaBB God
  • *****
  • 3.067
Re: Entwicklung eines Midi-Switching-Systems auf Arduino-Basis
« Antwort #118 am: 17.01.2014 23:58 »
den  hinteren Deckel als Pedalboard zu benutzen

nope, ist ein separates Pedalcase. Der Karm würde in den Deckel auch gar nicht reinpassen, und dann ginge der Deckel auch gar nicht zu  ;) .

*

Offline kugelblitz

  • YaBB God
  • *****
  • 1.724
  • be seeing you...
Re: Entwicklung eines Midi-Switching-Systems auf Arduino-Basis
« Antwort #119 am: 18.01.2014 00:10 »
Ah ich dachte schon, dann hast du das gleiche Problem...