/// <inheritdoc /> public Jacobi.Vst.Core.VstTimeInfo GetTimeInfo(Jacobi.Vst.Core.VstTimeInfoFlags filterFlags) { vstTimeInfo.SampleRate = 44100.0; vstTimeInfo.Tempo = (double)BPM; vstTimeInfo.PpqPosition = (vstTimeInfo.SamplePosition / vstTimeInfo.SampleRate) * (vstTimeInfo.Tempo / 60.0); vstTimeInfo.NanoSeconds = 0.0; vstTimeInfo.BarStartPosition = 0.0; vstTimeInfo.CycleStartPosition = 0.0; vstTimeInfo.CycleEndPosition = 0.0; vstTimeInfo.TimeSignatureNumerator = 4; vstTimeInfo.TimeSignatureDenominator = 4; vstTimeInfo.SmpteOffset = 0; vstTimeInfo.SmpteFrameRate = new Jacobi.Vst.Core.VstSmpteFrameRate(); vstTimeInfo.SamplesToNearestClock = 0; vstTimeInfo.Flags = VstTimeInfoFlags.TempoValid | VstTimeInfoFlags.PpqPositionValid | VstTimeInfoFlags.TransportPlaying; return(vstTimeInfo); }
/// <inheritdoc /> public Jacobi.Vst.Core.VstTimeInfo GetTimeInfo(Jacobi.Vst.Core.VstTimeInfoFlags filterFlags) { _cmdStub.RaisePluginCalled("GetTimeInfo(" + filterFlags + ")"); return(null); }
/// <inheritdoc /> public Jacobi.Vst.Core.VstTimeInfo GetTimeInfo(Jacobi.Vst.Core.VstTimeInfoFlags filterFlags) { RaisePluginCalled("GetTimeInfo(" + filterFlags + ")"); // our sample calculator performs: // Create TimeInfo class VstTimeInfo vstTimeInfo = new VstTimeInfo(); // most common settings vstTimeInfo.SamplePosition = Parent.SampleOffset + Parent.BufferIncrement; vstTimeInfo.SampleRate = Parent.Settings.Rate; // filterFlags |= VstTimeInfoFlags.ClockValid; if (filterFlags.HasFlag(VstTimeInfoFlags.ClockValid)) { // should we floor this? int cp = MasterClock.SolvePPQ(Parent.SampleOffset, Parent.Settings).ClocksAtPosition.ToInt32(); vstTimeInfo.SamplesToNearestClock = MasterClock.SolveSamples(cp * 24, Parent.Settings).Samples32Floor; } // NanoSecondsValid filterFlags |= VstTimeInfoFlags.NanoSecondsValid; if (filterFlags.HasFlag(VstTimeInfoFlags.NanoSecondsValid)) { vstTimeInfo.NanoSeconds = (Parent.SampleOffset / Parent.Settings.Rate) * billionth; } // TempoValid filterFlags |= VstTimeInfoFlags.TempoValid; if (filterFlags.HasFlag(VstTimeInfoFlags.TempoValid)) { vstTimeInfo.Tempo = Parent.Settings.Tempo; } // PpqPositionValid filterFlags |= VstTimeInfoFlags.PpqPositionValid; if (filterFlags.HasFlag(VstTimeInfoFlags.PpqPositionValid)) { vstTimeInfo.PpqPosition = MasterClock.SolvePPQ(vstTimeInfo.SamplePosition, Parent.Settings).Frame; } // BarStartPositionValid filterFlags |= VstTimeInfoFlags.BarStartPositionValid; if (filterFlags.HasFlag(VstTimeInfoFlags.BarStartPositionValid)) { vstTimeInfo.BarStartPosition = MasterClock.SolvePPQ(vstTimeInfo.SamplePosition, Parent.Settings).Pulses; // * st.SamplesPerQuarter } // CyclePositionValid filterFlags |= VstTimeInfoFlags.CyclePositionValid; if (filterFlags.HasFlag(VstTimeInfoFlags.CyclePositionValid)) { vstTimeInfo.CycleStartPosition = Parent.SampleOffset;//st.SolvePPQ(Parent.SampleOffset,Parent.Settings).Frame; vstTimeInfo.CycleEndPosition = Parent.SampleOffset + Parent.CurrentSampleLength; } // TimeSignatureValid if (filterFlags.HasFlag(VstTimeInfoFlags.TimeSignatureValid)) { vstTimeInfo.TimeSignatureNumerator = Parent.Settings.TimeSignature.Numerator; vstTimeInfo.TimeSignatureDenominator = Parent.Settings.TimeSignature.Denominator; } // SmpteValid if (filterFlags.HasFlag(VstTimeInfoFlags.SmpteValid)) { vstTimeInfo.SmpteFrameRate = smpte_rate; /* 30 fps no-drop */ vstTimeInfo.SmpteOffset = 0; /* not quite valid */ } vstTimeInfo.Flags = filterFlags; return(vstTimeInfo); }