Tag 21: Piano-Player

Hinter dem Türchen des 21. Tages finden Sie einen Lautsprecher. In dem heutigen Versuch werden wir damit etwas Musik abspielen. Dazu benötigen wir den folgenden einfachen Aufbau.

Versuchsaufbau

Versuchsaufbau

In diesem Versuch ist der Lautsprecher an einem der beiden DAC-Ausgänge des Boards angeschlossen. DAC bedeutet Digital/Analog-Converter und ermöglicht es, durch digitale Befehle ein analoges Signal zu erzeugen. In dem heutigen Versuch werden wir damit Töne erzeugen, genauer gesagt Töne wie von einem Piano. Die Noten, Pausen und Tonarten werden dabei per UDP übertragen, und zwar als Array von Zahlen.

Kopieren Sie zunächst den Node-RED-Flow des heutigen Tages in Ihre Umgebung, natürlich nicht, ohne die vorherigen zu deaktivieren. Außerdem müssen Sie noch die IP des UDP-Nodes auf die Broadcast-IP Ihres Boards anpassen. Wählen Sie zudem das Programm des heutigen Tages. Dann können Sie den Flow starten.

Es gibt bereits vordefinierte Songs, die über das Userinterface gestartet werden können. Sie dürfen allerdings auch selbst Songs übersetzen oder komponieren. Dazu gibt es ein Textfeld, in das Sie Ihre Komposition kopieren können.

Die Noten entsprechen dabei dem einfachen Notenschema und werden in der folgenden Form angegeben:

NOTE_C1, NOTE_CS1, NOTE_D1, NOTE_DS1, NOTE_E1, NOTE_F1, NOTE_FS1, NOTE_G1, NOTE_GS1, NOTE_A1, NOTE_AS1, NOTE_B1

Die Zahl hinter der Note entspricht der Oktave. Sie können die 1 durch eine Zahl von 1 bis 7 ersetzen. Außerdem können Sie die Notenlänge mit dem Präfix BEAT angeben, um so halbe, Viertel- oder Achtelnoten daraus zu machen. Das BEAT-Attribut bezieht sich immer auf die davorstehende Note. Standard ist BEAT_1, daher muss es nicht extra vor jeder Note angegeben werden. Es gelten folgende Notenlängen:

BEAT_025, BEAT_05, BEAT_075, BEAT_1, BEAT_125, BEAT_15, BEAT_175, BEAT_2, BEAT_25, BEAT_3, BEAT_4, BEAT_5

Um zum Beispiel den Anfang von Beethovens berühmter 5. Symphonie zu spielen, kann folgender Text in das Fenster eingegeben werden:

NOTE_G5,BEAT_075,NOTE_G5,BEAT_075,NOTE_G5,BEAT_075,NOTE_E5,BEAT_5, NOTE_F5,BEAT_075,NOTE_F5,BEAT_075,NOTE_F5,BEAT_075,NOTE_D5,BEAT_5

Sie müssen allerdings kein Musikgenie sein. Probieren Sie einfach ein paar Noten und Notenlängen aus und komponieren Sie so Ihr eigenes Lied. Oder setzen Sie ein bekanntes Lied in dieses System um. Ihrer Fantasie sind dabei keine Grenzen gesetzt.

