You are on page 1of 13

Generar melodas con PIC

http://www.forosdeelectronica.com/f24/generar-melodias-pic-9359/

Panel de Control

Ayuda

Comunidad

Nuevos Mensajes

Buscar

Enlaces

Finalizar Sesin

Bienvenido, COSMICO. Tu ltima visita fue Hace 3 Horas a las 12:16 Mensajes Privados: 0 Sin leer, 15 en total.

Home Wiki Grupos Albums Proyectos Tutoriales

Foros de Electrnica > Diseo digital > Microcontroladores y sistemas embebidos

Generar melodas con PIC


Herramientas 23-ago-2007 Buscar en Tema Calificar Tema #1 Generar melodas con PIC

PICMIND
Fecha de Ingreso: julio-2007 Ubicacin: Colombia Mensajes: 72

Hola a todos. Bueno aqu estoy de nuevo con otro proyecto, esta vez voy a explicar como generar melodas con un PIC de forma super sencilla; primero voy a explicar algunas cosas que puedes obviar si sabes algo de msica. Las canciones que escuchamos estn compuestas por notas musicales (DO, RE, MI, FA, SOL, LA, SI) a cada una de estas notas le corresponde una frecuencia. En la siguiente tabla mostrar qu frecuencia le corresponde a cada nota: Do C 262 Hz Re D 294 Hz Mi E 330 Hz Fa F 349 Hz Sol G 392 Hz La A 440 Hz Si - B 494 Hz Las letras que coloqu al lado de cada nota pertenecen a la nomenclatura inglesa (otra forma de llamar a

1 de 13

23/08/2011 04:37 p.m.

Generar melodas con PIC

http://www.forosdeelectronica.com/f24/generar-melodias-pic-9359/

las notas), las coloqu por que son con las que trabaja la librera del PIC C Compiler. Las notas tienen tambin una duracin, que est determinada por las figuras musicales; para este ejemplo se usar la siguiente duracin. Fusa 62 mS Semicorchea 125 mS Corchea 250 mS Negra 500 mS Blanca 1 Segundo Redonda 2 Segundos No se si estos tiempos son los correctos, pero las melodas con la que los he probado suenan bien, si alguna sabe con exactitud la duracin de la figuras por favor corrjanme. Bueno ya tenemos la frecuencia y la duracin, entonces a explicar el cdigo. Las notas se generarn utilizando una librera que trae el CCS. La librera de llama TONES.C e incluye esta funcin: generate_tone(frequency, duration) Esta funcin nos permitir crear las notas musicales. Para usarla debemos tener en cuenta los siguientes parmetros: frecuency es una variable que tomar el valor de la nota que queramos generar. duration es el tiempo que durar la nota y est dada en milisegundos. La librera trae predefinidas las frecuencias adecuadas para cada nota y permite elegir en que octava tocarla; permite hasta una tercera octava. A continuacin les mostrar las tablas: // NOTE FREQUENCY // Octave0 Octave1 Octave2 Octave3 const long C_NOTE[4] ={ 262, 523, 1047, 2093}; const long Db_NOTE[4] ={ 277, 554, 1109, 2217}; const long D_NOTE[4] ={ 294, 587, 1175, 2349}; const long Eb_NOTE[4] ={ 311, 622, 1245, 2489};

2 de 13

23/08/2011 04:37 p.m.

Generar melodas con PIC

http://www.forosdeelectronica.com/f24/generar-melodias-pic-9359/

const const const const const const const const

long long long long long long long long

E_NOTE[4] ={ 330, 659, 1329, 2637}; F_NOTE[4] ={ 349, 698, 1397, 2794}; Gb_NOTE[4] ={ 370, 740, 1480, 2960}; G_NOTE[4] ={ 392, 784, 1568, 3136}; Ab_NOTE[4] ={ 415, 831, 1661, 3322}; A_NOTE[4] ={ 440, 880, 1760, 3520}; Bb_NOTE[4] ={ 466, 923, 1865, 3729}; B_NOTE[4] ={ 494, 988, 1976, 3951};

