Example #1
0
void testRedGlitchNess()
{
	CAudioData* w1; CAudioData* w2; CAudioData* combo;
	synth_redglitch(&w1, 100, 20.0, 0.8, 0.09, 0.261); //- cool!
	synth_redglitch(&w2, 99, 20.0, 0.8, 0.09, 0.33);
	
	//~ synth_redglitch(&w1, 100.0, 20.0, 0.8, 0.02, 0.061); //- also cool!
	//~ synth_redglitch(&w2, 100.6, 20.0, 0.8, 0.02, 0.061);
	
	//~ synth_redglitch(&w1, 80.0, 20.0, 0.8, 0.09, 0.661); //- also cool!
	//~ synth_redglitch(&w2, 120.6, 20.0, 0.8, 0.09, 0.661);
	
	//Left channel is w1, right channel is w2
	combo = caudiodata_new();
	combo->length = w1->length;
	combo->sampleRate = w1->sampleRate;
	combo->data = w1->data;
	combo->data_right = w2->data;
	
	FILE * f = fopen("outcombo.wav", "wb");
	errormsg msg = caudiodata_savewave(combo, f, 16);
	if (msg != OK) puts(msg);
	fclose(f);
	
	caudiodata_dispose( combo);
	caudiodata_dispose( w1);
	caudiodata_dispose( w2);
}
Example #2
0
void testWriteToMemory()
{
	CAudioData* w1; CAudioData* w2; CAudioData* combo;
	synth_sin(&w1, 300, 2.0, 0.8);
	synth_sin(&w2, 303, 2.0, 0.8);
	
	//Left channel is w1, right channel is w2
	combo = caudiodata_new();
	combo->length = w1->length;
	combo->sampleRate = w1->sampleRate;
	combo->data = w1->data;
	combo->data_right = w2->data;
	
	//~ errormsg msg = caudiodata_savewave(combo, "outsines.wav", 16);
	char *inmemory; uint inmemorylength;
	errormsg msg = caudiodata_savewavemem(&inmemory, &inmemorylength, combo, 16);
	FILE*f=fopen("outsines.wav","wb");
	fwrite(inmemory, 1, inmemorylength, f);
	fclose(f);
	
	if (msg != OK) puts(msg);
	caudiodata_dispose( combo);
	caudiodata_dispose( w1);
	caudiodata_dispose( w2);
	
	free(inmemory);
}
Example #3
0
void loadtests()
{
	char tests[6][255]={
"C:\\pydev\\yalp\\Subversion\\csaudio\\WaveAudio\\WaveAudioTests\\test_media\\d22k16bit1ch.wav",
"C:\\pydev\\yalp\\Subversion\\csaudio\\WaveAudio\\WaveAudioTests\\test_media\\d22k8bit1ch.wav",
"C:\\pydev\\yalp\\Subversion\\csaudio\\WaveAudio\\WaveAudioTests\\test_media\\d22k8bit2ch.wav",
"C:\\pydev\\yalp\\Subversion\\csaudio\\WaveAudio\\WaveAudioTests\\test_media\\d44k16bit1ch.wav",
"C:\\pydev\\yalp\\Subversion\\csaudio\\WaveAudio\\WaveAudioTests\\test_media\\d44k16bit2ch.wav",
"C:\\pydev\\yalp\\Subversion\\csaudio\\WaveAudio\\WaveAudioTests\\test_media\\d44k8bit1ch.wav"
	};
	
	int i; for (i=0; i<6; i++)
	{
		CAudioData * audio;
		FILE*fin = fopen(tests[i], "rb");
		errormsg msg = caudiodata_loadwave(&audio, fin);
		if (msg != OK) puts(msg);
		fclose(fin);
		
		printf("\n%s\nLength :%d", tests[i], audio->length);
		inplaceeffect_volume(audio,0.1);
		
		char buf[128];
		sprintf(buf, "out%d.wav", i);
		FILE * fout=fopen(buf, "wb");
		msg = caudiodata_savewave(audio, fout, 16);
		if (msg != OK) puts(msg);
		fclose(fout);
		
		caudiodata_dispose(audio);
	}
}
void loadtests()
{
	char tests[6][255]={
"..\\..\\media\\bitrates\\d22k16bit1ch.wav",
"..\\..\\media\\bitrates\\d22k8bit1ch.wav",
"..\\..\\media\\bitrates\\d22k8bit2ch.wav",
"..\\..\\media\\bitrates\\d44k16bit1ch.wav",
"..\\..\\media\\bitrates\\d44k16bit2ch.wav",
"..\\..\\media\\bitrates\\d44k8bit1ch.wav"
	};
	
	int i; for (i=0; i<6; i++)
	{
		CAudioData * audio;
		FILE*fin = fopen(tests[i], "rb");
		errormsg msg = caudiodata_loadwave(&audio, fin);
		if (msg != OK) puts(msg);
		fclose(fin);
		
		printf("\n%s\nLength :%d", tests[i], audio->length);
		inplaceeffect_volume(audio,0.1);
		
		char buf[128];
		sprintf(buf, "out%d.wav", i);
		msg = caudiodata_savewave(audio, buf, 16);
		if (msg != OK) puts(msg);
		
		caudiodata_dispose(audio);
	}
}
Example #5
0
int main(int argc, char ** argv)
{
	errormsg msg;
	if (argc < 4)
	{
		puts(usage);
		return 0;
	}
	if (strcmp(argv[1], "f")==0)
	{
		/*const*/ char* wavname = argv[2];
		/*const*/ char* outname = argv[3];
		int blocksize = atoi(argv[4]);
		if (blocksize<=2) {puts("blocksize must be a positive power of 2 greater than 2.\n"); return 1;}
		
		CAudioData * audio =NULL;
		msg = caudiodata_loadwave(&audio, wavname);
		if (msg != OK) {puts(msg); return 1;}
		msg = dumpToFrequencyAngles(audio, outname, blocksize);
		if (msg != OK) {puts(msg); return 1;}
		
		caudiodata_dispose(audio);
	}
	else if (strcmp(argv[1], "w")==0)
	{
		/*const*/ char* datname = argv[2];
		/*const*/ char* outname = argv[3];
		
		CAudioData * audio =NULL;
		
		msg = readFrequenciesToSamples(&audio, datname);
		if (msg != OK) {puts(msg); return 1;}
		msg = caudiodata_savewave(audio, outname, 16);
		if (msg != OK) {puts(msg); return 0;}
	
		caudiodata_dispose(audio);
	}
	else
	{
		puts("f or w expected.\n");
		puts(usage);
		return 1;
	}
	
	return 0;
}
void appendandclone()
{
	CAudioData * wsine; CAudioData* wsinelouder = NULL;CAudioData* out;

	synth_sin(&wsine, 300, 1.0, 0.3); //sine wave, 300Hz
	
	caudiodata_clone(& wsinelouder, wsine);
	inplaceeffect_volume(wsinelouder, 3);
	
	msg =  effect_append(&out, wsine, wsinelouder);
	if (msg != OK) { puts(msg);  return 0;}
	msg = caudiodata_savewave(out, "testout\\out.wav", 16);
	if (msg != OK) puts(msg);
	
	caudiodata_dispose( wsine);
	caudiodata_dispose( wsinelouder);
	caudiodata_dispose( out);
}
Example #7
0
int exfft()
{
	CAudioData * w1=NULL;  CAudioData  *w2=NULL;
	char inname[] = "C:\\pydev\\yalp\\Subversion\\c_audio\\media\\srt.wav";
	errormsg msg = caudiodata_loadwave(&w1, inname);
	if (msg != OK) {puts(msg); return 0;}
	
	msg=dumpToFrequencyAngles(w1,  "C:\\pydev\\yalp\\Subversion\\c_audio\\media\\longinput_opt.dat", 2048);
	if (msg != OK) {puts(msg); return 0;}
	
	msg=readFrequenciesToSamples(&w2, "C:\\pydev\\yalp\\Subversion\\c_audio\\media\\longinput_opt.dat");
	if (msg != OK) {puts(msg); return 0;}
	
	msg = caudiodata_savewave(w2, "oout_opt.wav", 16);
	if (msg != OK) {puts(msg); return 0;}
	
	caudiodata_dispose( w1);
	caudiodata_dispose( w2);
}
void mixwithsine() // or modulate, or append, an easy change
{
	CAudioData * w1; CAudioData* w2;CAudioData* out;
	FILE*fin = fopen("..\\..\\media\\bitrates\\d22k8bit1ch.wav", "rb");
	errormsg msg = caudiodata_loadwave(&w1, fin);
	if (msg != OK) puts(msg);
	fclose(fin);
	
	synth_sin(&w2, 300, caudiodata_getLengthInSecs(w1), 0.8); //sine wave, 300Hz
	
	msg =  effect_mix(&out, w1, w2, 0.5, 0.1); //effect_append(&out, w2, w1);
	if (msg != OK) { puts(msg);  return 0;}
	msg = caudiodata_savewave(out, "testout\\out.wav", 16);
	if (msg != OK) puts(msg);
	
	caudiodata_dispose( w1);
	caudiodata_dispose( w2);
	caudiodata_dispose( out);
}
void example_mix()
{
	CAudioData* w1 =  caudiodata_new();
	CAudioData* w2 =  caudiodata_new();
	
	synth_sin(&w1, 300, 4.0, 0.8); //sine wave, 300Hz
	synth_sin(&w2, 430, 4.0, 0.8); //sine wave, 430Hz
	
	CAudioData* mix=NULL;
	char* msg = effect_mix(&mix, w1, w2, 0.5, 0.5);
	if (msg!=OK) puts(msg);
	
	msg = caudiodata_savewave(mix, "testout\\out_mix.wav", 16);
	if (msg != OK) puts(msg);
	
	caudiodata_dispose(mix);
	caudiodata_dispose(w1);
	caudiodata_dispose(w2);
}
Example #10
0
void testPitchScaleOrVibrato()
{
	CAudioData * w1;CAudioData* out;
	FILE*fin = fopen("longinput.wav", "rb");
	errormsg msg = caudiodata_loadwave(&w1, fin);
	if (msg != OK) puts(msg);
	fclose(fin);

	//~ msg =  effect_scale_pitch_duration(&out, w1, 0.7);
	msg =  effect_vibrato(&out, w1, 0.2, 0.1);
	if (msg != OK) { puts(msg);  return 0;}
	FILE * f = fopen("out.wav", "wb");
	msg = caudiodata_savewave(out, f, 16);
	if (msg != OK) puts(msg);
	fclose(f);
	
	caudiodata_dispose( w1);
	caudiodata_dispose( out);
}
void testTremelo()
{
	CAudioData* audio;
	synth_sin(&audio, 300, 4.0, 0.3); //sine wave, 300Hz
	
	inplaceeffect_tremelo(audio, 4, 0.2);

	msg = caudiodata_savewave(audio, "testout\\out.wav", 16);
	if (msg != OK) puts(msg);
	caudiodata_dispose( audio);
}
void testSynth()
{
	CAudioData* audio;
	synth_sin(&audio, 300, 10.0, 0.8);
	

	errormsg msg = caudiodata_savewave(audio, "testout\\out.wav", 16);
	if (msg != OK) puts(msg);

	caudiodata_dispose( audio);
}
Example #13
0
void testSynth()
{
	CAudioData* audio;
	synth_sin(&audio, 300, 10.0, 0.8);
	
	FILE * f = fopen("out.wav", "wb");
	errormsg msg = caudiodata_savewave(audio, f, 16);
	if (msg != OK) puts(msg);
	fclose(f);
	caudiodata_dispose( audio);
}
Example #14
0
void mixwithsine() // or modulate, or append, an easy change
{
	CAudioData * w1; CAudioData* w2;CAudioData* out;
	FILE*fin = fopen("C:\\pydev\\yalp\\Subversion\\csaudio\\WaveAudio\\WaveAudioTests\\test_media\\d22k8bit1ch.wav", "rb");
	errormsg msg = caudiodata_loadwave(&w1, fin);
	if (msg != OK) puts(msg);
	fclose(fin);
	
	synth_sin(&w2, 300, caudiodata_getLengthInSecs(w1), 0.8); //sine wave, 300Hz
	
	msg =  effect_mix(&out, w1, w2, 0.5, 0.1); //effect_append(&out, w2, w1);
	if (msg != OK) { puts(msg);  return 0;}
	FILE * f = fopen("out.wav", "wb");
	msg = caudiodata_savewave(out, f, 16);
	if (msg != OK) puts(msg);
	fclose(f);
	
	caudiodata_dispose( w1);
	caudiodata_dispose( w2);
	caudiodata_dispose( out);
}
Example #15
0
void testTremelo()
{
	CAudioData* audio;
	synth_sin(&audio, 300, 4.0, 0.3); //sine wave, 300Hz
	
	inplaceeffect_tremelo(audio, 4, 0.2);
	FILE * f = fopen("out.wav", "wb");
	msg = caudiodata_savewave(audio, f, 16);
	if (msg != OK) puts(msg);
	fclose(f);
	caudiodata_dispose( audio);
}
int exfft()
{
	//round-trips from .wav to .dat to .wav
	CAudioData * w1=NULL;  CAudioData  *w2=NULL;
	char inname[] = "..\\..\\media\\songclips\\rb_short.wav";
	errormsg msg = caudiodata_loadwave(&w1, inname);
	if (msg != OK) {puts(msg); return 0;}
	
	msg=dumpToFrequencyAngles(w1,  "testout\\fft_opt.dat", 2048);
	if (msg != OK) {puts(msg); return 0;}
	
	msg=readFrequenciesToSamples(&w2, "testout\\fft_opt.dat");
	if (msg != OK) {puts(msg); return 0;}
	
	msg = caudiodata_savewave(w2, "testout\\fft_opt_roundtrip.wav", 16);
	if (msg != OK) {puts(msg); return 0;}
	
	caudiodata_dispose( w1);
	caudiodata_dispose( w2);
	return 0;
}
Example #17
0
void example_mix()
{
	CAudioData* w1 =  caudiodata_new();
	CAudioData* w2 =  caudiodata_new();
	
	synth_sin(&w1, 300, 4.0, 0.8); //sine wave, 300Hz
	synth_sin(&w2, 430, 4.0, 0.8); //sine wave, 430Hz
	
	CAudioData* mix;
	msg = effect_mix(&mix, w1, w2, 0.5, 0.5);
	if (msg!=OK) puts(msg);
	
	FILE * f = fopen("out_mix.wav", "wb");
	msg = caudiodata_savewave(mix, f, 16);
	if (msg != OK) puts(msg);
	fclose(f);
	
	caudiodata_dispose(mix);
	caudiodata_dispose(w1);
	caudiodata_dispose(w2);
}
void testfadein()
{
	CAudioData* audio;
	
	synth_sin(&audio, 300, 4.0, 0.3); //sine wave, 300Hz
	
	inplaceeffect_fade(audio, 0, 2.5); //fade out
	//~ inplaceeffect_fade(audio, 1, 2.5); // fade in
	
	msg = caudiodata_savewave(audio, "testout\\out.wav", 16);
	if (msg != OK) puts(msg);
	caudiodata_dispose( audio);
}
// Intentional beat frequencies "smoothen" the sound and make it more musical.
errormsg synth_sineorgan(CAudioData**out,double freq, double lengthSeconds, double amp)
{
    CAudioData* audio;
    audio = *out = caudiodata_new(); //use audio as an alias for the output, *out.
    if (lengthSeconds<0) return "Invalid length";
    if (freq<=0) return "Invalid frequency";
    int length = (int)(lengthSeconds * SampleRate);
    errormsg msg = caudiodata_allocate(audio, length, 1, SampleRate);
    if (msg!=OK) return msg;

    CAudioData* w1;
    CAudioData* w2;
    synth_sin(&w1, freq, lengthSeconds, amp);
    synth_sin(&w2, freq* 1.0006079, lengthSeconds, amp);
    int i;
    for(i=0; i<audio->length; i++)
        audio->data[i] = 0.6*w1->data[i] + 0.4*w2->data[i];

    caudiodata_dispose(w1);
    caudiodata_dispose(w2);
    return OK;
}
void testReverse()
{
	CAudioData * w1; 
	FILE*fin = fopen("..\\..\\media\\bitrates\\d22k8bit1ch.wav", "rb");
	errormsg msg = caudiodata_loadwave(&w1, fin);
	if (msg != OK) puts(msg);
	fclose(fin);
	
	inplaceeffect_reverse(w1);
	
	msg = caudiodata_savewave(w1, "testout\\outrev.wav", 16);
	if (msg != OK) puts(msg);
	caudiodata_dispose( w1);
}
Example #21
0
void testfadein()
{
	CAudioData* audio;
	
	synth_sin(&audio, 300, 4.0, 0.3); //sine wave, 300Hz
	
	inplaceeffect_fade(audio, 0, 2.5); //fade out
	//~ inplaceeffect_fade(audio, 1, 2.5); // fade in
	
	FILE * f = fopen("out.wav", "wb");
	msg = caudiodata_savewave(audio, f, 16);
	if (msg != OK) puts(msg);
	fclose(f);
	caudiodata_dispose( audio);
}
Example #22
0
void testReverse()
{
	CAudioData * w1; 
	FILE*fin = fopen("C:\\pydev\\yalp\\Subversion\\csaudio\\WaveAudio\\WaveAudioTests\\test_media\\d22k8bit1ch.wav", "rb");
	errormsg msg = caudiodata_loadwave(&w1, fin);
	if (msg != OK) puts(msg);
	fclose(fin);
	
	inplaceeffect_reverse(w1);
	
	FILE * f = fopen("outrev.wav", "wb");
	msg = caudiodata_savewave(w1, f, 16);
	if (msg != OK) puts(msg);
	fclose(f);
	caudiodata_dispose( w1);
}
Example #23
0
caudiodata_void example1()
{
	//create a sample sine wave.
	CAudioData* audio =  caudiodata_new();
	errormsg msg = caudiodata_allocate(audio, 44100*4, 1, 44100); // 4 seconds of audio, mono.
	if (msg!=OK) puts(msg);
	
	double freq = 300;
	int i;
	for (i = 0; i < audio->length; i++)
	{
		audio->data[i] = 0.9 * sin(i * freq * 2.0 * PI / (double)audio->sampleRate);
	}
	
	FILE * f = fopen("out.wav", "wb");
	msg = caudiodata_savewave(audio, f, 16);
	if (msg != OK) puts(msg);
	fclose(f);
	caudiodata_dispose( audio);
}
Example #24
0
void testAudacityPhaser()
{
	CAudioData * w1;
	char inname[] = "C:\\pydev\\yalp\\Subversion\\csaudio\\c_audio\\longinput.wav";
	errormsg msg = caudiodata_loadwave(&w1, inname);
	if (msg != OK) {puts(msg); return 0;}
	
	//Phaser:
	//double freq, double fb, int depth, int stages, int drywet
	//msg =  effect_phaseraud(w1, .7, -60, 130, 4, 255);
	
	//Wahwah: (use simon.wav)
	//double freq, double depth, double freqofs, double res)
	//msg =  effect_wahwahaud(w1, 1.5, 0.7, 0.1, 2.5);
	
	if (msg != OK) { puts(msg);  return 0;}
	
	char outname[] = "C:\\pydev\\yalp\\Subversion\\csaudio\\c_audio\\out2.wav"; 
	msg = caudiodata_savewave(w1, outname, 16);
	if (msg != OK) {puts(msg); return 0;}
	
	caudiodata_dispose( w1);
}
void testAudacityPhaser()
{
	CAudioData * w1;
	char inname[] = "..\\..\\media\\songclips\\rb_long.wav";
	errormsg msg = caudiodata_loadwave(&w1, inname);
	if (msg != OK) {puts(msg); return 0;}
	
	//Phaser:
	//double freq, double fb, int depth, int stages, int drywet
	//msg =  effect_phaseraud(w1, .7, -60, 130, 4, 255);
	
	//Wahwah: (use simon.wav)
	//double freq, double depth, double freqofs, double res)
	//msg =  effect_wahwahaud(w1, 1.5, 0.7, 0.1, 2.5);
	
	if (msg != OK) { puts(msg);  return 0;}
	
	char outname[] = "testout\\out2.wav"; 
	msg = caudiodata_savewave(w1, outname, 16);
	if (msg != OK) {puts(msg); return 0;}
	
	caudiodata_dispose( w1);
}