<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Spieltisch on Christian Hofmann</title>
        <link>https://christian-hofmann.eu/categories/spieltisch/</link>
        <description>Recent content in Spieltisch on Christian Hofmann</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>de</language>
        <copyright>Christian Hofmann</copyright>
        <lastBuildDate>Wed, 11 Feb 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://christian-hofmann.eu/categories/spieltisch/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Organteq</title>
        <link>https://christian-hofmann.eu/p/organteq/</link>
        <pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate>
        
        <guid>https://christian-hofmann.eu/p/organteq/</guid>
        <description>&lt;img src="https://christian-hofmann.eu/p/organteq/titel.png" alt="Featured image of post Organteq" /&gt;&lt;h2 id=&#34;einleitung&#34;&gt;Einleitung
&lt;/h2&gt;&lt;p&gt;In diesem kleinen Artikel stelle ich die VPO Organteq kurz vor. Über den Artikel verteilt sind kleinere und größere Aufnahmen mit verschiedenen Orgeln aus Organteq, die von mir eingespielt wurden.&lt;/p&gt;
&lt;p&gt;Organteq ist eine Software der französischen Firma Modartt, die eine Kirchenorgel (Pfeifenorgel) auf dem Computer simuliert. Modartt ist vor allem für Pianoteq bekannt, das zu den besten virtuellen Pianos zählt.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://christian-hofmann.eu/p/organteq/organteq1.png&#34;
	width=&#34;1405&#34;
	height=&#34;843&#34;
	srcset=&#34;https://christian-hofmann.eu/p/organteq/organteq1_hu_43cb9e0b9e44557c.png 480w, https://christian-hofmann.eu/p/organteq/organteq1_hu_67f3020f18dab15e.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Hauptansicht&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;166&#34;
		data-flex-basis=&#34;400px&#34;
	
&gt; &lt;img src=&#34;https://christian-hofmann.eu/p/organteq/organteq2.png&#34;
	width=&#34;1395&#34;
	height=&#34;805&#34;
	srcset=&#34;https://christian-hofmann.eu/p/organteq/organteq2_hu_cb1c586840ffca00.png 480w, https://christian-hofmann.eu/p/organteq/organteq2_hu_f21cecb041f8e9a.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Optionen&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;173&#34;
		data-flex-basis=&#34;415px&#34;
	
&gt;
&lt;img src=&#34;https://christian-hofmann.eu/p/organteq/organteq3.png&#34;
	width=&#34;1400&#34;
	height=&#34;639&#34;
	srcset=&#34;https://christian-hofmann.eu/p/organteq/organteq3_hu_9ef01e17923cf3af.png 480w, https://christian-hofmann.eu/p/organteq/organteq3_hu_33ffc525e380e2bd.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Alternative Ansicht&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;219&#34;
		data-flex-basis=&#34;525px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;Das Besondere an Organteq ist, dass es – im Gegensatz zu den meisten anderen virtuellen Orgeln wie Hauptwerk, GrandOrgue oder Sweelinq – nicht auf Samples (Tonaufnahmen echter Pfeifen) basiert, sondern auf Physical Modeling.&lt;/p&gt;
&lt;p&gt;Anstatt aufgenommene Klänge abzuspielen, berechnet die Software den Klang in Echtzeit mithilfe physikalischer Modelle. Dabei wird simuliert, wie die Luft durch die Pfeife strömt, wie die Pfeife schwingt und wie der Raum den Schall reflektiert.&lt;/p&gt;
&lt;p&gt;Präludium in C-Dur:&lt;/p&gt;
&lt;audio controls&gt;
    &lt;source src=&#34;prelude.mp3&#34; type=&#34;audio/mpeg&#34;&gt;
    Ihr Browser unterstützt das Audio-Element nicht.
