Sound: Unterschied zwischen den Versionen
Habo (Diskussion | Beiträge) (→Melody) |
Habo (Diskussion | Beiträge) (→Melody) |
||
Zeile 24: | Zeile 24: | ||
Für weitere eigene Songs kann man ein include in '''hardware/pwm/pwm_melody.c''' einfügen und dann das struct '''songs''' mit weiteren Melodien aus dem Programmspeicher füllen. | Für weitere eigene Songs kann man ein include in '''hardware/pwm/pwm_melody.c''' einfügen und dann das struct '''songs''' mit weiteren Melodien aus dem Programmspeicher füllen. | ||
+ | |||
+ | Das struct '''songs''' ist selbst folgendermaßen aufgebaut. | ||
+ | { name, delay, transpose, struct of notes, # of notes } | ||
+ | |||
+ | name: Anzeigename für ECMD. Bsp: '''Alle meine Entchen''' | ||
+ | delay: Faktor für die Geschwindigkeit der Noten, btw. der Pausen. Bsp: '''20''' | ||
+ | transpose: Wenn ja, um wieviele Töne soll das Lied Transponiert werden. Bsp: '''4''' | ||
+ | struct of notes: name des structs aus dem include das die Noten enthält: Bsp: '''entchen_notes''' | ||
+ | # of notes: Errechnet aus dem struct die Anzahl der Noten: Bsp: '''songlength(entchen_notes)''' | ||
+ | |||
==== Beispiele ==== | ==== Beispiele ==== |
Version vom 29. November 2009, 22:21 Uhr
Inhaltsverzeichnis
PWM Sound
Via PWM kann auch Sound ausgegeben werden.
make menuconfig I/O support ---> [*] PWM Generator ---> (NEW) PWM Generator [*] PWM Wave [*] PWM Melody
Wave
Es wird eine kleine 8 Bit Mono 8000Hz PCM WAV Datei abgespielt. Die entsprechende Datei kann einfach ausgetauscht werden und nach dem neukompilieren kann man diese dann abspielen.
hardware/pwm/ethersex.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 8 bit, mono 8000 H
Melody
Es wird eine Melody abgespielt die als Notenwerte abgelegt sind. Als Beispiel liegt das Lied "Alle meine Entchen" unter hardware/pwm/entchen.h bereit.
Für weitere eigene Songs kann man ein include in hardware/pwm/pwm_melody.c einfügen und dann das struct songs mit weiteren Melodien aus dem Programmspeicher füllen.
Das struct songs ist selbst folgendermaßen aufgebaut.
{ name, delay, transpose, struct of notes, # of notes }
name: Anzeigename für ECMD. Bsp: Alle meine Entchen delay: Faktor für die Geschwindigkeit der Noten, btw. der Pausen. Bsp: 20 transpose: Wenn ja, um wieviele Töne soll das Lied Transponiert werden. Bsp: 4 struct of notes: name des structs aus dem include das die Noten enthält: Bsp: entchen_notes
- of notes: Errechnet aus dem struct die Anzahl der Noten: Bsp: songlength(entchen_notes)
Beispiele
Beispiel: hardware/pwm/pwm_melody.c anpassen
#include "newsong.h" [...] struct song_t songs[] PROGMEM = { { "entchen", 10, 4, entchen_notes, songlength(entchen_notes) }, { "newsong", 40, 1, newsong_notes, songlength(newsong_notes) }
};
Beispiel: newsong.h hinzufügen
#ifndef PWM_NEWSONG_H #define PWM_NEWSONG_H /* * The adapted melody is in the public domain. */ const struct notes_duration_t newsong_notes[] PROGMEM = { {C,8}, {D,8}, {E,8}, {E,8}, {G,16},{G,16}, {A,8}, {A,8}, {A,8}, {A,8}, {G,24},{p,8}, {p, 1}, {p, 1}, {A,8}, {A,8}, {A,8}, {A,8}, {G,24},{p,8}, {p, 1}, {p, 1}, {F,8}, {F,8}, {F,8}, {F,8}, {E,16},{E,16}, {D,8}, {D,8}, {D,8}, {D,8}, {C,24},{p,8}, {p, 1}, {p, 1} }; #endif /* PWM_NEWSONG_H */