Bautagebuch: Midifizierung Orgelpedal

  • Seite 1 von 2
02.04.2024 22:43
#1
avatar

Das zweite Bautagebuch, da sich dieses Projekt ergeben hat:

Neben meinem Midi Kniehebel habe ich jetzt unerwartet ein Orgel Pedal mit 32 Tasten bekommen. Das Pedal stammt von einem Orgelbauer und ich habe es kostenlos bekommen. Das Pedal ist in einwandfreien Zustand und komplett gefedert und gedämpft. Es hat einen Tonumfang von 32 Tönen. Zusätzlich habe ich noch eine alte passende Orgelbank dazu bekommen. Diese benötigt etwas Pflege (Abschleifen und Ölen).

Der Plan ist nun das Pedal schnellstmöglich zu midifizieren. Eigentlich würde ich am liebsten eine Lösung wie https://www.pausch-e.com/shop/Midifizier...edal-p186319583 nutzen, aber der Preis ist es mir dann doch nicht wert in anbetracht meiner Fähigkeiten... Ich nutze dieses Mal Reedsensoren dazu. Da ich aus früheren Projekten gelernt habe und mir das Leben nicht wieder unnötig schwer machen möchte, habe ich mich für kleine fertige Module entschieden. Diese sind zwar im vergleich zu einfachen Bauteilen mit 0,95 Euro doch teurer, dafür spart es eine Menge Ärger beim anbringen und löten. Hier das Datenblatt: https://cdn-reichelt.de/documents/datenblatt/A300/SE013.pdf

Als Magnete habe ich mich für eine Eckige Form entschieden https://www.reichelt.de/magnet-8mm-x-8mm...l?search=magnet Eckige Magnete deshalb, da ich mir erhoffe, dass diese einfacher zu positionieren sind. Ich werde es dieses Mal mit Heißkleber versuchen... Magnete befestigen ist wohl die Königsdisziplin.... Ich hasse es! Ich wünschte ich würde diese Magnete aus diesem Orgelpedal Bausatz finden mit einem Loch zum schrauben in der Mitte....

Als Controller nehme ich dieses Mal wieder einen Arduino Due https://www.reichelt.de/arduino-due-at91...html?search=due der ist bei Reichelt günstig zu haben und bietet viele Pins. Mit den Reed Modulen habe ich keine Erfahrung und ob man damit eine Matrix einfach bauen könnte ist mir nicht klar. So gehe ich auf Nummer sicher.

Ich habe den Plan dann am Wochenende das Pedal fertig zu bekommen und werde alles dokumentieren und hier teilen. Ja mein jugendlicher Leichtsinn lässt mich glauben, dass es ohne Probleme an einem Vormittag erledigt ist... Wir werden sehen


 Antworten

 Beitrag melden
02.04.2024 23:20
avatar  Montre
#2
avatar

Ich bin gespannt.


 Antworten

 Beitrag melden
03.04.2024 07:04
#3
So

Bin gespannt. Mein Pedal will ich auch irgendwann nochmal ordentlich midifizieren. Momentan hat es etwas Latenz. Bei manchen Bachfugen nervt es, eine unterschiedliche Latenz zwischen Pedal und Manualen zu haben.

Bzgl. der Module. In der Spezifikation steht 5V, die Due Pins vertragen nur 3,3. Hast du dafür eine Lösung, funktionieren die auch mit weniger? Oder 5V und Widerstand oder so?

Magnete mit Loch gibt es bei AliExpress. Einfach „magnet hole“ in die Suche eingeben.


 Antworten

 Beitrag melden
03.04.2024 09:26
#4
avatar

Zitat von Soubasse im Beitrag #3
Bzgl. der Module. In der Spezifikation steht 5V, die Due Pins vertragen nur 3,3. Hast du dafür eine Lösung, funktionieren die auch mit weniger? Oder 5V und Widerstand oder so?


Stimmt, da war ja was. Ich habe jetzt über die Besonderheit des DUE überhaupt nicht mehr nachgedacht. Ich habe jetzt beim Hersteller mal geschaut, da steht auch nichts https://www.openplatform.cc/index.php/ho...tails/apiid/176

