Autor Tema: Notas musicales  (Leído 39727 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado septiembre_negro

  • PIC18
  • ****
  • Mensajes: 310
Re: Notas musicales
« Respuesta #30 en: 24 de Octubre de 2009, 15:45:44 »
Pues bien después de un largo recorrido por la word web  e encontrado como convertir archivos midi a rttl realizando una prueba preliminar con 100 notas en resultado es mas que aceptables   :-/ :-/ en la inteligencia que estamos hablando de tonos monofónicos.
Ahora me dispongo a realizar pruebas con una melodía completa 285  notas  :shock: :shock:
Aunque cabe aclaras que con un editor de midi podemos cortar la melodía a demás de otras cosas como eliminar pistas cambiar el instrumento de una pista el tiempo octava crear  melodías propias. ;-)
En una próxima etapa esta considerada la amplificación del audio y el control de volumen digital con unos bichitos que texas  tubo a bien mandarme, se podría pensar que para tonos monofónicos es una exageración y así es   :mrgreen: la idea principal es introducirse mas afondo en estos chismes para mas adelante migrar el proyecto a archivos de audio mas complejos como midi y por que no mp3 el cielo es el limite  :-/ :-/ :-/ :-/
Por lo que hay para entretenerse un buen tiempo y mejorar los resultados.


Desconectado septiembre_negro

  • PIC18
  • ****
  • Mensajes: 310
Re: Notas musicales
« Respuesta #31 en: 25 de Octubre de 2009, 17:01:26 »
Pues nada sigo  sin conseguir la conversión de midi a rttl, encontré este conversor en línea  http://midi.mathewvp.com/   .
Las primeras pruebas fueron con pocas notas por lo que no me percate que este convertidor entrega valores para la duración de la nota de 1 asta 384.
Y el protocolo rtttl para la duración de la nota tiene valores de 1, 2, 4, 8, 16,32 así que este convertidor no es compatible, a los valores que entrega no le encuentro relación alguna con el tiempo de duración ya que si estuviera dado en segundos es imposible que una nota dure 384 segundos, si fueran milisegundos es imposible que una nota dure 1 milisegundo.
Así que continúo buscando desesperadamente un maldito convertidor de midi a rtttl   :5] :5] :5]

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Notas musicales
« Respuesta #32 en: 26 de Octubre de 2009, 15:24:37 »
mhh, creo que el formato MIDI es muy complejo respecto al formato rtttl, por lo que quedarían muchos "huecos" para pasar de RTTTL a MIDI, y sobraría mucha información para pasar de MIDI a RTTTL.

Saludos
El papel lo aguanta todo

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Notas musicales
« Respuesta #33 en: 02 de Noviembre de 2009, 16:30:55 »
hola septiembre_negro,
He leido todo el hilo pero me confundi un poco, en el sentido de saber si ya tienes la melodia que deseabas para que lo "cante" (decodifique) el pic. Mi intención es ayudar pues yo tambien trabaje con esa libreria del ccs (tonces.c) y realize unas canciones con ella.

Saludos.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado septiembre_negro

  • PIC18
  • ****
  • Mensajes: 310
Re: Notas musicales
« Respuesta #34 en: 02 de Noviembre de 2009, 17:00:00 »
mhh, creo que el formato MIDI es muy complejo respecto al formato rtttl, por lo que quedarían muchos "huecos" para pasar de RTTTL a MIDI, y sobraría mucha información para pasar de MIDI a RTTTL.

Saludos


Pues si efectivamente el formato midi es por mucho mas complejo que el rttl ,
Una melodía midi tiene mas de 10 pistas (ahora no recuerdo el número exacto) y cada pista se puede reproducir con un instrumento diferente.
De ahí el mayor problema para convertir a rttl ya que este código es monofónico.
Este problema se resuelve con un editor midi este editor permite escoger la pista que mejores resultados de al reproducirla en monofónico, recortar la misma etc.
Infortunadamente no me a sido posible encontrar un editor de estos solo tengo por seguro que existen.
El motivo por el cual me es necesario pasar de midi a rttl es como ya lo mencione mas arriba el formato rttl lleva en su nacimiento el pecado es un formato para ring tones por lo cual sus melodías son de poca duración y el repertorio que hay para escoger es muy limitado.
Por lo cual las únicas melodías que e encontrado en formato rttl son tonadas del tío SAM lo cual no me deja nada conforme ya que cualquier serie navideña china o tarjeta navideña aria exactamente lo mismo sin tanto lió y si mucho mas barato (dudo mucho que alguna de estas cosas que menciono tenga un microcontrolador en sus entrañas mas bien alguna araña china muy especifica)
Me hubiera encantado que el pic cantara algo mas hispánico  :mrgreen:  el niño del tambor, peses en el rió, ETS

