Schweller Selbstbau

  • Das stelle ich gern zur Verfügung, habe es auch nur aus Anregungen anderer zusammengebastelt. Das ist wie gesagt das "Dumpfbacken"-Programm, mit einem Pin pro Taste. Wenn du bereits eine Diodenmatrix gebaut hast, kannst du vlt. auch z.B. das hier für deine Zwecke recyclen. Wenn du überhaupt neu bei Arduino bist und erst einmal verstehen willst, was das ist und wie es funktioniert, sei dir die Funduino-Seite empfohlen. Dort gibt es einmal zum guten Preis Zubehör rund um das Thema und auch ein Schritt-für-Schritt Tutorial.


    Ich werde erst Richtung Wochenende dazu kommen, vlt. fange ich auch mal einen Projekt-Bericht an.

  • Habe heute einen Testlauf mit dem Ausgebauten Schwellertritt gemacht. Glühbirne extern mit 12V belegt, Fotowiderstand an Arduino angeschlossen und vorbereitetes Programm drauf gemacht. Und siehe da: Da zwitschern problemlos und performant Werte zwischen 1 und 108 (bei voller Öffnung und Helligkeit auf dem Fotowiderstand) hin und her. Hält man eine hellere Lichtquelle an den Widerstand, kommt man bei 123 raus.


    Ich kaufe daher jetzt einigermaßen helle E10 LEDs und fertig. Habe dann zwei Schweller sowie einen Master-Lautstärkeregler eingeplant (unter Nutzung eines vorinstallierten Potis...).

  • Ich kaufe daher jetzt einigermaßen helle E10 LEDs und fertig.

    Hast du schon einmal LED's ausprobiert? Ich habe die Erfahrung gemacht dass nicht alle Fotowiderstände (vor allem ältere) mit LED zurecht kommen. Du musst auch darauf achten dass deine LED einen anständigen Treiber hat bzw. eine stabilisierte Spannung anliegt. Andernfalls flimmern die LED in der Netzfrequenz und dann hast du keine stabilen Werte da die Widerstände sehr schnell so was erkennen.


    Mein Schweller kommt aus einer alten Wersi Orgel und da habe ich auch eine 5v Birne verbaut. LED hat bei mir nie gut gearbeitet und so ein gedimmtes Lämpchen lebt ja auch eine Ewigkeit.


    Kopfzerbrechen hat mir die "Glättung" der Midi Signale bereitet. Also gerade wenn man seinen Fuß auf das Pedal setzt oder wegnimmt, dann ändern sich die Werte durch die Bewegung sehr stark und das will man ja nicht haben. Auch dass ohne Bewegen des Schwellers mal die Werte etwas schwanken will man ja nicht ständig übertragen, da es unnötig ist und das System beansprucht. Ich habe mir daher eine Routine geschrieben die nicht sofort bei einer Veränderung Daten sendet, sondern mehrmals hintereinander schaut ob die Werte plausibel sind. Bedeutet ich habe z.B einen Wertbereich von 0 - 100 und bei der ersten Messung in der eine Veränderung eintritt habe ich 10, dann 1. Dann kann ich davon ausgehen, dass die 10 zustande gekommen ist wegen einem Aufsetzen oder Absetzen des Fußes. Zusätzlich sendet mein Pico (habe es nicht mit dem Arduino gemacht) bei schnellen Veränderungen diese langsam. Bedeutet ich bringe z.B den Schweller von der Startposition in die Endposition so schnell es geht. Dann sendet mein Programm die Veränderungen nach und nach, also nicht Wert 0 und dann Wert 100 sondern über die Zeit 1,2,3,4,5,usw. eben so wie ein echter Schweller wo man die Klappen bewegt auch reagieren würde. Alles andere hört sich nämlich falsch an.


    Also einige Herausforderungen zum Programmieren, aber es lohnt sich. Aber in der Praxis nutze ich den Schweller kaum, eher Crescendo.

  • Nein noch nicht am Schweller bzw. Fotowiderstand ausprobiert. Die Idee kam einfach nur dadurch, dass ich die vorhandene Hardware mit E10 Gewinde nutzen wollte. Gleichzeitig ersetze ich im Privaten an vielen Stellen Glühbirnen durch LED. Auf die mögliche Wirkung einer pulsierenden LED auf einen Fotowiderstand bin ich natürlich nicht gekommen. Guter Hinweis! Hast du eine Idee, woran ich eine LED mit diesen Anforderungen erkennen kann? Bzw. würde ein stabilisiertes Netzteil einen "schlechten" Treiber kompensieren?


    Oder ich behalte die Glühbirne und löse es Software-seitig, d.h. ich mappe die 0-127 nicht auf 0 bis 1023, sondern 0 bis 870. Das wäre im Verhältnis ungefähr das, was momentan fehlt.


    Deine Idee mit der Trägheit finde ich gut! Damit werde ich mich noch beschäftigen, ist eine schöne Denksportaufgabe. Momentan hab ichs natürlich linear, siehe Mapping oben. Aber du hast Recht, ein Schweller spricht genauso an. Der an der Orgel, wo ich wenn dann Schweller-Stücke spielen ist evlt. sogar pneumatisch und das größte Lautstärke-Delta kommt auf den letzten paar Zentimetern.


    An sich ist mein Schweller-Code auch entprellt, d.h. er spricht auch erst ab einer Mindest-Veränderung der Spannung an. Sodass bloßes Berühren noch keine Konsequenz haben sollte.


    Ich nutze den Schweller selten, Crescendo-Walze nie. Das habe ich dann eher über Setzer gelöst, teilweise dann in kurzen Abständen durchgeschaltet. Aber so habe ich es komplett selbst unter Kontrolle.

  • Die Frau (Sabine) ist ziemlich fähig in dem, was sie da produziert. Sehr beeindruckend. Zeigt aber auch, wieviel Aufwand dahinter steckt. Demnächst kommt ein Video mit dem Bau von Registerzügen (!). Ich bin gespannt.


    Haralder:

    Die Software-Logik zu einer Schweller-Auswertung ist schon interessant.

    Das war im Video ziemlich einfach gehalten. Wahrscheinlich weil die "gedämpfte" Arbeitsweise des Schwellers schon "Fehler" vermeidet.

    Wenn man den Fuß aufs Schwellpedal auflegt, könnte man z.B. die ersten ca. 200 ms ignorieren, um die dadurch ungewollte Bewegung des Pedals bzw. Midi-Signale zu vermeiden.


    Wie würde man das machen, wenn der Zielwert durch verzögertes hochzählen noch nicht erreicht ist und sich das Pedal schon wieder in der Gegenbewegung befindet? Das Hochzählen abbrechen und in die aktuelle Richtung zählen? Wie groß sollte man die Zeitspanne wählen, die einem Vollausschlag 0..100 (oder als Midi 0..127) entspricht? 750ms?


    Sabine hat ein Delay von 90ms eingebaut, damit nicht zu viel Midi-Signale gesendet werden. Je nach Geschwindigkeit des Pedals könnte man auch in einem gröberen Raster zählen, z.B. 5-10. Aber das muss man wohl ausprobieren.

  • Die Frau (Sabine) ist ziemlich fähig in dem, was sie da produziert.

    Ja dem kann ich nur zustimmen. Ich vermute einmal sie wird einen entsprechenden technischen Hintergrund haben. Das ist definitiv keine Laienarbeit. Was sie macht ist natürlich nur ein möglicher Weg. Wie sagt man doch so schön? Viele Wege führen nach Rom. Das mit der Schräge am Brett wusste ich aber auch nicht.


    Wenn man den Fuß aufs Schwellpedal auflegt, könnte man z.B. die ersten ca. 200 ms ignorieren, um die dadurch ungewollte Bewegung des Pedals bzw. Midi-Signale zu vermeiden.

    Auf den ersten Blick eine gute Idee, auf dem zweiten jedoch nicht. Wie will der Controller wissen dass du gerade erst den Fuß auf das Pedal legst und nach wann nimmt er an, dass du das Pedal nicht nutzt? Ich spiele ein längeres Stück auf dem Manual, der Schweller bleibt erst einmal in dieser Position, bis er minimal verändert wird um ganz leicht zu justieren. Dann würde das schnell ignoriert werden. Man könnte natürlich eine Lichtschranke oder so einbauen, aber das wäre glaube ich absurd :)



    Wie würde man das machen, wenn der Zielwert durch verzögertes hochzählen noch nicht erreicht ist und sich das Pedal schon wieder in der Gegenbewegung befindet? Das Hochzählen abbrechen und in die aktuelle Richtung zählen? Wie groß sollte man die Zeitspanne wählen, die einem Vollausschlag 0..100 (oder als Midi 0..127) entspricht? 750ms?

    Ich habe es recht einfach gelöst. Die Steuerung besteht aus zwei Teile. Der eine Teil erfasst die aktuellen Messwerte und speichert diese ab. Der zweite Teil kümmert sich um die Midi Daten. Ich nutze da einen Timer. Im Loop läuft die Erfassung ständig und in einem gewissen Intervall (z.B 250ms) wird die zweite Funktion einmal aufgerufen. Die nutzt im Grunde zwei Variablen. Die IstStellung also der Wert der als letztes per Midi gesendet wurde und die SollStellung welche die Messungen ergeben haben. Nun folgt eine kleine Abfrage nach dem Prinzip Wenn IstStellung < SollStellung dann IstStellung + 1. Wenn IstStellung > SollStellung dann IstStellung - 1. Dann wird die aktuelle IstStellung gesendet. Wenn jedoch IstStellung = SollStellung, dann passiert nichts.


    Das ist eigentlich die simpelste Lösung. Man kann da auch endlos verfeinern mit größeren Schritten je weiter man von der SollStellung entfernt ist und immer kleinere je nähe man kommt und so weiter.


    Ich würde da aber zu einem Pi Pico raten als Controller. Mit 5 Euro unschlagbar günstig und der Vorteil gegenüber dem Arduino ist dass man ihn dank Python sehr gut Debuggen kann. Beim Arduino muss man beim experimentieren ständig Compilieren, schreiben und dutzende Printausgaben über die Serielle Verbindung machen um überhaupt zu sehen was passiert. Beim Pico muss ich das Programm nicht einmal schreiben, es wird einfach übergeben und befindet sich nur im Ram. Der unschlagbare Vorteil ist aber dass ich so während das Programm läuft alle Werte sehen kann und sogar Parameter ändern kann die sofort gelten.

  • Orgelschwelltritte selbst gebaut.

    Ist natürlich schon hervorragend. Nur, wer beherrscht die Konstruktionssoftware und hat einen Sinn für die Gestaltung. Und dann die Bohrschablonen, Teile für die Achsen usw ausdrucken und passend zusammenbauen braucht Erfahrungen in der Gerätekonstruktion. Hut ab für die Leistung.

    Ich hätte die Kabel einfach mit Schellen befestigt.

    Einen Schweller mit der Erhöhung an der Fuss-Spitze hab ich noch nie gesehen.


    Die einfache Möglichkeit mit der linearen Bremse ist eher zum Selbstbau geeignet.

    Daran kann man auch gleich ein Schiebepoti befestigen.

    Außerdem kann die Bremskraft einstellbar ausgeführt werden. Das geht bei dem vorgestellten Schweller nicht.

    Fazit: Die Konstruktion und Ausführung ist professionell.

    Zum Nachbau nicht für jeden geeignet

  • Ich überlege ja immer noch wie ich einen bzw. zwei Kniehebel für ein Harmonium midifizieren könnte. Dann könnte ich mit GO gut Harmonium mit Ausdruck spielen. Aber das ist technisch wohl genau so verzwickt wie ein Schweller und außerdem habe ich noch kein gutes Sampleset gefunden für das sich der Aufwand lohnen würde.

  • Einen Schweller mit der Erhöhung an der Fuss-Spitze hab ich noch nie gesehen.

    Ich auch nicht, aber ist kein Einzelfall. Grad durch Zufall hier gesehen:

    Design-Spieltisch aus durchgefärbtem MDF


    Wie würde man das machen, wenn der Zielwert durch verzögertes hochzählen noch nicht erreicht ist und sich das Pedal schon wieder in der Gegenbewegung befindet? Das Hochzählen abbrechen und in die aktuelle Richtung zählen? Wie groß sollte man die Zeitspanne wählen, die einem Vollausschlag 0..100 (oder als Midi 0..127) entspricht? 750ms?


    Sabine hat ein Delay von 90ms eingebaut, damit nicht zu viel Midi-Signale gesendet werden. Je nach Geschwindigkeit des Pedals könnte man auch in einem gröberen Raster zählen, z.B. 5-10. Aber das muss man wohl ausprobieren.

    Bei mir schleppt das MIDI-Hoch- und Runterzählen sozusagen nach und richtet sich im Zielwert an der aktuellen Pedaleinstellung. Dem nähert es sich an. Würde man wieder zu machen und sich die "Linien kreuzen", dann würde er in die Gegenrichtung anfangen zu schleppen. Ich habe da keine Gesamtzeit definiert, habe eher bisschen mit Verzögerungen herumexperimentiert, bis es sich echt anfühlte.


    Delay kann man übrigens machen, solange man einen Arduino exklusiv nur für den Schweller benutzt. So hat es Sabine gemacht. Hängen da anderen Sachen dran, kann es zu Störungen kommen. Warum? Delay hält das gesamte Programm an. In der Zeit geht wohl auch nichts anderes mehr. Da ich die Schwellerlogik in den Code für die Manual-Tastenabfragen mit reinmachen und während Schwellerbetätigung weiterspielen will, habe ich mit "millis()" gearbeitet. Im Endeffekt das gleiche, nur dass hier gemessen wird, wieviel Zeit seit dem letzten Aufruf vergangen ist, statt eine Programm-weite Pause einzulegen.


    Und ja, ich habe bei mir das Raster 4 oder 5 genommen. Klang beim ersten Zuhören auch flüssig in GO.

  • Da ich die Schwellerlogik in den Code für die Manual-Tastenabfragen mit reinmachen und während Schwellerbetätigung weiterspielen will, habe ich mit "millis()" gearbeitet. Im Endeffekt das gleiche, nur dass hier gemessen wird, wieviel Zeit seit dem letzten Aufruf vergangen ist, statt eine Programm-weite Pause einzulegen.

    Zu dem Thema würde ich dir das Thema Multitasking mal nahelegen. Der Arduino hat die Bibliothek Scheduler.h. Im Grunde erstellst du mehrere Funktionen und diese laufen nebeneinander zu gleichen Zeit. Hast du Funktion A und Funktion B, dann läuft A ganz normal weiter wenn B auf etwas wartet. Dabei muss man jedoch im Hinterkopf behalten, dass man da mit etwas Glück einen Code bauen kann, der nicht mehr zu debuggen ist :)


    Hier mal ein Beispiel, wo der normale Loop des Programms läuft und nebenbei gleichzeitig noch Loop2 und Loop3.



    In deinem Fall könnte im normalen Loop die Tastenabfrage stehen und im Loop2 könntest du alles was den Schweller betrifft regeln.