Autor Tema: Goattracker y efectos de sonido  (Leído 848 veces)

darro99

Re:Goattracker y efectos de sonido
« Respuesta #15 en: Diciembre 12, 2018, 17:38:13 »
Buenas!
Me temo que en el KickAssambler no funciona de esta manera:

Código: [Seleccionar]
Llda #<fx_light_hit       ;Address in A,Y
ldy #>fx_light_hit
ldx #$0e                        ;Channel index in X (0, 7 or 14)
jsr MUSIC_PLAYBACK+3

Ya que el propio compilador te proporciona un player.
El caso que tienes que cargar el sid:
Código: [Seleccionar]
.var music = LoadSid("musics.sid")
.pc=music.location "Music"
.fill music.size, music.getData(i)

A continuación elegir la canción con el valor del acumulador e 'iniciar' el player:
Código: [Seleccionar]
lda #0
jsr music.init

Y por ultimo en la irq elegida hacer que toque con:
Código: [Seleccionar]
jsr music.play
Aquí es donde viene mi problema, no se si habrá que añadir al fichero sid los efectos de sonido al final (o como una canción mas) y 'tocarlos' seleccionándolos, o por el contrario hay que cargarlos de alguna forma para que luego el player pueda ejecutarlos.

Alguien me puede aclarar estas dudas?
 

PacoBlog64

Re:Goattracker y efectos de sonido
« Respuesta #16 en: Diciembre 12, 2018, 18:19:28 »
Me temo que en el KickAssambler no funciona de esta manera:

Ups, lo mío era para ACME, no para KickAssembler. De GT y KickAssembler lo único que conozco es esto, imagino que ya lo habrás visto: https://www.lemon64.com/forum/viewtopic.php?t=67111&sid=d919c9025323fc98a6b0aa5318fb17fb

Mírate esta parte de código:
Código: [Seleccionar]
// SFX
.pc = $4000 "SFX"
SFX_Step:
.byte $00,$06,$00,$A1,$10,$A1,$40,$A1,$80,$00

A partir de $4000 carga los diferentes efectos. La ristra de bytes en realidad son las notas del instrumento o sonido de GT, que por lo que indican más arriba en ese post, están dentro del fichero .snd obtenido con ins2snd a partir del instrumento de GT. Es decir, que .byte $00,$06,$00,$A1,$10,$A1,$40,$A1,$80,$00 es el contenido del fichero efecto.snd que quieres utilizar. Luego reproduce el efecto con esto, que más o menos es lo que ponía yo en el mensaje anterior:
Código: [Seleccionar]
lda #<SFX_Step
ldy #>SFX_Step
ldx #14
jsr music.init+6

Commodoriano desde mis tiernos 7 añitos. ¿Quién necesita más de 1MHz, 64KB de RAM, 16 colores y 3 canales de sonido?
 

darro99

Re:Goattracker y efectos de sonido
« Respuesta #17 en: Diciembre 15, 2018, 12:33:08 »
Buenas de nuevo

