Load and save of binary audio

Format in h/Sound
This commit is contained in:
stevenhowes
2021-04-03 23:16:46 +01:00
parent 4f861753ce
commit 7a87caa42b
9 changed files with 51 additions and 121 deletions
Binary file not shown.
+2 -51
View File
@@ -14,58 +14,9 @@ void intro()
sound_set_voice(3,"WaveSynth-Beep");
sound_set_voice(4,"WaveSynth-Beep");
sound_composition_init();
// DUn, dun, daan duhhn
sound_composition_element_add(currentstart,1,sound_note("A4#"),200);
sound_composition_element_add(currentstart,2,sound_note("A5#"),200);
currentstart += 200;
sound_composition_element_add(currentstart,3,sound_note("F3"),200);
sound_composition_element_add(currentstart,4,sound_note("F4"),200);
currentstart += 200;
sound_composition_element_add(currentstart,1,sound_note("G3#"),200);
sound_composition_element_add(currentstart,2,sound_note("G4#"),200);
currentstart += 200;
sound_composition_element_add(currentstart,3,sound_note("C3"),200);
sound_composition_element_add(currentstart,4,sound_note("C4"),200);
currentstart += 200;
// DUn, dun, daan duhhn
sound_composition_element_add(currentstart,1,sound_note("A3#"),200);
sound_composition_element_add(currentstart,2,sound_note("A4#"),200);
currentstart += 200;
sound_composition_element_add(currentstart,3,sound_note("F2"),200);
currentstart += 200;
sound_composition_element_add(currentstart,4,sound_note("G2#"),200);
currentstart += 200;
sound_composition_element_add(currentstart,1,sound_note("C2"),200);
currentstart += 200;
// Duh
sound_composition_element_add(currentstart,2,sound_note("A3#"),400);
sound_composition_element_add(currentstart,3,sound_note("A2#"),400);
currentstart += 250;
// Dun De Da
sound_composition_element_add(currentstart,1,sound_note("F1"),20);
currentstart += 50;
sound_composition_element_add(currentstart,4,sound_note("A2#"),5);
currentstart += 20;
sound_composition_element_add(currentstart,2,sound_note("D2#"),200);
currentstart += 180;
sound_composition_element_add(currentstart,3,sound_note("D2"),50);
currentstart += 50;
sound_composition_element_add(currentstart,1,sound_note("A2#"),30);
currentstart += 30;
sound_composition_element_add(currentstart,2,sound_note("G1"),50);
currentstart += 50;
sound_composition_element_add(currentstart,5,sound_note("C2"),50);
currentstart += 50;
sound_composition_element_add(currentstart,3,sound_note("A2#"),100);
sound_composition_element_add(currentstart,1,sound_note("F2"),100);
currentstart += 100;
sound_composition_load("cmpintro");
tick = clock();
sound_composition_start(clock());
+5 -34
View File
@@ -8,6 +8,8 @@
//#defene PROFILE(X) lastprofile = clock(); X; printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t%s %i\n", #X, (clock() - lastprofile))
#define PROFILE(X) X
extern sound_composition_save(char *filename);
extern sound_composition_load(char *filename);
enum sprite_e{player_ship, durno_ship, ship_trgt, durno_ship2, ship2_trgt, player_shipl,player_shipr,explode_start,explode_shp2,explode_shp3,explode_end,photon1,photon2,plasma1,plasma2};
char *sprites[] = {"player_ship","durno_ship","ship_trgt","durno_ship2","ship2_trgt","player_shipl","player_shipr","explode_shp1","explode_shp2","explode_shp3","explode_shp4","photon1","photon2","plasma1","plasma2"};
@@ -842,40 +844,9 @@ void game1_death()
sound_set_voice(3,"WaveSynth-Beep");
sound_set_voice(4,"WaveSynth-Beep");
sound_composition_init();
currentstart += 100;
sound_composition_element_add(currentstart,1,sound_note("D2"),150);
currentstart += 100;
sound_composition_element_add(currentstart,2,sound_note("G2"),200);
currentstart += 200;
sound_composition_element_add(currentstart,3,sound_note("B3"),75);
currentstart += 40;
sound_composition_element_add(currentstart,4,sound_note("G2"),75);
currentstart += 50;
sound_composition_element_add(currentstart,2,sound_note("B3"),200);
currentstart += 200;
sound_composition_element_add(currentstart,1,sound_note("A3"),100);
currentstart += 100;
sound_composition_element_add(currentstart,3,sound_note("G2"),150);
currentstart += 150;
sound_composition_element_add(currentstart,2,sound_note("E2"),100);
currentstart += 100;
sound_composition_element_add(currentstart,1,sound_note("D2"),150);
currentstart += 150;
sound_composition_element_add(currentstart,3,sound_note("D2"),150);
currentstart += 100;
sound_composition_element_add(currentstart,4,sound_note("G2"),150);
currentstart += 150;
sound_composition_element_add(currentstart,1,sound_note("B3"),75);
currentstart += 40;
sound_composition_element_add(currentstart,2,sound_note("G2"),75);
currentstart += 40;
sound_composition_element_add(currentstart,3,sound_note("B3"),150);
currentstart += 150;
sound_composition_element_add(currentstart,4,sound_note("A3"),130);
currentstart += 100;
sound_composition_element_add(currentstart,1,sound_note("G2"),200);
currentstart += 300;
sound_composition_load("cmpagrac");
tick = clock();
sound_composition_start(clock());
+3 -34
View File
@@ -74,40 +74,9 @@ void game2_death()
sound_set_voice(3,"WaveSynth-Beep");
sound_set_voice(4,"WaveSynth-Beep");
sound_composition_init();
currentstart += 100;
sound_composition_element_add(currentstart,1,sound_note("D2"),150);
currentstart += 100;
sound_composition_element_add(currentstart,2,sound_note("G2"),200);
currentstart += 200;
sound_composition_element_add(currentstart,3,sound_note("B3"),75);
currentstart += 40;
sound_composition_element_add(currentstart,4,sound_note("G2"),75);
currentstart += 50;
sound_composition_element_add(currentstart,2,sound_note("B3"),200);
currentstart += 200;
sound_composition_element_add(currentstart,1,sound_note("A3"),100);
currentstart += 100;
sound_composition_element_add(currentstart,3,sound_note("G2"),150);
currentstart += 150;
sound_composition_element_add(currentstart,2,sound_note("E2"),100);
currentstart += 100;
sound_composition_element_add(currentstart,1,sound_note("D2"),150);
currentstart += 150;
sound_composition_element_add(currentstart,3,sound_note("D2"),150);
currentstart += 100;
sound_composition_element_add(currentstart,4,sound_note("G2"),150);
currentstart += 150;
sound_composition_element_add(currentstart,1,sound_note("B3"),75);
currentstart += 40;
sound_composition_element_add(currentstart,2,sound_note("G2"),75);
currentstart += 40;
sound_composition_element_add(currentstart,3,sound_note("B3"),150);
currentstart += 150;
sound_composition_element_add(currentstart,4,sound_note("A3"),130);
currentstart += 100;
sound_composition_element_add(currentstart,1,sound_note("G2"),200);
currentstart += 300;
sound_composition_load("cmpagrac");
tick = clock();
sound_composition_start(clock());
+40 -2
View File
@@ -21,6 +21,35 @@ void sound_on()
_kernel_swi(Sound_Enable,&inreg,&outreg);
}
void sound_composition_load(char* filename)
{
int length;
// Attempt to get file info
inreg.r[0] = 13;
inreg.r[1] = (int) filename;
_kernel_swi(OS_File,&inreg,&outreg);
// Length will be in R4 if it exists
length = outreg.r[4];
if(length > sizeof(composition))
{
screen_nobuffer();
printf("Composition exceeds %d bytes (%d bytes)",sizeof(composition),length);
exit(0);
}
// Attempt to get file info
inreg.r[0] = 16;
inreg.r[1] = (int) filename;
inreg.r[2] = (int) composition;
inreg.r[3] = 0;
_kernel_swi(OS_File,&inreg,&outreg);
}
void sound_voices(int num)
{
inreg.r[0] = num;
@@ -73,6 +102,17 @@ void sound_composition_element_add(int start, int channel, int note, int length)
composition[current_element].Length = length;
current_element++;
}
void sound_composition_save(char *filename)
{
// Attempt to get file info
inreg.r[0] = 10;
inreg.r[1] = (int) filename;
inreg.r[2] = 0xffd;
inreg.r[4] = (int) composition;
inreg.r[5] = (int) composition+(sizeof(composition[0]) * COMPOSITION_MAX);
_kernel_swi(OS_File,&inreg,&outreg);
}
void sound_composition_debug()
{
@@ -93,8 +133,6 @@ void sound_composition_debug()
);
}
}
printf("%i elements at %i bytes each\n",current_element,sizeof(composition[0]));
printf("------------------------------\n");
}
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
+1
View File
@@ -5,5 +5,6 @@ struct CompositionElement {
unsigned char Note;
signed char Volume;
unsigned char Channel;
/*unsigned char word alignment*/
unsigned short int Length;
};