Aber ich kann mir eigentlich nicht vorstellen, dass es mit 3,3V irgendwelche Probleme geben sollte. Es ist ja nur ein Reedkontakt und ein Wiederstand. Im absoluten Notfall kann man das auch ignorieren und sein Kabel einfach vor den Kontakt anlöten. Dann ist es eben nur noch ein Schalter. Mir ging es ja eher um die einfachere Befestigung der Module im Gegensatz zu einzelnen Röhrchen.


 Antworten

 Beitrag melden
03.04.2024 09:35 (zuletzt bearbeitet: 03.04.2024 09:35)
#5
So

Wie ist der Widerstand denn geschaltet? Ich würde ja fast behaupten, dass er parallel geschaltet ist und den Schalter nur auf GND zieht.

Kannst es ja mit 3,3 versuchen, sollte gehen wenn da keine weiteren Besonderheiten geschaltet sind. Falls doch 5V notwendig sind könntest du mit Transistoren oder einem 5V Arduino (Mega) arbeiten. Einen MIDI Output hat man schnell und v.a. viel leichter an einen Arduino gebaut, wie einen MIDI Input.


 Antworten

 Beitrag melden
03.04.2024 10:04
#6
avatar

Zitat von Soubasse im Beitrag #5
Wie ist der Widerstand denn geschaltet? Ich würde ja fast behaupten, dass er parallel geschaltet ist und den Schalter nur auf GND zieht.

Sicher sagen kann ich es nicht, da die Module noch nicht da sind. Auf dem Foto sieht man jedoch, dass sich der Widerstand zwischen GND und dem Ausgang befindet. Ich vermute das dies bei anderen Arduinos den Aufwand verringern soll, da diese im Gegensatz zum DUE keinen Pull-up-Widerstand direkt besitzen.


 Antworten

 Beitrag melden
03.04.2024 10:06
#7
avatar

Ich habe übrigens die Fotos vergessen :)

Bild entfernt (keine Rechte)Bild entfernt (keine Rechte)


 Antworten

 Beitrag melden
04.04.2024 21:24
#8
avatar

So, die ersten Vorarbeiten sind erledigt. Ich habe zwei Platinen zusammengelötet. Diese kommen an die Rückseite um genügend Anschlüsse für die 3,3V Versorgung und GND zu bieten. Das wird zwar keinen Schönheitspreis bei einem Lötwettbewerb geben, aber es funktioniert. So hat dann jedes Reed Modul seinen eigenen Steckplatz. Ich habe mich bewusst gegen das verlöten eines Kabels am Modul entschieden. Ja es wäre weniger Arbeit und weniger Kabel, aber wenn mal ein Modul ausfallen sollte, dann ist es so doch praktischer. Ich hatte auch die Idee an einem Kabel die notwendige Anzahl an Stecker anzulöten, aber nachdem ich versucht habe zwei Kabel an einen Stecker zu löten, habe ich die Lust daran gleich wieder verloren.

Bild entfernt (keine Rechte)Bild entfernt (keine Rechte)

Kabelhalter (keine Ahnung wie die richtig heißen) sind auch bereits in gleichmäßigen Abständen angebracht. Morgen dann die Module und Magnete befestigen, die Kabel verlegen und dann sollte es eigentlich schon fertig sein. Das Arduino Programm ist ja eher eine Sache für zwischendurch. Ich bin mir nur noch nicht so ganz schlüssig darüber, wo ich den Arduino unterbringen soll... Ich denke darüber nach einfach eine Platine mit einem Anschluss für ein Flachbandkabel zu bestücken und führe damit die Kabel einfach in den Spieltisch wo ich den Arduino dann problemlos verstecken kann...

Bildanhänge
imagepreview

{[norights]}


 Antworten

 Beitrag melden
04.04.2024 22:13
#9
So

Zitat von Christian_Hofmann im Beitrag #8
Ich denke darüber nach einfach eine Platine mit einem Anschluss für ein Flachbandkabel zu bestücken und führe damit die Kabel einfach in den Spieltisch wo ich den Arduino dann problemlos verstecken kann...

