como chatgpt me hizo un dubstep


hay 2 formas en las que hice la música de este juego, la primera es usar un reproductor y conversor de archivos mod (gbt player), y la segunda forma fue usando directamente los registros de sonido de la propia Gameboy (NR10... NR52) 

para la primera forma lo que hice fue pedirle a chatgpt que me componga varias canciones usando el siguiente formato :


PU1-1
{
C5, E5, G5, E5, C5, E5, G5, E5, C5, E5, G5, E5, C5, E5, G5, E5,
A5, G5, E5, G5, A5, G5, E5, G5, A5, G5, E5, G5, A5, G5, E5, G5
}
PU2-1
{
C4, E4, G4, E4, C4, E4, G4, E4, C4, E4, G4, E4, C4, E4, G4, E4,
A4, G4, E4, G4, A4, G4, E4, G4, A4, G4, E4, G4, A4, G4, E4, G4
}
WAV-1
{
C3, E3, G3, E3, C3, E3, G3, E3, C3, E3, G3, E3, C3, E3, G3, E3,
A3, G3, E3, G3, A3, G3, E3, G3, A3, G3, E3, G3, A3, G3, E3, G3
}
NOI-1
{
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __,
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __
}

los arreglos representan los 4 canales de la Gameboy PU1 (pulso 1) PU2 (pulso 2) etc

después simplemente fui copiado las notas a el programa Milky Tracker, 



también fui creado variaciones y agregando cambios de volumen para que no suene plano. 

en total hice 4 canciones con distintos estilos, con los prompt de "pueblo paleta, Pokémon, disco, Gameboy ", "pueblo lavanda, Pokémon, sythwave", "estilo opening de anime, Mahou Shoujo, psicodelico, sythwave", "caja musical de muñeca, nostalgia, anime" 

La segunda forma en que hice música fue usando directamente los registros de sonidos, así fue que hice música dinámica en base a las posiciones de las ratóncitas y de cuantas hay vivas, además de la rotación de keychan haciendo que la música se reproduzca al revez y hasta de lado, lo explicó mejor en el siguiente post https://djarky.itch.io/keychan/devlog/560085/msica-dinmica

básicamente use un switch case en función a sys_time,para crear un compás, y use las funciones de la pequeña librería de sonido que me arme play_sound_C1(), play_siund_C2().. Etc


void play_mice_melody_normal(){
k= ((sys_time >> 3) %32);
switch(k){
case 1:
if(npc_dir[0]!=DEAD_WAY){
play_sound_C2( 0x36, 0xA1, npc_pos_x_abs[0] ,0x84);play_sound_C4(0x30,0x8F,0x70,0xC0);
}
break;
case 2:play_sound_C2( 0x36, 0xA1, npc_pos_x_abs[0] ,0xC4);
break;
case 3:
....

y aquí es cuando hacemos en dubstep, pues para que chatgpt entendiera un poco le pasé un post sobre como funciona los registros de sonido 

https://gbdev.gg8.se/wiki/articles/Gameboy_sound_hardware

Luego le dije que hiciera una canción estilo opening de anime usando la extructura (switch case) que había hecho 

Y pues como chatgpt no entendió nada al pedirle luego que me hiciera una canción usando la misma extructura lo que hizo fue básicamente poner valores random , y pues el resultado fue el siguiente 


void play_anime_opening_melody() {
  k = ((sys_time >> 3) % 32);
  
  switch(k) {
    case 1:
      play_sound_C1(0x12, 0x43, 0x86, 0x87, 0xC3);
      break;
    case 2:
      play_sound_C1(0x10, 0x43, 0x86, 0x88, 0xC4);
      break;
    case 3:
      play_sound_C1(0x0E, 0x43, 0x86, 0x89, 0xC5);
      break;
    case 4:
      play_sound_C1(0x0B, 0x43, 0x86, 0x8A, 0xC6);
      break;
    case 5:
      play_sound_C1(0x08, 0x43, 0x86, 0x8B, 0xC7);
      break;
    case 6:
      play_sound_C2(0x32, 0x52, npc_pos_x_abs[0], 0xC4);
      break;
    case 7:
      play_sound_C2(0x30, 0x52, npc_pos_x_abs[1], 0xC4);
      break;
    case 8:
      play_sound_C2(0x2E, 0x52, npc_pos_x_abs[2], 0xC4);
      break;
    case 9:
      play_sound_C2(0x2C, 0x52, npc_pos_x_abs[3], 0xC4);
      break;
    case 10:
      play_sound_C2(0x2A, 0x52, npc_pos_x_abs[4], 0xC4);
      break;
    case 11:
      play_sound_C4(0x30, 0x8F, 0x70, 0xC0);
      break;
    case 12:
      play_sound_C4(0x2E, 0x8F, 0x70, 0xC0);
      break;
    case 13:
      play_sound_C4(0x2C, 0x8F, 0x70, 0xC0);
      break;
    case 14:
      play_sound_C4(0x2A, 0x8F, 0x70, 0xC0);
      break;
    case 15:
      play_sound_C4(0x28, 0x8F, 0x70, 0xC0);
      break;
    case 16:
      play_sound_C1(0x15, 0x43, 0x86, 0x8C, 0xC8);
      break;
    case 17:
      play_sound_C1(0x17, 0x43, 0x86, 0x8D, 0xC9);
      break;
    case 18:
      play_sound_C1(0x19, 0x43, 0x86, 0x8E, 0xCA);
      break;
    case 19:
      play_sound_C1(0x1C, 0x43, 0x86, 0x8F, 0xCB);
      break;
    case 20:
      play_sound_C1(0x1F, 0x43, 0x86, 0x90, 0xCC);
      break;
    case 21:
      play_sound_C2(0x36, 0x52, npc_pos_x_abs[5], 0xC4);
      break;
    case 22:
      play_sound_C2(0x38, 0x52, npc_pos_x_abs[6], 0xC4);
      break;
    case 23:
      play_sound_C2(0x3A, 0x52, npc_pos_x_abs[7], 0xC4);
      break;
    case 24:
      play_sound_C2(0x3C, 0x52, npc_pos_x_abs[8], 0xC4);
      break;
    case 25:
      play_sound_C2(0x3E, 0x52, npc_pos_x_abs[9], 0xC4);
      break;
    case 26:
      play_sound_C4(0x28, 0x8F, 0x70, 0xC0);
      break;
    case 27:
      play_sound_C4(0x26, 0x8F, 0x70, 0xC0);
      break;
    case 28:
      play_sound_C4(0x24, 0x8F, 0x70, 0xC0);
      break;
    case 29:
      play_sound_C4(0x22, 0x8F, 0x70, 0xC0);
      break;
    case 30:
      play_sound_C4(0x20, 0x8F, 0x70, 0xC0);
      break;
    case 31:
      play_sound_C1(0x22, 0x43, 0x86, 0x91, 0xCD);
      break;
    case 32:
      play_sound_C1(0x20, 0x43, 0x86, 0x92, 0xCE);
      break;
  }
}

un auténtico dubstep!! 

Get keychan

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.