@@ -28,10 +28,15 @@ extern String g_plugintitle; | |||
PaulstretchpluginAudioProcessorEditor::PaulstretchpluginAudioProcessorEditor(PaulstretchpluginAudioProcessor& p) | |||
: AudioProcessorEditor(&p), | |||
m_wavecomponent(p.m_afm,p.m_thumb.get()), | |||
processor(p), m_perfmeter(&p) | |||
processor(p), m_perfmeter(&p), | |||
m_wavefilter_tab(TabbedButtonBar::TabsAtTop) | |||
{ | |||
addAndMakeVisible(&m_perfmeter); | |||
//addAndMakeVisible(&m_free_filter_component); | |||
m_free_filter_component.set_envelope(processor.m_free_filter_envelope); | |||
m_wavefilter_tab.setTabBarDepth(17); | |||
addAndMakeVisible(&m_perfmeter); | |||
addAndMakeVisible(&m_import_button); | |||
m_import_button.setButtonText("Import file..."); | |||
@@ -45,8 +50,11 @@ PaulstretchpluginAudioProcessorEditor::PaulstretchpluginAudioProcessorEditor(Pau | |||
m_info_label.setJustificationType(Justification::centredRight); | |||
m_wavecomponent.GetFileCallback = [this]() { return processor.getAudioFile(); }; | |||
addAndMakeVisible(&m_wavecomponent); | |||
const auto& pars = processor.getParameters(); | |||
//addAndMakeVisible(&m_wavecomponent); | |||
const auto& pars = processor.getParameters(); | |||
for (int i=0;i<pars.size();++i) | |||
{ | |||
AudioProcessorParameterWithID* parid = dynamic_cast<AudioProcessorParameterWithID*>(pars[i]); | |||
@@ -86,7 +94,7 @@ PaulstretchpluginAudioProcessorEditor::PaulstretchpluginAudioProcessorEditor(Pau | |||
processor.m_wave_view_range = r; | |||
}; | |||
m_zs.setRange(processor.m_wave_view_range, true); | |||
setSize (1000, 30+(pars.size()/2)*25+200+15); | |||
m_wavecomponent.TimeSelectionChangedCallback = [this](Range<double> range, int which) | |||
{ | |||
*processor.getFloatParameter(cpi_soundstart) = range.getStart(); | |||
@@ -118,7 +126,12 @@ PaulstretchpluginAudioProcessorEditor::PaulstretchpluginAudioProcessorEditor(Pau | |||
{ | |||
processor.setDirty(); | |||
}; | |||
startTimer(1, 100); | |||
m_wavefilter_tab.addTab("Waveform", Colours::white, &m_wavecomponent, false); | |||
m_wavefilter_tab.addTab("Free filter", Colours::white, &m_free_filter_component, false); | |||
addAndMakeVisible(&m_wavefilter_tab); | |||
setSize (1000, 30+(pars.size()/2)*25+200+15); | |||
startTimer(1, 100); | |||
startTimer(2, 1000); | |||
startTimer(3, 200); | |||
m_wavecomponent.startTimer(100); | |||
@@ -240,9 +253,10 @@ void PaulstretchpluginAudioProcessorEditor::resized() | |||
yoffs += 25; | |||
int remain_h = getHeight() - 1 - yoffs -15; | |||
m_spec_order_ed.setBounds(1, yoffs, getWidth() - 2, remain_h / 5 * 1); | |||
m_wavecomponent.setBounds(1, m_spec_order_ed.getBottom()+1, getWidth()-2, remain_h/5*4); | |||
m_zs.setBounds(1, m_wavecomponent.getBottom(), getWidth() - 2, 16); | |||
//m_specvis.setBounds(1, yoffs, getWidth() - 2, getHeight() - 1 - yoffs); | |||
//m_wavecomponent.setBounds(1, m_spec_order_ed.getBottom()+1, getWidth()-2, remain_h/5*4); | |||
m_wavefilter_tab.setBounds(1, m_spec_order_ed.getBottom()+1, getWidth()-2, remain_h/5*4); | |||
m_zs.setBounds(1, m_wavefilter_tab.getBottom(), getWidth() - 2, 16); | |||
} | |||
void PaulstretchpluginAudioProcessorEditor::timerCallback(int id) | |||
@@ -24,6 +24,7 @@ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |||
#include "PluginProcessor.h" | |||
#include <memory> | |||
#include <vector> | |||
#include "envelope_component.h" | |||
class zoom_scrollbar : public Component | |||
{ | |||
@@ -229,6 +230,8 @@ private: | |||
void showSettingsMenu(); | |||
String m_last_err; | |||
zoom_scrollbar m_zs; | |||
EnvelopeComponent m_free_filter_component; | |||
TabbedComponent m_wavefilter_tab; | |||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (PaulstretchpluginAudioProcessorEditor) | |||
}; | |||
@@ -80,7 +80,10 @@ PaulstretchpluginAudioProcessor::PaulstretchpluginAudioProcessor() | |||
g_activeprocessors.insert(this); | |||
m_playposinfo.timeInSeconds = 0.0; | |||
m_recbuffer.setSize(2, 44100); | |||
m_free_filter_envelope = std::make_shared<breakpoint_envelope>(); | |||
m_recbuffer.setSize(2, 44100); | |||
m_recbuffer.clear(); | |||
if (m_afm->getNumKnownFormats()==0) | |||
m_afm->registerBasicFormats(); | |||
@@ -22,6 +22,7 @@ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |||
#include "../JuceLibraryCode/JuceHeader.h" | |||
#include "PS_Source/PaulStretchControl.h" | |||
#include "jcdp_envelope.h" | |||
class MyThumbCache; | |||
@@ -169,6 +170,7 @@ public: | |||
bool m_show_technical_info = false; | |||
Range<double> m_wave_view_range; | |||
int m_prepare_count = 0; | |||
std::shared_ptr<breakpoint_envelope> m_free_filter_envelope; | |||
private: | |||
@@ -1,3 +1,23 @@ | |||
/* | |||
Copyright (C) 2006-2011 Nasca Octavian Paul | |||
Author: Nasca Octavian Paul | |||
Copyright (C) 2017 Xenakios | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of version 2 of the GNU General Public License | |||
as published by the Free Software Foundation. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License (version 2) for more details. | |||
You should have received a copy of the GNU General Public License (version 2) | |||
along with this program; if not, write to the Free Software Foundation, | |||
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |||
*/ | |||
#include "envelope_component.h" | |||
EnvelopeComponent::EnvelopeComponent() | |||
@@ -1,3 +1,23 @@ | |||
/* | |||
Copyright (C) 2006-2011 Nasca Octavian Paul | |||
Author: Nasca Octavian Paul | |||
Copyright (C) 2017 Xenakios | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of version 2 of the GNU General Public License | |||
as published by the Free Software Foundation. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License (version 2) for more details. | |||
You should have received a copy of the GNU General Public License (version 2) | |||
along with this program; if not, write to the Free Software Foundation, | |||
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |||
*/ | |||
#pragma once | |||
#include "../JuceLibraryCode/JuceHeader.h" | |||
@@ -19,6 +19,7 @@ | |||
file="Source/envelope_component.cpp"/> | |||
<FILE id="apM6W6" name="envelope_component.h" compile="0" resource="0" | |||
file="Source/envelope_component.h"/> | |||
<FILE id="qfCc8R" name="jcdp_envelope.h" compile="0" resource="0" file="Source/jcdp_envelope.h"/> | |||
<FILE id="TDOHpE" name="resample.cpp" compile="1" resource="0" file="Source/WDL/resample.cpp"/> | |||
<GROUP id="{3B6D1AF9-E53E-2F78-24A5-D12A34009E6A}" name="PS_Source"> | |||
<FILE id="bnWZA4" name="BinauralBeats.cpp" compile="1" resource="0" | |||