OJO: Esto solo lo coloco como una ayuda por si alguien est perdido, no es la librera completa, es solo un pedazo, si la copian as, nunca les va a funcionar. As pues, si por ejemplo queremos generar un Do que dura una negra, le decimos entonces: generate_tone(C_NOTE[0], 500); Entonces si queremos generar la escala musical, sera as: generate_tone(C_NOTE[0], 500); generate_tone(D_NOTE[0], 500); generate_tone(E_NOTE[0], 500); generate_tone(F_NOTE[0], 500); generate_tone(G_NOTE[0], 500); generate_tone(A_NOTE[0], 500); generate_tone(B_NOTE[0], 500); Entonces teniendo esto y espero que todo haya quedado claro, lo nico que necesitamos son las partituras de las canciones que queramos crear. En el siguiente enlace encontrarn el cdigo para tocar el "homino de la Alegra". http://www.freewebs.com/picmind/melodiasconpic.htm

Si puede pensarse puede hacerse....www.picmind.es.tl

3 de 13

23/08/2011 04:37 p.m.

Generar melodas con PIC

http://www.forosdeelectronica.com/f24/generar-melodias-pic-9359/

Mensaje inapropiado?
29-ago-2007

Citar
#2

aerodesliza
Fecha de Ingreso: marzo-2007 Ubicacin: Rep. Dom. Mensajes: 96

Rcuerdo cuando realize ese proyecto pero en assembler, fue dificil pero funcionaba nitido, claro en MikroC y softwares similares se hace muy facilmente

Mensaje inapropiado?
29-ago-2007

Citar
#3

pic-man
Fecha de Ingreso: enero-2007 Ubicacin: Mxico Mensajes: 336

Esto es muy interesante, yo tengo pensado hacerlo pero en assembler, uno de estos das comenzar y cuando termine postear el proyecto.

Programacin de Microcontroladores PIC http://programarpics.blogspot.com/

Mensaje inapropiado?
30-ago-2007

Citar
#4

tiopepe123
Fecha de Ingreso: mayo-2006 Ubicacin: Barcelona (Espanya) Mensajes: 3.161

Ahora solo hace falta el midi, pero es muy facil, sobretodo en C. Una solucion para tener el micro libre es utilizar el PWM o el CCP en modo especial, pero es necesario utilizar interrupciones.

Mensaje inapropiado?
30-ago-2007

Citar
#5

Francisco Galarza
Fecha de Ingreso: marzo-2007 Ubicacin: Capital Federal, Argentina

Faltan las frecuencias de las notas sostenidas o bemoles: C....Do.......261,63

4 de 13

23/08/2011 04:37 p.m.

Generar melodas con PIC

http://www.forosdeelectronica.com/f24/generar-melodias-pic-9359/

Mensajes: 603

C#..Do#....277,18 (Db) D....Re.......293,66 D#..Re#....311,13 (Eb) E.....Mi.......329,63 F.....Fa.......349,23 F#...Fa#....369,99 (Gb) G....Sol.......392,00 G#..Sol#....415,30 (Ab) A.....La.......440,00 A#...La#....466,16 (Bb) B.....Si........493,88 Si quers tocar una misma nota ms grave o ms aguda pods cambiarla de octava. Para subir o bajar una octava se multiplica o se divide la frecuencia por dos. Ejemplo: 1760Hz-> A5 880Hz---> A4 440Hz---> A3 220Hz---> A2 110Hz---> A1 Esta frmula nos permite calcular la frecuencia de cada nota: Donde o: octava n: nmero de nota (1 es Do, 2 es Do#...) Esta es una deduccin para usar potencias de e:

Fuente: http://www.latecladeescape.com/w0/content/view/94/49/

http://www.myspace.com/frangalarza Francisco Galarza Audio para todos

5 de 13

23/08/2011 04:37 p.m.

Generar melodas con PIC

