Saitenzupfen bei E-Bass erkennen? [geschlossen]

Hat jemand eine Idee, wie ich das Zupfen einer Gitarrensaite mit einem Arduino erkennen kann (möglicherweise unter Verwendung des Tonabnehmersignals)?

Vielen Dank im Voraus ! ;)

Ist bereits ein Tonabnehmer verbaut? Können Sie die Gitarre modifizieren oder muss die Lösung ohne Änderungen am Instrument aus der Ferne funktionieren? Welchen Kenntnisstand hast du jetzt und was hast du schon probiert?

Antworten (3)

Sie müssen entscheiden, was ein Zupfen ist, aber das Erkennen von Berührungen ist mit kapazitiver Sensorik ganz einfach .

Vielleicht koppeln Sie das mit dem Tonabnehmersignal, um die berührte Saite damit zu korrelieren, wie stark sie gezupft wurde.

Ich würde empfehlen, das Signal vom Tonabnehmer zu verwenden, ähnlich wie es Andy aka vorschlägt, aber es muss komplizierter sein, um wirklich gut zu funktionieren:

  1. Wenn Sie ein Basssignal aufnehmen und weit hineinzoomen (z. B. mit Audacity), sehen Sie die einzelnen Schwingungen der Saite. Das Messen des Signals über die ADC-Funktion (Analog In in Arduinish) notiert nur den momentanen Wert irgendwo entlang der Wellenform; Was Sie jedoch brauchen, ist der Spitzenwert - Sie müssen viele Abtastungen sammeln und die "größten" davon verwenden (mit der größten Abweichung vom Mittelwert, z. B. 512). 50–100 solcher Abtastwerte, die über 20 ms genommen werden, würden ausreichen, um den Spitzenwert des Signals zu erkennen. Wenn Ihr Code nichts anderes tut, als das Basszupfen zu überwachen, können Sie den ADC einfach kontinuierlich abtasten, bis Sie 20 ms Daten angesammelt haben.
  2. Nur ein fester Schwellenwert, z. B. +/- 100, würde es von Ihrer Verstärkung und davon abhängig machen, wie stark Sie zupfen; Besonders wenn Sie einen Teil des Liedes leise spielen, kann es sein, dass es überhaupt nichts registriert! Eine viel bessere Lösung ist die Verwendung eines Beat-Erkennungsalgorithmus. Ich habe dieses bereits früher verwendet und es funktioniert gut, aber Sie können es natürlich so anpassen, dass es in Ihrem Fall einfacher ist.
  3. Das Zupfen einer einzelnen Saite führt zu einem Signal, dessen Amplitude mit der Zeit 1/x abklingt. Daher reicht jeder Beat-Erkennungsalgorithmus dafür aus. Einige Akkorde (Bassspieler verwenden normalerweise nicht zwei Saiten gleichzeitig, aber hey, es kann passieren) sind jedoch anders - aufgrund von Schwebungen ist die Form der Wellenform im großen Maßstab zyklisch lauter und leiser. Dies könnte Ihre Beat-Erkennung austricksen, aber ich denke, das Optimieren der Parameter würde dies vermeiden; Sie müssen mit Werten für solche komplexen Signale experimentieren.

Nun, Sie haben eine E-Bass-Gitarre, also ist es sinnvoll, den Tonabnehmer zu verwenden. Als nächstes benötigen Sie einen Pufferverstärker (wahrscheinlich mit etwas Verstärkung). Und dann können Sie den Ausgang des Pufferverstärkers (der auch als DC-Pegelverschiebung auf 2,5 V fungieren könnte) nehmen und ihn an einen ADC-Eingang Ihres Arduino anschließen. Wenn keine Saiten geschlagen, gezupft, gefingert, geklimpert oder anderweitig gestreichelt werden, sollten Sie ein Signal von etwa der halben Skala erhalten, und wenn ich mich richtig erinnere, sollte das ein digitaler Wert von etwa 512 sein. Es wird ein bisschen Rauschen geben und es hat gewonnen nicht in der Mitte auf 512 sein, aber es wird nahe dran sein.

Um zu erkennen, ob die Zeichenfolge manipuliert wurde, sollten Sie einen Code haben, der nach einem ADC-Wert sucht, der +/- 100 von der "neutralen" Position von 512 überschreitet.

Der Pufferverstärker kann mit einer nichtinvertierenden Operationsverstärkerkonfiguration mit einem Topf als Rückkopplungswiderstand (ändert die Verstärkung) hergestellt werden. Sie sollten den Bass-Tonabnehmer kapazitiv mit dem nicht invertierenden Eingang koppeln und einen Potentialteiler mit 220-kOhm-Widerständen bilden, damit der Eingang zum Operationsverstärker ebenfalls um 2,5 V zentriert ist.

Der Ausgang des Operationsverstärkers (wählen Sie einen Rail-to-Rail-Typ für maximalen Signalhub) wird direkt an einen ADC-Eingang angeschlossen. Stellen Sie sicher, dass Ihr Operationsverstärker mit 0 V und 5 V versorgt wird, um zu verhindern, dass übermäßige Ströme in den ADC-Eingang fließen.

Ich weiß nicht, wie schnell der Arduino abtasten kann oder wie lange, aber dies ist ein typischer Schnappschuss von (mich) beim Bassspielen: -

Geben Sie hier die Bildbeschreibung ein

Dies sind alles einzelne Noten in einem Stück, an dem ich arbeite, aber beachten Sie (LOL), wie die Wellenform an manchen Stellen ziemlich gezackt ist. Dies wurde mit den Fingern gespielt, aber wenn Sie ein Plektrum verwenden, seien Sie darauf vorbereitet, dass große Anfangsspitzen schnell zu dem werden, was Sie oben sehen. Übrigens waren die Noten C, steigend auf F und dann einen Ton runter auf Eb. Viel Glück.

Sie könnten die Notwendigkeit einer schnellen Abtastung vermeiden, indem Sie eine einfache Hüllkurvenerkennung durch Gleichrichtung und Tiefpassfilterung durchführen.
@ScottSeidman Sie haben wahrscheinlich Recht, aber ich denke, das OP muss dies erkennen - zumindest hat er eine halbe Chance, etwas von der Bassgitarre zu bekommen. Die höchste spielbare Frequenz liegt bei etwa 300 Hz, und das wird kaum Obertöne haben, die es wert sind, geglättet zu werden.