Example #1
0
void Gear_AudioInput::internalInit()
{
  std::cout << "Initializing AudioInput..." << std::endl;

  initPortAudio();
  
  std::cout << "Initializing AudioInput...done" << std::endl;
}
Example #2
0
void AudioControl::run()
{
    PaError err;

    m_synth = new Synth();

    err = initPortAudio();

    if (err != paNoError )
      terminateAudioStream(err);

    m_startLock.unlock();
    exec();

    stopAudioStream();
    delete m_releaseTimer;
    delete m_synth;

    QApplication::quit();
}
Example #3
0
	void startAudioSystem(void *data) {
		initPortAudio();
		stream = Audio::openDefaultStream(data,audioDspPipelineCallback);
		Audio::startStream(stream);
	}
Example #4
0
int main(int argc, char ** argv){
	int fftSize = 1024 * 32,
		fftWinInc = 1024 * 1,
		windowWidth = 640,
		windowHeight = 480;
		
	SDL_Window * win;
	SDL_Renderer * renderer = initSDL("FFT-SDL", &win, windowWidth, windowHeight);
	
	pthread_t ffThread1;
	
	struct aBuf buf = initABuf(1024 * 32, 1024 * 2);
	
	double freq, intens, hDiff;
	int harmonic = 0, octave = 0;
	const char * note;
	const char * line;
	size_t i, idx;
	int x, y;
	
	PaStream * stream = initPortAudio(&buf, recordCallback);
	
	buf.panama = fftw_plan_dft_r2c_1d(buf.length, buf.fftIn, buf.fftOut, FFTW_ESTIMATE);
	
	for(i = 0; i < buf.length; i++){
		buf.fftOut[i][0] = 0.0;
		buf.fftOut[i][1] = 0.0;
		buf.fftIn[i] = 0.0;
	}
	
	for(i = 0; i < buf.fftWinInc; i++){
		buf.samples[i] = 0.0;
	}
	
	genHarmonics();
	
	//pthread_create(&ffThread1, NULL, fftThread, &buf);
	
	printf("- Init done\n");
	
	Pa_StartStream(stream);
	
	pthread_mutex_lock(&buf.mutex);
	while(1){
		pthread_cond_wait(&buf.cond, &buf.mutex);
		while(!SDL_PollEvent(NULL)); // intenionally empty: poll ALL the events!
		
		fftw_execute(buf.panama);
		
		SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
		SDL_RenderClear(renderer);
		SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
		for(i = 0; i < windowWidth; i++){
			/*harmonic = (double)(UMIN_HARMONIC + MAX_HARMONIC) * ((double)i / (double)windowWidth);
			freq = harmonicToFreq(harmonic - UMIN_HARMONIC);
			idx = freq / (double)buf.samplerate * ((double)buf.length / 2.0);
			y = (sqrt(buf.fftOut[idx][0]*buf.fftOut[idx][0] + buf.fftOut[idx][1]*buf.fftOut[idx][1]) / ((double)buf.length / 2.0)) * 2.0 * windowHeight;*/
			x = ((double)i / ((double)windowWidth)) * ((double)buf.length / 2.0 + 1);
			y = (sqrt(buf.fftOut[x][0]*buf.fftOut[x][0] + buf.fftOut[x][1]*buf.fftOut[x][1]) / ((double)buf.length / 2.0 + 1)) * windowHeight;
			SDL_RenderDrawLine(renderer, i, windowHeight, i, windowHeight - y);
		}
		SDL_RenderPresent(renderer);
		
		i = highFreq(buf.fftOut, buf.length, &intens);
		freq = (double)i/(double)buf.length*(double)buf.samplerate;
		
		harmonic = freqToHarmonic(freq < 16.0 ? 16.0 : freq, &hDiff);
		note = harmonicToNote(harmonic, &octave);
		line = harmonicToLine(harmonic);
		printf("%12.6f: (~%12.6f)   % 3i   %s%s%i   %s   %12.6f\n", 
			freq, harmonicToFreq(harmonic) - freq, harmonic, note, strlen(note) == 1 ? " " : "", octave, line, intens);
			
	}
	
	//while(Pa_IsStreamActive(stream)) Pa_Sleep(100);
	
	Pa_StopStream(stream);
	Pa_CloseStream(stream);
	
	//SDL_DestroyWindow(win);
	
	return 0;
}