Testprogramm und Schlussbemerkungen

Zum Ausprobieren von Tracker und Mixer habe ich einen beliebten Kinderliedklassiker mit fetzigem Disco-Beat neu interpretiert. Das Programm pwm_tracker_test.c legt zuerst zwei Arrays an, die als Tracks verwendet werden. Eines speichert die Melodie, das andere den Basslauf.

Stellenmarkt
  1. IT-Support Specialist (m/w/d)
    UnternehmerTUM GmbH, Garching/München
  2. Research Scientist*(m/w/d) Risikobewertung KI
    Fraunhofer-Institut für Kurzzeitdynamik, Ernst-Mach-Institut EMI, Efringen-Kirchen
Detailsuche

Die beiden Tracks sind unterschiedlich lang, außerdem verwenden die beiden Tonspuren unterschiedliche Schwingungen: Ein Sinus für die Melodie, ein Dreieckssignal für den Bass. Die Tracks werden mit Hilfe einer Konstante (PAUSE) und eines Präprozessormakros, das die Noten erzeugt, zusammengebaut. Das eigentliche Programm ist sehr übersichtlich:

  1. retrosound_init(0, 16);
  2.  
  3. setBeat(120, QUARTER);
  4.  
  5. setTrack(0, trackLen, track[0]);
  6. setTrack(1, track2Len, track2);
  7.  
  8. setWaveform(0, SINE);
  9. setWaveform(1, TRIANGLE);
  10.  
  11. setChannelVolume(0, 7);
  12. setChannelVolume(1, 7);
  13.  
  14. playChannel(0);
  15. playChannel(1);

Es muss lediglich den Sound-Code initialisieren, Takt und Notenwerte setzen, beiden Tonspuren einen Track zuweisen, die zu verwendende Schwingung auswählen, die Lautstärke anpassen (sehr wichtig, sonst übersteuert der Ausgang) und dann beide Kanäle starten.

Audio: Mit dem Tracker und PWM vom RP2040 erzeugte Musik. (0:20)

Golem Karrierewelt
  1. CEH Certified Ethical Hacker v12: virtueller Fünf-Tage-Workshop
    14.-18.11.2022, Virtuell
  2. Deep-Dive Kubernetes – Observability, Monitoring & Alerting: virtueller Ein-Tages-Workshop
    10.11.2022, Virtuell
Weitere IT-Trainings

Das Ergebnis klingt sehr 8-bittig, aber mit ein wenig Optimierung dürfte sich das noch verbessern lassen. Und wenn nicht, hänge ich einfach einen Audio-Codec dran - dafür wäre nämlich mit dem Mixer alles vorhanden. Der sampelt in der aktuellen Implementierung übrigens mit 48 kHz, seine Ausgabe könnte also direkt in jeden gängigen Codec eingespeist werden.

  • Größerer Ausschnitt aus dem erzeugten Signal: links ein reiner Sinus, rechts Überlagerung aus Sinus und Rechtecksignal. (Bild: Johannes Hiltscher, Golem.de)
  • Das Grundsignal, mit dem das PWM-Signal die Spannungspegel erzeugt. Hier erzeugt ohne Vorteilung des Systemtakts. (Bild: Johannes Hiltscher, Golem.de)
  • In den PWM-Modulen des RP2040 läuft ein Zähler zwischen 0 und einem Maximalwert. Bei jedem Zählschritt wird sein Wert mit einem Register (Counter Compare) verglichen; ist der Zähler kleiner oder gleich, wird eine 1 ausgegeben, sonst eine 0. (Bild: Johannes Hiltscher, Golem.de)
  • So funktioniert die Abtastratenkonvertierung: Anhand des Ausgangssamples werden neue Abtastpunkte mit der Frequenz des Mixers erzeugt. Bei niedrigen Frequenzen werden neue Punkte erzeugt, bei hohen nur einige ausgewählt. (Bild: Johannes Hiltscher, Golem.de)
  • Das Ausgangssignal ist nicht ganz sauber, aber als Sinus erkennbar. Die Frequenz stimmt auch, hier ein G4.  (Bild: Johannes Hiltscher, Golem.de)
Das Ausgangssignal ist nicht ganz sauber, aber als Sinus erkennbar. Die Frequenz stimmt auch, hier ein G4. (Bild: Johannes Hiltscher, Golem.de)

Das Beste aus zwei Welten

Obwohl der Code den Anforderungen aktueller Audio-Hardware genügt, ist er - zumindest was den Speicherbedarf angeht - genau so effizient wie alte Konsolen. Das Testprogramm für den Tracker benötigt gerade einmal 200 Byte für etwa zehn Sekunden Musikinformation. Möglich wird das durch Sampling.

Grundsätzlich ist es auch möglich, beliebige Samples einzubauen - damit ließen sich dann auch aufgenommene Geräusche wiedergeben. Der Code dafür ist zwar noch nicht fertig, aber das Ziel erreicht: Der Pico könnte ein Spiel musikalisch untermalen.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Musik erzeugen mit Tracker
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6


Aktuell auf der Startseite von Golem.de
Streaming
Amazon zeigt neuen Fire TV Cube

Das neue Spitzenmodell der Fire-TV-Produktfamilie wurde beschleunigt und hat deutlich mehr Anschlüsse als bisher. Zudem wird eine neue Fire-TV-Fernbedienung angeboten.

Streaming: Amazon zeigt neuen Fire TV Cube
Artikel
  1. Berufsschule für die IT-Branche: Leider nicht mal ausreichend
    Berufsschule für die IT-Branche
    Leider nicht mal "ausreichend"

    Lehrmaterial wie aus einem Schüleralbtraum, ein veralteter Rahmenlehrplan und nette Lehrer, denen aber die Praxis fehlt - mein Fazit aus drei Jahren als Berufsschullehrer.
    Ein Erfahrungsbericht von Rene Koch

  2. Tim Cook: Apple will Entwicklung in München weiter ausbauen
    Tim Cook
    Apple will Entwicklung in München weiter ausbauen

    Laut Konzernchef Cook ist der Standort München wegen der Mobilfunktechnik für Apple "sehr, sehr wichtig". Doch da ist noch mehr.

  3. Indiegogo: Ein Computer, der sich nur auf Schreibmarathons fokussiert
    Indiegogo
    Ein Computer, der sich nur auf Schreibmarathons fokussiert

    Der Freewrite Alpha ist mit internem Speicher und mechanischer Tastatur etwas mehr als eine analoge Schreibmaschine - aber auch nicht viel mehr.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • PS5-Controller GoW Ragnarök Edition vorbestellbar • Saturn Technik-Booster • Viewsonic Curved 27" FHD 240 Hz günstig wie nie: 179,90€ • MindStar (Gigabyte RTX 3060 Ti 499€, ASRock RX 6800 579€) • AMD Ryzen 7000 jetzt bestellbar • Alternate (KF DDR5-5600 16GB 96,90€) [Werbung]
    •  /