Desconectado septiembre_negro

  • PIC18
  • ****
  • Mensajes: 310
Re: Notas musicales
« Respuesta #35 en: 02 de Noviembre de 2009, 17:10:16 »
hola septiembre_negro,
He leido todo el hilo pero me confundi un poco, en el sentido de saber si ya tienes la melodia que deseabas para que lo "cante" (decodifique) el pic. Mi intención es ayudar pues yo tambien trabaje con esa libreria del ccs (tonces.c) y realize unas canciones con ella.

Saludos.


Si me acido posible reproducir melodías con el pic pero los resultados no me dejan conforme por lo que expongo en mi respuesta a mlo.
Las melodías rttl se escuchan bien pero son de poca duración y no hay mucho de donde escoger.
Convertir de midi a rttl no me as dejado conforme ya que el convertidor en línea que probé no me permite editar el archivo midi por lo cual los resultados van de regulares a malos.
Te agradezco tu interés
Saludos
« Última modificación: 02 de Noviembre de 2009, 17:12:51 por septiembre_negro »

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Notas musicales
« Respuesta #36 en: 02 de Noviembre de 2009, 20:24:11 »
si te refieres al sonido metalico que genera el pic solito pues ni modo, a menos que le aplicas suavizadores o filtros antes de la salida del parlantito, pero esa rutina tones.c te permite obtener esos sonidos de las tarjetas navideñas. no es eso lo que quieres?
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado septiembre_negro

  • PIC18
  • ****
  • Mensajes: 310
Re: Notas musicales
« Respuesta #37 en: 02 de Noviembre de 2009, 21:39:10 »
Hola
Con respecto a los sonidos metálicos no tengo problema soy consiente de las limitantes que tiene el pic en este aspecto. es mas que imposible pedirle el tono de un piano de cola.
Lo que no me deja contento es que no me fue posible gravar en el pic  música a mi gusto por las siguientes cuestiones.
No tengo conocimientos es música  por lo cual me es imposible leer directamente una partitura y codificarla según la librería tones.c

Debido a esto recurrí al formato rtttl ya que Este formato resuelve el problema al entregar en un formato texto tiempo,nota,octava,ets

Desgraciadamente las melodías rtttl que deambulan por la red dejan mucho que desear
Son muy cortas y el repertorio es muy escueto y repetitivo (intenta una búsqueda con rttl navideños y veras que te vas a encontrar con la mismas tonaditas una y otra ves, mama santa,rudolf,noche de paz y otras pocas que ahora no recuerdo.)
Saludos

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Notas musicales
« Respuesta #38 en: 03 de Noviembre de 2009, 00:50:05 »
ahhhhhhhhhhhhhh

ese era el resumen que esperaba leer  :mrgreen:

entonces podemos empezar con el tutorial de lectura de partitura? pues si esperas codificarla segun la libreria tones.c (o cualquier otra escrita para un microcontrolador de 8 bits) directamente pues solo te queda hacer tu mismo un software que vincule ambos temas, lo cual no es del todo imposible, más bien lo veo muy interesante, es más ya se me antojo cual tortita selva negra mmmm ñomi ñomi, naturalmente que antes debes tener nociones de música pero no creas que es difícil, es sólo cuestion de saber sumar y contar.

tu diras cuando empezamos.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Notas musicales
« Respuesta #39 en: 03 de Noviembre de 2009, 10:56:41 »
 ;-)

Bueno, ese tutorial en donde iria, porque la idea es que se aprenda a leer la partitura y de ahi migrar a algun soft no? Me apunto a esa micro_cadaver.