&lt;/audio&gt;
&lt;h2 id=&#34;vorteile-von-organteq&#34;&gt;Vorteile von Organteq
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Enorm kompakt:&lt;/strong&gt;
Da keine Audioaufnahmen geladen werden müssen, ist die Software äußerst platzsparend. Organteq benötigt nur etwa 30 MB Speicherplatz, während samplebasierte Orgeln oft viele Gigabyte beanspruchen. Davon betroffen ist insbesondere auch der Arbeitsspeicher.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Realistisches Spielgefühl:&lt;/strong&gt;
Die Software reagiert extrem sensibel auf die Spielweise. Da keine starren Samples verwendet werden, kann das Spielverhalten einer Orgel sehr fein und realistisch simuliert werden.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hohe Flexibilität:&lt;/strong&gt;
Nahezu jeder Parameter kann vom Nutzer angepasst werden – von der Stimmung einzelner Pfeifen bis hin zur Positionierung der Orgel im virtuellen Raum. Mit wenigen Klicks lassen sich Orgeln nach eigenem Belieben zusammenstellen oder verändern.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vielseitige Nutzung:&lt;/strong&gt;
Organteq ist sowohl als Standalone-Version zum direkten Spielen als auch als Plug-in (VST, AU, AAX) für DAWs verfügbar. Die Software läuft unter Windows, macOS und Linux (x86_64 und ARM).&lt;/p&gt;
&lt;p&gt;Wer nur den lieben Gott lässt walten (3 Variationen):&lt;/p&gt;
&lt;audio controls&gt;
    &lt;source src=&#34;Wernur.mp3&#34; type=&#34;audio/mpeg&#34;&gt;
    Ihr Browser unterstützt das Audio-Element nicht.
&lt;/audio&gt;
&lt;h2 id=&#34;nachteile-von-organteq&#34;&gt;Nachteile von Organteq
&lt;/h2&gt;&lt;p&gt;Natürlich gibt es auch Punkte, die für den einen oder anderen einen Nachteil darstellen können.&lt;/p&gt;
&lt;p&gt;Während Organteq sehr genügsam beim Speicherverbrauch ist, stellt es höhere Anforderungen an den Prozessor. Für große Orgeln mit umfangreichen Registrierungen wird ein sehr leistungsstarker Prozessor benötigt. Modartt optimiert die Software jedoch kontinuierlich, um die CPU-Last möglichst gering zu halten.&lt;/p&gt;
&lt;p&gt;Obwohl Physical Modeling enorme Fortschritte gemacht hat, empfinden manche Nutzer den Klang im Vergleich zu echten Aufnahmen als etwas zu „perfekt“ oder sogar „steril“. Zudem kann man in Organteq keine exakt nachgebildete, real existierende Orgel erwerben. Stattdessen spielt man stets ein Modell, das beispielsweise nach „französischer Romantik“ oder „deutschem Barock“ klingt, jedoch keine direkte Kopie eines konkreten Instruments ist.&lt;/p&gt;
&lt;p&gt;Es gibt zwar einige Orgeln, die nach realen Vorbildern erstellt wurden, inwieweit diese dem Original tatsächlich nahekommen, kann ich an dieser Stelle jedoch nicht bewerten. Klanglich sind die meisten davon zumindest sehr angenehm.&lt;/p&gt;
&lt;p&gt;Aquarelle:&lt;/p&gt;
&lt;audio controls&gt;
    &lt;source src=&#34;aquarelle.mp3&#34; type=&#34;audio/mpeg&#34;&gt;
    Ihr Browser unterstützt das Audio-Element nicht.
&lt;/audio&gt;
&lt;h2 id=&#34;die-organteq-community&#34;&gt;Die Organteq-Community
&lt;/h2&gt;&lt;p&gt;Die Community rund um Organteq ist aktiv und offen. Modartt bietet auf seiner Webseite die Möglichkeit, selbst erstellte Instrumente zu veröffentlichen, die von anderen Nutzern bewertet werden können. Inzwischen finden sich dort zahlreiche interessante Orgeln, von denen einige realen Instrumenten nachempfunden sind.&lt;/p&gt;
&lt;p&gt;Eine objektive Bewertung fällt mir schwer, da ich die Originalinstrumente nicht kenne. Subjektiv betrachtet klingen viele dieser Orgeln jedoch sehr überzeugend.&lt;/p&gt;
&lt;p&gt;Als Beispiel hier eine Aufnahme des Chorals „Lobe den Herren, den mächtigen König der Ehren“ – eine Fantasie sowie eine isometrische Choralfassung. Gespielt wurde sie auf der Rühlmann-Orgel (op. 204) der Johanneskirche, die vom Nutzer Coignard in Organteq nachgebaut wurde. Die entsprechende Definition ist im FXP Corner von Modartt zu finden: &lt;a class=&#34;link&#34; href=&#34;https://forum.modartt.com/fxpcorner/?version=organteq%202&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://forum.modartt.com/fxpcorner/?version=organteq%202&lt;/a&gt;&lt;/p&gt;
&lt;audio controls&gt;
    &lt;source src=&#34;Lobe_den_Herren_EG316.mp3&#34; type=&#34;audio/mpeg&#34;&gt;
    Ihr Browser unterstützt das Audio-Element nicht.
