DigitalMayhemPatch() : fs(getSampleRate()) {
    registerParameter(PARAMETER_A, "Sampling Freq");
    registerParameter(PARAMETER_B, "Mayhem Rate");
    registerParameter(PARAMETER_C, "Mayhem Freq");
    registerParameter(PARAMETER_D, "Mayhem Depth");
	
	mayhem_freq = 1;	//starting freq = 1*fs/size = 375 Hz
	inc_flag = 1;
	update_freq_cnt = 0;
	prev_freq = 0;
	
  }
Пример #2
0
void SquareGenerator::setFreq(uint16_t f)
{
    if (f == 0) { // Silence
        freq = f;
        std::fill_n(samples, getSampleRate(), 0);
        buff_size = getSampleRate() / INV_LATENCY;
        return;
    }
    
    // ejem... Nyquist theorem
    auto sr_2 = getSampleRate() /2;
    f = f > sr_2 ? sr_2 : f;

    if (f < INV_LATENCY) { // We not need to use all buffer
        buff_size = (size_t)( std::ceil(getSampleRate() / (double)(f)));
    } else {
        buff_size = (size_t)(std::ceil(getSampleRate() / (double)(INV_LATENCY)));
    }
   
    freq = f;
}
Пример #3
0
    void startNote (const int midiNoteNumber, const float velocity,
                    SynthesiserSound* /*sound*/, const int /*currentPitchWheelPosition*/)
    {
        currentAngle = 0.0;
        level = velocity * 0.15;
        tailOff = 0.0;

        double cyclesPerSecond = MidiMessage::getMidiNoteInHertz (midiNoteNumber);
        double cyclesPerSample = cyclesPerSecond / getSampleRate();

        angleDelta = cyclesPerSample * 2.0 * double_Pi;
    }
Пример #4
0
 void startNote (int midiNoteNumber, float velocity,
                 SynthesiserSound* /*sound*/, int /*currentPitchWheelPosition*/)
 {
     playing = keyHeld;
     currentAngle = 0.0;
     
     for (int i = 0; i < HARMONICS; i++) {
         levels[i] = 0.25;
     }
     level = velocity * 0.015;
     
     const double cyclesPerSecond = MidiMessage::getMidiNoteInHertz (midiNoteNumber);
     const double cyclesPerSample = cyclesPerSecond / getSampleRate();
     
     // the angleDelta for the base frequency.
     angleDelta = cyclesPerSample;
     
     // reset o1
     o1_angle = 0.0;
     o1_angleDelta = o1_freq / getSampleRate();
 }
Пример #5
0
Convolver2::Convolver2(audioMasterCallback audioMaster)
: AudioEffectX(audioMaster, 0, NUM_PARAMS) {
  setNumInputs(NUM_INPUTS);
  setNumOutputs(NUM_OUTPUTS);
  setUniqueID(UNIQUE_ID);

  editor = new Convolver2Editor(this);
  core = new Convolver2Core(NUM_PARAMS, VERSION, DEF_PRODUCT);
  core->setParameter(PRM_SAMPLE_RATE, getSampleRate(), true);
  ((Convolver2Editor*)editor)->setCore(core);
  ((Convolver2Core*)core)->setEditor((Convolver2Editor*)editor);
}
Пример #6
0
HarmonicOscillatorPatch(){
    registerParameter(PARAMETER_A, "Tune");
    registerParameter(PARAMETER_B, "Rate");
    registerParameter(PARAMETER_C, "H2");
    registerParameter(PARAMETER_D, "H3");
    registerParameter(PARAMETER_E, "H4");
    wavetable = FloatArray::create(samples);
    osc = new WavetableOscillator(getSampleRate(), wavetable);
    osc->setFrequency(440);
    harms.setGlauberState(0.5);
    harms.calculate(wavetable, samples);
  }