http://www.forosdeelectronica.com/f24/generar-melodias-pic-9359/

Mensaje inapropiado?
30-ago-2007

Citar
#6

pic-man
Fecha de Ingreso: enero-2007 Ubicacin: Mxico Mensajes: 336

Para quien quiera manejar ms tonos funcionan muy bien las ecuaciones de Francisco Galarza, pero siempre es ms fcil ver el valor de la frecuencia directamente de una lista Aqu estn las frecuencias de las 88 teclas de un piano

Programacin de Microcontroladores PIC http://programarpics.blogspot.com/

Mensaje inapropiado?
08-sep-2007

Citar
#7

sp_27
PICMIND dijo:

Las notas tienen tambin una duracin, que est determinada por las figuras musicales; para este ejemplo se usar la siguiente duracin. Fusa 62 mS Semicorchea 125 mS Corchea 250 mS Negra 500 mS Blanca 1 Segundo Redonda 2 Segundos No se si estos tiempos son los correctos, pero las melodas con la que los he probado suenan bien, si alguna sabe con exactitud la duracin de la figuras por favor corrjanme.

Fecha de Ingreso: marzo-2007 Ubicacin: Venezuela Mensajes: 139

He leido lo que han escrito todos y este proyecto me parece muy interesante, quisiera montarlo pero conozco poco de lenguaje emsamblador y espero no se me haga difcil, en cuando a los tiempos que dio PICMIND dependen de la referencia, pues para leer la msica hay muchas reglas, como en la ortografa y gramtica espaola, es un idioma. Lo importante es que cada nota dura la mitad de la anterior, es decir, la semifusa dura la mitad de la fusa, esta dura la mitad de la semicorchea, esta a su vez dura la mitad de la corchea, y as hasta llegar

6 de 13

23/08/2011 04:37 p.m.

Generar melodas con PIC

http://www.forosdeelectronica.com/f24/generar-melodias-pic-9359/

a la redonda, pero todo depende del indicador del comps y del tiempo. El indicador de comps es un nmero fraccionario que se coloca al inicio de una obra escrita (y a veces en el transcurso se cambia), el denominador indica cual nota se establece como unidad del tiempo y el numerador indica la cantidad de veces que esa nota cabe en un comps, ejemplo, un indicador de 3/4 indica que habr 3 negras en un comps. Denominadores: 1-redonda, 2- blanca, 4-negra, 8-corchea, 16-semicorchea, 32- fusa, 64-semifusa. Un comps es lo que est escrito entre dos lneas verticales. Lo que los msicos llaman "tiempo", es la velocidad de la obra, se mide en pulsos por minuto y cada pulso corresponde a la nota establecida como unidad de tiempo. Ejemplo: 3/4 en un allegro a 120: cada comps tendr tres negras y en un minuto deben tocarse 120 negras, por lo tanto cada negra durar 500mS; si el indicador de comps es 3/8 y el tiempo es 120, un comps tendr 3 corcheas y cada una durar 500mS; en un 3/4 en un lento a 60, cada negra durar 1 segundo, en un 3/8 presto a 150 cada corchea durar 400 mS; en un 4/4 a 100 el comps tendr 4 negras y cada una durar 600mS. Por eso todo depende de la referencia.

Es mas fcil buscar algo si sabes que es; y si no, ests a la deriva. Lee

aqu y aqu antes de preguntar

Gracias a RATMAYOR por tan oportuno avatar

Mensaje inapropiado?
13-sep-2007

Citar
#8

ghost_007
Fecha de Ingreso: julio-2007 Mensajes: 17

hola tengo una duda con respecto a los tonos para generarlos, cuanto tiene que durar el pulso, por ejemplopara la nota DO el periodo dura dura 3.8 milisegundos (F=1/T, T=1/F y T=1/262), pero el tiempo de encendido cuanto tiene que durar? por ejemplo estas dos seales tienen la misma frecuencia pero distinta duracion del tiempo de encendido. _____ ______ | | toff | | toff _________| ton |__________________| ton |_________________ |____ 3.8 milisegundos _____|