&lt;/audio&gt;
&lt;h2 id=&#34;vergleich-mit-sampler&#34;&gt;Vergleich mit Sampler
&lt;/h2&gt;&lt;p&gt;Hauptwerk, GrandOrgue, Sweelinq und andere samplebasierte Orgeln sind wie Fotos: Man betrachtet ein detailgetreues Abbild einer spezifischen Orgel. Es ist wunderschön, aber das Abgebildete lässt sich nicht grundlegend verändern.&lt;/p&gt;
&lt;p&gt;Organteq hingegen ist wie ein 3D-Modell. Man kann es aus allen Blickwinkeln betrachten, die Beleuchtung verändern und es nach Belieben umbauen. Der Klang wirkt dabei manchmal etwas „digitaler“, bietet dafür aber eine enorme kreative Freiheit.&lt;/p&gt;
&lt;h2 id=&#34;alternativen-zu-organteq&#34;&gt;Alternativen zu Organteq
&lt;/h2&gt;&lt;p&gt;Organteq ist nicht die einzige Software, die auf Physical Modeling setzt. Aeolus von Fons Adriaensen ist eine Open-Source-Orgel, die selbst auf sehr schwacher Hardware (z. B. einem Raspberry Pi 1) große Orgeln spielbar macht: &lt;a class=&#34;link&#34; href=&#34;https://kokkinizita.linuxaudio.org/linuxaudio/aeolus/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://kokkinizita.linuxaudio.org/linuxaudio/aeolus/&lt;/a&gt;
Technisch ist das Modeling weniger komplex als bei Organteq, dafür aber äußerst ressourcenschonend.
Arthur Benilov hat auf Basis von Aeolus eine weiterentwickelte Version erstellt: &lt;a class=&#34;link&#34; href=&#34;https://archie3d.github.io/aeolus_plugin/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://archie3d.github.io/aeolus_plugin/&lt;/a&gt; Diese läuft im Gegensatz zum Original auch unter Windows und macOS und kann als Plug-in genutzt werden. Laut eigener Aussage wurde das Modeling verbessert, allerdings sind die Systemanforderungen deutlich höher.&lt;/p&gt;
&lt;h2 id=&#34;persönliche-meinung&#34;&gt;Persönliche Meinung
&lt;/h2&gt;&lt;p&gt;Ich führe eine gewisse „schwierige Beziehung“ mit Organteq. Einerseits bereitet das Spielgefühl große Freude, andererseits gibt es klangliche Details, die für mich nicht immer perfekt sind. Allerdings klingt keine Software exakt wie das Live-Erlebnis an einer echten Orgel vor Ort.
Organteq ist ein hervorragendes Werkzeug und in den meisten Fällen kann es sehr überzeugen.&lt;/p&gt;
&lt;p&gt;Als Abschluss – und als kleine Belohnung für das Lesen bis hierher – folgt eine Aufnahme des Chorals „Durch Adams Fall ist ganz verderbt“, bearbeitet von Marcel Dupré und von mir kreativ interpretiert.&lt;/p&gt;
&lt;audio controls&gt;
    &lt;source src=&#34;AdamsFall.mp3&#34; type=&#34;audio/mpeg&#34;&gt;
    Ihr Browser unterstützt das Audio-Element nicht.
&lt;/audio&gt;
</description>
        </item>
        <item>
        <title>RustyPipes Open Source VPO Software</title>
        <link>https://christian-hofmann.eu/p/rustypipes-open-source-vpo-software/</link>
        <pubDate>Thu, 11 Dec 2025 00:00:00 +0000</pubDate>
        
        <guid>https://christian-hofmann.eu/p/rustypipes-open-source-vpo-software/</guid>
        <description>&lt;img src="https://christian-hofmann.eu/p/rustypipes-open-source-vpo-software/titel.png" alt="Featured image of post RustyPipes Open Source VPO Software" /&gt;&lt;h2 id=&#34;einleitung&#34;&gt;Einleitung