Saludos
El papel lo aguanta todo

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Notas musicales
« Respuesta #40 en: 03 de Noviembre de 2009, 13:01:14 »
hola MLO, creo que aca nomas pues esta amarrado y como bien dices luego vendria el software para hacer esas rutinas compatibles con el tones.c

que dice el amigo septiembre_negro?  :o
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado septiembre_negro

  • PIC18
  • ****
  • Mensajes: 310
Re: Notas musicales
« Respuesta #41 en: 03 de Noviembre de 2009, 17:02:29 »
Pues yo estoy más que puesto, aprender a entender una partitura como cultura general es más que interesante.
Resuelto esto seguiría  hacer una prueba a mano (codificar a lápiz y papel de partitura a notes.c) y en este punto decidir si vale la pena diseñar un algoritmo para hacerlo de forma automático.
Este comentario viene por que hay que entender las limitaciones del pic para cantar. Es muy probare que los resultados no sean buenos la cuerda vocal de nuestro pic es monofónica y los matices que nos puede dar esta vos son muy muy  limitados.
Anexo el siguiente ejerció para que tengan una idea de lo que  hablo la melodía tamboriler  originalmente tiene formato midi al pasarla a rttl (que seria algo parecido a lo que pretendemos lograr al pasar de partitura a tones.c) pierde demasiado  si lo compilan y lo prueban podrán juzgar por si  mismos
Saludos.


Desconectado septiembre_negro

  • PIC18
  • ****
  • Mensajes: 310
Re: Notas musicales
« Respuesta #42 en: 03 de Noviembre de 2009, 17:09:26 »
Bien aquí esta el ejerció en cuestión .en cuanto al código esta echo un desastre solamente estaba jugando para hacer unas prueba con una melodía completa esta pésimamente optimizado y hay mucho que esta demás o se podría hacer mejor aquí lo interesante es que reproduzcan la melodía y juzguen por ustedes mismos si merece la pena continuar con esto


Código: [Seleccionar]


#org 0x1eaf, 0x1FFF void loader16F877A(void) {} //protect bootloader code for the 8k 16F876/7
#include <tones.c>
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)

int cont=1;
int pulsos;
int i=1;










#define SIZE 54

const struct note
{
   long tone;
   long length;
}noche_de_paz[SIZE] = {
Fb_note[1],750, Gb_note[1],250,Fb_note[1],500, Db_note[1],500, P_note[1],500,
P_note[1],250, Fb_note[1],750, Gb_note[1],250, Fb_note[1],500, Db_note[1],500,
P_note[1],500, P_note[1],250, Cb_note[2],500, Ab_note[1],750, P_note[1],500,
P_note[1],250, B_note[1],1000, B_note[1],500, Fb_note[1],750, P_note[1],500,
P_note[1],250, Gb_note[1],1000, Gb_note[1],500, B_note[1],750, Ab_note[1],250,
gb_note[1],500, Fb_note[1],750, Gb_note[1],250, Fb_note[1],500, Db_note[1],750,
P_note[1],500, P_note[1],250, Gb_note[1],1000, Gb_note[1],500, B_note[1],750,
A_note[1],250, Gb_note[1],500, Fb_note[1],750, Gb_note[1],250, FB_note[1],500,
D_note[1],750, P_note[1],500, P_note[1],250, Cb_note[2],1000, Cb_note[2],500,
E_note[2],750, Cb_note[2],250, Ab_note[1],500, B_note[1],998, Db_note[2],1000,
P_note[1],500, P_note[1],250, B_note[1],500};



#define SIZE2 25

const struct note2
{
   long tone2;
   long length2;
}jingle_bell[SIZE2] = {
B_note[1],500, B_note[1],500,B_note[1],500, P_note[1],125, B_note[1],500,
B_note[1],500, B_note[1],500, P_note[1],125, B_note[1],250,D_note[2],250
G_note[1],250, A_note[1],250, B_note[1],500, C_note[2],250, C_note[2],250,
C_note[2],500, B_note[1],250, B_note[1],250, B_note[1],500, B_note[1],250,
A_note[1],250, A_note[1],250, B_note[1],250, A_note[1],500, D_note[2],250};


