Die letzten Wochen habe ich wieder einmal ein Pedal midifiziert, welches ich geschenkt bekommen habe, inklusive einer passenden Bank. Hier ein kurzes Bautagebuch dazu.
Das Pedal hat 30 Tasten und eine Breite von rund 1,4 Meter. Es hat also einen Tonumfang von C (große Oktave) bis zum f (eingestrichene Oktave). Alle Tasten sind gefedert und mit Filz gedämpft. Nach einiger Abwägung habe ich mich entschieden Reed Kontakte zu benutzen, da ich hiermit schon Erfahrungen sammeln konnte. Da ich auf das löten einer Tastenmatrix verzichten wollte, habe ich mich für den Arduino Due entschieden. Dieser bietet genügend Pins für 30 Tasten. Wichtig war mir so wenig Veränderungen wie nur möglich am Pedal vorzunehmen (keine Schrauben, etc). Ich habe mich für fertige Reed Module von Iduino entschieden, da diese als fertige kleine Module einfach nur noch angebracht werden müssen. Dies ist sehr viel angenehmer als mit losen Reeds. Natürlich auch etwas teurer mit 0,90 € pro Modul. Magnete habe ich in eckiger Form für 0,40 € das Stück. Module sowie Magnete habe ich verklebt mit Heißkleber. Das ist vielleicht nicht die übliche Art, aber der Vorteil ist eben, dass es schnell geht und keine Materialbeschädigung stattfindet. Mit Heißluft lässt sich dies wieder vollständig entfernen. Für die Belastungen die auftreten ist das auch mehr als ausreichend. Nur für die Kabelführungen habe ich Schrauben angebracht.
Die Magnete sind so angebracht, dass sich diese in der Nähe der Kontakte befinden und diese somit geschlossen sind. Wenn die Taste gedrückt wird öffnet sich der Kontakt. Das hat sich meiner Meinung nach gut bewährt als umgekehrt. Wobei beide Variationen gleichwertig funktionieren.
IMG_20240403_095301.jpg IMG_20240403_095310.jpg f58811t301p6390303n2_srSiZdgh.jpg
f58811t301p6390303n4_iDmtlpPN.jpg 005.png
Somit ist mein Spieltisch wieder fast vollständig. Im Moment fehlt noch die Verblendung welche ich neu machen muss und das obere Manual muss noch getauscht und verblendet werden. Aber dafür ist dann noch später Zeit. Ich habe in diesem Arbeitsschritt auch noch meinen Mini PC ersetzt durch eine Workstation, welche ich günstig bekommen habe. Ich möchte die Schalter für die Register dann auch noch durch einen kleinen 10" Touchmonitor ersetzen. Gerade beim experimentieren mit verschiedenen Samplesets ist die Konfiguration der Schalter doch eher lästig. So sieht der noch unfertige und nicht verkleidete Spieltisch aus
Wer noch den Arduino Code für sein Projekt nutzen möchte, der darf sich gerne daran bedienen
#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);
tasteAlt = taste;
delay(100);
return tasteAlt;
}
if(tasteAlt == HIGH && taste == LOW){
Serial.print("NoteOFF MidiNote: ");
Serial.print(midisig);
noteOff(0, midisig, 64);
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);
}
}
Alles anzeigen
Und hier noch etwas Musik (Wer nur den lieben Gott lässt walten). Als Software nutze ich noch ein Windows, welches durch meine Linux Orgel Distribution (eigenes Projekt) ersetzt wird und Sweelinq.