Forum: Projekte & Code USB MIDI Controller mit Effekt Software f. Gitarre


von Philipp B. (oddgit)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich hab mein erstes Projekt fertig gestellt und da ich hier im Forum 
viele Hilfestellungen erhalten habe, möchte ich es hier gerne kurz 
vorstellen.

Wie man dem Titel entnehmen kann, handelt es sich um einen 
Fußcontroller, der über USB MIDI Signale an den PC schickt. Die 
Effektsoftware empfängt die MIDI Signale und wird dadurch gesteuert. Je 
nachdem, über welche Soundkarte die Gitarre an den PC angeschlossen 
wurde, arbeitet die Software in Echtzeit, d.h. es sind keine Latenzen 
bei der Signalverarbeitung hörbar und man kann direkt über den PC 
Gitarre spielen.

Als Grundlage für den Controller dient das V-USB-MIDI Projekt:
http://cryptomys.de/horo/V-USB-MIDI/index.html

Das Ganze funktioniert ohne, dass ein spezieller Gerätetreiber benötigt 
wird. Ich habe es nur mit Windows 7 gestestet, gehe aber davon aus, dass 
es auch mit anderen Betriebssystemen kompatibel ist.
Ich habe einen ATmega8 verwendet, an den ich fünf Potentiometer, LEDs 
und Fußschalter angeschlossen habe. Je eines der Bauteile wird für ein 
Fußpedal verwendet (um z.B. einen Wah-Wah Effekt zu steuern). Für das 
Pedal habe ich ein altes Volume-Pedal ausgeschlachtet und in mein 
Gehäuse integriert.
Die Konvertierung der Spannungen von den 5 V Versorgungsspannung auf die 
3.3 V der USB Datenleitungen habe ich mit Zener Dioden realisiert, was 
prima funktioniert (siehe V-USB).
Das Gehäuse habe ich von meinem Vater laserschneiden lassen.

Das komplette Projekt (Schaltplan, Quelltext usw.) gibt es hier:
http://philaudio.wordpress.com/phi-t/phi-t-control/

Von dem Erfolg beflügelt, dass der Fußcontroller so prima funktioniert, 
habe ich dann die passende Effektsoftware dazu programmiert. Zum einen 
als VST Plugin, aber auch als Standalone Software. Dabei war die JUCE 
Library sehr hilfreich, da diese einen relativ einfachen Zugang zu den 
benötigten Schnittstellen (MIDI, VST, ASIO, usw.) ermöglicht:
http://www.rawmaterialsoftware.com

Die vom Controller gesendeten MIDI Daten steuern die Parameter der 
Software. Momentan habe ich vier Effekte implementiert:
- Verzerrer: Ziemlich heavy, für Metal Gitarre.
- Verstärker Simulation: Drive Regler und 3-Band Equalizer
- Delay
- Wah-Wah Effekt

Es gibt noch ein paar Unsauberheiten, aber prinzipiell klingt das ganze 
gar nicht mal so schlecht, finde ich. Für Anregungen bin ich dennoch 
sehr dankbar.

Die Software kann hier heruntergeladen werden:
http://philaudio.wordpress.com/phi-t/phi-t-effects/

Im Endeffekt musste ich feststellen, dass die Programmierung meines 
Effekts ungefähr das 10-fache an Zeit benötigt hat, wie den 
Fußcontroller zu bauen. Aber es hat sich gelohnt, ich hab einen Haufen 
dabei gelernt! ;)

Viele Grüße,
Philipp.

von Jannis C. (kabelwurm)


Lesenswert?

Hallo,
tolles Projekt, auch die Idee finde ich witzig.
Man stelle sich vor, man kann einfach so im Büro in der Mittagspause, 
Gitarre spielen.
:D
Gruß Jannis

von Philipp B. (oddgit)


Lesenswert?

Naja, so neu ist die Idee nicht ;) Es ist quasi die DIY Version dessen, 
was die namhaften Hersteller bereits auf dem Markt haben.

Ich hab mal ein paar Beispielsounds in Form eines kleinen Videos online 
gestellt, damit man sich besser vorstellen kann, in welche Richtung das 
Ganze geht:
http://philaudio.wordpress.com/phi-t/

Die Gitarre wird in dem Video nicht live gespielt, es wird eine Aufnahme 
in den Effekt eingespeist. Aber wie gesagt, es funktioniert auch, wenn 
direkt in Echtzeit über die Soundkarte des Computers gespielt wird. Nur 
hätte ich dann keine Hände frei gehabt. ;)

von Fender (Gast)


Lesenswert?

