Sound: Unterschied zwischen den Versionen
Took (Diskussion | Beiträge) K (→PWM Sound: int link added) |
Habo (Diskussion | Beiträge) |
||
| Zeile 70: | Zeile 70: | ||
#endif /* PWM_NEWSONG_H */ | #endif /* PWM_NEWSONG_H */ | ||
| + | ==== Midi nach .h Konvertieren ==== | ||
| + | |||
| + | Um MIDI Dateien in brauchbare Noten Daten umzuwandeln kann man folgende Schritte durchführen: | ||
| + | |||
| + | # Zuerst eine CSV-Datei aus der Midi Datei erstellen mit dem Tool [http://www.fourmilab.ch/webtools/midicsv/|midicsv] | ||
| + | # Konvertieren der CSV nach .h mit dem Tool [http://avrprog.pbworks.com/AvrSound|m2b] | ||
| + | # neue .h in Ethersex einbinden | ||
| + | ## vorhandene entchen.h überscheiben | ||
| + | ## oder songs[] um den neuen song erweitern | ||
| + | |||
| + | Konkret sieht das so aus, wenn man die existierende Datei überschreiben will | ||
| + | midcsv INPUTMIDIFILE EXAMPLE.CSV | ||
| + | scripts/midimisc/m2b EXAMLE.CSV > hardware/pwm/entchen.h | ||
[[Kategorie:PWM]] | [[Kategorie:PWM]] | ||
[[Kategorie:Sound]] | [[Kategorie:Sound]] | ||
Version vom 6. April 2010, 16:01 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
See also HaboWAV
Wave
Getestet mit atmega644
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
Getestet mit atmega644 und atmega128
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 */
Midi nach .h Konvertieren
Um MIDI Dateien in brauchbare Noten Daten umzuwandeln kann man folgende Schritte durchführen:
- Zuerst eine CSV-Datei aus der Midi Datei erstellen mit dem Tool [1]
- Konvertieren der CSV nach .h mit dem Tool [2]
- neue .h in Ethersex einbinden
- vorhandene entchen.h überscheiben
- oder songs[] um den neuen song erweitern
Konkret sieht das so aus, wenn man die existierende Datei überschreiben will
midcsv INPUTMIDIFILE EXAMPLE.CSV scripts/midimisc/m2b EXAMLE.CSV > hardware/pwm/entchen.h