#define SIZE3 42

const struct note3
{
   long tone3;
   long length3;
}litte_dankey[SIZE3] = {
E_note[1],250, E_note[1],250,G_note[1],1000, E_note[1],500, F_note[1],250,
F_note[1],250, A_note[1],1000,F_note[1],500, E_note[1],250, E_note[1],250,
G_note[1],1000, E_note[1],500,D_note[1],1000, P_note[1],1000, E_note[1],250,
E_note[1],250, G_note[1],1000,E_note[1],500, F_note[1],250, F_note[1],250,
A_note[1],1000, F_note[1],500,G_note[1],250, G_note[1],250, B_note[1],1000,
G_note[1],500, C_note[2],1000,P_note[1],1000, C_note[2],1000, C_note[2],500,
C_note[1],500, B_note[1],750,A_note[1],250, G_note[1],1000, A_note[1],500,
B_note[1],250, A_note[1],250,G_note[1],1000, A_note[1],500, B_note[1],250,
A_note[1],250, G_note[1],1000};






#define SIZE4 58

const struct note4
{
   long tone4;
   long length4;
}merri_chistmas[SIZE4] = {
c_note[1],500, f_note[1],500,f_note[1],250, g_note[1],250, f_note[1],250,
e_note[1],250, d_note[1],500,ab_note[0],500, d_note[1],500, g_note[1],500,
g_note[1],250, a_note[1],250,g_note[1],250, f_note[1],250, e_note[1],500,
c_note[1],500, e_note[1],500,a_note[1],500, a_note[1],250, ab_note[1],250,
a_note[1],250, g_note[1],250,f_note[1],500, d_note[1],500, c_note[1],250,
c_note[1],250, d_note[1],500,g_note[1],500, e_note[1],500, f_note[1],750,
p_note[1],250, c_note[1],500,f_note[1],500, f_note[1],500, f_note[1],500,
e_note[1],750, p_note[1],250,e_note[1],500, f_note[1],500, e_note[1],500,
d_note[1],500, c_note[1],750,p_note[1],250, c_note[1],500, a_note[1],500,
g_note[1],250, g_note[1],250,g_note[1],250, f_note[1],250, c_note[2],500,
c_note[1],500, c_note[1],250,c_note[1],250, d_note[1],500, g_note[1],500,
e_note[1],500, f_note[1],500,p_note[1],1000};




#define SIZE5 50

const struct note5
{
   long tone5;
   long length5;
}tamboriler[SIZE5] = {
p_note[1],2000, f_note[1],1000,p_note[1],125, g_note[1],500, p_note[1],62,
a_note[1],1000, p_note[1],125,a_note[1],500, p_note[1],62, a_note[1],500,
p_note[1],62, ab_note[1],250,p_note[1],62, a_note[1],250, p_note[1],62,
ab_note[1],500, p_note[1],62,a_note[1],2000, p_note[1],1000, f_note[1],500,
p_note[1],62, f_note[1],500,p_note[1],62, g_note[1],500, p_note[1],62,
a_note[1],500, p_note[1],62,a_note[1],500, p_note[1],62, a_note[1],500,
p_note[1],62, a_note[1],500,p_note[1],62, ab_note[1],250, p_note[1],62,
a_note[1],250, p_note[1],62,ab_note[1],500, p_note[1],62, a_note[1],2000,
p_note[1],1000, g_note[1],500,p_note[1],62, a_note[1],500, p_note[1],62,
ab_note[1],500, p_note[1],62,c_note[2],500, p_note[1],62, c_note[2],500};




#define SIZE6 50

const struct note6
{
   long tone6;
   long length6;
}tamboriler2[SIZE6] = {
p_note[1],62, c_note[2],500,p_note[2],62, d_note[2],500, p_note[2],62,
c_note[2],250, p_note[2],62,ab_note[1],250, p_note[1],250, a_note[1],500,
p_note[1],62, g_note[1],2000,p_note[1],200, g_note[1],500, p_note[2],62,
a_note[1],500, p_note[2],62,ab_note[1],500, p_note[2],62, c_note[2],500,
p_note[1],62, c_note[2],500,p_note[2],62, c_note[2],500, p_note[2],62,
d_note[2],500, p_note[2],62,db_note[2],250, p_note[2],62, d_note[2],250,
p_note[1],62, c_note[2],500,p_note[2],62, ab_note[1],1000, p_note[2],125,
d_note[2],250, p_note[2],62,c_note[2],250, p_note[2],62, ab_note[1],500,
p_note[1],62, a_note[1],1000,p_note[1],125, c_note[2],250, p_note[2],62,
ab_note[1],250, p_note[1],500,a_note[1],500, p_note[1],65, g_note[1],2000};