&lt;/h2&gt;&lt;p&gt;Seit einiger Zeit werkelt Dividebysandwich an dem Programm RustyPipes. Dabei handelt es sich um eine VPO Software ähnlich zu Hauptwerk, Sweelinq oder GrandOrgue. Das Projekt ist noch sehr jung, aber einen Blick wert. Der Entwickler beschreibt es wie folgt:&lt;/p&gt;
&lt;p&gt;RustyPipes ist eine virtuelle Pfeiffenorgel welche GrandOrgue und Hauptwerk Samplesets laden kann. Es wird sowohl Sample Precaching als auch Sample Streaming von SSDs unterstützt. Das erlaubt z.b. das Spielen von großen Samplesets mit vielen Registern mit wenigen Gigabytes RAM. Um nicht unnötig Latenz beim Spielen zu erhöhen werden bei allen Samples die ersten Millisekunden ins RAM geladen und dann der Rest von der Disk gestreamed. Wer das nicht will kann natürlich alle Samples komplett ins RAM laden. Es gibt sowohl eine Version für die Konsole wie auch eine grafische Version.&lt;/p&gt;
&lt;p&gt;Das Projekt findet ihr unter &lt;a class=&#34;link&#34; href=&#34;https://github.com/dividebysandwich/rusty-pipes&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/dividebysandwich/rusty-pipes&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;bilder&#34;&gt;Bilder
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://christian-hofmann.eu/p/rustypipes-open-source-vpo-software/rusty1.png&#34;
	width=&#34;1690&#34;
	height=&#34;1351&#34;
	srcset=&#34;https://christian-hofmann.eu/p/rustypipes-open-source-vpo-software/rusty1_hu_2029374bd89af6dc.png 480w, https://christian-hofmann.eu/p/rustypipes-open-source-vpo-software/rusty1_hu_df355a75e34229a0.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;GUI Version&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;125&#34;
		data-flex-basis=&#34;300px&#34;
	
&gt;
&lt;img src=&#34;https://christian-hofmann.eu/p/rustypipes-open-source-vpo-software/rusty2.jpg&#34;
	width=&#34;480&#34;
	height=&#34;360&#34;
	srcset=&#34;https://christian-hofmann.eu/p/rustypipes-open-source-vpo-software/rusty2_hu_88854b34f7b48297.jpg 480w, https://christian-hofmann.eu/p/rustypipes-open-source-vpo-software/rusty2_hu_5bedcab47bc17908.jpg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Terminal Version&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;320px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;ein-erster-eindruck&#34;&gt;Ein erster Eindruck
&lt;/h2&gt;&lt;p&gt;Die Installation auf meinem Textsystem mit Debian Trixi lief mithilfe des Flatpaks ohne Probleme, als Sampleset habe ich von Binatural Pipes die Niederzwehren ausgewählt: &lt;a class=&#34;link&#34; href=&#34;https://binauralpipes.com/niederzwehren&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://binauralpipes.com/niederzwehren&lt;/a&gt;
Nach dem Start von RustyPipes konnte ich die Orgel ohne Probleme laden und auch spielen. Die Oberfläche selbst ist noch sehr rudimentär und es fehlen noch viele Funktionen, aber die Kernfunktion also das Laden und Spielen einer Orgel funktioniert bereits.&lt;/p&gt;
&lt;h2 id=&#34;aufnahme&#34;&gt;Aufnahme
&lt;/h2&gt;&lt;p&gt;Eine kurze Aufnahme die ich mit RustyPipes erstellt habe. Es handelt sich um eine Bearbeitung von Marcel Dupre zu dem Lied &amp;ldquo;Durch Adams Fall ist ganz verderbt&amp;rdquo;&lt;/p&gt;
&lt;audio controls&gt;
    &lt;source src=&#34;rustyrecord.mp3&#34; type=&#34;audio/mpeg&#34;&gt;
    Ihr Browser unterstützt das Audio-Element nicht.