18 Kommentare

  1. Santa

    Erste Nachforschungen ergaben, dass nach jeden Stück ein neuer Task erzeugt wird und nach dem Stück wieder deleted wird. Der Idle Task sollte den 10k Stack (auf dem Heap) irgendwann eigentlich wieder aufräumen, was er aber nicht tut. Schliesslich wird eine Exception geworfen und rebooted. Workaround: Task nicht deleten sondern nur suspenden resp. resumen und Buffer als globale Variable „übergeben“.

    Antworten
  2. BestRazer

    Hier ist das komplette Morgen kommt der Weihnachtsmann:
    NOTE_C5,NOTE_C5,NOTE_G5,NOTE_G5,NOTE_A5,NOTE_A5,NOTE_G5,BEAT_2,NOTE_F5,NOTE_F5,NOTE_E5,NOTE_E5,NOTE_D5,BEAT_2,NOTE_C5,BEAT_2,NOTE_G5,NOTE_G5,NOTE_F5,NOTE_F5,NOTE_E5,NOTE_E5,NOTE_D5,BEAT_2,NOTE_G5,NOTE_G5,NOTE_F5,NOTE_F5,NOTE_E5,NOTE_E5,NOTE_D5,BEAT_2,NOTE_C5,NOTE_C5,NOTE_G5,NOTE_G5,NOTE_A5,NOTE_A5,NOTE_G5,BEAT_2,NOTE_F5,NOTE_F5,NOTE_E5,NOTE_E5,NOTE_D5,BEAT_2,NOTE_C5,BEAT_2,SCORE_END

    Antworten
    1. BestRazer

      Hab grade bemerkt dass es das gleiche wie „Twinkle Twinkle Star“ ist. UPS!

      Antworten
  3. Bernd

    Meine Erfahrungen:

    – Auch mir war es zu leise, aber mit einem kleinen Verstärker, den ich noch in der Bastelkiste hatte, war es dann hinreichend laut.

    – Bei diesem Experiment hat der NodeESP häufiger mal rebootet, auch wenn ich jeweils die Broadcast-Adressen durch die direkten Adressen ersetzt habe.

    -Es ist wohl ein Fehler im Source-Code, da bei „We Wish You a Merry Christmas“ auch das Lied für „Twinkle Twinkle Star“ hinterlegt war. Falls jemand den Code für „We Wish You a Merry Christmas“ braucht, hier ist er:

    NOTE_G4,NOTE_C5,NOTE_C5,BEAT_05,NOTE_D5,BEAT_05,NOTE_C5,BEAT_05,NOTE_B4,BEAT_05,NOTE_A4,NOTE_A4,NOTE_A4,NOTE_D5,NOTE_D5,BEAT_05,NOTE_E5,BEAT_05,NOTE_D5,BEAT_05,NOTE_C5,BEAT_05,NOTE_B4,NOTE_G4,NOTE_G4,NOTE_E5,NOTE_E5,BEAT_05,NOTE_F5,BEAT_05,NOTE_E5,BEAT_05,NOTE_D5,BEAT_05,NOTE_C5,NOTE_A4,NOTE_G4,BEAT_05,NOTE_G4,BEAT_05,NOTE_A4,NOTE_D5,NOTE_B4,NOTE_C5,BEAT_2,NOTE_SILENCE,BEAT_5,SCORE_END

    Antworten
    1. Bernd1

      Ich schließe mich meinem Namensvetter und den übrigen Kommentaren an: Leider Reboots, zu geringe Lautstärke und Wundern, warum nicht Tag 22 mit Tag 21 getauscht wurde.

      Woher kommen die Reboots? Dürfen wir endlich die Quelltexte der Board-Applikationen einsehen?

      Antworten
      1. Bernd

        Deshalb habe ich, wie man an meinem Foto sieht, den Tag 20 nur soweit zurückgebaut, dass der Tag 21 nicht gestört wird… :-) Die Reboots sind in der Tat nervig und ohne Debug des Board-Programmes kommt man hier nicht weiter. Es wird vermutet, dass es die Quelltexte als Weihnachtsgeschenk zum 24. gibt… :-)

        Antworten
  4. paulaner

    Erweitert

    Antworten
    1. Äd Franzis

      Lieber Paulaner,
      kriegst du noch unsere Nachrichten mit? Kannst du uns deinen Flow zukommen lassen? Bitte!
      /Äd.

      Antworten
  5. paulaner

    Twinkle Twinkle Star und
    We Wish You a Merry Christmas

    sind Gleich?

    Antworten
  6. Jan Jacob

    sorry hab was übersehen…
    Jetzt funktioniert es bei mir auch.
    Wie bekommt man den Ton lauter.

    Antworten
    1. paulaner

      lies die Komentare

      Antworten
  7. Jan Jacob

    Wie passt man nochmal die Broadcast IP an?

    Antworten
    1. paulaner

      Doppelklick auf den Node

      Antworten
  8. paulaner

    aus sehr sehr leise wird so leise!

    Antworten
  9. paulaner

    Hallo,

    scheint ein ‚Fehler‘ in dem Code zu sein?
    Kann man das Signal mit Boardmitteln verstärken?

    Danke

    Antworten
  10. rsoldie

    funktioniert wie es soll… endlich , wieder…

    Antworten
    1. paulaner

      leise oder laut?

      Antworten
  11. paulaner

    Geht, doch sehr sehr leise.

    Antworten

Schreiben Sie einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.