Пример #7
0
void ZynWise::processReplacing(float **inputs, float **outputs, VstInt32 frames)
{
	// original ZynAddSubFx code

    float *outl = outputs[0];
    float *outr = outputs[1];

	EnterCriticalSection(&_zasf.vmaster->mutex);
    _zasf.vmaster->GetAudioOutSamples(frames, 
		(int) getSampleRate(), outl, outr);
	LeaveCriticalSection(&_zasf.vmaster->mutex);
}
Пример #8
0
void FilterNode::setFilterParameters()
{

	Dsp::Params params;
	params[0] = getSampleRate(); // sample rate
	params[1] = 4; // order
	params[2] = (highCut + lowCut)/2; // center frequency
	params[3] = highCut - lowCut; // bandwidth

	if (filter != 0)
		filter->setParams (params);

}
Пример #9
0
void
Model::toXml(QTextStream &stream, QString indent,
             QString extraAttributes) const
{
    stream << indent;
    stream << QString("<model id=\"%1\" name=\"%2\" sampleRate=\"%3\" start=\"%4\" end=\"%5\" %6/>\n")
	.arg(getObjectExportId(this))
	.arg(encodeEntities(objectName()))
	.arg(getSampleRate())
	.arg(getStartFrame())
	.arg(getEndFrame())
	.arg(extraAttributes);
}
void OutputDeviceNodeXAudio::initSourceVoice()
{
	CI_ASSERT( ! mSourceVoice );

	auto context = dynamic_pointer_cast<ContextXAudio>( getContext() );

	auto wfx = msw::interleavedFloatWaveFormat( getSampleRate(), getNumChannels() );

	IXAudio2 *xaudio = context->getXAudio();
	UINT32 flags = ( mFilterEnabled ? XAUDIO2_VOICE_USEFILTER : 0 );
	HRESULT hr = xaudio->CreateSourceVoice( &mSourceVoice, wfx.get(), flags, XAUDIO2_DEFAULT_FREQ_RATIO, mVoiceCallback.get() );
	CI_ASSERT( hr == S_OK );
}
Пример #11
0
void SourceFile::seek( size_t readPositionFrames )
{
	if( readPositionFrames >= mNumFrames )
		return;

	// adjust read pos for samplerate conversion so that it is relative to file num frames
	size_t fileReadPos = readPositionFrames;
	if( getSampleRate() != getSampleRateNative() )
		fileReadPos *= size_t( (float)mFileNumFrames / (float)mNumFrames );

	performSeek( fileReadPos );
	mReadPos = readPositionFrames;
}
Пример #12
0
void mdaThruZero::resume() ///update internal parameters...
{
  float * param = programs[curProgram].param;
  rat = (float)(pow(10.0f, 3.f * param[0] - 2.f) * 2.f / getSampleRate());
  dep = 2000.0f * param[1] * param[1];
  dem = dep - dep * param[4];
  dep -= dem;

  wet = param[2];
  dry = 1.f - wet;
  if(param[0]<0.01f) { rat=0.0f; phi=(float)0.0f; }
  fb = 1.9f * param[3] - 0.95f;
}
Пример #13
0
//------------------------------------------------------------------------
// resume()
// equivalent of prepareForPlay()
// NOTE: Ableton only calls this once
//       and streams 0s throught the Plug-in when inactive!
void CSoftExciter::resume()
{
	// prepare for play; flush buffers, etc...
	m_fSampleRate = getSampleRate();

	// set sample rate
	// forward the prepareForPlay() call
	if(m_pRAFXPlugIn)
	{
		m_pRAFXPlugIn->m_nSampleRate = (int)m_fSampleRate;
		m_pRAFXPlugIn->prepareForPlay();
	}
}
Пример #14
0
void NewProjectAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages)
{

	if(editorIsReady)
		newNotesFromAnalyser->sendActionMessage("N");


	if(analyseNewFile){

		analyseNewFile = false;

		MessageManager* mm = MessageManager::getInstance();


		void* dummy = this;

		void* d = mm->callFunctionOnMessageThread(loadNewWaveFile, dummy);
	}







    // This is the place where you'd normally do the guts of your plugin's
    // audio processing...
    for (int channel = 0; channel < getNumInputChannels(); ++channel)
    {


    }

    // In case we have more outputs than inputs, we'll clear any output
    // channels that didn't contain input data, (because these aren't
    // guaranteed to be empty - they may contain garbage).
    for (int i = getNumInputChannels(); i < getNumOutputChannels(); ++i)
    {
        buffer.clear (i, 0, buffer.getNumSamples());
    }

	AudioPlayHead* playHead = getPlayHead();

	AudioPlayHead::CurrentPositionInfo info;

	playHead->getCurrentPosition(info);

	float* channelData = buffer.getSampleData (0);
	if(soundEditor != 0 && !loadingNewComponent)
		soundEditor->getAudioSamplesToPlay(buffer, info.ppqPositionOfLastBarStart, getSampleRate(), currentSamplesPerBlock);
}
Пример #15
0
//-----------------------------------------------------------------------------
tresult PLUGIN_API RezFilterController::getParamStringByValue (ParamID tag, ParamValue valueNormalized, String128 string)
{
	UString128 result;
	switch (tag)
	{
		case 4:
		{
			float att = (float)pow (10.0, -0.01 - 4.0 * valueNormalized);
			result.printFloat (-301.0301 / (getSampleRate () * log10(1.0 - att)), 2);
			break;
		}
		case 5:
		{
			float rel = 1.f - (float)pow (10.0, -2.00 - 4.0 * valueNormalized);
			result.printFloat (-301.0301 / (getSampleRate () * log10(rel)), 2);
			break;
		}
		case 7:
		{
			result.printFloat (pow (10.0f, (float)(4.f*valueNormalized - 2.f)), 2);
			break;
		}
		case 8:
		{
			float tthr = 0;
			if (valueNormalized<0.1f) tthr=0.f; else tthr = 3.f * valueNormalized * valueNormalized;
			if (tthr == 0)
				result.fromAscii("FREE RUN");
			else
				result.printFloat (20*log10 (0.5*tthr), 2);
			break;
		}
		default:
			return BaseController::getParamStringByValue (tag, valueNormalized, string);
	}
	result.copyTo (string, 128);
	return kResultTrue;
}
Пример #16
0
//==============================================================================
Mcfx_delayAudioProcessor::Mcfx_delayAudioProcessor() : _delay_ms(0.f),
    _delay_smpls(0),
    _delay_buffer(2,256),
    _buf_write_pos(0),
    _buf_read_pos(0),
    _buf_size(256)
{
    _samplerate = getSampleRate();

    if (_samplerate == 0.f) {
        _samplerate = 44100.f;
    }

}
Пример #17
0
 /******************************************************************
  *Método set_HPF da Classe AelIIR
  *Parâmetros: void
  *Define comportamento high pass do filtro
  *******************************************************************/
 void AelButterWorth::set_HPF(){
     
     ON = highpass;
     
     float y = tan( (M_PI * cutoff) / getSampleRate() );
     float pow_2 = pow(y, 2);
     
     coef_a[0] = 1 / ( 1 + (2 * y) + pow_2) ;
     coef_a[1] = -2 * coef_a[0];
     coef_a[2] = coef_a[0];
     coef_b[0] = -coef_a[1] * ( pow_2 - 1 );
     coef_b[1] = coef_a[0] * ( 1 - ( 2 * y ) + pow_2 );
     
 }