&lt;/audio&gt;
&lt;h2 id=&#34;ausblick&#34;&gt;Ausblick
&lt;/h2&gt;&lt;p&gt;Das Projekt ist jung, erst einige Monate alt. Daher ist es schwer abzuschätzen wie weit es sich entwickeln wird und wo die Reise hingehen wird. Der Entwickler ist aber sehr an Ideen interessiert und setzt diese wenn möglich und sinnvoll auch um. Daher lohnt es sich RustyPipes eine Chance zu geben und zumindest einmal zu testen, dem Entwickler Feedback zu geben, Fehler zu melden oder auch Code beitragen.&lt;/p&gt;
&lt;p&gt;Ich für meinen Teil werde den Verlauf sehr genau verfolgen, da ich vor allem die Streamingtechnik sehr spannend finde.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Arduino Programm für das Pedal</title>
        <link>https://christian-hofmann.eu/p/arduino-programm-f%C3%BCr-das-pedal/</link>
        <pubDate>Thu, 13 Jun 2024 00:00:00 +0000</pubDate>
        
        <guid>https://christian-hofmann.eu/p/arduino-programm-f%C3%BCr-das-pedal/</guid>
        <description>&lt;img src="https://christian-hofmann.eu/p/arduino-programm-f%C3%BCr-das-pedal/image1.png" alt="Featured image of post Arduino Programm für das Pedal" /&gt;&lt;h2 id=&#34;einleitung&#34;&gt;Einleitung
