No products in the cart.
Apologies if I’ve missed any previous answer/s on same topic, have searched/read forum etc., but cannot find…
When playing back songs inside my DAW (Studio One Pro v3.5.6 Windows 10 Pro) the visual feedback i.e. cursor position is not in sync with the audio I’m listening to!
The cursor (both on the song track and/or the grid editor) is displaced from the audio by half a bar or so, which makes it very difficult to perform edits because the cursor is not on the note or block part that is sounding. The audio is synced fine.
I’m thinking that this might be a latency issue but Studio One (as I suspect most DAW’s) has latency compensation, this compensation however does not seem to extend to SD3 visuals.
Has anyone else experienced this, what is for me a serious issue and is there a fix?
Regards….
Windows 10 Pro/i7 6800k @3.4Ghz/16Gb ram. Studio One Pro, Melodyne Editor 4, Vocalign Project, Superior Drummer 3, Izotope N2-O8 and various other plugins. Focusrite Saffire Pro 40, Faderport, Focal Alpha 50's, Korg Pa3x, Korg Pad Kontrol, numerous guitars, basses & other antiquated outboard gear.
Apologies if I’ve missed any previous answer/s on same topic, have searched/read forum etc., but cannot find…
When playing back songs inside my DAW (Studio One Pro v3.5.6 Windows 10 Pro) the visual feedback i.e. cursor position is not in sync with the audio I’m listening to!
The cursor (both on the song track and/or the grid editor) is displaced from the audio by half a bar or so, which makes it very difficult to perform edits because the cursor is not on the note or block part that is sounding. The audio is synced fine.
I’m thinking that this might be a latency issue but Studio One (as I suspect most DAW’s) has latency compensation, this compensation however does not seem to extend to SD3 visuals.
Has anyone else experienced this, what is for me a serious issue and is there a fix?
Regards….
Windows 10 Pro/i7 6800k @3.4Ghz/16Gb ram. Studio One Pro, Melodyne Editor 4, Vocalign Project, Superior Drummer 3, Izotope N2-O8 and various other plugins. Focusrite Saffire Pro 40, Faderport, Focal Alpha 50's, Korg Pa3x, Korg Pad Kontrol, numerous guitars, basses & other antiquated outboard gear.
Dunno but maybe synchronise the visual delay to the audio latency? Something like:
#include
class VisualDelayAudioProcessor : public juce::AudioProcessor
{
public:
VisualDelayAudioProcessor() {}
~VisualDelayAudioProcessor() override {}
void prepareToPlay (double sampleRate, int samplesPerBlock) override
{
// Get the audio latency from the audio device (in seconds)
audioLatencyInSeconds = getLatencySeconds();
audioLatencyInSamples = static_cast(sampleRate * audioLatencyInSeconds);
}
void releaseResources() override {}
void processBlock (juce::AudioBuffer& buffer, juce::MidiBuffer& midiMessages) override
{
// Process audio here (e.g., pass-through or modify audio)
// In this example, we’re just passing the audio buffer as-is
}
bool isBusesLayoutSupported (const BusesLayout& layouts) const override
{
// We support a stereo input and output layout
return layouts.getMainOutputChannelSet() == juce::AudioChannelSet::stereo() &&
layouts.getMainInputChannelSet() == juce::AudioChannelSet::stereo();
}
const juce::String getName() const override { return “VisualDelayAudioProcessor”; }
bool hasEditor() const override { return true; }
juce::AudioProcessorEditor* createEditor() override { return new VisualDelayAudioProcessorEditor (*this); }
// Get the audio latency in samples
int getAudioLatencyInSamples() const { return audioLatencyInSamples; }
private:
double audioLatencyInSeconds = 0.0;
int audioLatencyInSamples = 0;
};
class VisualDelayAudioProcessorEditor : public juce::AudioProcessorEditor
{
public:
VisualDelayAudioProcessorEditor (VisualDelayAudioProcessor& p)
: AudioProcessorEditor (&p), processor (p)
{
setSize (400, 300);
// Set up the visual component (a simple rectangle that will move based on latency)
addAndMakeVisible (visualDelay);
}
void resized() override
{
visualDelay.setBounds (10, 10, 50, 50); // Position of the visual object
}
void paint (juce::Graphics& g) override
{
g.fillAll (juce::Colours::black);
// Synchronize the visual delay to the audio latency
float delayXPosition = processor.getAudioLatencyInSamples() / 10.0f; // Scale the delay
visualDelay.setBounds (10 + static_cast(delayXPosition), 10, 50, 50);
g.setColour (juce::Colours::red);
g.fillRect (visualDelay.getBounds()); // Draw the visual element
}
private:
VisualDelayAudioProcessor& processor;
juce::Rectangle visualDelay;
};
// Create the plugin instance
juce::AudioProcessor* JUCE_CALLTYPE createPluginFilter()
{
return new VisualDelayAudioProcessor();
}
Thanks for the reply John,
I appreciate you.
I will try and minimize other big plugins while I am using the grid editor and see if it does the trick!
Brad
No products in the cart.