Me temo que no termino de hacerlo funcionar.   :(

He comprobado el codigo del enlace: https://www.lemon64.com/forum/viewtopic.php?t=67111&sid=d919c9025323fc98a6b0aa5318fb17fb

Creo que entiendo lo que quiere decir el código quedaría tal que así (o eso creo):
Código: [Seleccionar]
lda #<SFX_Step
ldy #>SFX_Step
ldx #14
jsr music + 6

El caso es que el player esta situado a partir de la dirección $1000 (music) y parece ser que en la $1006 (music) es donde debería de estar la función para estos casos. Pero no me termina de convencer, he decompilado esta parte y no parece que haga mucho caso a lo que se carga anteriormente en los registros:

Código: [Seleccionar]
LDA $152F,Y
JMP $1013
TAY
LDA #$00
STA $1399,X
TYA
$1013 
STA $1370,X
LDA $135F,X
STA $136F,X
RTS

A esta función no sé tampoco cuando debo de llamarla. Si a la vez que se llama al play ($1000) de la canción principal o por el contrario una vez y sonara el efecto especial.

De todas formas seguiré investigando, a ver si consigo sacar algo en claro, por que ahora mismo ando muy despistado  :-\
 

Narciso

Re:Goattracker y efectos de sonido
« Respuesta #18 en: Diciembre 16, 2018, 17:40:04 »
He estado viendo mas a fondo el GoatTracker, y éste tiene una opción a la hora de exportar el SID que dice si vas a utilizar FX o no, concrétamente se llama: SOUND EFFECTS SUPPORT y no la he probado la verdad. Lo que si se, es que si poner YES en ésta opción, automáticamente, la opción de arriba: BUFFERED SID-WRITES, también se pone a YES.

Observando es espacio que ocupa el SID, veo que si se habilita la opción comentada de SOUND EFFECT SUPPORT, la "Playroutine" crece de los 1153 bytes que ocupa sin la opción, a los: 1323 bytes. A ver si alguien sabe como funciona concrétamente dicha función, porque está claro que si ha crecido en tamaño es porque debe ofrecer la opción de disparar los FX mientras suena la música.

Otra cosa que se me ocurre, es meter otra rutina diferente para disparar los efectos de los canales 2 y 3. Podría funcionar.

« última modificación: Diciembre 16, 2018, 17:55:28 por Narciso »
Músico de 8 Bits
 

Narciso

Re:Goattracker y efectos de sonido
« Respuesta #19 en: Diciembre 16, 2018, 18:28:55 »
Otra idea que se me acaba de ocurrir:

- Tenemos una música creada en un solo canal para la parte del juego. En los canales 2 y 3 no hemos compuesto nada para dejarla libre a los FX.

- Al componer la canción del juego, los canales 2 y 3 están marcados con la posición del PATTERN 31 la cual no contiene nota alguna.

- Con el GoatTracker en el PATTERN 32, colocamos un efecto, por ejemplo, el de un disparo laser y nada más, el resto, a 0.

- Con el GoatTracker en el PATTERN 33, colocamos un efecto de explosión, y nada más, el resto a 0.

Ahora si por ejemplo queremos hacer que suene una explosión por el canal 2, cargamos la dirección del Pattern 33 dentro del canal 2 en la music-routine y ésta toca dicho Pattern 33 y suena la explosión. Pasados unos segundos (con 5 serían suficientes ya que no usaremos FX tan largos), le decimos a la music-routine que vuelva a la posición de PATTERN 31 para que vuelva a la normalidad, es decir, silencio.

Si además queremos que suene un disparo laser por el canal 3, cargamos la dirección del PATTERN 32 dentro del canal 3 en la citada music-routine, y el disparo suena por dicho canal 3. Luego, lo mismo que antes, es decir, pasados 5 segundos volvemos a indicar que vuelva a la posición de PATTERN 31 y así con cada efecto que deba sonar.

Si tenemos 5 efectos de sonido para el juego, pues con componerlos desde el GoatTracker en los PATTERNS: 32, 33, 34, 35 y 36 ya sería mas que suficiente.

No creo que sea muy difícil de averiguar como funciona la music-routine y observar como cambian los valores de los PATTERNS a medida que va sonando la música y poderlos alterar a nuestro gusto para conseguir hacer sonar los FX.
« última modificación: Diciembre 16, 2018, 18:40:02 por Narciso »
Músico de 8 Bits
 

Narciso

Re:Goattracker y efectos de sonido
« Respuesta #20 en: Diciembre 17, 2018, 19:44:40 »
Bueno, pues ya está arreglado el problema. Simplemente era exportar el SID indicando en las opciones del GoatTracker que se habilitan los Fx´s sonoros y listo.

Gracias por vuestro interés.  ;)
Músico de 8 Bits
 

josepzin

Re:Goattracker y efectos de sonido
« Respuesta #21 en: Diciembre 17, 2018, 19:58:08 »
Yo no tengo ni idea de estos temas... :S

darro99

Re:Goattracker y efectos de sonido
« Respuesta #22 en: Diciembre 17, 2018, 20:10:47 »
Buenas a todos!

Citar
Bueno, pues ya está arreglado el problema. Simplemente era exportar el SID indicando en las opciones del GoatTracker que se habilitan los Fx´s sonoros y listo.

Efectivamente  ;D con esta opción funciona correctamente!

Lo curioso es que con la dirección $1006 del player del KickAssembler funciona correctamente, aunque la 'decompilación' no me convencía  ???

Tendré que diseccionar un poco mas el código para ver que es lo que se está haciendo realmente con los registros del SID.

Gracias a todos por la ideas y las soluciones!  ;D
 

Narciso

Re:Goattracker y efectos de sonido
« Respuesta #23 en: Diciembre 17, 2018, 20:14:18 »
Bueno, estoy experimentando con la aplicación que se ejecuta en modo MS-DOS (o ventana CMD de Windows) y no se que opciones utilizar de todas las posibles.