&lt;/h2&gt;&lt;p&gt;Bei meinem letzten Beitrag über den Umbau meines Orgelpedals habe ich versprochen, noch einmal das Programm für den Arduino zu teilen. Diesem Versprechen möchte ich nun endlich nachkommen. Den Code habe ich auf Github veröffentlicht unter &lt;a class=&#34;link&#34; href=&#34;https://github.com/klangpost/Orgelpedal/blob/main/code.ino&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/klangpost/Orgelpedal/blob/main/code.ino&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Im folgenden möchte ich diesen kurz erklären. Zum Anfang aber erst einmal die Grundüberlegung. Das Orgelpedal soll an einem Computer als MIDI Gerät erkannt werden und beim Drücken/Loslassen einer Taste ein entsprechendes MIDI Event senden. Da ich einen Arduino DUE verwende ist eine Tastenmatrix nicht notwendig. Die Reedschalter sind sofern eine Taste nicht gedrückt wird geschlossen. Die Reedschalter sind verbunden mit den Pin’s 22-52 und GND.&lt;/p&gt;
&lt;h2 id=&#34;variablen&#34;&gt;Variablen
&lt;/h2&gt;&lt;p&gt;Zuerst werden die Notwendigen Variablen erstellt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cc&#34; data-lang=&#34;cc&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;MIDIUSB.h&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;//Variablen für Pedaltasten
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Array mit Pinnummern
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pedalPins&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;mi&#34;&gt;22&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;23&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;25&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;26&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;27&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;29&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;30&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;31&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;mi&#34;&gt;32&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;33&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;34&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;35&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;36&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;38&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;39&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;41&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;mi&#34;&gt;42&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;43&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;44&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;45&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;46&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;47&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;48&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;49&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;51&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;mi&#34;&gt;52&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Midi Noten
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;midiNote&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;mi&#34;&gt;36&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;37&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;38&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;39&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;41&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;42&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;43&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;44&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;45&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;mi&#34;&gt;46&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;47&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;48&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;49&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;51&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;52&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;53&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;54&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;55&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;mi&#34;&gt;56&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;57&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;58&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;59&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;60&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;61&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;62&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;64&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;65&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#define NUM_PEDALS (sizeof(pedalPins) / sizeof(int))  &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// Anzahl der Pedale berechnen
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Anzahl der Tasten ermitteln
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;bool&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pedalState&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NUM_PEDALS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;#include &amp;lt;MIDIUSB.h&amp;gt; fügt die MIDIUSB Bibliothek hinzu, diese ermöglichst die Midi Funktionen über USB mit sehr wenig Aufwand. In der Konstante pedalPINS werden die Pinnummern eingetragen, an denen die Reedschalter angeschlossen sind und in midiNOTES befinden sich die dazugehörigen Midi Keycodes. Der tiefste Keycode mit der Nummer 36 entspricht dem Kontra C.&lt;/p&gt;
&lt;p&gt;NUM_PEDALS enthält die Anzahl der Pedaltasten. Diese wird anhand der Arraygröße ermittelt. Bedeutet die Anzahl der verwendeten Pins aus pedalPINS ergibt die Anzahl der Tasten. Aus dieser Information wird auch noch das Array pedalState erstellt. Dieses beinhaltet die Information für jede Taste, ob diese nun gerade gedrückt ist, oder nicht.&lt;/p&gt;
&lt;h2 id=&#34;midi-funktionen&#34;&gt;Midi Funktionen
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cc&#34; data-lang=&#34;cc&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;/**** Funktionen für MIDI ***************************************************/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;controlChange&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;byte&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;channel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;byte&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;control&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;byte&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;midiEventPacket_t&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;event&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;mh&#34;&gt;0x0B&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0xB0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;channel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;control&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;MidiUSB&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sendMIDI&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;event&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;noteOn&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;byte&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;channel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;byte&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pitch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;byte&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;velocity&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;midiEventPacket_t&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;noteOn&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;mh&#34;&gt;0x09&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x90&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;channel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pitch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;velocity&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;MidiUSB&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sendMIDI&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;noteOn&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;noteOff&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;byte&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;channel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;byte&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pitch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;byte&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;velocity&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;midiEventPacket_t&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;noteOff&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;mh&#34;&gt;0x08&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x80&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;channel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pitch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;velocity&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;MidiUSB&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sendMIDI&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;noteOff&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;bool&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;MidiButton&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;byte&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;midisig&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;bool&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tasteAlt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;      &lt;span class=&#34;c1&#34;&gt;//Button-Pin, Noten-Nummer
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;kt&#34;&gt;bool&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;taste&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;digitalRead&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tasteAlt&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;LOW&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;taste&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;HIGH&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Serial&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;NoteON MidiNote: &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Serial&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;midisig&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;noteOn&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;midisig&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;64&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;MidiUSB&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;flush&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;tasteAlt&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;taste&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;delay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tasteAlt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tasteAlt&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;HIGH&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;taste&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;LOW&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Serial&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;NoteOFF MidiNote: &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Serial&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;midisig&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;noteOff&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;midisig&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;64&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;MidiUSB&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;flush&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;tasteAlt&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;taste&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;delay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tasteAlt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Um nicht den Rahmen zu sprengen erkläre ich hier nur die Funktion MidiButton. An diese Funktion wird der PIN der Taste, der Midi Keycode und der letzte bekannte Zustand übergeben. Dann wird der aktuelle Zustand des PINS gelesen und mit dem letzten bekannten verglichen. Ist dieser identisch, dann hat sich nicht verändert. Sollte er abweichen, dann wurde die gedrückte Taste losgelassen, oder die nicht gedrückte Taste gedrückt. Entsprechend dem neuen Zustand wird über die Funktion noteOff oder noteOn ein Midisignal gesendet und eine Debug Information ausgegeben.&lt;/p&gt;
&lt;h2 id=&#34;setup--loop&#34;&gt;Setup / Loop
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cc&#34; data-lang=&#34;cc&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;setup&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;Serial&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;begin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;9600&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// Öffnet die serielle Schnittstelle bei 9600 Bit/s:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;n&#34;&gt;Serial&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Setup beginnt&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;Serial&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;println&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Setze alle Pedalpins als Eingang mit internen Pull-up-Widerständen (passe dies nach Bedarf an)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;NUM_PEDALS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;pinMode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pedalPins&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;INPUT_PULLUP&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;pedalState&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;HIGH&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;Serial&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Setup abgeschlossen&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;Serial&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;println&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;loop&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;//Pedaltasten
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;NUM_PEDALS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;bool&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;currentState&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pedalState&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;pedalState&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;MidiButton&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pedalPins&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;midiNote&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;currentState&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;In der Funktion Setup wird zuerst eine serielle Schnittstelle geöffnet mit 9600 Bit/s. Danach werden alle angegebenen Pins als Eingang mit einem Pull-up-Widerstand gesetzt. Die loop Funktion ist sehr kompakt und geht nur endlos alle Pins durch um den Zustand zu ermitteln. Am Ende angekommen, geht es wieder von vorne los… Es gibt kein Ende 🙂&lt;/p&gt;
&lt;p&gt;Dies sollte die einfachste Variante sein. Natürlich kann man dieses Projekt auch mit einem kleineren Arduino realisieren. Dann wäre aber eine Tastenmatrix aufzubauen mit Dioden. In meinem Fall war mir dies aber zu viel Arbeit. Eine 8×8 Matrix wäre z.B in der Lage mit nur 16 Pins 64 Tasten abzufragen. Bei einem Pedal mit 30 Tasten wäre auch eine 5×6 Matrix sinnvoll.&lt;/p&gt;
&lt;p&gt;Zusätzlich wird in diesem Basisprogramm keine Taste entprellt. Das recht Hohe Delay von 100 Millisekunden ist recht hoch und da fällt in meinem Aufbau kein Prellen auf. Wer eine möglichst geringe Latenz möchte, der sollte die Tasten zusätzlich entprellen.&lt;/p&gt;
&lt;p&gt;Vielleicht ist das Programm für den einen oder anderen nützlich. Nutzt es gerne und passt es an eure Bedürfnisse an.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Orgelpedal midifizieren</title>
        <link>https://christian-hofmann.eu/p/orgelpedal-midifizieren/</link>
        <pubDate>Fri, 10 May 2024 00:00:00 +0000</pubDate>
        
        <guid>https://christian-hofmann.eu/p/orgelpedal-midifizieren/</guid>
        <description>&lt;img src="https://christian-hofmann.eu/p/orgelpedal-midifizieren/image1.jpg" alt="Featured image of post Orgelpedal midifizieren" /&gt;&lt;h2 id=&#34;einleitung&#34;&gt;Einleitung
