Esempio n. 1
0
void PatchController::process(AudioBuffer& buffer){
  if(activeSlot == GREEN && green.index != settings.patch_green){
    memset(buffer.getSamples(0), 0, buffer.getChannels()*buffer.getSize()*sizeof(float));
    // green must be active slot when patch constructor is called
    green.setPatch(settings.patch_green);
    codec.softMute(false);
    debugClear();
    return;
  }else if(activeSlot == RED && red.index != settings.patch_red){
    memset(buffer.getSamples(0), 0, buffer.getChannels()*buffer.getSize()*sizeof(float));
    // red must be active slot when constructor is called
    red.setPatch(settings.patch_red);
    codec.softMute(false);
    debugClear();
    return;
  }
  switch(mode){
  case SINGLE_MODE:
  case DUAL_GREEN_MODE:
    green.setParameterValues(getAnalogValues());
    green.patch->processAudio(buffer);
    break;
  case DUAL_RED_MODE:
    red.setParameterValues(getAnalogValues());
    red.patch->processAudio(buffer);
    break;
  case SERIES_GREEN_MODE:
    green.setParameterValues(getAnalogValues());
    green.patch->processAudio(buffer);
    red.patch->processAudio(buffer);
    break;
  case SERIES_RED_MODE:
    red.setParameterValues(getAnalogValues());
    green.patch->processAudio(buffer);
    red.patch->processAudio(buffer);
    break;
  case PARALLEL_GREEN_MODE:
    green.setParameterValues(getAnalogValues());
    processParallel(buffer);
    break;
  case PARALLEL_RED_MODE:
    red.setParameterValues(getAnalogValues());
    processParallel(buffer);
    break;
  }
}
Esempio n. 2
0
// __attribute__ ((section (".coderam")))
void PatchController::process(AudioBuffer& buffer){
  mode = getPatchMode();
  if(isButtonPressed(RED_BUTTON)){
    mode |= 1;
    if(red.index != getRedPatchId()){
      initialisePatch(RED, getRedPatchId());
      return;
    }
  }else{
    mode &= ~1;
    if(green.index != getGreenPatchId()){
      initialisePatch(GREEN, getGreenPatchId());
      return;
    }
  }
  switch(mode){
  case SINGLE_GREEN_MODE:
  case DUAL_GREEN_MODE:
    green.setParameterValues(parameterValues);
    green.patch->processAudio(buffer);
    break;
  case SINGLE_RED_MODE:
  case DUAL_RED_MODE:
    red.setParameterValues(parameterValues);
    red.patch->processAudio(buffer);
    break;
  case SERIES_GREEN_MODE:
    green.setParameterValues(parameterValues);
    green.patch->processAudio(buffer);
    red.patch->processAudio(buffer);
    break;
  case SERIES_RED_MODE:
    red.setParameterValues(parameterValues);
    green.patch->processAudio(buffer);
    red.patch->processAudio(buffer);
    break;
  case PARALLEL_GREEN_MODE:
    green.setParameterValues(parameterValues);
    processParallel(buffer);
    break;
  case PARALLEL_RED_MODE:
    red.setParameterValues(parameterValues);
    processParallel(buffer);
    break;
  }
}
Esempio n. 3
0
int main()
{
	//set the global ints
	currentFunction = 1;
	uniqueVarNum = 1;
	uniqueStructNum = 1;
	numThreads = 0;

	readInput();

	processVariables();

	//First, handle parallels
	bool foundConstruct = true;
	while (foundConstruct)
	{
		foundConstruct = processParallel();
	}

	//next, handle parallel for
	foundConstruct = true;
	while (foundConstruct)
	{
		foundConstruct = processParallelFor();
	}

	//next, handle criticals
	foundConstruct = true;
	while (foundConstruct)
	{
		foundConstruct = processCritical();
	}

	//next, handle single
	foundConstruct = true;
	while (foundConstruct)
	{
		foundConstruct = processSingle();
	}

	//last, change all omp_get_thread_num calls to use the paramstruct
	processGetThreadNum();

	//put global vars at the top
	eliminateDuplicates(globalVars);
	insertAfterIncludes(globalVars);

	//put private vars back in main
	eliminateDuplicates(totalPrivBackup);
	declarePrivatesInMain(totalPrivBackup);

	//create and insert the parameter struct
	strvec newStruct = createStartEndStruct();
	insertAfterIncludes(newStruct);

	//create and add the mutex call
	strvec synchronization;
	synchronization.push_back("pthread_mutex_t theMutex = PTHREAD_MUTEX_INITIALIZER;");
	insertAfterIncludes(synchronization);

	//create and add new includes
	strvec includes;
	includes.push_back("#include <pthread.h>");
	includes.push_back("#include <algorithm>");
	includes.push_back("#include <cstring>");
	insertAfterIncludes(includes);

	//print output (to use for file redirection)
	printVector(input);
}