Hab mir das alles mal auf breadboard aufgebaut,weis aber nicht wie ich 
die fuses einstellen soll?
ich hab 0xc8 und 0xFF das USBgerät wird aber nicht erkannt.
Die effekte im vid sind cool.
Superidee mit dem Gerät,wenn auch nicht bühnentauglich

von Philipp B. (oddgit)


Lesenswert?

Fender schrieb:
> Hab mir das alles mal auf breadboard aufgebaut,weis aber nicht wie ich
> die fuses einstellen soll?
> ich hab 0xc8 und 0xFF das USBgerät wird aber nicht erkannt.
> Die effekte im vid sind cool.
> Superidee mit dem Gerät,wenn auch nicht bühnentauglich

Hi,

die Fuses hab ich soweit ich mich erinnern kann gar nicht groß 
verstellt. Du musst halt als Taktquelle einen externen Quarz auswählen 
("External Crystal/Ceramic Resonator") und diesen auf deine verwendete 
Frequenz einstellen.
Ich glaube es war folgendermaßen
CKOPT: 0
CKSEL3..1: 1 1 1
für Frequenzen > 1 MHz, aber ich bin mir nicht mehr sicher. Ich bin am 
WE daheim und schau da nochmal nach.

Ansonsten hab ich mich da genau an diese Beschreibung gehalten:
http://www.mikrocontroller.net/articles/AVR_Fuses


Naja, was heißt nicht bühnentauglich... ich hab das ganze schon in der 
Probe verwendet und gehe direkt aus der Soundkarte in die PA, bzw. nen 
aktiven Monitor. Das funktioniert schon, mit dem entsprechenden 
Audiointerface merkt man die Latenzen nicht. Die Sounds meiner 
Effektsoftware sind halt nicht so der Hit, einfach weil ich keine Zeit 
habe mich monatelang mit Amp-Modelling zu beschäftigen ;)
Aber dadurch, dass der Controller MIDI-Signale sendet, lässt sich das 
ganze ja auch mit kommerzieller Gitarrensoftware verwenden und da gibts 
schon einige, die das auch Live verwenden. Ich verwende den Controller 
auch zusammen mit Guitar Rig von Native Instruments oder unter Linux mit 
Guitarix, das funktioniert tadellos.
Aber du hast insofern Recht, als dass es weitaus mehr Eier hat, sich von 
nem 8x12er Fullstack anblasen zu lassen ;).

von Fender (Gast)


Lesenswert?

Hi Phillip
Vielen Dank für Deine Antwort.
Die Schaltung,funktioniert soweit,Was die schalter und Led´s 
angeht,allerdings mit deutlich kleineren ohmwerten für die Led´s ( diese 
sind ja so wie´s aussieht invertiert)
Mir sind aber die zusätzlichen 10k an den Potis noch nicht so klar? 
anyway

Ich wollte mir das Teil gerne für zuhause aufbauen für an dem Pc mal 
neue Sounds zu probieren hauptsächlich des Wah Wah-effektes wegen und 
weil das so schön ohne Kabelsalat und mixer soweiter geht.....wenn´s 
denn mal geht
Aber leider wird nur ein unbekanntes Usb.gerät angezeigt

Gruss
Nico

von Philipp B. (oddgit)


Lesenswert?

Ich hatte das Problem glaube ich auch, aber ich weiß nicht mehr genau an 
was es lag... ich muss schauen, wenn ich daheim bin.

Hast du die Quelltextoptimierung aktiviert? Das ist bei AVR echt 
wichtig, das war bei mir schon öfter die Ursache, wenn was nicht 
funktioniert hat. Mit welcher Entwicklungsumgebung arbeitest du?

von Fender (Gast)


Lesenswert?

Philipp B. schrieb:
>
> Hast du die Quelltextoptimierung aktiviert? Das ist bei AVR echt
> wichtig, das war bei mir schon öfter die Ursache, wenn was nicht
> funktioniert hat. Mit welcher Entwicklungsumgebung arbeitest du?
Nee ich habe das beinhaltende .hex file benutzt,weil ich keine Software 
zur Programmierung besitze.Glaub auch kaum,daß ich mich mit sowas 
zeitlich beschäftigen könnte...dann komme ich ja garnichtmehr zum 
Spielen ;-)
Wir haben im Übungsraum 1 Atari St mit cubase und einen Pc mit Audacity
Ansonsten ist bei uns alles eher ..classisch also combo´s Mixer ,Pa und 
analoge Effektgeräte

Gruss
 Nico

von Philipp B. (oddgit)


Lesenswert?

Ja, so schauts in unserem Proberaum schon auch aus. Die digitalen 
Geschichten spielen eher im Studiokontext eine Rolle.

