andrewm@0: /*
andrewm@0: This code accompanies the textbook:
andrewm@0:
andrewm@0: Digital Audio Effects: Theory, Implementation and Application
andrewm@0: Joshua D. Reiss and Andrew P. McPherson
andrewm@0:
andrewm@0: ---
andrewm@0:
andrewm@0: PVOC Pitch Shift: pitch shifter using phase vocoder
andrewm@0: See textbook Chapter 8: The Phase Vocoder
andrewm@0:
andrewm@0: Code by Andrew McPherson, Brecht De Man and Joshua Reiss
andrewm@0: Based on a project by Xinyuan Lai
andrewm@0:
andrewm@0: This code requires the fftw library version 3 to compile:
andrewm@0: http://fftw.org
andrewm@0:
andrewm@0: ---
andrewm@0:
andrewm@0: This program is free software: you can redistribute it and/or modify
andrewm@0: it under the terms of the GNU General Public License as published by
andrewm@0: the Free Software Foundation, either version 3 of the License, or
andrewm@0: (at your option) any later version.
andrewm@0:
andrewm@0: This program is distributed in the hope that it will be useful,
andrewm@0: but WITHOUT ANY WARRANTY; without even the implied warranty of
andrewm@0: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
andrewm@0: GNU General Public License for more details.
andrewm@0:
andrewm@0: You should have received a copy of the GNU General Public License
andrewm@0: along with this program. If not, see .
andrewm@0: */
andrewm@0:
andrewm@0:
andrewm@0: #ifndef __PLUGINEDITOR_H_6E48F605__
andrewm@0: #define __PLUGINEDITOR_H_6E48F605__
andrewm@0:
andrewm@0: #include "../JuceLibraryCode/JuceHeader.h"
andrewm@0: #include "PluginProcessor.h"
andrewm@0:
andrewm@0:
andrewm@0: //==============================================================================
andrewm@0:
andrewm@0: class PVOCPitchShiftAudioProcessorEditor : public AudioProcessorEditor,
andrewm@0: public SliderListener,
andrewm@0: public ComboBox::Listener,
andrewm@0: public Timer
andrewm@0: {
andrewm@0: public:
andrewm@0: PVOCPitchShiftAudioProcessorEditor (PVOCPitchShiftAudioProcessor* ownerFilter);
andrewm@0: ~PVOCPitchShiftAudioProcessorEditor();
andrewm@0:
andrewm@0: //==============================================================================
andrewm@0: // This is just a standard Juce paint method...
andrewm@0: void timerCallback();
andrewm@0: void paint (Graphics& g);
andrewm@0: void resized();
andrewm@0: void sliderValueChanged (Slider*);
andrewm@0: void comboBoxChanged (ComboBox *);
andrewm@0:
andrewm@0: private:
andrewm@0: Label fftSizeLabel_, hopSizeLabel_, windowTypeLabel_, pitchShiftLabel_; //(⊙_⊙)
andrewm@0: ComboBox fftSizeComboBox_, hopSizeComboBox_, windowTypeComboBox_, pitchShiftComboBox_; //(⊙_⊙)
andrewm@0:
andrewm@0: ScopedPointer resizer_;
andrewm@0: ComponentBoundsConstrainer resizeLimits_;
andrewm@0:
andrewm@0: PVOCPitchShiftAudioProcessor* getProcessor() const
andrewm@0: {
andrewm@0: return static_cast (getAudioProcessor());
andrewm@0: }
andrewm@0: };
andrewm@0:
andrewm@0:
andrewm@0: #endif // __PLUGINEDITOR_H_6E48F605__