Пример #18
0
unsigned int AmRtpAudio::conceal_loss(unsigned int ts_diff, unsigned char *buffer)
{
  int s=0;
  if(!use_default_plc){

    amci_codec_t* codec = fmt->getCodec();
    long h_codec = fmt->getHCodec();

    assert(codec && codec->plc);
    s = (*codec->plc)(buffer, PCM16_S2B(ts_diff),
		      fmt->channels,getSampleRate(),h_codec);

    DBG("codec specific PLC (ts_diff = %i; s = %i)\n",ts_diff,s);
  }
  else {
    s = default_plc(buffer, PCM16_S2B(ts_diff),
		    fmt->channels,getSampleRate());

    DBG("default PLC (ts_diff = %i; s = %i)\n",ts_diff,s);
  }
    
  return s;
}
Пример #19
0
int AudioCapture::startAudioClient()
{
    start();
    connectToPhysical(0, 0);  // Connect output to port 0

    SettingsMgr::getInstance()->setSampleRate(getSampleRate());

    if (isRealTime())
        logger_->writeLog(my_name_, "Jack is real time");
    else
        logger_->writeLog(my_name_, "Jack is not real time");

    return 0;
}
Пример #20
0
void mdaRePsycho::getParameterDisplay(int32_t index, char *text)
{
	switch(index)
  {
    case 3: long2string((long)((30.0 * fParam1) - 30.0), text); break;
    case 2: long2string((long)((fParam2 - 0.5) * 100.0), text); break;
    case 0: long2string((long)(int(24.0 * fParam3) - 24.0), text); break;
    case 5: long2string((long)(100.0 * fParam4), text); break;
    case 4: long2string((long)(1000.0 * dtim / getSampleRate()), text); break;
    case 1: long2string((long)(int(99.0 * fParam6) - 99.0), text); break;
    case 6: if(fParam7>0.0) strcpy(text, "HIGH");
            else strcpy(text, "LOW"); break;
  }
}
Пример #21
0
 /******************************************************************
  *Método set_LPF da Classe AelIIR
  *Parâmetros: void
  *Define comportamento LOW pass do filtro
  *******************************************************************/
 void AelButterWorth::set_LPF(){
     
     ON = lowpass;
     
     float y = 1 / tan( (M_PI * cutoff) / getSampleRate() );
     float pow_2 = pow(y, 2);
     
     coef_a[0] = 1 / ( 1 + (2 * y) + pow_2 ) ;
     coef_a[1] = 2 * coef_a[0];
     coef_a[2] = coef_a[0];
     coef_b[0] = coef_a[1] * (1 - pow_2);
     coef_b[1] = coef_a[0] * (1 - (2 * y) + pow_2);
     
 }
