Pasos: No tenia idea de como eran los registros del AY 3-8912, asi que investigando di con un post internetsiano donde tenia esto:
Podemos ver que hay 3 canales de sonido ABC que emiten notas (frecuencias).AY REGISTROS
CANAL A
00 - A fine (0-255)
01 - A course (0-15)
CANAL B
02 - B fine (0-255)
03 - B course (0-15)
CANAL C
04 - C fine (0-255)
05 - C course (0-15)
06 - Noise pitch (0-31)
07 - Mixer (see below)
08 - A vol (0-15)
09 - B vol (0-15)
10 - C vol (0-15)
11 - Envelope fine (0-255)
12 - Envelope course (0-255)
13 - Envelope shape (0-15)
14 - I/O port A (0-255)
15 - I/O port B (0-255)
El canal "noise" no es un canal en si, que se pueda utilizar independiente de los primeros 3 (como pensaba otrora). El Noise suena a traves de uno, de dos o de los 3 canales, sumandose a las notas (frecuencias) o sonando solito por el canal selecionado.
Hice varios programas en basic investigando como es esto del mixer y los registros de 0 a 255 tratando de encontrar una coherencia lamentablemente "lo atamo con alambre" (como decimos en Uruguay)...
Manipulando el registro "mixer" los canales se prendia, se apagaban, se les sumaba el ruido, el ruido salia solo por alguno de ellos... entonces busque 3 configuraciones que iba a utilizar. Son estas:
Metiendo el valor 58 en el registro 07 (mixer) los 3 canales suenan limpis sin ruido.MIXER
58 = A - frecuencia / B - frecuencia / C -frecuencia
112 = A - frecuencia + NOISE / B - frecuencia / C - frecuencia
113 = A - solo NOISE sin frecuencia / B - frecuencia / C - frecuencia
Metiendo el valor 112 en el registro 07, el canal A emitira notas (frecuencias) sumandole ruido, lo cual es ideal para crear sonidos de Snare o Toms de percusion (y lo que se les ocurra), dejando los canales B y C limpios, para Bajos y Melodias.
Metiendo el valor 113 en el registro 07, el canal A emitira solamente NOISE, con lo que podemos aprovechar para hacer sonidos de naves espaciales, Hi-Hats o Crash de Bateria (y a la prima de flopping rajando la sabaja con las unias ), dejando igual que el anterior los canales B y C limpios.
Como meto los registros al AY? Simple:
Código: Seleccionar todo
OUT 65533, (registro)
OUT 49149, (valor)
Código: Seleccionar todo
OUT 65533, 7
OUT 49149, 58
Código: Seleccionar todo
OUT 65533, 8
OUT 49149, 10
Código: Seleccionar todo
OUT 65533, 0 ' A Fine tune
OUT 49149, 217 ' valor
OUT 65533, 1 ' A Course tune
OUT 49149, 15 ' valor
Como se que esa nota es asi? lo deduje relacionando las frecuencias reales de las notas musicales?
No, ni mamao, no pude allar una relacion matematica entre los valores de Coarse+Fine tune del AY con los valores reales de las frecuencias en Hz
Recuerdo habia encontrado una ecuacion matematica donde podia obtener las notas, pero lamentablemente con esta podia solo sacar una octava creo, hace ya un par de anios de esto, y se', que me salia humo del bocho por no poder encontrarle la vuelta a esa cuenta
Que hago?
Enchufo el Spectrum real a la entrada de la tarjeta de sonido, Cargo en el Macbook un afinador poderoso (el del AmpegSVX me sirve) y comienzo a variar los registros Fine y Coarse hasta dar con las notas. Luego de hora y pico llegue a esta conclusion (joder!, que esto no existe por internet):
Como esta tablita en un TXT no me iba a servir de nada me dispongo a pasarla al Spin (mi emulador favorito), compilando un txt con POKES. Utilice la memoria 32000 pero no importa mucho el sitio ya que luego exportaria un .BIN para meterlo donde qiciera.
Por cierto, ordene' los Fine y Coarse tune de modo que pudiera leerlos con PEEKs como si estuviera haciendo musica con la instruccion BEEP... (0=C, 1=C#, 2=D, 3=D#... 12=C... 24=C,etc)
Si quiciera saber que valores de Fine y Coarse tienen la nota G (correspondiente al No7 en la escala cromatica o de semitonos como el BEEP) de la primer octava hago un simple: PEEK 32000+7 para fine y PEEK 32084+7 para Coarse.
Código: Seleccionar todo
'FINE PITCH - COARSE PITCH
'----- Octava 1 -----
POKE 32000,86 : POKE 32084,13
POKE 32001,148 : POKE 32085,12
POKE 32002,224 : POKE 32086,11
POKE 32003,53 : POKE 32087,11
POKE 32004,149 : POKE 32088,10
POKE 32005,252 : POKE 32089,9
POKE 32006,110 : POKE 32090,9
POKE 32007,230 : POKE 32091,8
POKE 32008,75 : POKE 32092,8
POKE 32009,238 : POKE 32093,7
POKE 32010,123 : POKE 32094,7
POKE 32011,16 : POKE 32095,7
'----- Octava 2 -----
POKE 32012,170 : POKE 32096,6
POKE 32013,74 : POKE 32097,6
POKE 32014,240 : POKE 32098,5
POKE 32015,155 : POKE 32099,5
POKE 32016,74 : POKE 32100,5
POKE 32017,255 : POKE 32101,4
POKE 32018,183 : POKE 32102,4
POKE 32019,115 : POKE 32103,4
POKE 32020,51 : POKE 32104,4
POKE 32021,247 : POKE 32105,3
POKE 32022,190 : POKE 32106,3
POKE 32023,136 : POKE 32107,3
'----- Octava 3 -----
POKE 32024,85 : POKE 32108,3
POKE 32025,37 : POKE 32109,3
POKE 32026,248 : POKE 32110,2
POKE 32027,205 : POKE 32111,2
POKE 32028,165 : POKE 32112,2
POKE 32029,127 : POKE 32113,2
POKE 32030,91 : POKE 32114,2
POKE 32031,57 : POKE 32115,2
POKE 32032,25 : POKE 32116,2
POKE 32033,251 : POKE 32117,1
POKE 32034,223 : POKE 32118,1
POKE 32035,196 : POKE 32119,1
'----- Octava 4 -----
POKE 32036,171 : POKE 32120,1
POKE 32037,147 : POKE 32121,1
POKE 32038,124 : POKE 32122,1
POKE 32039,103 : POKE 32123,1
POKE 32040,83 : POKE 32124,1
POKE 32041,64 : POKE 32125,1
POKE 32042,46 : POKE 32126,1
POKE 32043,29 : POKE 32127,1
POKE 32044,13 : POKE 32128,1
POKE 32045,254 : POKE 32129,0
POKE 32046,239 : POKE 32130,0
POKE 32047,226 : POKE 32131,0
'----- Octava 5 -----
POKE 32048,213 : POKE 32132,0
POKE 32049,201 : POKE 32133,0
POKE 32050,189 : POKE 32134,0
POKE 32051,179 : POKE 32135,0
POKE 32052,169 : POKE 32136,0
POKE 32053,160 : POKE 32137,0
POKE 32054,151 : POKE 32138,0
POKE 32055,142 : POKE 32139,0
POKE 32056,134 : POKE 32140,0
POKE 32057,127 : POKE 32141,0
POKE 32058,120 : POKE 32142,0
POKE 32059,113 : POKE 32143,0
'----- Octava 6 -----
POKE 32060,107 : POKE 32144,0
POKE 32061,101 : POKE 32145,0
POKE 32062,95 : POKE 32146,0
POKE 32063,90 : POKE 32147,0
POKE 32064,85 : POKE 32148,0
POKE 32065,80 : POKE 32149,0
POKE 32066,75 : POKE 32150,0
POKE 32067,71 : POKE 32151,0
POKE 32068,67 : POKE 32152,0
POKE 32069,63 : POKE 32153,0
POKE 32070,60 : POKE 32154,0
POKE 32071,57 : POKE 32155,0
'----- Octava 7 -----
POKE 32072,53 : POKE 32156,0
POKE 32073,50 : POKE 32157,0
POKE 32074,48 : POKE 32158,0
POKE 32075,45 : POKE 32159,0
POKE 32076,42 : POKE 32160,0
POKE 32077,40 : POKE 32161,0
POKE 32078,38 : POKE 32162,0
POKE 32079,36 : POKE 32163,0
POKE 32080,34 : POKE 32164,0
POKE 32081,32 : POKE 32165,0
POKE 32082,30 : POKE 32166,0
POKE 32083,28 : POKE 32167,0
Que conste que este hilo es el responsable de que "sacara estos papeles que tenia tirados dentro de un cajon". Ojala encuentre la forma de ver como programar musica para CPC.
El lunes seguire con mas
Pueden putearme, mostrarme la relacion entre los valores de Fine&Coarse tune y las frecuencias en Hz, enseniarme como joraca compilo el WIZplayer. Estoy abierto a todo (homosexuales abstenerse, es que aqui los abundan)