Attempt to draw the points in the audio file where the FFTs are taken but of course it doesn't work like this because of the looping

This commit is contained in:
xenakios 2018-05-11 16:45:34 +03:00
parent aae05950f0
commit 11e61f8cfd
3 changed files with 31 additions and 0 deletions

View File

@ -106,6 +106,7 @@ public:
void setPreviewDry(bool b); void setPreviewDry(bool b);
bool isPreviewingDry() const; bool isPreviewingDry() const;
int m_param_change_count = 0; int m_param_change_count = 0;
double getLastSeekPos() const { return m_seekpos; }
CriticalSection* getMutex() { return &m_cs; } CriticalSection* getMutex() { return &m_cs; }
private: private:
CircularBuffer<float> m_stretchoutringbuf{ 1024 * 1024 }; CircularBuffer<float> m_stretchoutringbuf{ 1024 * 1024 };

View File

@ -421,6 +421,8 @@ void PaulstretchpluginAudioProcessorEditor::timerCallback(int id)
m_wavecomponent.setRecordingPosition(processor.getRecordingPositionPercent()); m_wavecomponent.setRecordingPosition(processor.getRecordingPositionPercent());
} else } else
m_wavecomponent.setRecordingPosition(-1.0); m_wavecomponent.setRecordingPosition(-1.0);
m_wavecomponent.setAudioInfo(processor.getSampleRateChecked(), processor.getStretchSource()->getLastSeekPos(),
processor.getStretchSource()->getFFTSize());
String infotext; String infotext;
if (processor.m_show_technical_info) if (processor.m_show_technical_info)
{ {
@ -653,6 +655,8 @@ void WaveformComponent::paint(Graphics & g)
thumblen*m_view_range.getStart(), thumblen*m_view_range.getEnd(), 0.0f, (float)getWidth()); thumblen*m_view_range.getStart(), thumblen*m_view_range.getEnd(), 0.0f, (float)getWidth());
g.drawLine(tickxcor, 0.0, tickxcor, (float)m_topmargin, 1.0f); g.drawLine(tickxcor, 0.0, tickxcor, (float)m_topmargin, 1.0f);
} }
bool m_use_cached_image = true; bool m_use_cached_image = true;
if (m_use_cached_image == true) if (m_use_cached_image == true)
{ {
@ -676,6 +680,18 @@ void WaveformComponent::paint(Graphics & g)
m_thumbnail->drawChannels(g, { 0,m_topmargin,getWidth(),getHeight() - m_topmargin }, m_thumbnail->drawChannels(g, { 0,m_topmargin,getWidth(),getHeight() - m_topmargin },
thumblen*m_view_range.getStart(), thumblen*m_view_range.getEnd(), 1.0f); thumblen*m_view_range.getStart(), thumblen*m_view_range.getEnd(), 1.0f);
} }
if (m_sr > 0.0 && m_fft_size > 0 && m_time_sel_start>=0.0)
{
tick_interval = 1.0 / m_sr * m_fft_size;
/*
for (double secs = m_time_sel_start*thumblen; secs < m_time_sel_end*thumblen; secs += tick_interval)
{
float tickxcor = (float)jmap<double>(fmod(secs, thumblen),
thumblen*m_view_range.getStart(), thumblen*m_view_range.getEnd(), 0.0f, (float)getWidth());
g.drawLine(tickxcor, (float)m_topmargin, tickxcor, (float)50, 2.0f);
}
*/
}
if (m_is_at_selection_drag_area) if (m_is_at_selection_drag_area)
g.setColour(Colours::white.withAlpha(0.6f)); g.setColour(Colours::white.withAlpha(0.6f));
else else
@ -753,7 +769,10 @@ void WaveformComponent::mouseDown(const MouseEvent & e)
if (e.y < m_topmargin || e.mods.isCommandDown()) if (e.y < m_topmargin || e.mods.isCommandDown())
{ {
if (SeekCallback) if (SeekCallback)
{
SeekCallback(pos); SeekCallback(pos);
m_last_startpos = pos;
}
m_didseek = true; m_didseek = true;
} }
else else
@ -880,6 +899,13 @@ void WaveformComponent::mouseWheelMove(const MouseEvent & e, const MouseWheelDet
*/ */
} }
void WaveformComponent::setAudioInfo(double sr, double seekpos, int fftsize)
{
m_sr = sr;
m_fft_size = fftsize;
m_last_startpos = seekpos;
}
Range<double> WaveformComponent::getTimeSelection() Range<double> WaveformComponent::getTimeSelection()
{ {
if (m_time_sel_start >= 0.0 && m_time_sel_end>m_time_sel_start + 0.001) if (m_time_sel_start >= 0.0 && m_time_sel_end>m_time_sel_start + 0.001)

View File

@ -142,6 +142,7 @@ public:
void mouseMove(const MouseEvent& e) override; void mouseMove(const MouseEvent& e) override;
void mouseDoubleClick(const MouseEvent& e) override; void mouseDoubleClick(const MouseEvent& e) override;
void mouseWheelMove(const MouseEvent& e, const MouseWheelDetails& wd) override; void mouseWheelMove(const MouseEvent& e, const MouseWheelDetails& wd) override;
void setAudioInfo(double sr, double seekpos, int fftsize);
Range<double> getTimeSelection(); Range<double> getTimeSelection();
void setTimeSelection(Range<double> rng); void setTimeSelection(Range<double> rng);
void setFileCachedRange(std::pair<Range<double>, Range<double>> rng); void setFileCachedRange(std::pair<Range<double>, Range<double>> rng);
@ -165,6 +166,9 @@ private:
int getTimeSelectionEdge(int x, int y); int getTimeSelectionEdge(int x, int y);
std::pair<Range<double>, Range<double>> m_file_cached; std::pair<Range<double>, Range<double>> m_file_cached;
bool m_image_dirty = false; bool m_image_dirty = false;
double m_sr = 0.0;
int m_fft_size = 0;
double m_last_startpos = 0.0;
Image m_waveimage; Image m_waveimage;
#ifdef JUCE_MODULE_AVAILABLE_juce_opengl #ifdef JUCE_MODULE_AVAILABLE_juce_opengl
OpenGLContext m_ogl; OpenGLContext m_ogl;