#define SIZE7 50

const struct note7
{
   long tone7;
   long length7;
}tamboriler3[SIZE7] = {

p_note[1],500, f_note[1],1000,p_note[2],125, g_note[1],500, p_note[2],62,
a_note[1],500, p_note[1],65,a_note[1],500, p_note[1],65, a_note[1],500,
p_note[1],65, a_note[1],500,p_note[2],62, ab_note[1],250, p_note[2],500,
a_note[1],250, p_note[1],500,ab_note[1],500, p_note[1],65, a_note[1],2000,
p_note[1],1000, g_note[1],250,f_note[1],250, p_note[1],500, g_note[1],500,
p_note[1],62, f_note[1],2000,p_note[2],2000, f_note[1],1000, p_note[2],125,
g_note[1],500, p_note[1],62,a_note[1],1000, p_note[1],125, a_note[1],500,
p_note[1],65, a_note[1],500,p_note[2],65, ab_note[1],250, p_note[2],500,
a_note[1],250, p_note[1],500,ab_note[1],500, p_note[1],65, a_note[1],2000,
p_note[1],1000, f_note[1],500,p_note[2],62, f_note[1],500, p_note[2],62};



#define SIZE8 50

const struct note8
{
   long tone8;
   long length8;
}tamboriler4[SIZE8] = {

g_note[1],500, p_note[1],65,a_note[1],500, p_note[1],65, a_note[1],500,
p_note[1],65, a_note[1],500,p_note[1],62, a_note[1],500, p_note[1],62,
a_note[1],500, p_note[1],65,ab_note[1],250, p_note[1],65, a_note[1],250,
p_note[1],500, ab_note[1],500,p_note[1],65, a_note[1],2000, p_note[1],1000,
g_note[1],500, p_note[1],65,a_note[1],500, p_note[1],65, ab_note[1],500,
p_note[1],65, c_note[2],500,p_note[1],65, c_note[2],500, p_note[1],65,
c_note[2],500, p_note[1],65,c_note[2],500, p_note[2],65, d_note[2],500,
p_note[2],65, c_note[2],250,p_note[1],500, ab_note[1],250, p_note[1],500,
a_note[1],500, p_note[1],65,g_note[1],2000, p_note[1],1000, g_note[1],500,
p_note[1],65, a_note[1],500,p_note[1],65, ab_note[1],500, p_note[1],65,};


#define SIZE9 50

const struct note9
{
   long tone9;
   long length9;
}tamboriler5[SIZE9] = {

c_note[2],500, p_note[1],65,c_note[2],500, p_note[1],65, c_note[2],500,
d_note[2],500, p_note[1],65,db_note[2],250, p_note[1],500, d_note[2],500,
p_note[2],500, c_note[2],500,p_note[2],65, ab_note[1],1000, p_note[2],125,
d_note[2],500, p_note[1],500,c_note[2],250, p_note[1],500, ab_note[1],500,
p_note[2],65, a_note[1],1000,p_note[2],125, c_note[2],500, c_note[2],250,
p_note[2],500, ab_note[1],250,p_note[2],500, a_note[1],500, p_note[2],62,
g_note[1],2000, p_note[1],500,f_note[1],1000, p_note[1],125, g_note[1],500,
p_note[1],62, a_note[1],500,p_note[2],62, a_note[1],500, p_note[2],62,
a_note[1],500, p_note[1],65,a_note[1],500, ab_note[1],250, p_note[2],500,
a_note[1],250, p_note[1],500,ab_note[1],500, p_note[1],65, a_note[1],2000,};


#define SIZE10 8