So würde ich es auch machen. Einfach eine IDC oder D-Sub Buchse und fertig. Dann kannst du das Pedal einfach abstecken und wegräumen. Außerdem steht dir der Arduino dann zur Verfügung, um damit noch weitere Dinge anzustellen.


 Antworten

 Beitrag melden
05.04.2024 12:04
#10
avatar

So, nachdem die Module angekommen sind, gibt es die erste Planänderung. Die 3,3V spare ich mir und nutze nur den GND. Das war nicht ersichtlich in der Beschreibung. Die Versorgung wird nur benötigt um beide Zustände zu signalisieren. Wenn ich nur GND und Signal nutze, dann ist es Off wenn kein Magnet in der Nähe ist und ON wenn er es ist. Damit fällt zwar das digitale auslesen von Hight und Low weg. Aber in meinem Fall ist das nicht relevant. Ich will ja nur wissen ob der Reed offen ist oder nicht, ohne etwas weiteres.

Ich hoffe dass meine Überlegung richtig ist und ich nicht in drei Stunden fluchend alles noch einmal verkabeln muss... Meine Erfahrung lässt mich zweite Option erahnen 🙈


 Antworten

 Beitrag melden
05.04.2024 14:31
#11
So

Teste es vorher.


 Antworten

 Beitrag melden
05.04.2024 18:55
#12
avatar

So, der handwerkliche Teil ist verledigt. Die Magnete und Reed Module habe ich verklebt mit Heißkleber. Ich hatte daran gedacht für die Module kleine Gehäuse zu drucken, aber mein 3D Drucker steht immer noch so da und ich habe noch nie etwas gedruckt. Davon abgesehen ist es ja egal ob ich die Module aufklebe (schrauben will ich nicht) oder die Halter. Die Magnete habe ich auch geklebt. Sollte eigentlich halten, so lange es keine 100°C hier wird. Aber dann wären die Magnete mein kleinstes Problem. Der erste ist leider etwas schief. Ich habe es extra seitlich montiert, damit die Kabel oben nicht rausschauen.

Bild entfernt (keine Rechte)

Danach habe ich die Verkabelung in Angriff genommen. Die einzelnen Reed Module habe ich in Gruppen miteinander verbunden. Ich habe dafür die Erweiterungspins genommen die vorhanden waren. Somit kann ich alle mit GND oder 3,3 V versorgen. Da bin ich mir noch nicht sicher, welche Variante besser ist. Ich tendiere aber zu den 3,3V und schaue dann ob der Anschluss High ist. Bei GND kann eben jeder Abfluss irgendwo Probleme machen. Nachdem ich alle Module auf Funktion geprüft habe, musste ich noch Ordnung herstellen. Das ist wohl die Arbeit, die die meiste Disziplin benötigt. Ich hoffe keinen Pin vertauscht zu haben.

Bild entfernt (keine Rechte)Bild entfernt (keine Rechte)Bild entfernt (keine Rechte)Bild entfernt (keine Rechte)

Die Kabel gehen alle in ein Steckbrett und von dort nach außen. Mein Zukunft-Ich darf dann noch einen Stecker anlöten. Bis dahin geht es direkt in den Arduino. Ich werde dann auch noch eine Abdeckung anfertigen. Wobei ich mit anfertigen meine: Im Baumarkt zuschneiden lassen und anbringen :)

So, jetzt erst einmal Ordnung schaffen und dann wird programmiert :)


 Antworten

 Beitrag melden
05.04.2024 21:45
#13
So

Wieso hast du die Magneten seitlich und nicht obenauf befestigt? Technische Gründe oder Platzangebot in der Höhe?


 Antworten

 Beitrag melden
05.04.2024 22:08 (zuletzt bearbeitet: 05.04.2024 22:15)
#14
avatar

Zitat von Soubasse im Beitrag #13
Wieso hast du die Magneten seitlich und nicht obenauf befestigt? Technische Gründe oder Platzangebot in der Höhe?

