Sound: Unterschied zwischen den Versionen

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche
(Melody)
(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

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

  1. 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 */