Título: Algorithmic symphonies con AY Publicado por: aorante en 09 de Enero de 2012, 01:06:48 pm He jugado un poco con una forma de generar "música" o ruidos (como preferíais ;) ), mediante una formula matemática.
Lo vi hace un tiempo en un blog y he probado con algunas de las formulas, con el AY del MSX. http://countercomplex.blogspot.com/2011/10/algorithmic-symphonies-from-one-line-of.html No suena igual por la velocidad de ejecución, pero adaptándolas se puede conseguir resultados curiosos. Os dejo el código en C, por si queréis probarlo o adaptarlo a ASM. y un par de ROMs con las dos formulas. Código: /* ========================================================================== */ /* */ /* sound_01.c */ /* by 2012 aorante */ /* */ /* Description: */ /* Algorithmic symphonies */ /* ========================================================================== */ // http://countercomplex.blogspot.com/2011/10/algorithmic-symphonies-from-one-line-of.html __sfr __at 0xA8 g_slotPort; #define HALT __asm halt __endasm #define BASE5 0x1800 typedef enum {false = 0, true = 1} boolean; // unsigned integer typedef unsigned int uint; // unsigned char typedef unsigned char byte; byte sound_get(byte reg); void sound_set(byte reg, byte val); void setChannel(byte NumChannel, boolean isTone, boolean isNoise); void vpoke(uint address, byte value); void vprint(byte posx, byte posy, char* text); void main(void) { __asm di ld sp, (#0xFC4A) ei __endasm; g_slotPort = (g_slotPort & 0xCF) | ((g_slotPort & 0x0C) << 2); start(); } void start() { uint t; uint freq; sound_set(8,15); setChannel(0,true,false); vprint(4,15,"Algorithmic Symphonies 1"); for(t=0;t<65535;t++) //65536 { //freq=t*(t>>11&t>>8&123&t>>3); //by tejeez freq=(t*(t>>11&t>>8&123&t>>3))>>6; //01 //freq=(t*(t>>5|t>>8))>>(t>>16); // by tejeez //freq=((t*(t>>12&t>>6))>>(t>>16))>>4; //02 sound_set(0,freq & 0xFF); sound_set(1,(freq & 0xFF00)/255); } sound_set(8,0); vprint(3,17,"Press any key to continue..."); pressKey(); CHKRAM(); } void pressKey() { __asm call #0x009F ;CHGET __endasm; } void CHKRAM() { __asm call 0x0000 __endasm; } // activa tono y ruido de uno de los tres canales del PSG void setChannel(byte NumChannel, boolean isTone, boolean isNoise) { byte newValue; newValue = sound_get(7); if(NumChannel==0) { if(isTone==true){newValue&=254;}else{newValue|=1;} if(isNoise==true){newValue&=247;}else{newValue|=8;} } if(NumChannel==1) { if(isTone==true){newValue&=253;}else{newValue|=2;} if(isNoise==true){newValue&=239;}else{newValue|=16;} } if(NumChannel==2) { if(isTone==true){newValue&=251;}else{newValue|=4;} if(isNoise==true){newValue&=223;}else{newValue|=32;} } sound_set(7,newValue); } void sound_set(byte reg, byte val) { reg; val; __asm ld a, 4(ix) ld e, 5(ix) call 0x0093 __endasm; } byte sound_get(byte reg) { reg; __asm ld A,4(ix) call 0x0096 ld L,A __endasm; } void vprint(byte posx, byte posy, char* text) { uint address = BASE5 + (posy * 32) + posx; // calcula la posicion en la VRAM while(*(text)) vpoke(address++,*(text++)); } void vpoke(uint address, byte value) { address; value; __asm ld l,4(ix) ld h,5(ix) ld a,6(ix) call 0x004D __endasm; } Título: Re: Algorithmic symphonies con AY Publicado por: aorante en 09 de Enero de 2012, 09:55:14 pm si a alguien le interesa el tema, podéis encontrar una aplicación WEB, donde se puede modificar la formula y escuchar el resultado.
http://entropedia.co.uk/generative_music Título: Re: Algorithmic symphonies con AY Publicado por: aorante en 10 de Enero de 2012, 08:48:20 pm con la formula:
Código: freq=(t*(t>>9|t>>120>>t)&0b00000110&t>>5)<<5; los 4 últimos bits (del valor en binario), funcionan como activadores de diferentes sonidos.Se podría utilizar para usarlo con varios canales. Título: Re: Algorithmic symphonies con AY Publicado por: j4mk3 en 18 de Enero de 2012, 12:15:06 am Tambien lo estudiaremos pasado el jeuves 26 :)
Es muy muy interesante . Me encanta la creación de sonido y más chiptune. Título: Re: Algorithmic symphonies con AY Publicado por: Iggy Rock en 18 de Enero de 2012, 06:19:17 pm Es precisamente lo que estaba buscando!
Título: Re: Algorithmic symphonies con AY Publicado por: aorante en 18 de Enero de 2012, 06:50:46 pm las dos primeras pruebas las podéis escuchar directamente de mi cuenta de soundcloud:
http://soundcloud.com/aorante/algorithmic-symphonies01 http://soundcloud.com/aorante/algorithmic-symphonies-ay02 Título: Re: Algorithmic symphonies con AY Publicado por: MsxKun en 13 de Marzo de 2012, 05:47:03 pm Holas
Hoy miraba cosas de musica generativa (que por cierto, he encontrado esta curiosidad -si, se nombra al MSX!- http://tecniarts.com/toshio-iwai-videojuegos-musica-digital/) para hacer ciertas maldades.... Y me he acordado de este topic, y del soft de aorante. Y ahora mismo, tras leer el articulo del link, y recordar la implementacion para MSX de las formulas que indica aorante, se me ocurren el doble de maldades :D A nadie mas le interesa el tema? Se podria hacer una micro-compo con marcianadas de software ... Título: Re: Algorithmic symphonies con AY Publicado por: aorante en 13 de Marzo de 2012, 06:58:08 pm A nadie mas le interesa el tema? Se podria hacer una micro-compo con marcianadas de software ... molaria mucho! :D marcianos seguro que hay pero somos poquitos. Habría que abrirse a otras sistemas estelares... ::qbiqsglow:: nota: tanta afición creativa, no queda tiempo para vaguear... :P Título: Re: Algorithmic symphonies con AY Publicado por: MsxKun en 13 de Marzo de 2012, 08:00:35 pm Bueno... bueno... hacerlo a nivel galactico seria una opcion, si.
Pero yo no lo sacaria del mundo 8 bits, al menos. :magicalstones: nota: paradojicamente, los fines de semana que es cuando hay tiempo, la aficion creativa se disipa y el vaguear gana la batalla :D Título: Re: Algorithmic symphonies con AY Publicado por: SapphiRe_MSX en 13 de Marzo de 2012, 08:41:41 pm paradojicamente, los fines de semana que es cuando hay tiempo, la aficion creativa se disipa y el vaguear gana la batalla :D Amén, hermano... Título: Re: Algorithmic symphonies con AY Publicado por: MsxKun en 14 de Marzo de 2012, 11:43:14 am Nadie mas se anima? ;D
Va, a ver si organizamos algo sencillote (deadline en 1 mes o 2, no mas), lanzamos 4 ideas y creamos las bases del 1er Martian Philharmonic Festival.... Que el tema DEV me ha animado. El tema es ese, un software que genere sonido mas o menos no predefinido, que vaya interactuando con el usuario y cambiando constantemente. Ya se sabe, luego estas cosas suenan a rayos, pero es divertido por un rato :griel: Se premiaria (simbolicamente!) la originalidad, la capacidad de interactuar y modificar sonidos en tiempo real de forma intuitiva y lo mas divertida posible... (con un GUI mas o menos resulton). Y si no suena a rayos, pues mejor. Venga, ideas ideas... Título: Re: Algorithmic symphonies con AY Publicado por: Jon_Cortazar en 14 de Marzo de 2012, 11:55:35 am Venga, ideas ideas... Otias, un Kun que se anima. Te estaba viendo yo muy pesimista y pasota ultimamente... Bravo por la propuesta (a ti y a aorante, Iggy, etc...), por qué no abres un hilo nuevo para hablar sobre ello, Kun? ;) ;) Seguro que el Dioniso, que le va el tema experiental con el sonido, se apunta al carro también. Título: Re: Algorithmic symphonies con AY Publicado por: MsxKun en 14 de Marzo de 2012, 12:26:14 pm ;D
Hombre, antes de abrir nada queria asegurarme que no voy a estar solito con mis locuras :'( Pero bueno, lo ire pensando (que ahora estoy en el curro y no puedo extenderme y organizarme bien :D) Título: Re: Algorithmic symphonies con AY Publicado por: MsxKun en 14 de Marzo de 2012, 01:17:24 pm Bueno, al final me han dejado un ratico en paz y he conseguido hacer el hilo :D Opiniones, ideas, sugerencias, lanzamientos de mojon (RC dixit), alli.
|