7 de 13

23/08/2011 04:37 p.m.

Generar melodas con PIC

http://www.forosdeelectronica.com/f24/generar-melodias-pic-9359/

||

_________ _________ | | toff | | toff _________| ton |______________| ton |______________ |____ 3.8 milisegundos _____| ||

Mensaje inapropiado?
13-sep-2007

Citar
#9

ghost_007
Fecha de Ingreso: julio-2007 Mensajes: 17

hola bueno encontre lo que necesitaba y por si alguien tetia la misma duda que yo aqui dejo una tabla que incica los valores de ton.
Miniatura de Adjuntos

Mensaje inapropiado?
24-sep-2007

Citar
#10

sp_27

Hola a todos de nuevo, estuve revisando la pgina web donde estn los proyectos propuestos por PICMIND pues estoy interesada en montar el que genera el Himno a la alegra usando otra cancin, pero not que el programa contiene un include que llama a un "TONES.C", revise en un computador y no consegu dicha librera y en la pgina web el link que muestran no abre

Fecha de Ingreso: marzo-2007 Ubicacin: Venezuela

[b dijo:

http://www.freewebs.com/picmind/proyectos.htm#126515150[/b]]A continuacin les mostrar el cdigo

8 de 13

23/08/2011 04:37 p.m.

Generar melodas con PIC

http://www.forosdeelectronica.com/f24/generar-melodias-pic-9359/

Mensajes: 139

para que el PIC toque una cancin, en este caso el Himno de la alegra, para esto utilic la libreria del PIC C Compiler "TONES.C", para una mejor sigan este link: ...

Quisiera saber si me pueden ayudar con este problema, quisiera usar este programa para probar con otra cancin, quiz otra menos conocida pero que me gusta mucho. Gracias de antemano. PD:PIC C Compiler es un programa?

Mensaje inapropiado?
02-may-2008

Citar
#11

pepechip

Hola tengo una duda. Al implementar una partitura cualquiera hay que dejar algun tiempo sin ningun sonido entre una nota y la siguiente?

Fecha de Ingreso: febrero-2007 Ubicacin: GranadaEspaa Mensajes: 1.986

www.diselc.es www.microcontroladorespic.com

Mensaje inapropiado?
07-may-2008

Citar
#12

sp_27

Solamente si la partitura lo indica, deben dejarse algun tiempo sin sonido, si no lo indica, las notas suenan una luego de otra (salvo algunas excepciones). La musica es un lenguaje, tiene simbolos para todo, te lo digo por experiencia, pase aos estudiandola.

Fecha de Ingreso: marzo-2007 Ubicacin: Venezuela Mensajes: 139

Es mas fcil buscar algo si sabes que es; y si no, ests a la deriva. Lee

aqu y aqu antes de preguntar

Gracias a RATMAYOR por tan oportuno avatar

9 de 13

23/08/2011 04:37 p.m.

Generar melodas con PIC

http://www.forosdeelectronica.com/f24/generar-melodias-pic-9359/

Mensaje inapropiado?
07-may-2008

Citar
#13

pepechip

muchas gracias, pensaba que ya nadie me hiba a resolver la duda.

Fecha de Ingreso: febrero-2007 Ubicacin: GranadaEspaa Mensajes: 1.986

www.diselc.es www.microcontroladorespic.com

Mensaje inapropiado?
16-may-2008

Citar
#14

nerea185
Fecha de Ingreso: mayo-2008 Ubicacin: bilbao Mensajes: 3

Hola! Tengo que realizar un organo musical con el PIC16F874, y estoy teniendo problemas a la hora de meter las seales al PIC para las diferentes frecuencias. Si alguien pudiera ayudarme lo agradecera Saludos.

Mensaje inapropiado?
16-may-2008

Citar
#15

pepechip

"problemas". Es una palabra bastante generica, deves de ser mas concreto.

Fecha de Ingreso: febrero-2007 Ubicacin: GranadaEspaa

www.diselc.es www.microcontroladorespic.com

10 de 13

23/08/2011 04:37 p.m.

Generar melodas con PIC

http://www.forosdeelectronica.com/f24/generar-melodias-pic-9359/

Mensajes: 1.986

Mensaje inapropiado?
16-may-2008

Citar
#16

nerea185
Fecha de Ingreso: mayo-2008 Ubicacin: bilbao Mensajes: 3

Lo primero, gracias por contestar y preocuparte. la cosa es que soy nueva en esto de los PICs y no se como hacer el programa para meter las seales de audio, con sus frecuencias en el microcontrolador. si me podrias ayudar con alguna pauta te lo agradeceria. muchas gracias

Mensaje inapropiado?
16-may-2008

Citar
#17

pepechip

Fecha de Ingreso: febrero-2007 Ubicacin: GranadaEspaa Mensajes: 1.986

Primeramente sabras que cada nota musical corresponde a una frecuencia determinada. (si no las tienes, las pides y las subo aqui) Cada frecuencia le corresponde un periodo. P=1/F. Como el periodo es el tiempo que transcurre desde que la salida vale 1 hasta que vuelve otra vez a tener el mismo valor, tu deveras de coger el Periodo obtenido y dividirlo entre 2, para asi tener el tiempo que la salida tiene que estar en on y en off. ejemplo: la nota LA corresponde a la frecuencia de 440Hz. Por lo que el periodo sera 1/440=0,0022727 seg. Por lo tanto la salida del micro devera de estar 1136useg en ON y otros 1136 useg en OFF. Y este proceso repetirlo durante todo el tiempo que tengas pisada esa tecla. Precisamente hoy acaban de subir al foro un programa para calcular los retardos http://www.forosdeelectronica.com/f2...169/#post87168

www.diselc.es www.microcontroladorespic.com

Mensaje inapropiado?

Citar

11 de 13

23/08/2011 04:37 p.m.

Generar melodas con PIC

http://www.forosdeelectronica.com/f24/generar-melodias-pic-9359/

16-may-2008 Visitante Mensajes: n/a pepechip dijo:

#18

Primeramente sabras que cada nota musical corresponde a una frecuencia determinada. (si no las tienes, las pides y las subo aqui)

Precisamente abri un hilo hace poco para adaptar una guitarra analogica al guitar hero, me vendria de puta madre esa tabla de frecuencias.

Mensaje inapropiado?
16-may-2008 Visitante

Citar
#19

perdon, post repe


Mensajes: n/a

Mensaje inapropiado?
16-may-2008

Citar
#20

pepechip

rapido eh. Generar melodas con PIC Que despiste estaban en este mismo post, justo al principio.

Fecha de Ingreso: febrero-2007 Ubicacin: GranadaEspaa Mensajes: 1.986

www.diselc.es www.microcontroladorespic.com

Mensaje inapropiado?

Citar

Atencin: Ests leyendo un tema que no tiene actividad desde hace ms de 6 MESES.

12 de 13

23/08/2011 04:37 p.m.

Generar melodas con PIC

http://www.forosdeelectronica.com/f24/generar-melodias-pic-9359/

Respuesta Rpida Mensaje:

Tema Anterior|Prximo Tema Ir al Foro Microcontroladores y sistemas embebidos

Foros de Electrnica > Diseo digital > Microcontroladores y sistemas embebidos

Discusiones similares Generar audio con PIC Problema con el Generador de Melodas como generar seales con un pic Circuito generador de melodias Cmo generar un segundo en un pic?

La franja horaria es GMT -4.5. Ahora son las 15:19. Contctenos Acerca de Normas de Participacin Privacidad Powered by vBulletin Version 3.8.4 Copyright 2000 - 2011, Jelsoft Enterprises Ltd. SEO by vBSEO 3.3.2 2009, Crawlability, Inc. Arriba

13 de 13

23/08/2011 04:37 p.m.