Mist, wenn du die Hex Datei brennst, sollte es eigentlich klappen, das 
ist die aktuellste Version, die auf meinem auch läuft.

Zu den Fuses: Ich hab mir damals folgendes notiert, als ich die Fuses 
mit AVR Studio 5 eingestellt hab:
Im Falle eines 12 MHz Quarzes muss SUT_CKSEL auf EXTHIFXTALRES (Ext. 
Crystal/Resonator High Freq.) gestellt und CKOPT aktiviert werden.

Mehr habe ich an den Fuses nicht verändert. Hab den Controller mit 
Windows 7 und XP getestet.

Habe auch nochmal in meinen Aufschrieben geschaut. Ich hatte tatsächlich 
das gleiche Problem, dass das Programm erfolgreich kompiliert und auf 
den uC gebrannt werden konnte, aber dann der PC das USB Gerät nicht 
erkannt hat. Nachdem ich daraufhin die Quelltext Optimierung aktiviert 
habe, hats funktioniert (die Quelltextoptimierung findet man in AVR 
Studio 5 unter Projekt - <projektname>-Eigenschaften - Toolchain - 
Optimization).

Mehr kann ich so spontan leider auch nicht sagen...

von Fender (Gast)


Lesenswert?

So hab mich jetzt nochmal mit Avr-Studio und Winavr rumgeschlagen.
Leider ohne Erfolg weder ein virtueller comport ,noch ein Gerät inm 
Gerätemanager zu finden
Hab auch zu wenig Kenntnisse in diesen Dingen
Werd mir wohl was anderes suchen müssen
Trotzdem viele Dank für Deine Bemühungen

Gruss
Nico

von Fender (Gast)


Lesenswert?

So,hab mich doch nochmal reingehängt und das Problem mit der Erkennung 
beseitigt.
Hab aber noch ´ne Frage und zwar:
Ist es normal,daß die Schalterstellungen nicht angezeigt werden,solange 
dasDing nicht mit irgend ´ner Software komuniziert.


Gruss
Nico

von Philipp B. (oddgit)


Lesenswert?

Fender schrieb:
> So,hab mich doch nochmal reingehängt und das Problem mit der Erkennung
> beseitigt.
> Hab aber noch ´ne Frage und zwar:
> Ist es normal,daß die Schalterstellungen nicht angezeigt werden,solange
> dasDing nicht mit irgend ´ner Software komuniziert.
>
>
> Gruss
> Nico

Oha, woran lags denn jetzt?

Nein, dass ist nicht normal. Das kann eigentlich auch gar nicht sein, 
weil das Gerät ausschließlich MIDI Signale sendet, aber nix empfängt. 
Die Funktion, in der ankommende Events ausgewertet werden, gibt einfach 
0 zurück.

von Fender (Gast)


Lesenswert?

Liegt eher an meinem mangelnden Verständniss,was Midi im Allgemeinen 
betrifft
Das mit der Nichterkennung des Gerätes,führe ich mal auf die langen 
Kabel und im Allgemeinen dem Breadboardaufbau zurück
Hab mir jetzt mal ne ordentliche Platine geätzt und schwupp´s gig´s :-)
Herrmann seip´s VST_Host aufgespielt und da läuft Dein Plugin... Also 
ich hab ez endlich nen Signal am Ausgang.Dadurch,daß das Midigerät jetzt 
eingebunden ist,werden auch die Schalterstellungen am Board ordentlich 
angezeigt(allerdings ist das irgendwie alles invertiert),aber egal,es 
werden auch Mididaten übertragen bloß regeln lässt sich da noch nix.Mit 
der Maus geht es schonmal und ich kann wenigstens schonmal die Sounds 
testen :-)
Tja vom Analogmusiker zum PC freak dauert es wohl noch, anyway´s
Bin jedoch von der Idee  immernoch voll begeistert

Wird denn das Projekt noch weiterentwickelt,oder bleibt das so wie´s 
ist?

Gruss
Nico

von Philipp B. (oddgit)


Lesenswert?

Fender schrieb:
> [...]
> Herrmann seip´s VST_Host aufgespielt und da läuft Dein Plugin... Also
> ich hab ez endlich nen Signal am Ausgang.Dadurch,daß das Midigerät jetzt
> eingebunden ist,werden auch die Schalterstellungen am Board ordentlich
> angezeigt(allerdings ist das irgendwie alles invertiert),aber egal,es
> werden auch Mididaten übertragen bloß regeln lässt sich da noch nix.

Wie meinst das, dass sich noch nix regeln lässt?

