SDCC - Lib Sound

Ver el tema anterior Ver el tema siguiente Ir abajo

SDCC - Lib Sound

Mensaje por Iader Camilo el Dom 12 Ene 2014 - 1:41


Saludos compañeros del foro, aquí esta mi primer aporte a la comunidad.... bounce 

Es una librería a la que llame "Sound", la cual permite reproducir una nota musical con su octava y con una duración elegida, el archivo .h esta comentado para auto entenderse si embargo aquí pongo un código de ejemplo de como usarla.

Lo primero es tener una librería de retardos la del foro esta bien sin embargo e añadido unos cambios pequeños a dicha librería así que también la adjunto en el código, hay un vídeo en función de la librería  y una simulación en proteus 7.8 sp2.

Hay que definir el pin de salida por el cual saldrá el sonido se hace definiendo la macro Speaker de la siguiente forma #define Speaker RA0.

Donde RA0 es el pin de salida del sonido y luego llamar a la función play_sound que recibe la nota que se quiere tocar luego la octava de la nota y por ultimo el tiempo en US que durara la nota.

Sin mas el código fuente de ejemplo:


Código:
#include<pic16f628a.h>
#include<libs/delay.h>

/*
   Toca una alarma, la cancion din don dan y la cancion cumpleaño feliz version español.
   Por el pin RA2, usa 3 pulsadores.
*/

//Pin para la salida del sonido, por default en la libreria es RA0
#define   Speaker   RA2

#include<libs/sound.h>

unsigned int __at _CONFIG CONFIG = _CP_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT & _LVP_OFF;

void main(void){
   unsigned char i;
   CMCON = 0b00000111;
   TRISA = 0b11000010;
   
   for(;;){
      if( !RA1 ){
         //Alarma
         for( i=0; i<5; i++  ){
            //Parametros, la Nota, La escala en octava, tiempo que dura la nota en milisegundos
            play_sound( nSI, 7, 90 );
            play_sound( nFA, 7, 60 );
         }
      }else if( !RA6 ){
         //Cumpleaño Feliz
         play_sound( nDO, 7, 45 );
         play_sound( nDO, 7, 15 );
         play_sound( nRE, 7, 60 );
         play_sound( nDO, 7, 60 );
         play_sound( nFA, 7, 60 );
         
         play_sound( nMI, 7, 120 );
         play_sound( nDO, 7, 45 );
         play_sound( nDO, 7, 15 );
         
         play_sound( nRE, 7, 60 );
         play_sound( nDO, 7, 60 );
         play_sound( nSOL, 7, 60 );
         
         play_sound( nFA, 7, 120 );
         play_sound( nDO, 7, 45 );
         play_sound( nDO, 7, 15 );
         
         //////////////////////////
         play_sound( nDO_, 7, 60 );
         play_sound( nLA, 7, 60 );
         play_sound( nFA, 7, 60 );
         play_sound( nMI, 7, 60 );
         play_sound( nRE, 7, 60 );
         
         play_sound( nSI, 7, 45 );
         play_sound( nSI, 7, 15 );
         play_sound( nLA, 7, 60 );
         play_sound( nFA, 7, 60 );
         play_sound( nSOL, 7, 60 );
         play_sound( nFA, 7, 120 );
      }else if( !RA7 ){
         //DinDonDan- No es el timbre es la cancion
         for( i=0; i<3; i++  ){
            play_sound( nSOL, 7, 60 );
            play_sound( nMI, 7, 60 );
         
            play_sound( nSOL, 7, 30 );
            play_sound( nSOL, 7, 30 );
         
            play_sound( nMI, 7, 60 );
         
            play_sound( nSOL, 7, 30 );
            play_sound( nSOL, 7, 30 );
         
            play_sound( nMI, 7, 30 );
            play_sound( nMI, 7, 30 );
         
            play_sound( nSOL, 7, 30 );
            play_sound( nSOL, 7, 30 );
         
            play_sound( nMI, 7, 120 );
         }
      }
   }
}





Aquí el link de descarga de la librería, una simulación en proteus y el código fuente del ejemplo.

https://drive.google.com/folderview?id=0B30dNdsbR-LlbEVmTzNHckE0REU&usp=sharing

Un video de la libreria en accion  Smile 



Nota: La librería es la idea de una persona que encontré en la web, yo hice cambios y adaptaciones para poder usarla en SDCC, esta bajo licencia GPL.
Cabe destacar que hay que saber leer una partituras musicales para armar su sonido, si alguien le interesa puedo hacer un tuto .. jeje dejen los comentarios.

Disfrútenla, dudas, consejos, inquietudes no duden en dejarlas.. hasta pronto.  cyclops

Iader Camilo
Nuevo Usuario
Nuevo Usuario

Mensajes : 7
Fecha de inscripción : 02/09/2013
Edad : 26
Localización : Colombia

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.