Karoshi MSX Community
05 de Julio de 2021, 12:59:04 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: Algorithmic symphonies con AY  (Leído 6616 veces)
0 Usuarios y 1 Visitante están viendo este tema.
aorante
Karoshi Maniac
****
Mensajes: 451


nuTella Power!


WWW Email
« : 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  Wink ), 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;
}
En línea

--------------------------------- ------ ----- --- -- -
aorante/303bcn
http://aorante.blogspot.com
http://twitter.com/#!/aorante
http://303bcn.wordpress.com/
--------------------------------- ------ ----- --- -- -
aorante
Karoshi Maniac
****
Mensajes: 451


nuTella Power!


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

--------------------------------- ------ ----- --- -- -
aorante/303bcn
http://aorante.blogspot.com
http://twitter.com/#!/aorante
http://303bcn.wordpress.com/
--------------------------------- ------ ----- --- -- -
aorante
Karoshi Maniac
****
Mensajes: 451


nuTella Power!


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

--------------------------------- ------ ----- --- -- -
aorante/303bcn
http://aorante.blogspot.com
http://twitter.com/#!/aorante
http://303bcn.wordpress.com/
--------------------------------- ------ ----- --- -- -
j4mk3
Karoshi Maniac
****
Mensajes: 376


MSx Powa!


WWW Email
« Respuesta #3 : 18 de Enero de 2012, 12:15:06 am »

Tambien lo estudiaremos pasado el jeuves 26 Smiley
Es muy muy interesante . Me encanta la creación de sonido y más chiptune.
En línea

---  G Fan  ---  Galious & Gradius  & G Boys   ---
--- Play HANS' ADVENTURE, STAN, THE DREAMER & BITLOGIC ---
Iggy Rock
Visitante
« Respuesta #4 : 18 de Enero de 2012, 06:19:17 pm »

Es precisamente lo que estaba buscando!
En línea
aorante
Karoshi Maniac
****
Mensajes: 451


nuTella Power!


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

--------------------------------- ------ ----- --- -- -
aorante/303bcn
http://aorante.blogspot.com
http://twitter.com/#!/aorante
http://303bcn.wordpress.com/
--------------------------------- ------ ----- --- -- -
MsxKun
Karoshi Forum's Guru
*******
Mensajes: 1554


Kimochi-ii


WWW Email
« Respuesta #6 : 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 Cheesy

A nadie mas le interesa el tema? Se podria hacer una micro-compo con marcianadas de software ...
En línea

--

Cindy Lauper She Bops!
aorante
Karoshi Maniac
****
Mensajes: 451


nuTella Power!


WWW Email
« Respuesta #7 : 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!  Cheesy

marcianos seguro que hay pero somos poquitos. Habría que abrirse a otras sistemas estelares...  Glow - Qbiqs

nota: tanta afición creativa, no queda tiempo para vaguear...  Tongue
En línea

--------------------------------- ------ ----- --- -- -
aorante/303bcn
http://aorante.blogspot.com
http://twitter.com/#!/aorante
http://303bcn.wordpress.com/
--------------------------------- ------ ----- --- -- -
MsxKun
Karoshi Forum's Guru
*******
Mensajes: 1554


Kimochi-ii


WWW Email
« Respuesta #8 : 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.  Magical Stones

nota: paradojicamente, los fines de semana que es cuando hay tiempo, la aficion creativa se disipa y el vaguear gana la batalla Cheesy

En línea

--

Cindy Lauper She Bops!
SapphiRe_MSX
Visitante
« Respuesta #9 : 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 Cheesy

Amén, hermano...
En línea
MsxKun
Karoshi Forum's Guru
*******
Mensajes: 1554


Kimochi-ii


WWW Email
« Respuesta #10 : 14 de Marzo de 2012, 11:43:14 am »

Nadie mas se anima?  Grin

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...

En línea

--

Cindy Lauper She Bops!
Jon_Cortazar
Administrator
Karoshi Forum's God
********
Mensajes: 2777



WWW Email
« Respuesta #11 : 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?  Wink Wink Seguro que el Dioniso, que le va el tema experiental con el sonido, se apunta al carro también.
En línea

Jon Cortázar Abraido (aka El Viejo Archivero)
RELEVO Videogames
[Dioniso: La cafeína está haciendo su trabajo; yo espero hacer el mío.]
[pitpan: Me sigue pareciendo más productivo jugar al SNAIL MAZE que seguir esta discusión.]
MsxKun
Karoshi Forum's Guru
*******
Mensajes: 1554


Kimochi-ii


WWW Email
« Respuesta #12 : 14 de Marzo de 2012, 12:26:14 pm »

 Grin

Hombre, antes de abrir nada queria asegurarme que no voy a estar solito con mis locuras Cry
Pero bueno, lo ire pensando (que ahora estoy en el curro y no puedo extenderme y organizarme bien Cheesy)
En línea

--

Cindy Lauper She Bops!
MsxKun
Karoshi Forum's Guru
*******
Mensajes: 1554


Kimochi-ii


WWW Email
« Respuesta #13 : 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 Cheesy Opiniones, ideas, sugerencias, lanzamientos de mojon (RC dixit), alli.
En línea

--

Cindy Lauper She Bops!
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!