Пример #22
0
void AmAudioFile::forward(unsigned int msec)
{
  long fpos = ftell(fp);
  long int k = fmt->calcBytesToRead(((getSampleRate()/100)*msec)/10);
  
  if(fpos <= (data_size - k)) {
    DBG("Forwarding %d milliseconds (%ld bytes)\n", msec, k);
    fseek(fp, k, SEEK_CUR);
    clearBufferEOF();
  } else {
    DBG("Forwarding to EOF\n");
    fseek(fp, data_size, SEEK_SET);
  }
}
Пример #23
0
	uint64_t SoundEmitter::getDuration() {
		if (m_soundClip) {
			//convert to milliseconds
			double samplerate = static_cast<double>(getSampleRate()) / 1000.0;
			double bitres = static_cast<double>(getBitResolution());
			// convert to bits
			double size = static_cast<double>(getDecodedLength()) * 8.0;
			double stereo = (isStereo() ? 2.0 : 1.0);
			double time = ( size / (samplerate * bitres) ) / stereo;

			return static_cast<uint64_t>(time);
		}
		return 0;
	}
Пример #24
0
void AmAudioFile::rewind(unsigned int msec)
{
  long fpos = ftell(fp);
  long int k = fmt->calcBytesToRead(((getSampleRate()/100)*msec)/10);
  
  if(fpos > begin + k) {
    DBG("Rewinding %d milliseconds (%ld bytes)\n", msec, k);
    fseek(fp, -k, SEEK_CUR);
  } else {
    DBG("Rewinding file\n");
    fseek(fp, begin, SEEK_SET);
  }
  clearBufferEOF();
}
Пример #25
0
//-----------------------------------------------------------------------------------------
void Compressor::setParameter (VstInt32 index, float value)
{
	switch (index)
	{
        case kParamInputGain :
            InputGainKnob=value;
            input_gain=pow(10.0,(60.0*InputGainKnob-30.0)/20.0);
            break;
        case kParamThreshold:
            ThresholdKnob=value;
            threshold=pow(10.0,(30.0*ThresholdKnob-30.0)/20.0);
            logthresh=20.0*log10(threshold);
            break;
        case kParamAttack :
            AttackKnob = value;
            attack_time = pow(10.0,(AttackKnob*3.0-4.0));
            the_sample_rate=getSampleRate();
            attack_amount=1.0-exp(-1.0/(attack_time*the_sample_rate));
            break;
        case kParamRelease:
            ReleaseKnob = value;
            release_time = 0.0175*pow(10.0,(log10(80.0)*ReleaseKnob));
            the_sample_rate=getSampleRate();
            release_amount=1.0-exp(-1.0/(release_time*the_sample_rate));
            break;
        case kParamRatio:
            RatioKnob = value;
            comp_ratio = pow(10.0,(RatioKnob*3.0));
            break;
        case kParamOutputGain:
            OutputGainKnob=value;
            output_gain=pow(10.0,(60.0*OutputGainKnob-30.0)/20.0);
            break;
        default :
            break;
	}
}
Пример #26
0
static ReturnCodes setupInputSource(SampleSource inputSource) {
  if(inputSource == NULL) {
    return RETURN_CODE_INVALID_ARGUMENT;
  }
  if(inputSource->sampleSourceType == SAMPLE_SOURCE_TYPE_PCM) {
    sampleSourcePcmSetSampleRate(inputSource, getSampleRate());
    sampleSourcePcmSetNumChannels(inputSource, getNumChannels());
  }
  if(!inputSource->openSampleSource(inputSource, SAMPLE_SOURCE_OPEN_READ)) {
    logError("Input source '%s' could not be opened", inputSource->sourceName->data);
    return RETURN_CODE_IO_ERROR;
  }

  return RETURN_CODE_SUCCESS;
}
Пример #27
0
void mdaSubSynth::getParameterDisplay(int32_t index, char *text)
{
 	char string[16];

	switch(index)
  {
    case 1: sprintf(string, "%d", (int32_t)(100.0f * wet)); break;
    case 2: sprintf(string, "%d", (int32_t)(0.0726 * getSampleRate() * pow(10.0,-2.5 + (1.5 * fParam3)))); break;
    case 3: sprintf(string, "%d", (int32_t)(100. * dry)); break;
    case 4: sprintf(string, "%.1f", 60.0f * fParam5 - 60.0f); break;
    case 5: sprintf(string, "%d", (int32_t)(-301.03 / (getSampleRate() * log10(rls)))); break;
    
    case 0: switch(typ)
    {
      case 0: strcpy(string, "Distort"); break;
      case 1: strcpy(string, "Divide"); break;
      case 2: strcpy(string, "Invert"); break;
      case 3: strcpy(string, "Key Osc."); break;
    }
  }

  string[8] = 0;
	strcpy(text, (char *)string);
}
Пример #28
0
void mdaDetune::suspend() ///clear any buffers...
{
  memset(buf, 0, sizeof (buf));
  memset(win, 0, sizeof (win));
  pos0 = 0; pos1 = pos2 = 0.0f;
  
  //recalculate crossfade window
  buflen = 1 << (8 + (VstInt32)(4.9f * programs[curProgram].param[3]));
	if (buflen > BUFMAX) buflen = BUFMAX;
  bufres = 1000.0f * (float)buflen / getSampleRate();

  VstInt32 i; //hanning half-overlap-and-add
  double p=0.0, dp=6.28318530718/buflen;
  for(i=0;i<buflen;i++) { win[i] = (float)(0.5 - 0.5 * cos(p)); p+=dp; }
}
Пример #29
0
 void processAudio(AudioBuffer &buffer){
   // update filter coefficients
   float fn = getFrequency()/getSampleRate();
   float Q = getQ();
   float g = getDbGain();
   peqL.setCoeffsPEQ(fn, Q, g) ;
   peqR.setCoeffsPEQ(fn, Q, g) ;
     
   // process
   int size = buffer.getSize();
   float* left = buffer.getSamples(0);
   peqL.process(size, left);
   float* right = buffer.getSamples(1);
   peqR.process(size, right);
 }
Пример #30
0
void BufferedAudioSource::setPosition(double seconds)
{
	seconds = seconds < 0 ? 0.0f : seconds;
	seconds = seconds > getLength() ? getLength() : seconds;

	RScopedLock l(&mLock);

	Int64 frames = (Int64)(seconds * getSampleRate());
    if(!isLoadedInMemory())
    {
        mBuffer.clear();
        setDecoderPosition(frames);
		BufferedAudioSourceThread::getInstance()->readMore();
    }
}