const struct note10
{
   long tone10;
   long length10;
}tamboriler6[SIZE10] = {

a_note[1],2000, p_note[1],500,g_note[1],250, f_note[1],250, p_note[2],500,
g_note[1],500, p_note[1],65,f_note[1],2000};






























void main()
{  int i;
   INT J;
   INT K;
   INT L;
   int m;
   int n;
   int O;
   int p;
   int q;
   int r;
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_spi(SPI_SS_DISABLED);
   //setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
   //SET_TIMER0(130);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   set_tris_B(0b00010000);
   output_b(0b00000000);
   set_tris_c(0b00000000);
   output_c(0b00000000);
   enable_interrupts(int_ext);    //activar interrupcion externa
   ext_int_edge(H_TO_L);          //config. de int. por flando de bajada
   enable_interrupts(GLOBAL);     //todas las interrupciones desactivadas
 

   // TODO: USER CODE!!
while(TRUE)
   {
      for(i=0; i<SIZE; ++i)
     {
        generate_tone(noche_de_paz[i].tone,noche_de_paz[i].length);
       delay_ms(75);
      }
   
   delay_ms(2000);
   
   for(j=0; j<SIZE2; ++j)
    {
         generate_tone(jingle_bell[j].tone2,jingle_bell[j].length2);
        delay_ms(20);
    }
   
   
  delay_ms(2000);
   
    for(K=0; K<SIZE3; ++K)
      {
        generate_tone(litte_dankey[K].tone3,litte_dankey[K].length3);
        delay_ms(75);
     }
   
   delay_ms(2000);
   
   
   
    for(L=0; L<SIZE4; ++L)
      {
         generate_tone(merri_chistmas[L].tone4,merri_chistmas[L].length4);
         delay_ms(20);
      }
   
    delay_ms(2000);
     
     
     for(m=0; m<SIZE5; ++m)
     {
         generate_tone(tamboriler[m].tone5,tamboriler[m].length5);
        delay_ms(30);
     }
   for(n=0; n<SIZE6; ++n)
     {
        generate_tone(tamboriler2[n].tone6,tamboriler2[n].length6);
         delay_ms(30);
      }
     
     
     
       for(o=0; o<SIZE7; ++o)
     {
        generate_tone(tamboriler3[o].tone7,tamboriler3[o].length7);
         delay_ms(30);
      }
     
     
     
         for(p=0; p<SIZE8; ++p)
     {
        generate_tone(tamboriler4[p].tone8,tamboriler4[p].length8);
         delay_ms(30);
      }
     
     
     
     
     
         for(q=0; q<SIZE9; ++q)
     {
        generate_tone(tamboriler5[q].tone9,tamboriler5[q].length9);
         delay_ms(30);
      }
     
     
     
          for(r=0; r<SIZE10; ++r)
     {
        generate_tone(tamboriler6[r].tone10,tamboriler6[r].length10);
         delay_ms(30);
      }
     
    delay_ms(2000);
   }
}






             
     
« Última modificación: 03 de Noviembre de 2009, 17:14:45 por septiembre_negro »

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Notas musicales
« Respuesta #43 en: 03 de Noviembre de 2009, 17:47:11 »
hola septiembre_negro (que nick mas largo ejejej :D),

cuando mencionas que el pic es monofonico pues tienes razon, reproduce una salida a la vez, y si intentas reproducir un midi (con varios canales) pues pierdes de antemano.

si eres consciente de esto e insistes en obtener sonidos más complejos entonces tendra que revisar un hilo
 donde un pic puede reproducir un archivo *.WAV (usando pwm y una memoria SD) lo cual se aleja abismalmente de la idea que propuse.
otra solucion seria usar varios pics y hacer un concherto con ellos jejeje.
« Última modificación: 03 de Noviembre de 2009, 17:50:11 por micro_cadaver »
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Notas musicales
« Respuesta #44 en: 03 de Noviembre de 2009, 23:18:29 »
O se podría usar varios pines de salida para crear las armonías no? Lo verdaderamente dificil es generar el timbre del instrumento.

Con tres pines podríamos hacer acordes, asi que seria con 5 pines seria perfecto, tres para armonía y 2 para melodía (1 extra por si se quiere armonizar).

Saludos
El papel lo aguanta todo