Projekte
BirgerT
nibo2_MyWorx
nibo2_audio.h
Projekte
Forum
Doku
Öffentliche Projekte
Startseite
Beispielprogramme
Projekte von anderen
Welcome
Username
Passwort
Eingeloggt bleiben
Zugangsdaten vergessen?
Registrieren
Projektverwaltung
⇨ Please choose! ⇦
——————————————————
✎ Create new project...
★ Browse existing projects...
——————————————————
⚬ MotorTest#1
⚬ C Tutorial 8#1
⚬ NIBO2 C Project#1
⚙ C Tutorial 15#1
⚬ 2010_11_18_el_test001#1
nibo2_MyWorx
liesmich.txt
main.c
nibo2_akku.c
nibo2_akku.h
nibo2_audio.c
nibo2_audio.h
nibo2_audio_titels.c
nibo2_globaldef.h
nibo2_parameter.c
nibo2_parameter.h
nibo2_sensors.c
nibo2_sensors.h
nibo2_timer2.c
nibo2_timer2.h
nibo2_tour.c
nibo2_tour.h
nibo2_xbmgfx.c
nibo2_xbmgfx.h
Studio6_m...x_hex.txt
Project details
Compiler settings
Nachrichten
Sie sind nicht eingeloggt.
Neuigkeiten
★
NiboRoboLib 3.6
2017-01-17: Neue Version 3.6
★
NiboRoboLib 3.4.1
2016-04-16: Neue Version 3.4.1
★
Coding Tutorial
2015-11-22: Jetzt auch für den NIBO burger!
Site-Statistic
7427 private projects
385 public projects
16181052 lines compiled
58220 builds
NIBO
@
nibo2_MyWorx/nibo2_audio.h [read only]
/****************************************************************** Nibo2 Audio Bibliothek - BirgerT 11.07.2012 BSD License see "liesmich.txt" pitch_table und play_tone auf Basis nibo2 sounddemo von workwind play_song inspiriert durch avrbuch von Roman Mitteregger RTTTL - songs aus "nokring_tones.zip" Verwendung: include "nibo2_globaldef.h" include "nibo2_timer2.h" include "nibo2_audio.h" main(){ audio_init(); sei(); uint8_t songnr = 0; // Wiedergabe starten.. audio_play_song_P(audio_start_titel_P(songnr)); // ..und warten bis fertig while(Audio_Status == PLAY){ audio_play_song_P(0); } while(1==1) { sei(); // Einen einzelnen Ton ausgeben, wenn kein song spielt #define PLOPP if(Audio_Status == READY) audio_play_tone(C3,6) // Wenn Starttaste gedrückt.. if(KEY_PRESSED) { // ..Index auf nächsten Titel.. if(++songnr > 15) songnr = 0; // .. und Titel starten audio_play_song_P(audio_start_titel_P(songnr)); } // Ist der Song weiter zu spielen? if((Audio_Status == PLAY)){ // Weitere Noten in Buffer parsen audio_play_song_P(0); // Titel Text anzeigen audio_show_titel_P(3,30,start_titel_P(songnr)); } } } ******************************************************************/ #ifndef _NIBO2_AUDIO_H_ #define _NIBO2_AUDIO_H_ #include "nibo2_globaldef.h" #include "nibo2_timer2.h" /********************************************** RINGBUFFER SETUP Die Laenge des Ringbuffers muss einer 2er Potenz (16,32,64 oder 128) entsprechen, damit der Zeiger Rollover vom Ende an den Anfang mit einer Bitmaske gemacht werden kann. ******************************************************************/ #ifndef NOTEN_BUF_LEN #define NOTEN_BUF_LEN 16 #endif // ************************************************ Audiostatus enum{ STOP, PLAY, PAUSE, ENDE, READY, SKIP_F, SKIP_B }; extern volatile uint8_t Audio_Status; /*************** Notentabelle (c) Nils Springob @ nicai-systems */ enum { C0, C0_, D0, D0_, E0, F0, F0_, G0, G0_, A0, A0_, H0, C1, C1_, D1, D1_, E1, F1, F1_, G1, G1_, A1, A1_, H1, C2, C2_, D2, D2_, E2, F2, F2_, G2, G2_, A2, A2_, H2, C3, C3_, D3, D3_, E3, F3, F3_, G3, G3_, A3, A3_, H3, C4, C4_, D4, D4_, E4, F4, F4_, G4, G4_, A4, A4_, H4, C5, C5_, D5, D5_, E5, F5, F5_, G5, G5_, A5, A5_, H5, C6, C6_, D6, D6_, E6, F6, F6_, G6, G6_, A6, A6_, H6, C7, C7_, D7, D7_, E7, F7, F7_, G7, G7_, A7, A7_, H7, P__= 255 }; //extern const char PROGMEM song1[]; /******************************************** TITEL STARTADRESSE audio_start_titel_P() gibt 15 Zeichen Titeltext aus dem RTTTL-Song auf dem Grafikdisplay aus. -> nr = Titelindex (Titelnummer-1) in der songs[] Liste <- Startadresse des RTTTL Notenstrings im Flash Der Zeiger wird zur Titelanzeige mit show_titel() verwendet und / oder an den RTTL Parser play_song() übergeben *****************************************************************/ PGM_P audio_start_titel_P(uint8_t nr); /************************************************ TITEL ANZEIGEN audio_show_titel_P() gibt 15 Zeichen Titeltext aus dem RTTTL-Song auf dem Grafikdisplay aus. -> x-,y- Position für Textausgabe Adresse des Titelanfangs im Flash ****************************************************************/ // Grafikdisplay aus nibo_config.h? #ifdef NIBO_USE_GFX void audio_show_titel_P(uint8_t x, uint8_t y, PGM_P song); #endif /************************************************** AUDIO INIT audio_init() übergibt die Adresse der Funktion zum Abspielen einer Note an die ISR Taskliste des Timer 2. ****************************************************************/ void audio_init(void); /************************************************** NOTE IN BUFFER audio_play_tone() eine einzelne Note in den Notenbuffer legen -> pitch = Nummer der Note aus der Notentabelle duration = Tonlänge in 10 ms Schritten <- FALSE = Notenbuffer voll, Note nicht abgelegt ******************************************************************/ uint8_t audio_play_tone(uint8_t pitch, uint8_t duration); /************************************************** RTTTL PARSER audio_play_song_P() liest einen Song im RTTTL Format aus dem Flash und gliedert ihn in einzelne Noten (pitch, duration). Die Noten werden über audio_play_note() in den Ausgabebuffer für die Interupt Funktion abgelegt, bis der Buffer voll ist oder der gesamte Titel abgearbeitet wurde. Die Funktion muss zyklisch aufgerufen werden, um den Buffer weiter zu füllen. -> Adresse des neuen Titelanfangs im Flash Adresse = 0 == Titel fortsetzen <- TRUE == Noten in Buffer abgelegt, FALSE == Buffer voll ***************************************************************/ uint8_t audio_play_song_P(PGM_P song); #endif
Compiler results:
Werbung
Online
bradlygoi441228704773
irvinschutt28551
josch
josettecostantino862
sashaserrano161