Karoshi MSX Community

Desarrollo MSX => Desarrollo (Español/Spanish) => Mensaje iniciado por: aorante en 09 de Enero de 2012, 01:06:48 pm



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.