Karoshi MSX Community

MSX Actualidad => General => Mensaje iniciado por: kandahar en 21 de Diciembre de 2006, 08:19:57 pm



Título: 1bit keyclick
Publicado por: kandahar en 21 de Diciembre de 2006, 08:19:57 pm
Buenas:

Desde que salió el beepertron nohago más que ver comentarios sobre el "1bit keyclick".
¿Puede alguien explicarme exactamente en qué consiste esto? Me tiene intrigado.

Au y ánimo cara al final de la Dev!


Título: Re: 1bit keyclick
Publicado por: SapphiRe en 21 de Diciembre de 2006, 08:29:36 pm
enciende el msx y pulsa una tecla... ¿qué oyes por el altavoz? Ese click al pulsar una tecla está controlado por un bit en un registro determinado...

Si lo cambias muy rápido salen cosas como las que oyes en el beepertron :D


Título: Re: 1bit keyclick
Publicado por: kandahar en 21 de Diciembre de 2006, 09:33:27 pm
O sea, ¿que variando la frecuencia del "keyclick" ha ido obteniendo las diferentes notas?
Si es así, menudo faenón. Ahora ya me queda claro y puedo valorarlo como toca.

Au!


Título: Re: 1bit keyclick
Publicado por: Dioniso en 22 de Diciembre de 2006, 11:30:27 am
O sea, ¿que variando la frecuencia del "keyclick" ha ido obteniendo las diferentes notas?
Si es así, menudo faenón. Ahora ya me queda claro y puedo valorarlo como toca.

Esa forma está de tocar notas puras y claras como el cristal está en un snippet de este foro.

Finalmente decidí hacerlo con samples, parecido a la forma de Edu. Quería un sonido ... no muy simple. Hago una copia de los valores del puerto $aa (y lo roto para utilizarlo después) para modificar sólo el bit 7:

Código:
in a,($aa)
and $ef
out ($aa),a
nop
nop
rla
ld ($c000),a

Después desfragmento los ocho bits del byte a tocar (los 1s y 0s a enviar están empaquetados en grupos de 8; byte) y lo envío cada 159/161 t-states. Normalmente hago una pausa y envío el bit. Pero a veces, dentro de esos 159/161 t-states tengo que hacer algo más. Por ejemplo, qué tecla está pulsada? Si es la tecla que pulsé al comienzo, para tocar el sample, haz un loop. Si no sal de la rutina y no toques más el sample. Obviamente, no puedo chequear las 24 teclas que corresponden a las dos octavas en tan sólo 159/161 t-states, así que utilizo código síncrono automodificable. Leo la tecla pulsada, actualizo variables para posible loop, sample a tocar, etc ... y parcheo la rutina síncrona para que lea si aún estoy pulsando esa tecla (fila en D y columna en variable parcheada) y siga tocando el sample a modo de loop (hay varios NOPs cuya función es simplemente de pausa):

Código:
nop ;(5)
nop ;(5)
in a,($aa) ;(12)
and $f0 ;(8)
or d ;(5) qué fila
out ($aa),a ;(12)
nop ;(5)
nop ;(5)
nop ;(5)
in a,($a9) ;(12)
nop ;(5)
nop ;(5)
key_patch_read:
db $cb,$00 ;bit X,a ;(9) parche para tecla pulsada (columna)
jp nz,sampl_lp_xt ;(10)
nop ;(5)
nop ;(5)
ld a,e ;(5)
rlca ;(5)
ld e,a ;(5)
ld a,($c000) ;(14) copia del puerto ($aa) rotado un bit a izquierda
rra ;(5)
out ($AA),a ;(12) - 159 t-states


(key_patch_read) será siempre $CB, que es la instrucción BIT X,a
(key_patch_read+1) puede tener 8 valores, claro está, correspondiente a los 8 diferentes bits de A a leer:
0 ($47),1 ($4f),2 ($57),3 ($5f),4 ($67),5 ($6f),6 ($77),7 ($7f). Los valores hexadecimales serían los posibles valores de la variable (key_patch_read+1)


Título: Re: 1bit keyclick
Publicado por: Darth_Fistro en 24 de Diciembre de 2006, 07:38:20 pm
¡Enhorabuena, Dioniso, como siempre!  :D :o

Y ahora, ¿para cuándo un reproductor de samples multioctavado?

We're charging our battery...
and now we're full of energy...
We are the robots...
We are the robots...

Yeah!  ;D


Título: Re: 1bit keyclick
Publicado por: Dioniso en 24 de Diciembre de 2006, 08:28:15 pm
Todo se andará, todo se andará ...  ;)

Por cierto, les he mandado a los chicos de la MSXDev un teclado que tenía ya hecho para practicar y que no incluí en la ROM. Espero que lo cuelgen como extra. A ver si le cogéis el truco a las teclas.


Título: Re: 1bit keyclick
Publicado por: Konamito en 25 de Diciembre de 2006, 11:10:16 am
Hum, un teclado es buena idea para poder jugar con más soltura... ;)


Título: Re: 1bit keyclick
Publicado por: Dioniso en 25 de Diciembre de 2006, 11:23:07 am
Je, je. Bueno, si hubiese tenido uno real habría hecho una versión para el mismo. Sería lo suyo.


Título: Re: 1bit keyclick
Publicado por: Konamito en 26 de Diciembre de 2006, 02:25:00 am
Je, je. Bueno, si hubiese tenido uno real habría hecho una versión para el mismo. Sería lo suyo.

¿Y es factible hacerlo? Lo digo porque yo tengo un teclado en casa y sería la caña jugar al juego en el MSX desde el teclado... Sí ya lo sé, alucino demasiado ;)


Título: Re: 1bit keyclick
Publicado por: Dioniso en 27 de Diciembre de 2006, 10:15:20 pm
¿Y es factible hacerlo? Lo digo porque yo tengo un teclado en casa y sería la caña jugar al juego en el MSX desde el teclado... Sí ya lo sé, alucino demasiado ;)

Por cierto, qué teclado tienes? lo puedes conectar al MSX? cuántas octavas?


Título: Re: 1bit keyclick
Publicado por: kandahar en 27 de Diciembre de 2006, 10:33:42 pm
Me da la sensación (y corregirme si me equivoco) que el teclado que comenta no es más que el mismo del juego (en pantalla) y con la configuración del mismo. Simplemente nos permitiría practicar la posición de las notas.

Por otro lado recuerdo que alguien desarrollo un conector MIDI vía puerto de Joystick. Quizá así se podría conectar un teclado real MIDI y este juego.

Au!


Título: Re: 1bit keyclick
Publicado por: Dioniso en 27 de Diciembre de 2006, 10:38:06 pm
Yo tengo un archivo donde sólo sale este teclado que comentas, kandahar, para practicar, como tú bien dices. Tan sólo se lo he pasado a dos personas. Quien lo quiera que me lo pida ... igual os sirve para componer algo  ;D

Creo que el teclado de Konamito es otro ... no sé, a ver qué dice.