public void Portament(int aNoteDestination, double aPitch, ref MidiPitch aMidiPitch) { if (/*aMidiStatus.GetBank() != 0x7F00 &&*/ aMidiPitch.GetPortamentFlag() == true) { portamentTime = aMidiPitch.GetPortamentTime(); noteFrequencyDestination = 440.0d * Math.Pow(2.0d, (aNoteDestination - 69.0d) / 12.0f) * Math.Pow(2.0d, aPitch / 1200.0d); noteFrequencyDiff = noteFrequencyDestination - noteFrequency; } }
public FilterVibrato(ref MidiPitch aMidiPitch) { lowFrequency = aMidiPitch.lowFrequency; lowFrequencyDirection = aMidiPitch.mulBase; /* * if( aMidiStatus.GetBank() == 0x7F00 ) * { * lowFrequencyDirection = 0.0d; * }*/ }
public void Filter(ref double lSampleSpeed, int aSampleRate, ref MidiPitch aMidiPitch) { if (lowFrequencyDirection != 0.0d) { lowFrequency += lowFrequencyDirection; if (lowFrequency >= aMidiPitch.modHigh * aSampleRate) { lowFrequencyDirection = -aMidiPitch.mulBase * aSampleRate; } else if (lowFrequency < aMidiPitch.modLow * aSampleRate) { lowFrequencyDirection = aMidiPitch.mulBase * aSampleRate; } lSampleSpeed *= lowFrequency; } }
public void Oscillate(double[] aBuffer, int aSampleRate, ref MidiVolume aMidiVolume, ref MidiPitch aMidiPitch) { generatorPortament.Update(aSampleRate); double lSampleSpeed = 1.0d / ( double )aSampleRate; double lAddSamples = generatorPortament.noteFrequency * aMidiPitch.GetFrequency() * lSampleSpeed; filterVibrato.Filter(ref lAddSamples, aSampleRate, ref aMidiPitch); generatorEnvelope.Generate(aBuffer, lAddSamples, lSampleSpeed); }
public void Portament(byte aNote, byte aVelocity, SoundfontBase aSoundfont, ref MidiVolume aMidiVolume, ref MidiPitch aMidiPitch, double aSecondsSustain = 0.0d) { Logger.Normal("Portament"); generatorEnvelope.Set(aSoundfont, aVelocity, aSecondsSustain); generatorPortament.Portament(aNote, aSoundfont.soundinfo.GetPitch(), ref aMidiPitch); }
public MidiOscillator(byte aNote, byte aInstrument, byte aVelocity, SoundfontBase aSoundfont, ref MidiVolume aMidiVolume, ref MidiPitch aMidiPitch, double aSecondsSustain = 0.0d) { generatorEnvelope = new GeneratorEnvelope(aSoundfont, aVelocity, aSecondsSustain); filterVibrato = new FilterVibrato(ref aMidiPitch); generatorPortament = new GeneratorPortament(aNote, aSoundfont.soundinfo.GetPitch()); }