•  

  • Hice una prueba con un solo de bajo de un tema conocido, para pasar los tiempos aproveche y reforme el programa en VB para que me calcule automaticamente la cantidad de ciclos necesarios segun la nota elegida, los bpm y el tipo (duracion) de nota. Lamentablemente le erre y salio todo a la mitad de velocidad, asi que despues tuve que dividir por 2 a mano cada numero, y como una gran cantidad era impar, seguro no tiene la precision que deberia, porque el programa redondea a la cantidad de ciclos mas proxima, pero yo al dividir termino redondeando siempre hacia abajo.
    Aca va el mp3 de prueba, se podria mejorar haciendo que vaya bajando el volumen en las notas largas, pero da una idea de como suena, a ver si alguno se da cuenta de que tema es.

    ]pruebabajo3_2013-08-27.zip[/file]
     

  • Una segunda prueba mas exacta, en realidad asi salio originalmente, pero a la mitad de la velocidad, asi que lo arregle cambiando todas las notas una octava mas arriba. De paso se acerca mas al midi, que esta una octava mas arriba de esta prueba, y 2 octavas por encima de la anterior.
    Esta es la secuencia de comandos que ejecuta para generar esta prueba:

    (B30)
    (N36C06)/4(N38C55)/4/4(N36C19)/4(N33C15)/4(N34C16)/4(N36C19)/4(N2BC77)/4
    (N34C16)/4(N33C15)/4(N31C13)/4(N2BC11)/4(N28C0E)/4(N26C0D)/4(N23C0B)/4(N21C09)/4(N31C13)/4(N26C0D)/4(N2BC22)/4(N26C0D)/4(N28C0E)/4(N2BC11)/4(N31C13)/4(N2BC11)/4(N28C0E)/4(N26C0D)/4(N24C0B)/4(N33C15)/4(N24C0B)/4(N34C16)/4(N31C13)/4(N2BC11)/4(N28C0E)/4
    (N26C0D)/4(N36C19)/4(N34C16)/4(N38C1C)/4(N36C19)/4(N34C16)/4(N31C13)/4(N2BC11)/4(N28C0E)/4(N26C0D)/4(N24C0B)/4(N26C0D)/4(N28C0E)/4(N2BC15)/4(N31C18)/4(N34C21)/4(N36C1F)/4(N31C18)/4(N2BC18)/4(N3BC55)/4(N39C1E)/4(N38C1C)/4(N36C19)/4(N34C16)/4(N31C13)/4(N2BC11)/4
    (N29C0F)/4(N28C0E)/4(N26C0D)/4(N24C0B)/4(N23C0B)/4(N22C0A)/4(N2BC37)/4(N2AC04)/4(N28C04)/4(N27C03)/4(N26C0D)/4(N25C0C)/4(N26C0D)/4(N2AC10)/4(N29C0F)/4(N2AC10)/4(N31C13)/4(N30C12)/4(N31C13)/4(N34C16)/4(N2BC11)/4(N31C13)/4(N33C15)/4(N34C16)/4(N38C1C)/4(N36C19)/4(N38C1C)/4(N34C16)/4(N31C13)/4(N2BC11)/4(N31C13)/4(N33C15)/4
    (N36C19)/4_(N34C16)/4(N31C13)/4(N29C0F)/4(N2AC10)/4(N26C0D)/4(N31C13)/4(N2AC10)/4(N36C19)/4(N31C13)/4(N3AC20)/4(N36C19)/4(N39C1E)/4(N36C19)/4(N34C16)/4(N31C13)/4(N2BC11)/4(N31C13)/4(N26C0D)/4(N28C0E)/4(N24C16)/4

     
     

  • Una segunda prueba mas exacta, en realidad asi salio originalmente, pero a la mitad de la velocidad, asi que lo arregle cambiando todas las notas una octava mas arriba. De paso se acerca mas al midi, que esta una octava mas arriba de esta prueba, y 2 octavas por encima de la anterior.
    Esta es la secuencia de comandos que ejecuta para generar esta prueba:

    (B30)
    (N36C06)/4(N38C55)/4/4(N36C19)/4(N33C15)/4(N34C16)/4(N36C19)/4(N2BC77)/4
    (N34C16)/4(N33C15)/4(N31C13)/4(N2BC11)/4(N28C0E)/4(N26C0D)/4(N23C0B)/4(N21C09)/4(N31C13)/4(N26C0D)/4(N2BC22)/4(N26C0D)/4(N28C0E)/4(N2BC11)/4(N31C13)/4(N2BC11)/4(N28C0E)/4(N26C0D)/4(N24C0B)/4(N33C15)/4(N24C0B)/4(N34C16)/4(N31C13)/4(N2BC11)/4(N28C0E)/4
    (N26C0D)/4(N36C19)/4(N34C16)/4(N38C1C)/4(N36C19)/4(N34C16)/4(N31C13)/4(N2BC11)/4(N28C0E)/4(N26C0D)/4(N24C0B)/4(N26C0D)/4(N28C0E)/4(N2BC15)/4(N31C18)/4(N34C21)/4(N36C1F)/4(N31C18)/4(N2BC18)/4(N3BC55)/4(N39C1E)/4(N38C1C)/4(N36C19)/4(N34C16)/4(N31C13)/4(N2BC11)/4
    (N29C0F)/4(N28C0E)/4(N26C0D)/4(N24C0B)/4(N23C0B)/4(N22C0A)/4(N2BC37)/4(N2AC04)/4(N28C04)/4(N27C03)/4(N26C0D)/4(N25C0C)/4(N26C0D)/4(N2AC10)/4(N29C0F)/4(N2AC10)/4(N31C13)/4(N30C12)/4(N31C13)/4(N34C16)/4(N2BC11)/4(N31C13)/4(N33C15)/4(N34C16)/4(N38C1C)/4(N36C19)/4(N38C1C)/4(N34C16)/4(N31C13)/4(N2BC11)/4(N31C13)/4(N33C15)/4
    (N36C19)/4_(N34C16)/4(N31C13)/4(N29C0F)/4(N2AC10)/4(N26C0D)/4(N31C13)/4(N2AC10)/4(N36C19)/4(N31C13)/4(N3AC20)/4(N36C19)/4(N39C1E)/4(N36C19)/4(N34C16)/4(N31C13)/4(N2BC11)/4(N31C13)/4(N26C0D)/4(N28C0E)/4(N24C16)/4

     

    pastbytes

    Sos un master encima sabes musica !!! cheesey.png Felicitaciones nuevamente !!!
     

  • No puedo decir que no sepa nada de musica porque para ir haciendo todo esto tuve que ir aprendiendo algunas cosas, pero lo mio es puramente tecnico, no puedo tocar ni componer nada, lo unico que hice fue copiar las notas de un midi. Ojala supiera tocar algo aunque fuera con un teclado, pero ni las notas reconozco. wink.png
     

  • Con notas mas altas se escucha mas limpio. En cuanto al tema musical, no logro reconocerlo, pero si se me hacen conocidas las frases.
     

  • Parece que siempre hay margen para seguir haciendo milagros. shades.png
    Hace tiempo que pensaba para que podria servir en este proyecto la memoria EEPROM que tienen los PIC. Esta memoria se usa para guardar la configuracion de algun programa, algo asi como los parametros de la BIOS de la PC, en el sintetizador la unica utilidad que le vi es permitir en algun momento que el usuario programe frases y se las asigne a entradas, de forma tal que no haga falta otro microcontrolador o computadora para controlarlo. Uno podria tener un par de frases grabadas y conectar el chip a sensores o pulsadores que las activarian.
    Pero no se me ocurrio ningun otro uso, y eso de las frases requiere demasiado codigo para algo que no usaria todo el mundo.
    Lo que si pense hace tiempo es que en el futuro permitiria que se pudiera enviar al chip una o dos ondas a RAM para tener instrumentos a medida, algo asi como se hace con un archivo mod. Pero esto si requeria rutinas que recien ahora estan implementadas, aunque no hay espacio en memoria para hacerlo en este momento. Sin embargo, ayer se me ocurrio una combinacion de las dos cosas, por que no usar la memoria EEPROM para almacenar tablas de ondas?
    Lo que hice fue modificar la rutina del instrumento 1 para que leyera desde EEPROM en lugar de hacerlo desde la memoria de programa, lo cual libero como 70 posiciones, y me permitio reorganizar los comandos de instrumentos, ahora el comando /3 llama al bajo y el comando /4 llama a un organo. Estaba en duda de si usar organo o guitarra electrica, y opte por organo por tener una utilidad mas amplia, aunque ya no pueda tocar humo sobre el agua. biglaugh.png
    Habia un problema con la definicion de los comandos de instrumentos, que era una limitacion de la poca memoria disponible, pero ahora que se libero un poco pude implementarlo como corresponde. Antes el comando /3 reproducia el sonido de bajo con modulacion de una envolvente de nota configurable, y el comando /4 hacia lo mismo pero sin la envolvente. Esto restringia la cantidad de comandos de instrumentos posibles, ya que quedarian /5 y /6 para un segundo instrumento, /7 y /8 para un tercero, y ya no entrarian mas a menos que aceptara digitos en hexadecimal. Como sea, no estaba bien definido, asi que ahora hay un comando de configuracion Mx, que es el primero que agrego con parametro booleano, el parametro puede ser 0 o 1, si se envia M0, a partir de ahi todos los instrumentos funcionan sin envolvente, y si se envia M1, empiezan a funcionar con envolvente.
    De esta manera ahora solo hace falta configurar el modo y con los mismos dos comandos /3 y /4 ya tenemos dos instrumentos distintos, con margen para agregar 5 mas, si hubiera memoria de programa. En la EEPROM todavia hay lugar para una onda mas.
    Desde afuera el unico cambio aparente es el comando de activacion/desactivacion de la envolvente, que simplemente es una forma diferente de controlarlo, y el agregado de un segundo instrumento, pero el hecho de usar la EEPROM en lugar de la memoria de programa tiene otra ventaja importante: que cualquiera con un programador de PIC puede crear sus propias ondas y regrabar solo la EEPROM de datos del chip para tener dos instrumentos personalizados.
    Aca va un mp3 con la misma secuencia anterior, pero esta vez con el segundo instrumento (organo), y por cierto, es de un tema de Seru Giran. wink.png
    Tambien tiene agregados algunos comandos de volumen para que los sonidos no terminen abruptamente, como dije antes, es una especie de ADSR casero.


     

  • Parece que siempre hay margen para seguir haciendo milagros. shades.png
    Hace tiempo que pensaba para que podria servir en este proyecto la memoria EEPROM que tienen los PIC. Esta memoria se usa para guardar la configuracion de algun programa, algo asi como los parametros de la BIOS de la PC, en el sintetizador la unica utilidad que le vi es permitir en algun momento que el usuario programe frases y se las asigne a entradas, de forma tal que no haga falta otro microcontrolador o computadora para controlarlo. Uno podria tener un par de frases grabadas y conectar el chip a sensores o pulsadores que las activarian.
    Pero no se me ocurrio ningun otro uso, y eso de las frases requiere demasiado codigo para algo que no usaria todo el mundo.
    Lo que si pense hace tiempo es que en el futuro permitiria que se pudiera enviar al chip una o dos ondas a RAM para tener instrumentos a medida, algo asi como se hace con un archivo mod. Pero esto si requeria rutinas que recien ahora estan implementadas, aunque no hay espacio en memoria para hacerlo en este momento. Sin embargo, ayer se me ocurrio una combinacion de las dos cosas, por que no usar la memoria EEPROM para almacenar tablas de ondas?
    Lo que hice fue modificar la rutina del instrumento 1 para que leyera desde EEPROM en lugar de hacerlo desde la memoria de programa, lo cual libero como 70 posiciones, y me permitio reorganizar los comandos de instrumentos, ahora el comando /3 llama al bajo y el comando /4 llama a un organo. Estaba en duda de si usar organo o guitarra electrica, y opte por organo por tener una utilidad mas amplia, aunque ya no pueda tocar humo sobre el agua. biglaugh.png
    Habia un problema con la definicion de los comandos de instrumentos, que era una limitacion de la poca memoria disponible, pero ahora que se libero un poco pude implementarlo como corresponde. Antes el comando /3 reproducia el sonido de bajo con modulacion de una envolvente de nota configurable, y el comando /4 hacia lo mismo pero sin la envolvente. Esto restringia la cantidad de comandos de instrumentos posibles, ya que quedarian /5 y /6 para un segundo instrumento, /7 y /8 para un tercero, y ya no entrarian mas a menos que aceptara digitos en hexadecimal. Como sea, no estaba bien definido, asi que ahora hay un comando de configuracion Mx, que es el primero que agrego con parametro booleano, el parametro puede ser 0 o 1, si se envia M0, a partir de ahi todos los instrumentos funcionan sin envolvente, y si se envia M1, empiezan a funcionar con envolvente.
    De esta manera ahora solo hace falta configurar el modo y con los mismos dos comandos /3 y /4 ya tenemos dos instrumentos distintos, con margen para agregar 5 mas, si hubiera memoria de programa. En la EEPROM todavia hay lugar para una onda mas.
    Desde afuera el unico cambio aparente es el comando de activacion/desactivacion de la envolvente, que simplemente es una forma diferente de controlarlo, y el agregado de un segundo instrumento, pero el hecho de usar la EEPROM en lugar de la memoria de programa tiene otra ventaja importante: que cualquiera con un programador de PIC puede crear sus propias ondas y regrabar solo la EEPROM de datos del chip para tener dos instrumentos personalizados.
    Aca va un mp3 con la misma secuencia anterior, pero esta vez con el segundo instrumento (organo), y por cierto, es de un tema de Seru Giran. wink.png
    Tambien tiene agregados algunos comandos de volumen para que los sonidos no terminen abruptamente, como dije antes, es una especie de ADSR casero.


    pastbytes

    Cada vez mejor !!! biglaugh.png
     

  • Habemus generador de ruido. shades.png
    Agregue el instrumento /5, que genera ruido con o sin envolvente, segun el comando Mx, y con nota programable, lo cual solo funciona desde C0 hasta C3, de C3 a C5 el ruido es exactamente el mismo, ya que lo unico que hace es retrasar la generacion de la siguiente muestra de acuerdo a la nota seleccionada.
    Va una pequeña muestra del ruido generado.
    La secuencia que ejecuta es la siguiente:

    (m0n30c08vf)/5(ve)/5(vd)/5(vc)/5(vb)/5(va)/5(v9)/5(v8)/5(v7)/5(v6)/5(v5)/5(v4)/5(v3)/5(v2)/5(v1)/5(v0)/5(vf)
    (n20c04vf)/5(ve)/5(vd)/5(vc)/5(vb)/5(va)/5(v9)/5(v8)/5(v7)/5(v6)/5(v5)/5(v4)/5(v3)/5(v2)/5(v1)/5(v0)/5(vf)
    (n10c02vf)/5(ve)/5(vd)/5(vc)/5(vb)/5(va)/5(v9)/5(v8)/5(v7)/5(v6)/5(v5)/5(v4)/5(v3)/5(v2)/5(v1)/5(v0)/5(vf)
    (n00c01vf)/5(ve)/5(vd)/5(vc)/5(vb)/5(va)/5(v9)/5(v8)/5(v7)/5(v6)/5(v5)/5(v4)/5(v3)/5(v2)/5(v1)/5(v0)/5(vf)

    donde:

    m0 indica que no se usara envolvente
    n30 indica que el ruido se generara a velocidad normal, en la nota C3
    c08 indica que se reproducen 8 ciclos
    /5 ordena ejecutar el instrumento ruido con los parametros seleccionados
    vx cambia el volumen de 0 a f (en hexadecimal)
    n20 indica que el ruido se generara a la mitad de la velocidad, en la nota C2
    c04 indica que se reproducen 4 ciclos
    n10 genera el ruido en la nota C1
    c02 indica que se reproducen 2 ciclos
    n00 genera el ruido en la nota C0
    c01 indica que se reproduce 1 ciclo

    Lo que hace la secuencia es programar una nota para el ruido, lo cual indica que tan rapido se genera una nueva muestra, y se va ejecutando varias veces con volumen decreciente, luego se hace lo mismo en las octavas 2, 1 y 0.
    Si ademas se usa modulacion, cambiando la nota de la envolvente se pueden hacer efectos como ruido de helices.
    Ahora si ya esta interesante para juegos, para que quede completo faltaria un pequeño detalle que tiene que ver con las envolventes, pero no se si va a haber forma de que entre, ahora sobra espacio apenas para 6 instrucciones.

    ]pruebahr4_2013-08-29_1.zip[/file]
     

  • No se por que pero esos ruidos me hacen acordar al atari, esta muy bueno
     

Moderador (s): homecomputer, Selandari, ArielP, pastbytes, Durandal