Fender schrieb:
> [...]
> Tja vom Analogmusiker zum PC freak dauert es wohl noch, anyway´s
> Bin jedoch von der Idee  immernoch voll begeistert
>
> Wird denn das Projekt noch weiterentwickelt,oder bleibt das so wie´s
> ist?
>
> Gruss
> Nico

Ich muss gestehen, dass das im Moment alles ein bisschen auf Eis liegt, 
da ich bei einer Firma meine Abschlussarbeit schreibe und schlicht und 
ergreifend keine Zeit habe.
Ich hab schon einige Ideen, wie man die Sounds verbessern könnte und es 
gibt auch nach wie vor Bugs in der Software (das Delay funktioniert 
immernoch nicht gescheit). Vielleicht komm ich in den Semesterferien 
dazu, ein bisschen weiter zu basteln.

von Fender (Gast)


Lesenswert?

Also Es ist so,daß ich das Plugin in sofern benutzen kann,das ich die 
Potis drehe und im im Plugin diese auch die Werte beeinflussen,jedoch 
ist es mir noch nicht möglich die einzelnen Effekte über das Mididevice 
zu schalten.D.h ich muss mit der Maus wählen Z.B. Wah an,dann kann ich 
das Paddle (in meinem Fall Pot2) steuern.Schalte ich um,geht die 
entsprechende LED an aber im Plugin ändert sich nix.(was aber erstmal 
net soo schlimm ist)
Das Gerät,steigt allerdings oft aus beim rumschalten
Also software beenden, usbe  aus und wieder einstecken, software starten 
dann geht´s wieder

Also Potiknöppe kann man drehen wie wild aber beim Schalten nach 5-6x 
c.a.
legt  das Ding den Hörer auf ( die LED´s bleiben dann dort wo sie gerade 
sind und nix geht mehr)
Alles auch irgendwie sehr zappelig
...,ist  quasi wie bei ´nem Optokoppler mit offenen Eingängen

Das war ja auch das Problem mit dem Breadboard,deswegen hab ich eine 
Platinen gemacht mit kurzen Wegen ..überall Kondensatoren.soweiter

Leider kenne ich mich mit MCs überhaupt nicht aus.
Kann es sein daß die Schalter prellen und dadurch ein Problem bei der 
Übertragung entstehen kann?
Ach ja und nochmals die Frage: ist das so richtig,daß die Schalter alle 
invertiert sind
Also switche geschlossen  LED aus switch geöffnet Led an?

Hoffe,ich nerve nich zu sehr mit meinen Fragen

Ansonsten schonmal vielen Dank für Deine Hilfe und die Schaltung 
natürlich.
Das Taktell, bau ich mir auch gerade nach
Nette Internetseite

Gruss
Nico

von Philipp B. (oddgit)


Lesenswert?

Normalerweise sollte es so sein, dass die LEDs genau den LEDs der 
Software entsprechen. Also Effekt an, LED an und das Ding in der 
Software gelb.

Die Schalter sind softwaremäßig entprellt, bei mir funktioniert alles, 
ohne dass das Teil irgendwann nicht mehr erkannt wird. Bist du sicher, 
dass du Schalter verwendest, die nach dem Drücken ihren Zustand 
beibehalten oder hast du Taster, die beim Loslassen den Kontakt wieder 
öffnen?

Die Software ist so aufgebaut, dass der Zustand des Schalters in einer 
Endlosschleife abgefragt wird. Wird ein Schalter geschlossen, wird der 
Pin auf Masse gezogen und die LED wird abgeschaltet. Dann wird einmalig 
eine MidiMessage an den PC geschickt (Midi Control Change = 0). Wird der 
Schalter irgendwann wieder geöffnet, wird der Pin über einen internen 
Pull-Up auf High gezogen und die LED wird angeschaltet (Midi Control 
Change = 127).

Geschlossener Schalter bedeutet am Pin liegt 0 V, bedeutet LED ist aus 
und der entsprechende Effekt sollte in der Software deaktiviert sein.

von Fender (Gast)


Lesenswert?

Hm also eigentlich ganz simpel
Ich habe bisher  mit pinheder und jumpern probiert, werd jetzt mal 
Schiebeschalter einlöten
Dat wird schon......muss ja ;-)

Gruss
Nico

von Philipp B. (oddgit)


Lesenswert?

Wegen kleinerer Umstrukturierungen meines Blogs sind die Links im ersten 
Beitrag nicht mehr aktuell...

Daher hier die aktuellen Verweise zum Video...
http://philaudio.wordpress.com/projects/phi-t/

...zum MIDI Controller...
http://philaudio.wordpress.com/projects/phi-t/phi-t-control/

...und zur Software...
http://philaudio.wordpress.com/projects/phi-t/phi-t-effects/

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.