Por lo visto, la línea de comandos es así:

INS2SND2 <instrumentfile> <sourcecodefile> <options>

<instrumentfile> ¿Es el efecto de sonido creado con el Goattracker y exportado como *.INS?

<sourcecodefile> ¿Es el efecto de sonido ya modificado para usar en el ensamblador?

Optións: (Salen éstas dos)

-b Produce binary output

-c Produce output in CovertScript format (deprecated)

Músico de 8 Bits
 

PacoBlog64

Re:Goattracker y efectos de sonido
« Respuesta #24 en: Diciembre 17, 2018, 20:27:24 »
INS2SND2 <instrumentfile> <sourcecodefile> <options>

<instrumentfile> ¿Es el efecto de sonido creado con el Goattracker y exportado como *.INS?

<sourcecodefile> ¿Es el efecto de sonido ya modificado para usar en el ensamblador?
Yo lo utilizo así:
Código: [Seleccionar]
ins2snd2 electricity2.ins electricity2.snd

instrumentfile es el fichero .ins, instrumento o efecto creado con GT. Fichero de entrada.
sourcecodefile es el fichero .snd que genera el programa a partir del .ins, es de texto plano. Fichero de salida.

El .snd se importa como fichero de codigo (!source o !src en ACME) en el programa asm.
Commodoriano desde mis tiernos 7 añitos. ¿Quién necesita más de 1MHz, 64KB de RAM, 16 colores y 3 canales de sonido?
 
Los siguientes usuarios dieron las gracias a este tema: Narciso

Narciso

Re:Goattracker y efectos de sonido
« Respuesta #25 en: Diciembre 17, 2018, 20:46:25 »
Ok. Gracias.

Otra cosa, mis efectos de sonido usan mucho las WAVE TABLES, PULSE TABLES y FILTROS TABLE.

¿Hay que dejar todas las tablas a CERO para que los efectos se exporten bien? NO me digais que si, que no veas lo que me he currado dichas tablas para que los FX suenen decentes! jeje.

Además, he probado a dejar dichas tablas a CERO y no suena nada!!
« última modificación: Diciembre 17, 2018, 20:52:28 por Narciso »
Músico de 8 Bits
 

PacoBlog64

Re:Goattracker y efectos de sonido
« Respuesta #26 en: Diciembre 17, 2018, 22:31:34 »
Mírate este ejemplo que te mando de uno de mis efectos, a ver si te ayuda  ;)
Commodoriano desde mis tiernos 7 añitos. ¿Quién necesita más de 1MHz, 64KB de RAM, 16 colores y 3 canales de sonido?
 

Narciso

Re:Goattracker y efectos de sonido
« Respuesta #27 en: Diciembre 18, 2018, 15:51:41 »
Gracias Paco. He creado tu efecto de sonido con el GoatTracker. Luego lo he grabado como INS (tecla f11), luego lo he convertido con el INS2SND2 y me da éste error:

"ERROR: Relative note or absolute C-0, C#0 found"

El archivo que a convertido es mucho más pequeño que el archivo original "INS", apenas de 32 bytes por tanto algo estoy haciendo mal.

« última modificación: Diciembre 18, 2018, 16:05:27 por Narciso »
Músico de 8 Bits
 

PacoBlog64

Re:Goattracker y efectos de sonido
« Respuesta #28 en: Diciembre 18, 2018, 17:37:35 »
Revisa bien los datos que has metido en GT porque acabo de hacer lo mismo (abro GT, copio los datos del instrumento, lo guardo con F11 y lo paso a snd con ins2snd2) y no me ha dado ningún problema. Mi fichero light_hit.ins ocupa 555 bytes, y light_hit.snd 52 bytes. Yo uso GT v2.73, no creo que sea por la versión, pero vaya.
Commodoriano desde mis tiernos 7 añitos. ¿Quién necesita más de 1MHz, 64KB de RAM, 16 colores y 3 canales de sonido?
 

Narciso

Re:Goattracker y efectos de sonido
« Respuesta #29 en: Diciembre 18, 2018, 17:56:50 »
Ok. Todo perfecto. Creo que ahora SI van a funcionar. No me da NINGUN error de conversión.

« última modificación: Diciembre 18, 2018, 19:13:32 por Narciso »
Músico de 8 Bits