Karoshi MSX Community
05 de Julio de 2021, 04:39:27 pm *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1]
  Imprimir  
Autor Tema: 1bit keyclick  (Leído 6497 veces)
0 Usuarios y 1 Visitante están viendo este tema.
kandahar
Visitante
« : 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!
En línea
SapphiRe
Visitante
« Respuesta #1 : 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 Cheesy
En línea
kandahar
Visitante
« Respuesta #2 : 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!
En línea
Dioniso
Visitante
« Respuesta #3 : 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)
En línea
Darth_Fistro
Karoshi Hero
*****
Mensajes: 507


Email
« Respuesta #4 : 24 de Diciembre de 2006, 07:38:20 pm »

¡Enhorabuena, Dioniso, como siempre!  Cheesy Shocked

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!  Grin
En línea

MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
Dioniso
Visitante
« Respuesta #5 : 24 de Diciembre de 2006, 08:28:15 pm »

Todo se andará, todo se andará ...  Wink

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.
En línea
Konamito
Karoshi Excellent Member
******
Mensajes: 1446



WWW Email
« Respuesta #6 : 25 de Diciembre de 2006, 11:10:16 am »

Hum, un teclado es buena idea para poder jugar con más soltura... Wink
En línea

Dioniso
Visitante
« Respuesta #7 : 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.
En línea
Konamito
Karoshi Excellent Member
******
Mensajes: 1446



WWW Email
« Respuesta #8 : 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 Wink
En línea

Dioniso
Visitante
« Respuesta #9 : 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 Wink

Por cierto, qué teclado tienes? lo puedes conectar al MSX? cuántas octavas?
En línea
kandahar
Visitante
« Respuesta #10 : 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!
En línea
Dioniso
Visitante
« Respuesta #11 : 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  Grin

Creo que el teclado de Konamito es otro ... no sé, a ver qué dice.
En línea
Páginas: [1]
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines XHTML 1.0 válido! CSS válido!