&lt;/h2&gt;&lt;p&gt;Die letzten Wochen habe ich wieder einmal ein Orgel Pedal midifiziert, welches ich geschenkt bekommen habe, inklusive einer passenden Bank. Hier ein kurzes Bautagebuch dazu.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h2 id=&#34;bilder&#34;&gt;Bilder
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://christian-hofmann.eu/p/orgelpedal-midifizieren/image1.jpg&#34;
	width=&#34;1024&#34;
	height=&#34;771&#34;
	srcset=&#34;https://christian-hofmann.eu/p/orgelpedal-midifizieren/image1_hu_3eb111762a9a9ddc.jpg 480w, https://christian-hofmann.eu/p/orgelpedal-midifizieren/image1_hu_2b914f842791f363.jpg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Pedal Urzustand&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;132&#34;
		data-flex-basis=&#34;318px&#34;
	
&gt;
&lt;img src=&#34;https://christian-hofmann.eu/p/orgelpedal-midifizieren/image2.jpg&#34;
	width=&#34;1024&#34;
	height=&#34;771&#34;
	srcset=&#34;https://christian-hofmann.eu/p/orgelpedal-midifizieren/image2_hu_3c0543ad48a6ef35.jpg 480w, https://christian-hofmann.eu/p/orgelpedal-midifizieren/image2_hu_f4fd4b010070720b.jpg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Pedal Urzustand&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;132&#34;
		data-flex-basis=&#34;318px&#34;
	
&gt;
&lt;img src=&#34;https://christian-hofmann.eu/p/orgelpedal-midifizieren/image3.jpg&#34;
	width=&#34;576&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://christian-hofmann.eu/p/orgelpedal-midifizieren/image3_hu_d87929604a15c8a5.jpg 480w, https://christian-hofmann.eu/p/orgelpedal-midifizieren/image3_hu_60060596483cdf4c.jpg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Verkabelt&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;
&lt;img src=&#34;https://christian-hofmann.eu/p/orgelpedal-midifizieren/image4.jpg&#34;
	width=&#34;576&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://christian-hofmann.eu/p/orgelpedal-midifizieren/image4_hu_f59af8f31fad90c1.jpg 480w, https://christian-hofmann.eu/p/orgelpedal-midifizieren/image4_hu_3132734c3474b24b.jpg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Verkabelt&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;ausblick&#34;&gt;Ausblick
&lt;/h2&gt;&lt;p&gt;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&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://christian-hofmann.eu/p/orgelpedal-midifizieren/image5.png&#34;
	width=&#34;1024&#34;
	height=&#34;965&#34;
	srcset=&#34;https://christian-hofmann.eu/p/orgelpedal-midifizieren/image5_hu_54392a3eb16c5bd5.png 480w, https://christian-hofmann.eu/p/orgelpedal-midifizieren/image5_hu_6a97bd206d03f614.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Verkabelt&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;106&#34;
		data-flex-basis=&#34;254px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;aufnahme&#34;&gt;Aufnahme
&lt;/h2&gt;&lt;p&gt;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.&lt;/p&gt;
&lt;audio controls&gt;
    &lt;source src=&#34;audio1.mp3&#34; type=&#34;audio/mpeg&#34;&gt;
    Ihr Browser unterstützt das Audio-Element nicht.
&lt;/audio&gt;
</description>
        </item>
        
    </channel>
</rss>
