Hi Christof,
ich glaube ich weiss wo das Problem liegt. Für das erste muss die 100ms-Verzögerung raus und bei dem 2ten muss eine "Sperre" nach dem ersten Ton rein. Ich muss zugeben das es aber recht theoretisch ist. Zudem steht Punkt 1 und 2 ein wenig im Widerspruch.
Erklärung zu 1)
Du schlägst alle gleichzeitig an und das Signal der Piezos würde für 100ms anliegen. Wenn die Routine mit dem ersten Durchlauf fertig ist, sind die Signale der anderen Piezo schon wieder weg.
Erklärung zu 2)
Nachdem ein Signal auf einem Kanal erfasst/gemessen wurde, muss der Kanal erstmal "ignoriert" werden. a) für eine bestimmte Zeit oder b) wenn das Signal wieder unter dem Schwellwert liegt.
So, was Du brauchst ist eine state-machine:
Für jeden Kanal muss ein Struktur oder, wie bei der Midi-Note, ein Array bereit stehen
Struktur: Schritt, Midi-Note, Zähler, Velocity(gemessen)
Programm (grundlegend)
for(int pin=0; pin < NumPads; pin++) { //dieser loop geht alle pads durch
case Schritt = 1
Werte der Struktur initalisieren; Schritt +1
case Schritt = 2
Wert vom Kanal > Treshhold?
J -> Schritt +1 und Zähler = 7 ; PS: Konstanten verwenden!
case Schritt 3
Zähler <= 0 ?
J = Velocity berechnen und Schritt +1
N = Zähler -1 und Velocity aufsummieren
Case Schritt 4 ; Kann man auch in Schritt 3 machen, aber ist ein wenig übersichtlicher
Midi-Note Ein
Midi-Note Aus ; Wenn das nicht direkt geht, dann einen zusätzlichen Schritt wie den folgenden einbauen
Zähler = Verzögerung in Durchläufen
Schritt +1
case Schritt 5
Zähler <= 0 ?
J = Schritt +1
N = Zähler -1
case Schritt 6
Signal vom Kanal unter Treshhold ?
J = Schritt = 1 ; Und es beginnt wieder von vorne
Ich hoffe ich habe mich halbwegs verständlich ausgedrückt, aber es ist schon spät ...
Grüße
Oliver
PS: Edith fühlt sich missverstanden. Sie wollte darauf hinweisen das EVTL. (sie hat keine Lust mehr zu googeln) der Wert für die Schlagstärke sich nicht aus der Höhe des Signals bildet (da es evtl. immer auf Max ist) sondern aus seiner Länge des anliegenden Signals bildet. Aber wie schon gesagt: Es ist schon spät