Day 21: Piano Player

The door of day 21 reveals a loudspeaker. We will use it in our experiment today to play some music. We will need a very simple setup for this.

Versuchsaufbau

Setup

In our experiment we will connect the speaker to one of the board’s two DAC outputs. DAC means digital/analogue converter and with this we can generate an analogue signal using digital commands. In our experiment today, we will use it to produce sounds, and to be more precise, we are talking about piano sounds. The notes, pauses and keys are sent via UDP by means of an array of numbers.

Copy the Node-RED flow of today into your environment, but before using it, you must again disable previous ones. You also need to adjust the IP of the UDP node to reflect the broadcast IP of your board. Then choose the program of today and start the flow.

You will find already predefined songs that you can play via the user interface. But of course, you also have the option to translate or compose songs yourself. There is a text box for this purpose. Just copy your composition into it.

The notes follow the simple note scheme and are entered like this:

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

The number following the note is the octave. You can replace 1 using any number from 1 to 7. You can also specify the note span with the prefix BEAT to make it a half, quarter or eighth note. The BEAT attribute always refers to the preceding note. BEAT_1 is the default, so you do not need to write this before each note. The following note spans are used:

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

For example, if you want to play the beginning of Beethoven’s famous 5th Symphony, enter the following text into the window:

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

You don’t have to be a musical genius. Just try a few notes and note spans  and compose your own song. Or convert a familiar song into this system.

Imagination has no limits.

18 Comments

  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”.

    Reply
  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

    Reply
    1. BestRazer

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

      Reply
  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

    Reply
    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?

      Reply
      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… :-)

        Reply
  4. paulaner

    Erweitert

    Reply
    1. Äd Franzis

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

      Reply
  5. paulaner

    Twinkle Twinkle Star und
    We Wish You a Merry Christmas

    sind Gleich?

    Reply
  6. Jan Jacob

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

    Reply
    1. paulaner

      lies die Komentare

      Reply
  7. Jan Jacob

    Wie passt man nochmal die Broadcast IP an?

    Reply
    1. paulaner

      Doppelklick auf den Node

      Reply
  8. paulaner

    aus sehr sehr leise wird so leise!

    Reply
  9. paulaner

    Hallo,

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

    Danke

    Reply
  10. rsoldie

    funktioniert wie es soll… endlich , wieder…

    Reply
    1. paulaner

      leise oder laut?

      Reply
  11. paulaner

    Geht, doch sehr sehr leise.

    Reply

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.