diff --git a/Builds/MacOSX/Dexed.xcodeproj/project.xcworkspace/xcuserdata/asb2m10.xcuserdatad/UserInterfaceState.xcuserstate b/Builds/MacOSX/Dexed.xcodeproj/project.xcworkspace/xcuserdata/asb2m10.xcuserdatad/UserInterfaceState.xcuserstate index 5e34e35..54bac68 100644 Binary files a/Builds/MacOSX/Dexed.xcodeproj/project.xcworkspace/xcuserdata/asb2m10.xcuserdatad/UserInterfaceState.xcuserstate and b/Builds/MacOSX/Dexed.xcodeproj/project.xcworkspace/xcuserdata/asb2m10.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/Source/DXComponents.cpp b/Source/DXComponents.cpp index 84a8e61..21fb440 100644 --- a/Source/DXComponents.cpp +++ b/Source/DXComponents.cpp @@ -282,4 +282,17 @@ void VuMeter::paint(Graphics &g) { g.fillRoundedRectangle (3.0f, (height-3.0f) - (3.0f + i * h + h * 0.1f) , width - 6.0f, h * 0.8f, 0); } -} \ No newline at end of file +} + +void LcdDisplay::paint(Graphics &g) { + g.setColour(Colours::black.withAlpha(0.4f)); + g.fillRoundedRectangle (0.0f, 0.0f, (float) getWidth(), (float) getHeight(), 1.0f); + g.setColour (Colours::white); + g.setFont (Font (Font::getDefaultMonospacedFontName(), 15.00f, Font::plain)); + g.drawText (systemMsg, + 4, 4, 300, 8, + Justification::centredLeft, true); + g.drawText (paramMsg, + 4, 20, 300, 8, + Justification::centredLeft, true); +} diff --git a/Source/DXComponents.h b/Source/DXComponents.h index f473994..eda1895 100644 --- a/Source/DXComponents.h +++ b/Source/DXComponents.h @@ -54,4 +54,11 @@ class VuMeter: public Component { float v; }; +class LcdDisplay : public Component { +public: + String systemMsg; + String paramMsg; + void paint(Graphics &g); +}; + #endif // DXCOMPONENTS_H_INCLUDED diff --git a/Source/GlobalEditor.cpp b/Source/GlobalEditor.cpp index 9e94219..cac5da5 100644 --- a/Source/GlobalEditor.cpp +++ b/Source/GlobalEditor.cpp @@ -162,6 +162,9 @@ GlobalEditor::GlobalEditor () algo->setTextBoxStyle (Slider::NoTextBox, true, 80, 20); algo->addListener (this); + addAndMakeVisible (lcdDisplay = new LcdDisplay()); + lcdDisplay->setName ("lcdDisplay"); + //[UserPreSize] //[/UserPreSize] @@ -170,7 +173,7 @@ GlobalEditor::GlobalEditor () //[Constructor] You can add your own custom stuff here.. - systemMsg << "* DEXED DX synthesizer *"; + lcdDisplay->systemMsg << "* DEXED DX synthesizer *"; //[/Constructor] } @@ -203,6 +206,7 @@ GlobalEditor::~GlobalEditor() algoDisplay = nullptr; feedback = nullptr; algo = nullptr; + lcdDisplay = nullptr; //[Destructor]. You can add your own custom destruction code here.. @@ -216,17 +220,7 @@ void GlobalEditor::paint (Graphics& g) //[/UserPrePaint] //[UserPaint] Add your own custom painting code here.. - g.setColour (Colours::black); - g.setFont (Font (Font::getDefaultMonospacedFontName(), 15.00f, Font::plain)); - g.drawText (systemMsg, - 11, 8, 300, 8, - Justification::centredLeft, true); - - g.setColour (Colours::black); - g.setFont (Font (Font::getDefaultMonospacedFontName(), 15.00f, Font::plain)); - g.drawText (paramMsg, - 11, 24, 300, 8, - Justification::centredLeft, true); + //[/UserPaint] } @@ -255,6 +249,7 @@ void GlobalEditor::resized() algoDisplay->setBounds (442, 8, 152, 74); feedback->setBounds (568, 32, 24, 24); algo->setBounds (568, 8, 24, 24); + lcdDisplay->setBounds (8, 0, 256, 32); //[UserResized] Add your own custom resize handling here.. //[/UserResized] } @@ -415,12 +410,12 @@ void GlobalEditor::bind(DexedAudioProcessor *parent) { } void GlobalEditor::setSystemMessage(String msg) { - systemMsg = msg; + lcdDisplay->systemMsg = msg; repaint(); } void GlobalEditor::setParamMessage(String msg) { - paramMsg = msg; + lcdDisplay->paramMsg = msg; repaint(); } @@ -539,6 +534,9 @@ BEGIN_JUCER_METADATA explicitFocusOrder="0" pos="568 8 24 24" min="1" max="32" int="1" style="Rotary" textBoxPos="NoTextBox" textBoxEditable="0" textBoxWidth="80" textBoxHeight="20" skewFactor="1"/> + END_JUCER_METADATA diff --git a/Source/GlobalEditor.h b/Source/GlobalEditor.h index 0060436..597dd54 100644 --- a/Source/GlobalEditor.h +++ b/Source/GlobalEditor.h @@ -53,8 +53,6 @@ public: void updatePitchPos(int pos); void updateDisplay(); - String systemMsg; - String paramMsg; //[/UserMethods] void paint (Graphics& g); @@ -93,6 +91,7 @@ private: ScopedPointer algoDisplay; ScopedPointer feedback; ScopedPointer algo; + ScopedPointer lcdDisplay; //============================================================================== diff --git a/Source/PluginEditor.cpp b/Source/PluginEditor.cpp index 50a3b7e..4b68889 100644 --- a/Source/PluginEditor.cpp +++ b/Source/PluginEditor.cpp @@ -33,7 +33,7 @@ DexedAudioProcessorEditor::DexedAudioProcessorEditor (DexedAudioProcessor* owner { LookAndFeel::setDefaultLookAndFeel(&dx_lnf); - setSize (865, 420); + setSize (866, 420); processor = ownerFilter; @@ -72,32 +72,32 @@ DexedAudioProcessorEditor::DexedAudioProcessorEditor (DexedAudioProcessor* owner addAndMakeVisible(aboutButton = new TextButton("ABOUT")); aboutButton->setButtonText ("ABOUT"); aboutButton->addListener (this); - aboutButton->setBounds (805, 5, 50, 18); + aboutButton->setBounds (807, 5, 50, 18); // OPERATORS addAndMakeVisible(&(operators[0])); - operators[0].setBounds(5, 39, 280, 90); + operators[0].setBounds(7, 38, 280, 90); operators[0].bind(processor, 0); addAndMakeVisible(&(operators[1])); - operators[1].setBounds(290, 39, 280, 90); + operators[1].setBounds(294, 38, 280, 90); operators[1].bind(processor, 1); addAndMakeVisible(&(operators[2])); - operators[2].setBounds(575, 39, 280, 90); + operators[2].setBounds(579, 38, 280, 90); operators[2].bind(processor, 2); addAndMakeVisible(&(operators[3])); - operators[3].setBounds(5, 133, 280, 90); + operators[3].setBounds(7, 133, 280, 90); operators[3].bind(processor, 3); addAndMakeVisible(&(operators[4])); - operators[4].setBounds(290, 133, 280, 90); + operators[4].setBounds(294, 133, 280, 90); operators[4].bind(processor, 4); addAndMakeVisible(&(operators[5])); - operators[5].setBounds(575, 133, 280, 90); + operators[5].setBounds(579, 133, 280, 90); operators[5].bind(processor, 5); // add the midi keyboard component.. @@ -124,10 +124,10 @@ DexedAudioProcessorEditor::~DexedAudioProcessorEditor() { //============================================================================== void DexedAudioProcessorEditor::paint (Graphics& g) { - g.setColour(Colour(0xFF744420)); + g.setColour(Colour(0xFF47260D)); g.fillRoundedRectangle(0.0f, 0.0f, (float) getWidth(), (float) getHeight(), 0); - g.setColour(Colour(0xFFA87B67)); + g.setColour(Colour(0xFF4D3828)); g.fillRoundedRectangle(0.0f, 30, (float) getWidth(), 200, 0); } diff --git a/Source/PluginProcessor.cpp b/Source/PluginProcessor.cpp index 5a3229e..dc5b504 100644 --- a/Source/PluginProcessor.cpp +++ b/Source/PluginProcessor.cpp @@ -370,16 +370,16 @@ void DexedAudioProcessor::processSamples(int n_samples, float *buffer) { for (int note = 0; note < MAX_ACTIVE_NOTES; ++note) { if (voices[note].live) { voices[note].dx7_note->compute(audiobuf.get(), lfovalue, lfodelay, &controllers); - } - - for (int j=0; j < N; ++j) { - int32_t val = audiobuf.get()[j] >> 4; - int clip_val = val < -(1 << 24) ? 0x8000 : val >= (1 << 24) ? 0x7fff : val >> 9; - float f = ((float) clip_val) / (float) 32768; - if( f > 1 ) f = 1; - if( f < -1 ) f = -1; - sumbuf[j] += f; - audiobuf.get()[j] = 0; + + for (int j=0; j < N; ++j) { + int32_t val = audiobuf.get()[j] >> 4; + int clip_val = val < -(1 << 24) ? 0x8000 : val >= (1 << 24) ? 0x7fff : val >> 9; + float f = ((float) clip_val) / (float) 32768; + if( f > 1 ) f = 1; + if( f < -1 ) f = -1; + sumbuf[j] += f; + audiobuf.get()[j] = 0; + } } } @@ -426,7 +426,6 @@ bool DexedAudioProcessor::peekVoiceStatus() { return true; } - const String DexedAudioProcessor::getInputChannelName (int channelIndex) const { return String (channelIndex + 1); } @@ -476,7 +475,6 @@ bool DexedAudioProcessor::hasEditor() const { return true; // (change this to false if you choose to not supply an editor) } - void DexedAudioProcessor::updateUI() { // notify host something has changed updateHostDisplay();