Wegen den Reed Modulen. Diese reagieren nur auf dem Magneten in dieser Konstellation. Ich hätte sonst die Module anders anbringen müssen, oder den Kontakt um 90°C drehen müssen. Beides nicht wirklich praktikabel.

EDIT:
Wobei ich die Magnete noch einmal in der Position ändere und sie oben drauf stelle. Sonst springt der Ton doch etwas zu schnell an.

EDIT ENDE

Ich habe jetzt auch das Programm fertig geschrieben und es funktioniert alles. Wer es selber benutzen möchte, hier ist der Code. Ich habe es so wiederverwertbar wie möglich geschrieben. Wobei noch teilweise alter Code in den Funktionen enthalten ist.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
 
#include <MIDIUSB.h>
 
//Variablen für Pedaltasten
// Array mit Pinnummern
const int pedalPins[] = {
22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
52
};
 
// Midi Noten
const int midiNote[] = {
36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
56, 57, 58, 59, 60, 61, 62, 63, 64, 65
};
 
#define NUM_PEDALS (sizeof(pedalPins) / sizeof(int)) // Anzahl der Pedale berechnen
 
// Anzahl der Tasten ermitteln
bool pedalState[NUM_PEDALS];
 

/**** Funktionen für MIDI ***************************************************/
void controlChange(byte channel, byte control, byte value) {
midiEventPacket_t event = {0x0B, 0xB0 | channel, control, value};
MidiUSB.sendMIDI(event);
}
 
void noteOn(byte channel, byte pitch, byte velocity) {
midiEventPacket_t noteOn = {0x09, 0x90 | channel, pitch, velocity};
MidiUSB.sendMIDI(noteOn);
}
 
void noteOff(byte channel, byte pitch, byte velocity) {
midiEventPacket_t noteOff = {0x08, 0x80 | channel, pitch, velocity};
MidiUSB.sendMIDI(noteOff);
}
 
bool MidiButton(int pin, byte midisig, bool tasteAlt) { //Button-Pin, Noten-Nummer
bool taste = digitalRead(pin);
if(tasteAlt == LOW && taste == HIGH){

Serial.print("NoteON MidiNote: ");
Serial.print(midisig);

noteOn(0, midisig, 64);
MidiUSB.flush();
tasteAlt = taste;
delay(100);
return tasteAlt;
}
 
if(tasteAlt == HIGH && taste == LOW){
Serial.print("NoteOFF MidiNote: ");
Serial.print(midisig);
noteOff(0, midisig, 64);
MidiUSB.flush();
tasteAlt = taste;
delay(100);
return tasteAlt;
}
}
 

/****************************************************************************/
 
void setup() {
Serial.begin(9600); // Öffnet die serielle Schnittstelle bei 9600 Bit/s:
Serial.print("Setup beginnt");
Serial.println();
 
// Setze alle Pedalpins als Eingang mit internen Pull-up-Widerständen (passe dies nach Bedarf an)
for (int i = 0; i < NUM_PEDALS; i++) {
pinMode(pedalPins[i], INPUT_PULLUP);
pedalState[i] = HIGH;
}

Serial.print("Setup abgeschlossen");
Serial.println();
}
 
void loop() {
//Pedaltasten
for (int i = 0; i < NUM_PEDALS; i++) {
bool currentState = pedalState[i];
pedalState[i] = MidiButton(pedalPins[i], midiNote[i], currentState);
}

 
}
 


 Antworten

 Beitrag melden
05.04.2024 23:09
#15
So

Glückwunsch zur Fertigstellung!

Aber da hat jemand den bösen MIDI Flush Befehl vergessen rauszunehmen 😬 😉

Der Delay kommt mir relativ lang vor, ich glaube ich verwende 20. Spielt aber praktisch auch nur dann eine Rolle, wenn man gleichzeitig mehrere Pedal-Tasten drücken will.


 Antworten

 Beitrag melden
Bereits Mitglied?
Jetzt anmelden!
Mitglied werden?
Jetzt registrieren!