From 210833df74aafde208fde6668ef474df91cef1c7 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Fri, 20 Mar 2015 16:35:58 +0000 Subject: [PATCH] - evaluate MidiClock git-svn-id: http://moon:8086/svn/software/trunk/projects/JaySynth@269 b431acfa-c32f-4a4a-93f1-934dc6c82436 --- JaySynth Glocky Wave.fxp | Bin 0 -> 2965 bytes JaySynth Play It Right.fxp | Bin 0 -> 2941 bytes JaySynth.jucer | 7 +- JuceLibraryCode/AppConfig.h | 2 +- Love_and_Horror_V2.fxb | Bin 150069 -> 150069 bytes Source/ButtonLED.cpp | 15 +- Source/ButtonLED.h | 4 +- Source/JK_MidiClock.cpp | 189 ++ Source/JK_MidiClock.h | 73 + Source/JaySynth.cpp | 41 +- Source/JaySynth.h | 10 +- Source/JaySynthAudioProcessorEditor.cpp | 2636 +++++++++++------------ Source/JaySynthAudioProcessorEditor.h | 443 ++-- Source/PluginProcessor.cpp | 10 + Source/PluginProcessor.h | 14 + nbproject/Makefile-Debug.mk | 6 + nbproject/Makefile-Release.mk | 6 + nbproject/configurations.xml | 10 + 18 files changed, 1826 insertions(+), 1640 deletions(-) create mode 100644 JaySynth Glocky Wave.fxp create mode 100644 JaySynth Play It Right.fxp create mode 100644 Source/JK_MidiClock.cpp create mode 100644 Source/JK_MidiClock.h diff --git a/JaySynth Glocky Wave.fxp b/JaySynth Glocky Wave.fxp new file mode 100644 index 0000000000000000000000000000000000000000..8b98ad96d3fe4cd2aa51e921d5dd7d47ece7f0b8 GIT binary patch literal 2965 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 J)R9+X{{aB*m+k-n literal 0 HcmV?d00001 diff --git a/JaySynth Play It Right.fxp b/JaySynth Play It Right.fxp new file mode 100644 index 0000000000000000000000000000000000000000..56a67f383e35a8184ec7bac609c8bd637ac50332 GIT binary patch literal 2941 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 literal 0 HcmV?d00001 diff --git a/JaySynth.jucer b/JaySynth.jucer index 8c8cfbf..6ccd4ce 100644 --- a/JaySynth.jucer +++ b/JaySynth.jucer @@ -10,7 +10,12 @@ pluginAUExportPrefix="JaySynthAU" pluginRTASCategory="" aaxIdentifier="com.yourcompany.JaySynth" pluginAAXCategory="AAX_ePlugInCategory_Dynamics" jucerVersion="3.1.0"> - + + + + diff --git a/JuceLibraryCode/AppConfig.h b/JuceLibraryCode/AppConfig.h index 01dff10..2dd4740 100644 --- a/JuceLibraryCode/AppConfig.h +++ b/JuceLibraryCode/AppConfig.h @@ -227,7 +227,7 @@ #define JucePlugin_WantsMidiInput 1 #endif #ifndef JucePlugin_ProducesMidiOutput - #define JucePlugin_ProducesMidiOutput 0 + #define JucePlugin_ProducesMidiOutput 1 #endif #ifndef JucePlugin_SilenceInProducesSilenceOut #define JucePlugin_SilenceInProducesSilenceOut 0 diff --git a/Love_and_Horror_V2.fxb b/Love_and_Horror_V2.fxb index 22df140fd7c6d4021ac3c3f6de72aaeba3b29934..d8dcaa7c8a34fb513b1d8a2e0ec866e24c7a9ae4 100644 GIT binary patch delta 75944 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 D33+-B delta 74359 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
    K=%m8p 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

    e5ZB(~g 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 T3K&6s@{s-ld7u0m=C1oEm(`g! diff --git a/Source/ButtonLED.cpp b/Source/ButtonLED.cpp index 66999b7..cb5107e 100644 --- a/Source/ButtonLED.cpp +++ b/Source/ButtonLED.cpp @@ -30,7 +30,7 @@ //============================================================================== ButtonLED::ButtonLED (const String& name) - : Button (L"Button LED"), + : Button (name), cachedImage_led_23_red_png (0), cachedImage_led_23_red1_png (0), triggeredOnMouseDown(0), @@ -50,7 +50,6 @@ ButtonLED::ButtonLED (const String& name) //[Constructor] You can add your own custom stuff here.. - setName(name); //[/Constructor] } @@ -197,6 +196,18 @@ void ButtonLED::paintButton (Graphics& g, bool /*isMouseOverButton*/, bool /*isB false); } } + +void ButtonLED::flash(uint32_t duration_ms) +{ + setToggleState(true, juce::NotificationType::dontSendNotification); + startTimer((uint32_t)duration_ms); +} + +void ButtonLED::timerCallback() +{ + setToggleState(false, juce::NotificationType::dontSendNotification); +} + //[/MiscUserCode] diff --git a/Source/ButtonLED.h b/Source/ButtonLED.h index 7114852..6f9ebf3 100644 --- a/Source/ButtonLED.h +++ b/Source/ButtonLED.h @@ -36,7 +36,7 @@ Describe your class and how it works here! //[/Comments] */ -class ButtonLED : public Button +class ButtonLED : public Button, public Timer { public: //============================================================================== @@ -48,6 +48,8 @@ public: void paintButton (Graphics& g, bool isMouseOverButton, bool isButtonDown); void clicked(const ModifierKeys &modifiers); void mouseWheelMove(const MouseEvent &event, const MouseWheelDetails &wheel); + void timerCallback(); + void flash(uint32_t duration_ms); void setTriggeredOnMouseDown (bool triggeredOnMouseDown); bool getClickingTogglesState (void); void setClickingTogglesState (bool clickingTogglesState); diff --git a/Source/JK_MidiClock.cpp b/Source/JK_MidiClock.cpp new file mode 100644 index 0000000..12e7df3 --- /dev/null +++ b/Source/JK_MidiClock.cpp @@ -0,0 +1,189 @@ +/* + + //####################################################################################### + //Class to insert Midiclock messages into a given MidiBuffer, suitable for block + //based audio callbacks. The class can act on position jumps e.g. "Loops" by sending a + //positioning message. + //NOTE: No ballistik came in to play so I wouldn't recommend using it to drive a mechanical + //tape deck!!! + // + //solar3d-software, April- 10- 2012 + //####################################################################################### + +*/ +#include "JK_MidiClock.h" + +JK_MidiClock::JK_MidiClock() + :wasPlaying(false), + syncPpqPosition(-999.0), + posChangeThreshold(0.001), + ppqToStartSyncAt(0.0), + followSongPosition(true), + syncFlag(0), + ppqOffset(0) +{ + //Prepare Midi messages to avoid blocking the caller of generateMidiclock()! + continueMessage = new MidiMessage(MidiMessage::midiContinue()); + stopMessage = new MidiMessage(MidiMessage::midiStop()); + clockMessage = new MidiMessage(MidiMessage::midiClock()); + songPositionMessage = new MidiMessage(MidiMessage::songPositionPointer(0)); +} +//================================================================================================= +void JK_MidiClock::generateMidiclock(AudioPlayHead::CurrentPositionInfo &lastPosInfo, + MidiBuffer* midiBuffer, const int bufferSize, const double sampleRate) +{ + //###################################Some explanation about musical tempo ################# + //A Time Signature, is two numbers, one on top of the other. The numerator describes the # + //number of Beats in a Bar, while the denominator describes of what note value a Beat is. # + //So 4/4 would be four quarter-notes per Bar, while 4/2 would be four half-notes per Bar, # + //4/8 would be four eighth-notes per Bar, and 2/4 would be two quarter-notes per Bar. # + //######################################################################################### + + + if (midiBuffer != nullptr) + { + //PPQ value of one sample + const double ppqPerSample = (lastPosInfo.bpm / 60.0) / sampleRate; + + //PPQ offset to compensate Midi interface latency + double hostPpqPosition = lastPosInfo.ppqPosition + ppqOffset * ppqPerSample;; + + if (lastPosInfo.isPlaying || lastPosInfo.isRecording) + { + if (! wasPlaying) + { + //set the point where to start the slave + ppqToStartSyncAt = getNearestSixteenthInPPQ(hostPpqPosition); + + //Special case: Master is set to always start playback from the previous start position... + if (positionJumped(syncPpqPosition, hostPpqPosition, sampleRate, ppqPerSample)) + { + //Cue Midiclock slave to the nearest sixteenth note to new start position + //because the one calculated in stop mode isn't valid anymore. + sendSongPositionPointerMessage(ppqToStartSyncAt, 0, midiBuffer); + } + } + else + { + //Position jump (loop or manually position change while playing) + if (positionJumped(syncPpqPosition, hostPpqPosition, sampleRate, ppqPerSample)) + { + //set the point where to start the slave + ppqToStartSyncAt = getNearestSixteenthInPPQ(hostPpqPosition); + + //User has changed position manually while playing + if (syncFlag == 0) + { + midiBuffer->addEvent(*stopMessage, 0); + sendSongPositionPointerMessage(hostPpqPosition, 0, midiBuffer); + + syncFlag = startSlave_; + } + else + { + if (followSongPosition) + { + sendSongPositionPointerMessage(hostPpqPosition, 0, midiBuffer); + + syncFlag = startSlave_; + } + else + syncFlag = 0; + } + } + } + + for (int posInBuffer = 0; posInBuffer < bufferSize; ++posInBuffer) + { + syncPpqPosition = hostPpqPosition + (posInBuffer * ppqPerSample); + + const int clockDistanceInSamples = roundToInt((60.0 * sampleRate) / (lastPosInfo.bpm * 24.0)); + const int64 hostSamplePos = roundToInt64((hostPpqPosition * (60.0 / lastPosInfo.bpm)) * sampleRate); + const int64 syncSamplePos = hostSamplePos + posInBuffer; + + //Some hosts like Cubase come up with a wacky ppqPosition + //that could break the timing! Best is to "wait" + //here for the right ppqPosition to jump on. + if (syncPpqPosition >= ppqToStartSyncAt) + { + if ((syncFlag & startSlave_) == startSlave_) + { + midiBuffer->addEvent(*continueMessage, posInBuffer); + + syncFlag &= cycleEnd_; + } + + //Cycle mode on + if (lastPosInfo.isLooping && lastPosInfo.ppqLoopStart != lastPosInfo.ppqLoopEnd) + { + const double ppqToCycleEnd = fabs(lastPosInfo.ppqLoopEnd - syncPpqPosition); + const int64 samplesToCycleEnd = roundToInt64(ppqToCycleEnd * (60.0 / lastPosInfo.bpm) * sampleRate); + + if ((syncFlag & cycleEnd_) == 0) + { + if (samplesToCycleEnd <= clockDistanceInSamples) //For fine tuning tweak here + { + //We have reached the cycle- end position + //and must stop the Midiclock slave here + if (followSongPosition) + midiBuffer->addEvent(*stopMessage, posInBuffer); + + syncFlag |= cycleEnd_; + } + } + } + } + + //For best timing we should never interupt Midiclock messages! + //Seems that some slaves constantly adjusting their internal clock + //to Midiclock even if they are in stop mode. + if (syncSamplePos % clockDistanceInSamples == 0) + midiBuffer->addEvent(*clockMessage, posInBuffer); + } + + wasPlaying = true; + } + else + { + //Send positioning message if the user has stopped or if he changed the playhead position + //manually in stop mode! This will also initially cue slave after loading plugin instance. + if (wasPlaying || positionJumped(syncPpqPosition, hostPpqPosition, sampleRate, ppqPerSample)) + { + midiBuffer->addEvent(*stopMessage, 0); + sendSongPositionPointerMessage(hostPpqPosition, 0, midiBuffer); + } + + syncPpqPosition = hostPpqPosition; + + syncFlag = startSlave_; + + wasPlaying = false; + } + } +} +//================================================================================================= +bool JK_MidiClock::positionJumped(const double lastPosInPPQ, const double currentPosInPPQ, + const double sampleRate, const double ppqPerSample) +{ + //This returns true if the user has changed the playhead position manually or if + //a jump has occured! The comperator's default threshold is lastPosInPPQ +- 10ms. + if (currentPosInPPQ < lastPosInPPQ - ((posChangeThreshold * sampleRate) * ppqPerSample) || + currentPosInPPQ > lastPosInPPQ + ((posChangeThreshold * sampleRate) * ppqPerSample)) + return true; + + return false; +} +//================================================================================================= +void JK_MidiClock::sendSongPositionPointerMessage(const double ppqPosition, const int posInBuffer, MidiBuffer* buffer) +{ + //This will cue the slave to the NEAREST + //16th note to the given ppqPosition. + int intBeat = int(ceil(ppqPosition * 4)); + + uint8* pSongPositionTime((uint8*)(songPositionMessage->getRawData())); + + *(pSongPositionTime + 1) = (uint8)(intBeat & 0x7f); + *(pSongPositionTime + 2) = (uint8)((intBeat & 0x3f80)>>7); + + buffer->addEvent(*songPositionMessage, posInBuffer); +} diff --git a/Source/JK_MidiClock.h b/Source/JK_MidiClock.h new file mode 100644 index 0000000..def132f --- /dev/null +++ b/Source/JK_MidiClock.h @@ -0,0 +1,73 @@ +/* + + //####################################################################################### + //Class to insert Midiclock messages into a given MidiBuffer, suitable for block + //based audio callbacks. The class can act on position jumps e.g. "Loops" by sending a + //positioning message. + //NOTE: No ballistik came in to play so I wouldn't recommend using it to drive a mechanical + //tape deck!!! + // + //solar3d-software, April- 10- 2012 + //####################################################################################### + + */ +#ifndef __JK_MIDICLOCK +#define __JK_MIDICLOCK + +#include "../JuceLibraryCode/JuceHeader.h" + +//#include "Includes.h" + +class JK_MidiClock +{ +public: + JK_MidiClock(); + + void setPositionJumpThreshold(const double ms) {posChangeThreshold = ms / 1000.0;} + double getPositionJumpThreshold() {return posChangeThreshold;} + void setFollowSongPosition(const bool shouldFollow) {followSongPosition = shouldFollow;} + bool getFollowSongPosition() {return followSongPosition;} + void setOffset(const int offset) {ppqOffset = offset;} + int getOffset() {return ppqOffset;} + + void generateMidiclock(AudioPlayHead::CurrentPositionInfo &lastPosInfo, + MidiBuffer* midiBuffer, + const int bufferSize, + const double sampleRate); + + //================================================================================================= + juce_UseDebuggingNewOperator + +private: + inline int64 roundToInt64 (const double val) noexcept + { + return (val - floor(val) >= 0.5) ? (int64)(ceil(val)) : (int64)(floor(val)); + } + + + bool wasPlaying; + double syncPpqPosition; + double posChangeThreshold; + double ppqToStartSyncAt; + bool followSongPosition; + uint8 syncFlag; + int ppqOffset; + + static const int cycleEnd_ = 1; + static const int startSlave_ = 2; + + ScopedPointer clockMessage; + ScopedPointer continueMessage; + ScopedPointer stopMessage; + ScopedPointer songPositionMessage; + + void sendSongPositionPointerMessage(const double ppqPosition, const int posInBuffer, MidiBuffer* buffer); + + bool positionJumped(const double lastPosInPPQ, const double currentPosInPPQ, + const double sampleRate, const double ppqPerSample); + + double getNearestSixteenthInPPQ(const double ppqPosition) {return ceil(ppqPosition * 4.0) / 4.0;} + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(JK_MidiClock); +}; +#endif diff --git a/Source/JaySynth.cpp b/Source/JaySynth.cpp index 2a9843e..4dc03db 100644 --- a/Source/JaySynth.cpp +++ b/Source/JaySynth.cpp @@ -113,6 +113,11 @@ JaySynth::JaySynth (int num_voices, String pathToWaves) for (i=0; i < m_num_audiothreads; i++) m_ppAudioThread[i] = new JaySynthThread(&m_pEventAudioThreadRdy[i], m_pVoices, num_voices, i, m_num_audiothreads); + m_clockdiv = 0; + m_lastTime_ms = 0; + m_lastTimeError_ms = 0; + m_estimatedTime_ms = 0; + } JaySynth::~JaySynth() @@ -1047,19 +1052,47 @@ void JaySynth::handleMidiEvent (const MidiMessage& m) } else if (m.isMidiClock()) { - + const double alpha_1 = 1.0; + const double alpha_2 = 1.0/48; + const double currTime_ms = juce::Time::getMillisecondCounterHiRes(); + + double deltaTime_ms = currTime_ms - m_lastTime_ms; + + if (m_lastTime_ms) + { + double timeError_ms = deltaTime_ms - m_estimatedTime_ms; + m_lastTimeError_ms = (1-alpha_1)*m_lastTimeError_ms + alpha_1*timeError_ms; + + if (std::abs(timeError_ms) > 5.0) + { + m_estimatedTime_ms = deltaTime_ms; + } + else + { + m_estimatedTime_ms = m_estimatedTime_ms + alpha_2*(m_lastTimeError_ms); + } + } + m_lastTime_ms = currTime_ms; + if (!m_clockdiv) + { + uint32_t dT = (uint32_t)(24*m_estimatedTime_ms + 0.5); + listeners.call (&JaySynthListener::synthChanged, SYNTH_CHANGED_MIDICLOCK, &dT); + m_clockdiv = 24; + } + m_clockdiv--; } else if (m.isSongPositionPointer()) { - + SynthDebug("SongPositionPointer\n"); + m_clockdiv = (6 * m.getSongPositionPointerMidiBeat()) % 24; } else if (m.isQuarterFrame()) { - + SynthDebug("QuarterFrame\n"); } else if (m.isFullFrame()) { - + SynthDebug("FullFrame\n"); } else { diff --git a/Source/JaySynth.h b/Source/JaySynth.h index 9434b7a..bc13f00 100644 --- a/Source/JaySynth.h +++ b/Source/JaySynth.h @@ -37,8 +37,8 @@ private: int m_num_voices; int m_voice_offset, m_voice_step; int m_sample_len; - WaitableEvent *m_pEventRun; - WaitableEvent *m_pEventRdy; + ScopedPointer m_pEventRun; + ScopedPointer m_pEventRdy; }; @@ -158,6 +158,7 @@ public: SYNTH_CHANGED_NUM_VOICES_PLAYING, SYNTH_CHANGED_NOTE_PRESSED, SYNTH_CHANGED_NOTE_RELEASED, + SYNTH_CHANGED_MIDICLOCK, SYNTH_CHANGED_SIZE }; @@ -246,6 +247,11 @@ private: JaySynthThread **m_ppAudioThread; ScopedPointer m_pEventAudioThreadRdy; JaySynthMonophonicMGR m_monoMGR; + uint32_t m_clockdiv; + double m_lastTime_ms; + double m_lastTimeError_ms; + double m_estimatedTime_ms; + }; diff --git a/Source/JaySynthAudioProcessorEditor.cpp b/Source/JaySynthAudioProcessorEditor.cpp index 4788d2c..860fb15 100644 --- a/Source/JaySynthAudioProcessorEditor.cpp +++ b/Source/JaySynthAudioProcessorEditor.cpp @@ -1,20 +1,18 @@ /* ============================================================================== - This is an automatically generated file created by the Jucer! - - Creation date: 31 Mar 2014 12:38:24pm + This is an automatically generated GUI class created by the Introjucer! Be careful when adding custom code to these files, as only the code within the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded and re-saved. - Jucer version: 1.12 + Created with Introjucer version: 3.1.0 ------------------------------------------------------------------------------ - The Jucer is part of the JUCE library - "Jules' Utility Class Extensions" - Copyright 2004-6 by Raw Material Software ltd. + The Introjucer is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-13 by Raw Material Software Ltd. ============================================================================== */ @@ -30,227 +28,19 @@ //============================================================================== JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcessor* ownerFilter, bool has_wt) - : AudioProcessorEditor (ownerFilter), - m_label_colon (0), - m_slider_master_volume (0), - m_slider_vcf_f (0), - m_slider_vcf_q (0), - m_slider_osc0_det (0), - m_slider_osc1_det (0), - m_slider_osc0_transpose (0), - m_slider_osc1_transpose (0), - m_slider_vca_env_attack (0), - m_slider_vca_env_decay (0), - m_slider_vca_env_release (0), - m_slider_vca_env_sustain (0), - m_slider_vcf_env_attack (0), - m_slider_vcf_env_decay (0), - m_slider_vcf_env_release (0), - m_slider_vcf_env_sustain (0), - m_slider_vcf_env_amount (0), - m_label_vcf_env_attack (0), - m_label_vcf_f (0), - m_label_vca_env_attack (0), - m_label_vca_env_decay (0), - m_label_vca_env_sustain (0), - m_label_vca_env_release (0), - m_label_vcf_env_decay (0), - m_label_vcf_env_sustain (0), - m_label_vcf_env_release (0), - m_label_vcf_q (0), - m_label_vcf_env_amount (0), - m_label_master_volume (0), - m_label_osc0_transpose (0), - m_label_osc1_transpose (0), - m_label_osc0_det (0), - m_label_osc1_det (0), - m_slider_vca_env_amount (0), - m_label_vca_env_amount (0), - m_slider_osc0_dutycycle (0), - m_slider_osc1_dutycycle (0), - m_label_osc0_dutycycle (0), - m_label_osc1_dutycycle (0), - m_slider_lfo0_speed (0), - m_slider_osc1_fm_amt0 (0), - m_slider_osc0_fm_amt0 (0), - m_label_lfo0_speed (0), - m_label_osc0_fm_amt0 (0), - m_label_osc1_fm_amt0 (0), - m_slider_vcf_f_amt0 (0), - m_label_vcf_f_amt0 (0), - m_slider_lfo1_speed (0), - m_label_lfo1_speed (0), - m_comboBox_osc0_shape (0), - m_comboBox_osc1_shape (0), - m_comboBox_lfo0_shape (0), - m_comboBox_lfo1_shape (0), - m_slider_lfo2_speed (0), - m_slider_lfo3_speed (0), - m_comboBox_lfo2_shape (0), - m_comboBox_lfo3_shape (0), - m_label_lfo2_speed (0), - m_label_lfo3_speed (0), - m_comboBox_vcf_f_src0 (0), - m_comboBox_osc0_fm_src0 (0), - m_comboBox_osc1_fm_src0 (0), - m_slider_vca_am_amt0 (0), - m_label_vca_am_amt0 (0), - m_comboBox_vca_am_src0 (0), - m_slider_vca_pan_amt0 (0), - m_label_vca_pan_amt0 (0), - m_comboBox_vca_pan_src0 (0), - m_label_synth_name (0), - m_label_synth_version (0), - m_comboBox_vcf_type (0), - m_slider_lfo1_smooth (0), - m_label_lfo1_smooth (0), - m_slider_lfo0_smooth (0), - m_label_lfo0_smooth (0), - m_slider_lfo2_smooth (0), - m_label_lfo2_smooth (0), - m_slider_lfo3_smooth (0), - m_label_lfo3_smooth (0), - m_slider_osc0_pwm_amt0 (0), - m_label_osc0_pwm_amt0 (0), - m_slider_osc1_pwm_amt0 (0), - m_label_osc1_pwm_amt0 (0), - m_comboBox_osc0_pwm_src0 (0), - m_comboBox_osc1_pwm_src0 (0), - m_slider_osc0_level (0), - m_label_osc0_level (0), - m_slider_osc1_level (0), - m_label_osc1_level (0), - m_slider_noise_level (0), - m_label_noise_level (0), - m_comboBox_noise_shape (0), - m_btn_noise_enable_led (0), - m_btn_osc0_enable (0), - m_btn_osc1_enable (0), - m_label_patch_name (0), - m_button_patch_incr (0), - m_button_patch_decr (0), - m_label_patch_number (0), - m_label_osc1_pb_min (0), - m_label_osc1_pb_max (0), - m_label_osc0_pb_max (0), - m_label_osc0_pb_min (0), - m_slider_master_tune (0), - m_label_master_tune (0), - m_button_humanize_enable (0), - m_comboBox_vcf_order (0), - m_slider_portamento_time (0), - m_label_portamento_time (0), - m_button_unisono_enable (0), - m_slider_humanize_var_vco (0), - m_slider_voice_pan_spread (0), - m_label_voice_pan_spread (0), - m_slider_humanize_var_vcf (0), - m_slider_humanize_var_env (0), - m_label_unisono_num_voices (0), - m_button_osc0_restart_enable (0), - m_button_osc1_restart_enable (0), - m_button_mono_enable (0), - m_comboBox_osc1_fm_src1 (0), - m_comboBox_osc1_pwm_src1 (0), - m_comboBox_osc0_fm_src1 (0), - m_comboBox_osc0_pwm_src1 (0), - m_comboBox_osc1_am_src0 (0), - m_comboBox_osc1_am_src1 (0), - m_slider_osc1_am_amt0 (0), - m_label_osc1_am_amt0 (0), - m_comboBox_osc0_am_src0 (0), - m_comboBox_osc0_am_src1 (0), - m_slider_osc0_am_amt0 (0), - m_label_osc0_am_amt0 (0), - m_slider_env2_attack (0), - m_slider_env2_decay (0), - m_slider_env2_release (0), - m_slider_env2_sustain (0), - m_label_env2_attack (0), - m_label_env2_decay (0), - m_label_env2_sustain (0), - m_label_env2_release (0), - m_slider_env3_attack (0), - m_slider_env3_decay (0), - m_slider_env3_release (0), - m_slider_env3_sustain (0), - m_label_env3_attack (0), - m_label_env3_decay (0), - m_label_env3_sustain (0), - m_label_env3_release (0), - m_comboBox_vcf_f_src1 (0), - m_slider_vcf_q_amt0 (0), - m_label_vcf_q_amt0 (0), - m_comboBox_vcf_q_src0 (0), - m_comboBox_vcf_q_src1 (0), - m_label_humanize_var_vco (0), - m_label_humanize_var_vcf (0), - m_label_humanize_var_env (0), - m_btn_limiter_led (0), - m_label_limiter_led (0), - m_slider_lfo0_delay (0), - m_label_lfo0_delay (0), - m_slider_lfo0_attack (0), - m_label_lfo0_attack (0), - m_slider_lfo1_delay (0), - m_label_lfo1_delay (0), - m_slider_lfo1_attack (0), - m_label_lfo1_attack (0), - m_slider_lfo2_delay (0), - m_label_lfo2_delay (0), - m_slider_lfo2_attack (0), - m_label_lfo2_attack (0), - m_slider_lfo3_delay (0), - m_label_lfo3_delay (0), - m_slider_lfo3_attack (0), - m_label_lfo3_attack (0), - m_button_lfo0_restart_enable (0), - m_button_lfo0_individual_enable (0), - m_slider_lfo0_symmetry (0), - m_label_lfo0_symmetry (0), - m_slider_lfo1_symmetry (0), - m_label_lfo1_symmetry (0), - m_button_lfo1_restart_enable (0), - m_button_lfo1_individual_enable (0), - m_button_lfo2_restart_enable (0), - m_button_lfo2_individual_enable (0), - m_slider_lfo2_symmetry (0), - m_label_lfo2_symmetry (0), - m_slider_lfo3_symmetry (0), - m_label_lfo3_symmetry (0), - m_button_lfo3_restart_enable (0), - m_button_lfo3_individual_enable (0), - m_slider_osc0_fm_amt1 (0), - m_label_osc0_fm_amt1 (0), - m_slider_osc0_pwm_amt1 (0), - m_label_osc0_pwm_amt1 (0), - m_slider_osc0_am_amt1 (0), - m_label_osc0_am_amt1 (0), - m_slider_osc1_fm_amt1 (0), - m_label_osc1_fm_amt1 (0), - m_slider_osc1_pwm_amt1 (0), - m_label_osc1_pwm_amt1 (0), - m_slider_osc1_am_amt1 (0), - m_label_osc1_am_amt1 (0), - m_slider_vcf_f_amt1 (0), - m_label_vcf_f_amt1 (0), - m_slider_vcf_q_amt1 (0), - m_label_vcf_q_amt1 (0), - m_button_mono_retrigger (0), - m_label_max_num_voices (0), - m_label_num_voices_playing (0) + : AudioProcessorEditor (ownerFilter) { - addAndMakeVisible (m_label_colon = new Label (L"Colon", - L":")); - m_label_colon->setFont (Font (L"Times New Roman", 20.0000f, Font::plain)); + addAndMakeVisible (m_label_colon = new Label ("Colon", + TRANS(":"))); + m_label_colon->setFont (Font ("Times New Roman", 20.00f, Font::plain)); m_label_colon->setJustificationType (Justification::centredLeft); m_label_colon->setEditable (false, false, false); m_label_colon->setColour (Label::textColourId, Colours::white); m_label_colon->setColour (TextEditor::textColourId, Colours::black); - m_label_colon->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_colon->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); - addAndMakeVisible (m_slider_master_volume = new Slider (L"Master volume")); - m_slider_master_volume->setTooltip (L"Master volume [%]"); + addAndMakeVisible (m_slider_master_volume = new Slider ("Master volume")); + m_slider_master_volume->setTooltip (TRANS("Master volume [%]")); m_slider_master_volume->setRange (0, 1, 0); m_slider_master_volume->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_master_volume->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -258,8 +48,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_master_volume->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_master_volume->addListener (this); - addAndMakeVisible (m_slider_vcf_f = new Slider (L"VCF Cutoff")); - m_slider_vcf_f->setTooltip (L"VCF Cutoff [Hz]"); + addAndMakeVisible (m_slider_vcf_f = new Slider ("VCF Cutoff")); + m_slider_vcf_f->setTooltip (TRANS("VCF Cutoff [Hz]")); m_slider_vcf_f->setRange (0, 1, 0); m_slider_vcf_f->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_vcf_f->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -267,8 +57,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_vcf_f->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_vcf_f->addListener (this); - addAndMakeVisible (m_slider_vcf_q = new Slider (L"VCF Resonance")); - m_slider_vcf_q->setTooltip (L"VCF Resonance. Value = 1.0 means no resonance"); + addAndMakeVisible (m_slider_vcf_q = new Slider ("VCF Resonance")); + m_slider_vcf_q->setTooltip (TRANS("VCF Resonance. Value = 1.0 means no resonance")); m_slider_vcf_q->setRange (0, 1, 0); m_slider_vcf_q->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_vcf_q->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -276,8 +66,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_vcf_q->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_vcf_q->addListener (this); - addAndMakeVisible (m_slider_osc0_det = new Slider (L"OSC 1 Detune")); - m_slider_osc0_det->setTooltip (L"OSC 1 Detune [cent]"); + addAndMakeVisible (m_slider_osc0_det = new Slider ("OSC 1 Detune")); + m_slider_osc0_det->setTooltip (TRANS("OSC 1 Detune [cent]")); m_slider_osc0_det->setRange (0, 1, 0); m_slider_osc0_det->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_osc0_det->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -285,8 +75,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_osc0_det->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_osc0_det->addListener (this); - addAndMakeVisible (m_slider_osc1_det = new Slider (L"OSC 2 Detune")); - m_slider_osc1_det->setTooltip (L"OSC 2 Detune [cent]"); + addAndMakeVisible (m_slider_osc1_det = new Slider ("OSC 2 Detune")); + m_slider_osc1_det->setTooltip (TRANS("OSC 2 Detune [cent]")); m_slider_osc1_det->setRange (0, 1, 0); m_slider_osc1_det->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_osc1_det->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -294,8 +84,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_osc1_det->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_osc1_det->addListener (this); - addAndMakeVisible (m_slider_osc0_transpose = new Slider (L"OSC 1 Transpose")); - m_slider_osc0_transpose->setTooltip (L"OSC 1 Transpose [semitones]"); + addAndMakeVisible (m_slider_osc0_transpose = new Slider ("OSC 1 Transpose")); + m_slider_osc0_transpose->setTooltip (TRANS("OSC 1 Transpose [semitones]")); m_slider_osc0_transpose->setRange (0, 1, 0); m_slider_osc0_transpose->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_osc0_transpose->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -304,8 +94,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_osc0_transpose->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_osc0_transpose->addListener (this); - addAndMakeVisible (m_slider_osc1_transpose = new Slider (L"OSC 2 Transpose")); - m_slider_osc1_transpose->setTooltip (L"OSC 2 Transpose [semitones]"); + addAndMakeVisible (m_slider_osc1_transpose = new Slider ("OSC 2 Transpose")); + m_slider_osc1_transpose->setTooltip (TRANS("OSC 2 Transpose [semitones]")); m_slider_osc1_transpose->setRange (0, 1, 0); m_slider_osc1_transpose->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_osc1_transpose->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -313,8 +103,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_osc1_transpose->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_osc1_transpose->addListener (this); - addAndMakeVisible (m_slider_vca_env_attack = new Slider (L"VCA Attack")); - m_slider_vca_env_attack->setTooltip (L"VCA Attack Time [ms]"); + addAndMakeVisible (m_slider_vca_env_attack = new Slider ("VCA Attack")); + m_slider_vca_env_attack->setTooltip (TRANS("VCA Attack Time [ms]")); m_slider_vca_env_attack->setRange (0, 1, 0); m_slider_vca_env_attack->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_vca_env_attack->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -322,8 +112,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_vca_env_attack->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_vca_env_attack->addListener (this); - addAndMakeVisible (m_slider_vca_env_decay = new Slider (L"VCA Decay")); - m_slider_vca_env_decay->setTooltip (L"VCA Decay Time [ms]"); + addAndMakeVisible (m_slider_vca_env_decay = new Slider ("VCA Decay")); + m_slider_vca_env_decay->setTooltip (TRANS("VCA Decay Time [ms]")); m_slider_vca_env_decay->setRange (0, 1, 0); m_slider_vca_env_decay->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_vca_env_decay->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -332,8 +122,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_vca_env_decay->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_vca_env_decay->addListener (this); - addAndMakeVisible (m_slider_vca_env_release = new Slider (L"VCA Release")); - m_slider_vca_env_release->setTooltip (L"VCA Release Time [ms]"); + addAndMakeVisible (m_slider_vca_env_release = new Slider ("VCA Release")); + m_slider_vca_env_release->setTooltip (TRANS("VCA Release Time [ms]")); m_slider_vca_env_release->setRange (0, 1, 0); m_slider_vca_env_release->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_vca_env_release->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -341,8 +131,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_vca_env_release->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_vca_env_release->addListener (this); - addAndMakeVisible (m_slider_vca_env_sustain = new Slider (L"VCA Sustain")); - m_slider_vca_env_sustain->setTooltip (L"VCA Sustain Level [%]"); + addAndMakeVisible (m_slider_vca_env_sustain = new Slider ("VCA Sustain")); + m_slider_vca_env_sustain->setTooltip (TRANS("VCA Sustain Level [%]")); m_slider_vca_env_sustain->setRange (0, 1, 0); m_slider_vca_env_sustain->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_vca_env_sustain->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -350,8 +140,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_vca_env_sustain->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_vca_env_sustain->addListener (this); - addAndMakeVisible (m_slider_vcf_env_attack = new Slider (L"VCF Attack")); - m_slider_vcf_env_attack->setTooltip (L"VCF Attack Time [ms]"); + addAndMakeVisible (m_slider_vcf_env_attack = new Slider ("VCF Attack")); + m_slider_vcf_env_attack->setTooltip (TRANS("VCF Attack Time [ms]")); m_slider_vcf_env_attack->setRange (0, 1, 0); m_slider_vcf_env_attack->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_vcf_env_attack->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -359,8 +149,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_vcf_env_attack->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_vcf_env_attack->addListener (this); - addAndMakeVisible (m_slider_vcf_env_decay = new Slider (L"VCF Decay")); - m_slider_vcf_env_decay->setTooltip (L"VCF Decay Time [ms]"); + addAndMakeVisible (m_slider_vcf_env_decay = new Slider ("VCF Decay")); + m_slider_vcf_env_decay->setTooltip (TRANS("VCF Decay Time [ms]")); m_slider_vcf_env_decay->setRange (0, 1, 0); m_slider_vcf_env_decay->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_vcf_env_decay->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -368,8 +158,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_vcf_env_decay->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_vcf_env_decay->addListener (this); - addAndMakeVisible (m_slider_vcf_env_release = new Slider (L"VCF Release")); - m_slider_vcf_env_release->setTooltip (L"VCF Release Time [ms]"); + addAndMakeVisible (m_slider_vcf_env_release = new Slider ("VCF Release")); + m_slider_vcf_env_release->setTooltip (TRANS("VCF Release Time [ms]")); m_slider_vcf_env_release->setRange (0, 1, 0); m_slider_vcf_env_release->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_vcf_env_release->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -377,8 +167,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_vcf_env_release->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_vcf_env_release->addListener (this); - addAndMakeVisible (m_slider_vcf_env_sustain = new Slider (L"VCF Sustain")); - m_slider_vcf_env_sustain->setTooltip (L"VCF Sustain Level [%]"); + addAndMakeVisible (m_slider_vcf_env_sustain = new Slider ("VCF Sustain")); + m_slider_vcf_env_sustain->setTooltip (TRANS("VCF Sustain Level [%]")); m_slider_vcf_env_sustain->setRange (0, 1, 0); m_slider_vcf_env_sustain->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_vcf_env_sustain->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -386,8 +176,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_vcf_env_sustain->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_vcf_env_sustain->addListener (this); - addAndMakeVisible (m_slider_vcf_env_amount = new Slider (L"VCF ENV Amount")); - m_slider_vcf_env_amount->setTooltip (L"VCF Envelope Amount [%]"); + addAndMakeVisible (m_slider_vcf_env_amount = new Slider ("VCF ENV Amount")); + m_slider_vcf_env_amount->setTooltip (TRANS("VCF Envelope Amount [%]")); m_slider_vcf_env_amount->setRange (0, 1, 0); m_slider_vcf_env_amount->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_vcf_env_amount->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -395,152 +185,152 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_vcf_env_amount->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_vcf_env_amount->addListener (this); - addAndMakeVisible (m_label_vcf_env_attack = new Label (L"VCF Attack", - L"value")); - m_label_vcf_env_attack->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_vcf_env_attack = new Label ("VCF Attack", + TRANS("value"))); + m_label_vcf_env_attack->setFont (Font (14.00f, Font::plain)); m_label_vcf_env_attack->setJustificationType (Justification::centred); m_label_vcf_env_attack->setEditable (true, true, false); m_label_vcf_env_attack->setColour (TextEditor::textColourId, Colours::black); - m_label_vcf_env_attack->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_vcf_env_attack->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_vcf_env_attack->addListener (this); - addAndMakeVisible (m_label_vcf_f = new Label (L"VCF Cutoff", - L"value")); - m_label_vcf_f->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_vcf_f = new Label ("VCF Cutoff", + TRANS("value"))); + m_label_vcf_f->setFont (Font (14.00f, Font::plain)); m_label_vcf_f->setJustificationType (Justification::centred); m_label_vcf_f->setEditable (true, true, false); m_label_vcf_f->setColour (TextEditor::textColourId, Colours::black); - m_label_vcf_f->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_vcf_f->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_vcf_f->addListener (this); - addAndMakeVisible (m_label_vca_env_attack = new Label (L"VCA Attack", - L"value")); - m_label_vca_env_attack->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_vca_env_attack = new Label ("VCA Attack", + TRANS("value"))); + m_label_vca_env_attack->setFont (Font (14.00f, Font::plain)); m_label_vca_env_attack->setJustificationType (Justification::centred); m_label_vca_env_attack->setEditable (true, true, false); m_label_vca_env_attack->setColour (TextEditor::textColourId, Colours::black); - m_label_vca_env_attack->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_vca_env_attack->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_vca_env_attack->addListener (this); - addAndMakeVisible (m_label_vca_env_decay = new Label (L"VCA Decay", - L"value")); - m_label_vca_env_decay->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_vca_env_decay = new Label ("VCA Decay", + TRANS("value"))); + m_label_vca_env_decay->setFont (Font (14.00f, Font::plain)); m_label_vca_env_decay->setJustificationType (Justification::centred); m_label_vca_env_decay->setEditable (true, true, false); m_label_vca_env_decay->setColour (TextEditor::textColourId, Colours::black); - m_label_vca_env_decay->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_vca_env_decay->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_vca_env_decay->addListener (this); - addAndMakeVisible (m_label_vca_env_sustain = new Label (L"VCA Sustain", - L"value")); - m_label_vca_env_sustain->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_vca_env_sustain = new Label ("VCA Sustain", + TRANS("value"))); + m_label_vca_env_sustain->setFont (Font (14.00f, Font::plain)); m_label_vca_env_sustain->setJustificationType (Justification::centred); m_label_vca_env_sustain->setEditable (true, true, false); m_label_vca_env_sustain->setColour (TextEditor::textColourId, Colours::black); - m_label_vca_env_sustain->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_vca_env_sustain->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_vca_env_sustain->addListener (this); - addAndMakeVisible (m_label_vca_env_release = new Label (L"VCA Release", - L"value")); - m_label_vca_env_release->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_vca_env_release = new Label ("VCA Release", + TRANS("value"))); + m_label_vca_env_release->setFont (Font (14.00f, Font::plain)); m_label_vca_env_release->setJustificationType (Justification::centred); m_label_vca_env_release->setEditable (true, true, false); m_label_vca_env_release->setColour (TextEditor::textColourId, Colours::black); - m_label_vca_env_release->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_vca_env_release->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_vca_env_release->addListener (this); - addAndMakeVisible (m_label_vcf_env_decay = new Label (L"VCF Decay", - L"value")); - m_label_vcf_env_decay->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_vcf_env_decay = new Label ("VCF Decay", + TRANS("value"))); + m_label_vcf_env_decay->setFont (Font (14.00f, Font::plain)); m_label_vcf_env_decay->setJustificationType (Justification::centred); m_label_vcf_env_decay->setEditable (true, true, false); m_label_vcf_env_decay->setColour (TextEditor::textColourId, Colours::black); - m_label_vcf_env_decay->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_vcf_env_decay->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_vcf_env_decay->addListener (this); - addAndMakeVisible (m_label_vcf_env_sustain = new Label (L"VCF Sustain", - L"value")); - m_label_vcf_env_sustain->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_vcf_env_sustain = new Label ("VCF Sustain", + TRANS("value"))); + m_label_vcf_env_sustain->setFont (Font (14.00f, Font::plain)); m_label_vcf_env_sustain->setJustificationType (Justification::centred); m_label_vcf_env_sustain->setEditable (true, true, false); m_label_vcf_env_sustain->setColour (TextEditor::textColourId, Colours::black); - m_label_vcf_env_sustain->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_vcf_env_sustain->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_vcf_env_sustain->addListener (this); - addAndMakeVisible (m_label_vcf_env_release = new Label (L"VCF Release", - L"value")); - m_label_vcf_env_release->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_vcf_env_release = new Label ("VCF Release", + TRANS("value"))); + m_label_vcf_env_release->setFont (Font (14.00f, Font::plain)); m_label_vcf_env_release->setJustificationType (Justification::centred); m_label_vcf_env_release->setEditable (true, true, false); m_label_vcf_env_release->setColour (TextEditor::textColourId, Colours::black); - m_label_vcf_env_release->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_vcf_env_release->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_vcf_env_release->addListener (this); - addAndMakeVisible (m_label_vcf_q = new Label (L"VCF Resonance", - L"value")); - m_label_vcf_q->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_vcf_q = new Label ("VCF Resonance", + TRANS("value"))); + m_label_vcf_q->setFont (Font (14.00f, Font::plain)); m_label_vcf_q->setJustificationType (Justification::centred); m_label_vcf_q->setEditable (true, true, false); m_label_vcf_q->setColour (TextEditor::textColourId, Colours::black); - m_label_vcf_q->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_vcf_q->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_vcf_q->addListener (this); - addAndMakeVisible (m_label_vcf_env_amount = new Label (L"VCF ENV Amount", - L"value")); - m_label_vcf_env_amount->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_vcf_env_amount = new Label ("VCF ENV Amount", + TRANS("value"))); + m_label_vcf_env_amount->setFont (Font (14.00f, Font::plain)); m_label_vcf_env_amount->setJustificationType (Justification::centred); m_label_vcf_env_amount->setEditable (true, true, false); m_label_vcf_env_amount->setColour (TextEditor::textColourId, Colours::black); - m_label_vcf_env_amount->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_vcf_env_amount->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_vcf_env_amount->addListener (this); - addAndMakeVisible (m_label_master_volume = new Label (L"Master volume", - L"value")); - m_label_master_volume->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_master_volume = new Label ("Master volume", + TRANS("value"))); + m_label_master_volume->setFont (Font (14.00f, Font::plain)); m_label_master_volume->setJustificationType (Justification::centred); m_label_master_volume->setEditable (true, true, false); m_label_master_volume->setColour (TextEditor::textColourId, Colours::black); - m_label_master_volume->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_master_volume->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_master_volume->addListener (this); - addAndMakeVisible (m_label_osc0_transpose = new Label (L"OSC 1 Transpose", - L"value")); - m_label_osc0_transpose->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_osc0_transpose = new Label ("OSC 1 Transpose", + TRANS("value"))); + m_label_osc0_transpose->setFont (Font (14.00f, Font::plain)); m_label_osc0_transpose->setJustificationType (Justification::centred); m_label_osc0_transpose->setEditable (true, true, false); m_label_osc0_transpose->setColour (TextEditor::textColourId, Colours::black); - m_label_osc0_transpose->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc0_transpose->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc0_transpose->addListener (this); - addAndMakeVisible (m_label_osc1_transpose = new Label (L"OSC 2 Transpose", - L"value")); - m_label_osc1_transpose->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_osc1_transpose = new Label ("OSC 2 Transpose", + TRANS("value"))); + m_label_osc1_transpose->setFont (Font (14.00f, Font::plain)); m_label_osc1_transpose->setJustificationType (Justification::centred); m_label_osc1_transpose->setEditable (true, true, false); m_label_osc1_transpose->setColour (TextEditor::textColourId, Colours::black); - m_label_osc1_transpose->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc1_transpose->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc1_transpose->addListener (this); - addAndMakeVisible (m_label_osc0_det = new Label (L"OSC 1 Detune", - L"value")); - m_label_osc0_det->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_osc0_det = new Label ("OSC 1 Detune", + TRANS("value"))); + m_label_osc0_det->setFont (Font (14.00f, Font::plain)); m_label_osc0_det->setJustificationType (Justification::centred); m_label_osc0_det->setEditable (true, true, false); m_label_osc0_det->setColour (TextEditor::textColourId, Colours::black); - m_label_osc0_det->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc0_det->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc0_det->addListener (this); - addAndMakeVisible (m_label_osc1_det = new Label (L"OSC 2 Detune", - L"value")); - m_label_osc1_det->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_osc1_det = new Label ("OSC 2 Detune", + TRANS("value"))); + m_label_osc1_det->setFont (Font (14.00f, Font::plain)); m_label_osc1_det->setJustificationType (Justification::centred); m_label_osc1_det->setEditable (true, true, false); m_label_osc1_det->setColour (TextEditor::textColourId, Colours::black); - m_label_osc1_det->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc1_det->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc1_det->addListener (this); - addAndMakeVisible (m_slider_vca_env_amount = new Slider (L"VCA ENV Amount")); - m_slider_vca_env_amount->setTooltip (L"VCA Envelope Amount [%]"); + addAndMakeVisible (m_slider_vca_env_amount = new Slider ("VCA ENV Amount")); + m_slider_vca_env_amount->setTooltip (TRANS("VCA Envelope Amount [%]")); m_slider_vca_env_amount->setRange (0, 1, 0); m_slider_vca_env_amount->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_vca_env_amount->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -548,17 +338,17 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_vca_env_amount->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_vca_env_amount->addListener (this); - addAndMakeVisible (m_label_vca_env_amount = new Label (L"VCA ENV Amount", - L"value")); - m_label_vca_env_amount->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_vca_env_amount = new Label ("VCA ENV Amount", + TRANS("value"))); + m_label_vca_env_amount->setFont (Font (14.00f, Font::plain)); m_label_vca_env_amount->setJustificationType (Justification::centred); m_label_vca_env_amount->setEditable (true, true, false); m_label_vca_env_amount->setColour (TextEditor::textColourId, Colours::black); - m_label_vca_env_amount->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_vca_env_amount->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_vca_env_amount->addListener (this); - addAndMakeVisible (m_slider_osc0_dutycycle = new Slider (L"OSC 1 pulse width")); - m_slider_osc0_dutycycle->setTooltip (L"OSC 1 pulse width [%]"); + addAndMakeVisible (m_slider_osc0_dutycycle = new Slider ("OSC 1 pulse width")); + m_slider_osc0_dutycycle->setTooltip (TRANS("OSC 1 pulse width [%]")); m_slider_osc0_dutycycle->setRange (0, 1, 0); m_slider_osc0_dutycycle->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_osc0_dutycycle->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -566,8 +356,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_osc0_dutycycle->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_osc0_dutycycle->addListener (this); - addAndMakeVisible (m_slider_osc1_dutycycle = new Slider (L"OSC 2 pulse width")); - m_slider_osc1_dutycycle->setTooltip (L"OSC 2 pulse width [%]"); + addAndMakeVisible (m_slider_osc1_dutycycle = new Slider ("OSC 2 pulse width")); + m_slider_osc1_dutycycle->setTooltip (TRANS("OSC 2 pulse width [%]")); m_slider_osc1_dutycycle->setRange (0, 1, 0); m_slider_osc1_dutycycle->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_osc1_dutycycle->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -575,26 +365,26 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_osc1_dutycycle->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_osc1_dutycycle->addListener (this); - addAndMakeVisible (m_label_osc0_dutycycle = new Label (L"OSC 1 pulse width", - L"value")); - m_label_osc0_dutycycle->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_osc0_dutycycle = new Label ("OSC 1 pulse width", + TRANS("value"))); + m_label_osc0_dutycycle->setFont (Font (14.00f, Font::plain)); m_label_osc0_dutycycle->setJustificationType (Justification::centred); m_label_osc0_dutycycle->setEditable (true, true, false); m_label_osc0_dutycycle->setColour (TextEditor::textColourId, Colours::black); - m_label_osc0_dutycycle->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc0_dutycycle->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc0_dutycycle->addListener (this); - addAndMakeVisible (m_label_osc1_dutycycle = new Label (L"OSC 2 pulse width", - L"value")); - m_label_osc1_dutycycle->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_osc1_dutycycle = new Label ("OSC 2 pulse width", + TRANS("value"))); + m_label_osc1_dutycycle->setFont (Font (14.00f, Font::plain)); m_label_osc1_dutycycle->setJustificationType (Justification::centred); m_label_osc1_dutycycle->setEditable (true, true, false); m_label_osc1_dutycycle->setColour (TextEditor::textColourId, Colours::black); - m_label_osc1_dutycycle->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc1_dutycycle->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc1_dutycycle->addListener (this); - addAndMakeVisible (m_slider_lfo0_speed = new Slider (L"LFO 1 speed")); - m_slider_lfo0_speed->setTooltip (L"LFO 1 speed [Hz]"); + addAndMakeVisible (m_slider_lfo0_speed = new Slider ("LFO 1 speed")); + m_slider_lfo0_speed->setTooltip (TRANS("LFO 1 speed [Hz]")); m_slider_lfo0_speed->setRange (0, 1, 0); m_slider_lfo0_speed->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_lfo0_speed->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -602,8 +392,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_lfo0_speed->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_lfo0_speed->addListener (this); - addAndMakeVisible (m_slider_osc1_fm_amt0 = new Slider (L"OSC 2 FM amount 1")); - m_slider_osc1_fm_amt0->setTooltip (L"OSC 2 FM amount [semitones]"); + addAndMakeVisible (m_slider_osc1_fm_amt0 = new Slider ("OSC 2 FM amount 1")); + m_slider_osc1_fm_amt0->setTooltip (TRANS("OSC 2 FM amount [semitones]")); m_slider_osc1_fm_amt0->setRange (0, 1, 0); m_slider_osc1_fm_amt0->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_osc1_fm_amt0->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -611,8 +401,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_osc1_fm_amt0->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_osc1_fm_amt0->addListener (this); - addAndMakeVisible (m_slider_osc0_fm_amt0 = new Slider (L"OSC 1 FM amount 1")); - m_slider_osc0_fm_amt0->setTooltip (L"OSC 1 FM amount [semitones]"); + addAndMakeVisible (m_slider_osc0_fm_amt0 = new Slider ("OSC 1 FM amount 1")); + m_slider_osc0_fm_amt0->setTooltip (TRANS("OSC 1 FM amount [semitones]")); m_slider_osc0_fm_amt0->setRange (0, 1, 0); m_slider_osc0_fm_amt0->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_osc0_fm_amt0->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -620,37 +410,37 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_osc0_fm_amt0->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_osc0_fm_amt0->addListener (this); - addAndMakeVisible (m_label_lfo0_speed = new Label (L"LFO 1 speed", - L"value")); - m_label_lfo0_speed->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_lfo0_speed = new Label ("LFO 1 speed", + TRANS("value"))); + m_label_lfo0_speed->setFont (Font (14.00f, Font::plain)); m_label_lfo0_speed->setJustificationType (Justification::centred); m_label_lfo0_speed->setEditable (true, true, false); - m_label_lfo0_speed->setColour (Label::outlineColourId, Colour (0x0)); + m_label_lfo0_speed->setColour (Label::outlineColourId, Colour (0x00000000)); m_label_lfo0_speed->setColour (TextEditor::textColourId, Colours::azure); - m_label_lfo0_speed->setColour (TextEditor::backgroundColourId, Colour (0x0)); - m_label_lfo0_speed->setColour (TextEditor::highlightColourId, Colour (0xf7f7f7)); + m_label_lfo0_speed->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); + m_label_lfo0_speed->setColour (TextEditor::highlightColourId, Colour (0x00f7f7f7)); m_label_lfo0_speed->addListener (this); - addAndMakeVisible (m_label_osc0_fm_amt0 = new Label (L"OSC 1 FM amt 1", - L"value")); - m_label_osc0_fm_amt0->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_osc0_fm_amt0 = new Label ("OSC 1 FM amt 1", + TRANS("value"))); + m_label_osc0_fm_amt0->setFont (Font (14.00f, Font::plain)); m_label_osc0_fm_amt0->setJustificationType (Justification::centred); m_label_osc0_fm_amt0->setEditable (true, true, false); m_label_osc0_fm_amt0->setColour (TextEditor::textColourId, Colours::black); - m_label_osc0_fm_amt0->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc0_fm_amt0->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc0_fm_amt0->addListener (this); - addAndMakeVisible (m_label_osc1_fm_amt0 = new Label (L"OSC 2 FM amt 1", - L"value")); - m_label_osc1_fm_amt0->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_osc1_fm_amt0 = new Label ("OSC 2 FM amt 1", + TRANS("value"))); + m_label_osc1_fm_amt0->setFont (Font (14.00f, Font::plain)); m_label_osc1_fm_amt0->setJustificationType (Justification::centred); m_label_osc1_fm_amt0->setEditable (true, true, false); m_label_osc1_fm_amt0->setColour (TextEditor::textColourId, Colours::black); - m_label_osc1_fm_amt0->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc1_fm_amt0->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc1_fm_amt0->addListener (this); - addAndMakeVisible (m_slider_vcf_f_amt0 = new Slider (L"VCF Cutoff amount 1")); - m_slider_vcf_f_amt0->setTooltip (L"VCF Cutoff Amount [%]"); + addAndMakeVisible (m_slider_vcf_f_amt0 = new Slider ("VCF Cutoff amount 1")); + m_slider_vcf_f_amt0->setTooltip (TRANS("VCF Cutoff Amount [%]")); m_slider_vcf_f_amt0->setRange (0, 1, 0); m_slider_vcf_f_amt0->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_vcf_f_amt0->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -658,17 +448,17 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_vcf_f_amt0->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_vcf_f_amt0->addListener (this); - addAndMakeVisible (m_label_vcf_f_amt0 = new Label (L"VCF Cutoff amount 1", - L"value")); - m_label_vcf_f_amt0->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_vcf_f_amt0 = new Label ("VCF Cutoff amount 1", + TRANS("value"))); + m_label_vcf_f_amt0->setFont (Font (14.00f, Font::plain)); m_label_vcf_f_amt0->setJustificationType (Justification::centred); m_label_vcf_f_amt0->setEditable (true, true, false); m_label_vcf_f_amt0->setColour (TextEditor::textColourId, Colours::black); - m_label_vcf_f_amt0->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_vcf_f_amt0->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_vcf_f_amt0->addListener (this); - addAndMakeVisible (m_slider_lfo1_speed = new Slider (L"LFO 2 speed")); - m_slider_lfo1_speed->setTooltip (L"LFO 2 speed [Hz]"); + addAndMakeVisible (m_slider_lfo1_speed = new Slider ("LFO 2 speed")); + m_slider_lfo1_speed->setTooltip (TRANS("LFO 2 speed [Hz]")); m_slider_lfo1_speed->setRange (0, 1, 0); m_slider_lfo1_speed->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_lfo1_speed->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -676,83 +466,83 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_lfo1_speed->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_lfo1_speed->addListener (this); - addAndMakeVisible (m_label_lfo1_speed = new Label (L"LFO 2 speed", - L"value")); - m_label_lfo1_speed->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_lfo1_speed = new Label ("LFO 2 speed", + TRANS("value"))); + m_label_lfo1_speed->setFont (Font (14.00f, Font::plain)); m_label_lfo1_speed->setJustificationType (Justification::centred); m_label_lfo1_speed->setEditable (true, true, false); m_label_lfo1_speed->setColour (TextEditor::textColourId, Colours::black); - m_label_lfo1_speed->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_lfo1_speed->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_lfo1_speed->addListener (this); - addAndMakeVisible (m_comboBox_osc0_shape = new ComboBox (L"OSC 1 shape")); - m_comboBox_osc0_shape->setTooltip (L"OSC 1 shape"); + addAndMakeVisible (m_comboBox_osc0_shape = new ComboBox ("OSC 1 shape")); + m_comboBox_osc0_shape->setTooltip (TRANS("OSC 1 shape")); m_comboBox_osc0_shape->setEditableText (false); m_comboBox_osc0_shape->setJustificationType (Justification::centred); m_comboBox_osc0_shape->setTextWhenNothingSelected (String::empty); - m_comboBox_osc0_shape->setTextWhenNoChoicesAvailable (L"(no choices)"); - m_comboBox_osc0_shape->addItem (L"Saw", 1); - m_comboBox_osc0_shape->addItem (L"Pulse", 2); - m_comboBox_osc0_shape->addItem (L"Tri", 3); - m_comboBox_osc0_shape->addItem (L"Sine", 4); - m_comboBox_osc0_shape->addItem (L"Impulse", 5); + m_comboBox_osc0_shape->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); + m_comboBox_osc0_shape->addItem (TRANS("Saw"), 1); + m_comboBox_osc0_shape->addItem (TRANS("Pulse"), 2); + m_comboBox_osc0_shape->addItem (TRANS("Tri"), 3); + m_comboBox_osc0_shape->addItem (TRANS("Sine"), 4); + m_comboBox_osc0_shape->addItem (TRANS("Impulse"), 5); m_comboBox_osc0_shape->addListener (this); - addAndMakeVisible (m_comboBox_osc1_shape = new ComboBox (L"OSC 2 shape")); - m_comboBox_osc1_shape->setTooltip (L"OSC 2 shape"); + addAndMakeVisible (m_comboBox_osc1_shape = new ComboBox ("OSC 2 shape")); + m_comboBox_osc1_shape->setTooltip (TRANS("OSC 2 shape")); m_comboBox_osc1_shape->setEditableText (false); m_comboBox_osc1_shape->setJustificationType (Justification::centred); m_comboBox_osc1_shape->setTextWhenNothingSelected (String::empty); - m_comboBox_osc1_shape->setTextWhenNoChoicesAvailable (L"(no choices)"); - m_comboBox_osc1_shape->addItem (L"Saw", 1); - m_comboBox_osc1_shape->addItem (L"Pulse", 2); - m_comboBox_osc1_shape->addItem (L"Tri", 3); - m_comboBox_osc1_shape->addItem (L"Sine", 4); - m_comboBox_osc1_shape->addItem (L"Impulse", 5); + m_comboBox_osc1_shape->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); + m_comboBox_osc1_shape->addItem (TRANS("Saw"), 1); + m_comboBox_osc1_shape->addItem (TRANS("Pulse"), 2); + m_comboBox_osc1_shape->addItem (TRANS("Tri"), 3); + m_comboBox_osc1_shape->addItem (TRANS("Sine"), 4); + m_comboBox_osc1_shape->addItem (TRANS("Impulse"), 5); m_comboBox_osc1_shape->addListener (this); - addAndMakeVisible (m_comboBox_lfo0_shape = new ComboBox (L"LFO 1 shape")); - m_comboBox_lfo0_shape->setTooltip (L"LFO 1 shape"); + addAndMakeVisible (m_comboBox_lfo0_shape = new ComboBox ("LFO 1 shape")); + m_comboBox_lfo0_shape->setTooltip (TRANS("LFO 1 shape")); m_comboBox_lfo0_shape->setEditableText (false); m_comboBox_lfo0_shape->setJustificationType (Justification::centred); m_comboBox_lfo0_shape->setTextWhenNothingSelected (String::empty); - m_comboBox_lfo0_shape->setTextWhenNoChoicesAvailable (L"(no choices)"); - m_comboBox_lfo0_shape->addItem (L"Sine", 1); - m_comboBox_lfo0_shape->addItem (L"Cosine", 2); - m_comboBox_lfo0_shape->addItem (L"Saw", 3); - m_comboBox_lfo0_shape->addItem (L"Square", 4); - m_comboBox_lfo0_shape->addItem (L"Tri", 5); - m_comboBox_lfo0_shape->addItem (L"S&H 1", 6); - m_comboBox_lfo0_shape->addItem (L"S&H 2", 7); - m_comboBox_lfo0_shape->addItem (L"1-Sine", 8); - m_comboBox_lfo0_shape->addItem (L"1-Cosine", 9); - m_comboBox_lfo0_shape->addItem (L"1-Saw", 10); - m_comboBox_lfo0_shape->addItem (L"1-Square", 11); - m_comboBox_lfo0_shape->addItem (L"1-Tri", 12); + m_comboBox_lfo0_shape->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); + m_comboBox_lfo0_shape->addItem (TRANS("Sine"), 1); + m_comboBox_lfo0_shape->addItem (TRANS("Cosine"), 2); + m_comboBox_lfo0_shape->addItem (TRANS("Saw"), 3); + m_comboBox_lfo0_shape->addItem (TRANS("Square"), 4); + m_comboBox_lfo0_shape->addItem (TRANS("Tri"), 5); + m_comboBox_lfo0_shape->addItem (TRANS("S&H 1"), 6); + m_comboBox_lfo0_shape->addItem (TRANS("S&H 2"), 7); + m_comboBox_lfo0_shape->addItem (TRANS("1-Sine"), 8); + m_comboBox_lfo0_shape->addItem (TRANS("1-Cosine"), 9); + m_comboBox_lfo0_shape->addItem (TRANS("1-Saw"), 10); + m_comboBox_lfo0_shape->addItem (TRANS("1-Square"), 11); + m_comboBox_lfo0_shape->addItem (TRANS("1-Tri"), 12); m_comboBox_lfo0_shape->addListener (this); - addAndMakeVisible (m_comboBox_lfo1_shape = new ComboBox (L"LFO 2 shape")); - m_comboBox_lfo1_shape->setTooltip (L"LFO 2 shape"); + addAndMakeVisible (m_comboBox_lfo1_shape = new ComboBox ("LFO 2 shape")); + m_comboBox_lfo1_shape->setTooltip (TRANS("LFO 2 shape")); m_comboBox_lfo1_shape->setEditableText (false); m_comboBox_lfo1_shape->setJustificationType (Justification::centred); m_comboBox_lfo1_shape->setTextWhenNothingSelected (String::empty); - m_comboBox_lfo1_shape->setTextWhenNoChoicesAvailable (L"(no choices)"); - m_comboBox_lfo1_shape->addItem (L"Sine", 1); - m_comboBox_lfo1_shape->addItem (L"Cosine", 2); - m_comboBox_lfo1_shape->addItem (L"Saw", 3); - m_comboBox_lfo1_shape->addItem (L"Square", 4); - m_comboBox_lfo1_shape->addItem (L"Tri", 5); - m_comboBox_lfo1_shape->addItem (L"S&H 1", 6); - m_comboBox_lfo1_shape->addItem (L"S&H 2", 7); - m_comboBox_lfo1_shape->addItem (L"1-Sine", 8); - m_comboBox_lfo1_shape->addItem (L"1-Cosine", 9); - m_comboBox_lfo1_shape->addItem (L"1-Saw", 10); - m_comboBox_lfo1_shape->addItem (L"1-Square", 11); - m_comboBox_lfo1_shape->addItem (L"1-Tri", 12); + m_comboBox_lfo1_shape->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); + m_comboBox_lfo1_shape->addItem (TRANS("Sine"), 1); + m_comboBox_lfo1_shape->addItem (TRANS("Cosine"), 2); + m_comboBox_lfo1_shape->addItem (TRANS("Saw"), 3); + m_comboBox_lfo1_shape->addItem (TRANS("Square"), 4); + m_comboBox_lfo1_shape->addItem (TRANS("Tri"), 5); + m_comboBox_lfo1_shape->addItem (TRANS("S&H 1"), 6); + m_comboBox_lfo1_shape->addItem (TRANS("S&H 2"), 7); + m_comboBox_lfo1_shape->addItem (TRANS("1-Sine"), 8); + m_comboBox_lfo1_shape->addItem (TRANS("1-Cosine"), 9); + m_comboBox_lfo1_shape->addItem (TRANS("1-Saw"), 10); + m_comboBox_lfo1_shape->addItem (TRANS("1-Square"), 11); + m_comboBox_lfo1_shape->addItem (TRANS("1-Tri"), 12); m_comboBox_lfo1_shape->addListener (this); - addAndMakeVisible (m_slider_lfo2_speed = new Slider (L"LFO 3 speed")); - m_slider_lfo2_speed->setTooltip (L"LFO 3 speed [Hz]"); + addAndMakeVisible (m_slider_lfo2_speed = new Slider ("LFO 3 speed")); + m_slider_lfo2_speed->setTooltip (TRANS("LFO 3 speed [Hz]")); m_slider_lfo2_speed->setRange (0, 1, 0); m_slider_lfo2_speed->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_lfo2_speed->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -760,8 +550,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_lfo2_speed->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_lfo2_speed->addListener (this); - addAndMakeVisible (m_slider_lfo3_speed = new Slider (L"LFO 4 speed")); - m_slider_lfo3_speed->setTooltip (L"LFO 4 speed [Hz]"); + addAndMakeVisible (m_slider_lfo3_speed = new Slider ("LFO 4 speed")); + m_slider_lfo3_speed->setTooltip (TRANS("LFO 4 speed [Hz]")); m_slider_lfo3_speed->setRange (0, 1, 0); m_slider_lfo3_speed->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_lfo3_speed->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -769,90 +559,90 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_lfo3_speed->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_lfo3_speed->addListener (this); - addAndMakeVisible (m_comboBox_lfo2_shape = new ComboBox (L"LFO 3 shape")); - m_comboBox_lfo2_shape->setTooltip (L"LFO 3 shape"); + addAndMakeVisible (m_comboBox_lfo2_shape = new ComboBox ("LFO 3 shape")); + m_comboBox_lfo2_shape->setTooltip (TRANS("LFO 3 shape")); m_comboBox_lfo2_shape->setEditableText (false); m_comboBox_lfo2_shape->setJustificationType (Justification::centred); m_comboBox_lfo2_shape->setTextWhenNothingSelected (String::empty); - m_comboBox_lfo2_shape->setTextWhenNoChoicesAvailable (L"(no choices)"); - m_comboBox_lfo2_shape->addItem (L"Sine", 1); - m_comboBox_lfo2_shape->addItem (L"Cosine", 2); - m_comboBox_lfo2_shape->addItem (L"Saw", 3); - m_comboBox_lfo2_shape->addItem (L"Square", 4); - m_comboBox_lfo2_shape->addItem (L"Tri", 5); - m_comboBox_lfo2_shape->addItem (L"S&H 1", 6); - m_comboBox_lfo2_shape->addItem (L"S&H 2", 7); - m_comboBox_lfo2_shape->addItem (L"1-Sine", 8); - m_comboBox_lfo2_shape->addItem (L"1-Cosine", 9); - m_comboBox_lfo2_shape->addItem (L"1-Saw", 10); - m_comboBox_lfo2_shape->addItem (L"1-Square", 11); - m_comboBox_lfo2_shape->addItem (L"1-Tri", 12); + m_comboBox_lfo2_shape->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); + m_comboBox_lfo2_shape->addItem (TRANS("Sine"), 1); + m_comboBox_lfo2_shape->addItem (TRANS("Cosine"), 2); + m_comboBox_lfo2_shape->addItem (TRANS("Saw"), 3); + m_comboBox_lfo2_shape->addItem (TRANS("Square"), 4); + m_comboBox_lfo2_shape->addItem (TRANS("Tri"), 5); + m_comboBox_lfo2_shape->addItem (TRANS("S&H 1"), 6); + m_comboBox_lfo2_shape->addItem (TRANS("S&H 2"), 7); + m_comboBox_lfo2_shape->addItem (TRANS("1-Sine"), 8); + m_comboBox_lfo2_shape->addItem (TRANS("1-Cosine"), 9); + m_comboBox_lfo2_shape->addItem (TRANS("1-Saw"), 10); + m_comboBox_lfo2_shape->addItem (TRANS("1-Square"), 11); + m_comboBox_lfo2_shape->addItem (TRANS("1-Tri"), 12); m_comboBox_lfo2_shape->addListener (this); - addAndMakeVisible (m_comboBox_lfo3_shape = new ComboBox (L"LFO 4 shape")); - m_comboBox_lfo3_shape->setTooltip (L"LFO 4 shape"); + addAndMakeVisible (m_comboBox_lfo3_shape = new ComboBox ("LFO 4 shape")); + m_comboBox_lfo3_shape->setTooltip (TRANS("LFO 4 shape")); m_comboBox_lfo3_shape->setEditableText (false); m_comboBox_lfo3_shape->setJustificationType (Justification::centred); m_comboBox_lfo3_shape->setTextWhenNothingSelected (String::empty); - m_comboBox_lfo3_shape->setTextWhenNoChoicesAvailable (L"(no choices)"); - m_comboBox_lfo3_shape->addItem (L"Sine", 1); - m_comboBox_lfo3_shape->addItem (L"Cosine", 2); - m_comboBox_lfo3_shape->addItem (L"Saw", 3); - m_comboBox_lfo3_shape->addItem (L"Square", 4); - m_comboBox_lfo3_shape->addItem (L"Tri", 5); - m_comboBox_lfo3_shape->addItem (L"S&H 1", 6); - m_comboBox_lfo3_shape->addItem (L"S&H 2", 7); - m_comboBox_lfo3_shape->addItem (L"1-Sine", 8); - m_comboBox_lfo3_shape->addItem (L"1-Cosine", 9); - m_comboBox_lfo3_shape->addItem (L"1-Saw", 10); - m_comboBox_lfo3_shape->addItem (L"1-Square", 11); - m_comboBox_lfo3_shape->addItem (L"1-Tri", 12); + m_comboBox_lfo3_shape->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); + m_comboBox_lfo3_shape->addItem (TRANS("Sine"), 1); + m_comboBox_lfo3_shape->addItem (TRANS("Cosine"), 2); + m_comboBox_lfo3_shape->addItem (TRANS("Saw"), 3); + m_comboBox_lfo3_shape->addItem (TRANS("Square"), 4); + m_comboBox_lfo3_shape->addItem (TRANS("Tri"), 5); + m_comboBox_lfo3_shape->addItem (TRANS("S&H 1"), 6); + m_comboBox_lfo3_shape->addItem (TRANS("S&H 2"), 7); + m_comboBox_lfo3_shape->addItem (TRANS("1-Sine"), 8); + m_comboBox_lfo3_shape->addItem (TRANS("1-Cosine"), 9); + m_comboBox_lfo3_shape->addItem (TRANS("1-Saw"), 10); + m_comboBox_lfo3_shape->addItem (TRANS("1-Square"), 11); + m_comboBox_lfo3_shape->addItem (TRANS("1-Tri"), 12); m_comboBox_lfo3_shape->addListener (this); - addAndMakeVisible (m_label_lfo2_speed = new Label (L"LFO 3 speed", - L"value")); - m_label_lfo2_speed->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_lfo2_speed = new Label ("LFO 3 speed", + TRANS("value"))); + m_label_lfo2_speed->setFont (Font (14.00f, Font::plain)); m_label_lfo2_speed->setJustificationType (Justification::centred); m_label_lfo2_speed->setEditable (true, true, false); m_label_lfo2_speed->setColour (TextEditor::textColourId, Colours::black); - m_label_lfo2_speed->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_lfo2_speed->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_lfo2_speed->addListener (this); - addAndMakeVisible (m_label_lfo3_speed = new Label (L"LFO 3 speed", - L"value")); - m_label_lfo3_speed->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_lfo3_speed = new Label ("LFO 3 speed", + TRANS("value"))); + m_label_lfo3_speed->setFont (Font (14.00f, Font::plain)); m_label_lfo3_speed->setJustificationType (Justification::centred); m_label_lfo3_speed->setEditable (true, true, false); m_label_lfo3_speed->setColour (TextEditor::textColourId, Colours::black); - m_label_lfo3_speed->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_lfo3_speed->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_lfo3_speed->addListener (this); - addAndMakeVisible (m_comboBox_vcf_f_src0 = new ComboBox (L"VCF Cutoff Source 1")); - m_comboBox_vcf_f_src0->setTooltip (L"VCF Cutoff Modulation Source 1"); + addAndMakeVisible (m_comboBox_vcf_f_src0 = new ComboBox ("VCF Cutoff Source 1")); + m_comboBox_vcf_f_src0->setTooltip (TRANS("VCF Cutoff Modulation Source 1")); m_comboBox_vcf_f_src0->setEditableText (false); m_comboBox_vcf_f_src0->setJustificationType (Justification::centred); m_comboBox_vcf_f_src0->setTextWhenNothingSelected (String::empty); - m_comboBox_vcf_f_src0->setTextWhenNoChoicesAvailable (L"(no choices)"); + m_comboBox_vcf_f_src0->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); m_comboBox_vcf_f_src0->addListener (this); - addAndMakeVisible (m_comboBox_osc0_fm_src0 = new ComboBox (L"OSC 1 FM Source 1")); - m_comboBox_osc0_fm_src0->setTooltip (L"OSC 1 FM Modulation Source 1"); + addAndMakeVisible (m_comboBox_osc0_fm_src0 = new ComboBox ("OSC 1 FM Source 1")); + m_comboBox_osc0_fm_src0->setTooltip (TRANS("OSC 1 FM Modulation Source 1")); m_comboBox_osc0_fm_src0->setEditableText (false); m_comboBox_osc0_fm_src0->setJustificationType (Justification::centred); m_comboBox_osc0_fm_src0->setTextWhenNothingSelected (String::empty); - m_comboBox_osc0_fm_src0->setTextWhenNoChoicesAvailable (L"(no choices)"); + m_comboBox_osc0_fm_src0->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); m_comboBox_osc0_fm_src0->addListener (this); - addAndMakeVisible (m_comboBox_osc1_fm_src0 = new ComboBox (L"OSC 2 FM Source 1")); - m_comboBox_osc1_fm_src0->setTooltip (L"OSC 2 FM Modulation Source 1"); + addAndMakeVisible (m_comboBox_osc1_fm_src0 = new ComboBox ("OSC 2 FM Source 1")); + m_comboBox_osc1_fm_src0->setTooltip (TRANS("OSC 2 FM Modulation Source 1")); m_comboBox_osc1_fm_src0->setEditableText (false); m_comboBox_osc1_fm_src0->setJustificationType (Justification::centred); m_comboBox_osc1_fm_src0->setTextWhenNothingSelected (String::empty); - m_comboBox_osc1_fm_src0->setTextWhenNoChoicesAvailable (L"(no choices)"); + m_comboBox_osc1_fm_src0->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); m_comboBox_osc1_fm_src0->addListener (this); - addAndMakeVisible (m_slider_vca_am_amt0 = new Slider (L"Tremolo amt")); - m_slider_vca_am_amt0->setTooltip (L"Tremolo Amount [%]"); + addAndMakeVisible (m_slider_vca_am_amt0 = new Slider ("Tremolo amt")); + m_slider_vca_am_amt0->setTooltip (TRANS("Tremolo Amount [%]")); m_slider_vca_am_amt0->setRange (0, 1, 0); m_slider_vca_am_amt0->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_vca_am_amt0->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -860,25 +650,25 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_vca_am_amt0->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_vca_am_amt0->addListener (this); - addAndMakeVisible (m_label_vca_am_amt0 = new Label (L"Tremolo amt", - L"value")); - m_label_vca_am_amt0->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_vca_am_amt0 = new Label ("Tremolo amt", + TRANS("value"))); + m_label_vca_am_amt0->setFont (Font (14.00f, Font::plain)); m_label_vca_am_amt0->setJustificationType (Justification::centred); m_label_vca_am_amt0->setEditable (true, true, false); m_label_vca_am_amt0->setColour (TextEditor::textColourId, Colours::black); - m_label_vca_am_amt0->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_vca_am_amt0->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_vca_am_amt0->addListener (this); - addAndMakeVisible (m_comboBox_vca_am_src0 = new ComboBox (L"Tremolo Source 1")); - m_comboBox_vca_am_src0->setTooltip (L"Tremolo Modulation Source 1"); + addAndMakeVisible (m_comboBox_vca_am_src0 = new ComboBox ("Tremolo Source 1")); + m_comboBox_vca_am_src0->setTooltip (TRANS("Tremolo Modulation Source 1")); m_comboBox_vca_am_src0->setEditableText (false); m_comboBox_vca_am_src0->setJustificationType (Justification::centred); m_comboBox_vca_am_src0->setTextWhenNothingSelected (String::empty); - m_comboBox_vca_am_src0->setTextWhenNoChoicesAvailable (L"(no choices)"); + m_comboBox_vca_am_src0->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); m_comboBox_vca_am_src0->addListener (this); - addAndMakeVisible (m_slider_vca_pan_amt0 = new Slider (L"Stereo pan amt")); - m_slider_vca_pan_amt0->setTooltip (L"Stereo Pan Amount [%]"); + addAndMakeVisible (m_slider_vca_pan_amt0 = new Slider ("Stereo pan amt")); + m_slider_vca_pan_amt0->setTooltip (TRANS("Stereo Pan Amount [%]")); m_slider_vca_pan_amt0->setRange (0, 1, 0); m_slider_vca_pan_amt0->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_vca_pan_amt0->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -886,54 +676,54 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_vca_pan_amt0->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_vca_pan_amt0->addListener (this); - addAndMakeVisible (m_label_vca_pan_amt0 = new Label (L"Stereo pan amt", - L"value")); - m_label_vca_pan_amt0->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_vca_pan_amt0 = new Label ("Stereo pan amt", + TRANS("value"))); + m_label_vca_pan_amt0->setFont (Font (14.00f, Font::plain)); m_label_vca_pan_amt0->setJustificationType (Justification::centred); m_label_vca_pan_amt0->setEditable (true, true, false); m_label_vca_pan_amt0->setColour (TextEditor::textColourId, Colours::black); - m_label_vca_pan_amt0->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_vca_pan_amt0->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_vca_pan_amt0->addListener (this); - addAndMakeVisible (m_comboBox_vca_pan_src0 = new ComboBox (L"Stereo pan Source")); - m_comboBox_vca_pan_src0->setTooltip (L"Stereo Pan Modulation Source 1"); + addAndMakeVisible (m_comboBox_vca_pan_src0 = new ComboBox ("Stereo pan Source")); + m_comboBox_vca_pan_src0->setTooltip (TRANS("Stereo Pan Modulation Source 1")); m_comboBox_vca_pan_src0->setEditableText (false); m_comboBox_vca_pan_src0->setJustificationType (Justification::centred); m_comboBox_vca_pan_src0->setTextWhenNothingSelected (String::empty); - m_comboBox_vca_pan_src0->setTextWhenNoChoicesAvailable (L"(no choices)"); + m_comboBox_vca_pan_src0->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); m_comboBox_vca_pan_src0->addListener (this); - addAndMakeVisible (m_label_synth_name = new Label (L"Synth Name", - L"Jay Synth")); - m_label_synth_name->setFont (Font (L"Arial", 20.0000f, Font::plain)); + addAndMakeVisible (m_label_synth_name = new Label ("Synth Name", + TRANS("Jay Synth"))); + m_label_synth_name->setFont (Font ("Arial", 20.00f, Font::plain)); m_label_synth_name->setJustificationType (Justification::centredLeft); m_label_synth_name->setEditable (false, false, false); m_label_synth_name->setColour (Label::textColourId, Colours::white); m_label_synth_name->setColour (TextEditor::textColourId, Colours::black); - m_label_synth_name->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_synth_name->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); - addAndMakeVisible (m_label_synth_version = new Label (L"Synth Version", - L"V 1.0.0")); - m_label_synth_version->setFont (Font (L"Arial", 14.0000f, Font::plain)); + addAndMakeVisible (m_label_synth_version = new Label ("Synth Version", + TRANS("V 1.0.0"))); + m_label_synth_version->setFont (Font ("Arial", 14.00f, Font::plain)); m_label_synth_version->setJustificationType (Justification::centredRight); m_label_synth_version->setEditable (false, false, false); m_label_synth_version->setColour (Label::textColourId, Colours::white); m_label_synth_version->setColour (TextEditor::textColourId, Colours::black); - m_label_synth_version->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_synth_version->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); - addAndMakeVisible (m_comboBox_vcf_type = new ComboBox (L"VCF Type")); - m_comboBox_vcf_type->setTooltip (L"VCF Type"); + addAndMakeVisible (m_comboBox_vcf_type = new ComboBox ("VCF Type")); + m_comboBox_vcf_type->setTooltip (TRANS("VCF Type")); m_comboBox_vcf_type->setEditableText (false); m_comboBox_vcf_type->setJustificationType (Justification::centred); m_comboBox_vcf_type->setTextWhenNothingSelected (String::empty); - m_comboBox_vcf_type->setTextWhenNoChoicesAvailable (L"(no choices)"); - m_comboBox_vcf_type->addItem (L"LPF", 1); - m_comboBox_vcf_type->addItem (L"HPF", 2); - m_comboBox_vcf_type->addItem (L"BPF", 3); + m_comboBox_vcf_type->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); + m_comboBox_vcf_type->addItem (TRANS("LPF"), 1); + m_comboBox_vcf_type->addItem (TRANS("HPF"), 2); + m_comboBox_vcf_type->addItem (TRANS("BPF"), 3); m_comboBox_vcf_type->addListener (this); - addAndMakeVisible (m_slider_lfo1_smooth = new Slider (L"LFO 2 smooth")); - m_slider_lfo1_smooth->setTooltip (L"LFO 2 smooth [%]"); + addAndMakeVisible (m_slider_lfo1_smooth = new Slider ("LFO 2 smooth")); + m_slider_lfo1_smooth->setTooltip (TRANS("LFO 2 smooth [%]")); m_slider_lfo1_smooth->setRange (0, 1, 0); m_slider_lfo1_smooth->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_lfo1_smooth->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -941,17 +731,17 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_lfo1_smooth->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_lfo1_smooth->addListener (this); - addAndMakeVisible (m_label_lfo1_smooth = new Label (L"LFO 2 smooth", - L"value")); - m_label_lfo1_smooth->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_lfo1_smooth = new Label ("LFO 2 smooth", + TRANS("value"))); + m_label_lfo1_smooth->setFont (Font (14.00f, Font::plain)); m_label_lfo1_smooth->setJustificationType (Justification::centred); m_label_lfo1_smooth->setEditable (true, true, false); m_label_lfo1_smooth->setColour (TextEditor::textColourId, Colours::black); - m_label_lfo1_smooth->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_lfo1_smooth->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_lfo1_smooth->addListener (this); - addAndMakeVisible (m_slider_lfo0_smooth = new Slider (L"LFO 1 smooth")); - m_slider_lfo0_smooth->setTooltip (L"LFO 1 smooth [%]"); + addAndMakeVisible (m_slider_lfo0_smooth = new Slider ("LFO 1 smooth")); + m_slider_lfo0_smooth->setTooltip (TRANS("LFO 1 smooth [%]")); m_slider_lfo0_smooth->setRange (0, 1, 0); m_slider_lfo0_smooth->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_lfo0_smooth->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -959,17 +749,17 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_lfo0_smooth->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_lfo0_smooth->addListener (this); - addAndMakeVisible (m_label_lfo0_smooth = new Label (L"LFO 1 smooth", - L"value")); - m_label_lfo0_smooth->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_lfo0_smooth = new Label ("LFO 1 smooth", + TRANS("value"))); + m_label_lfo0_smooth->setFont (Font (14.00f, Font::plain)); m_label_lfo0_smooth->setJustificationType (Justification::centred); m_label_lfo0_smooth->setEditable (true, true, false); m_label_lfo0_smooth->setColour (TextEditor::textColourId, Colours::black); - m_label_lfo0_smooth->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_lfo0_smooth->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_lfo0_smooth->addListener (this); - addAndMakeVisible (m_slider_lfo2_smooth = new Slider (L"LFO 3 smooth")); - m_slider_lfo2_smooth->setTooltip (L"LFO 3 smooth [%]"); + addAndMakeVisible (m_slider_lfo2_smooth = new Slider ("LFO 3 smooth")); + m_slider_lfo2_smooth->setTooltip (TRANS("LFO 3 smooth [%]")); m_slider_lfo2_smooth->setRange (0, 1, 0); m_slider_lfo2_smooth->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_lfo2_smooth->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -977,17 +767,17 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_lfo2_smooth->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_lfo2_smooth->addListener (this); - addAndMakeVisible (m_label_lfo2_smooth = new Label (L"LFO 3 smooth", - L"value")); - m_label_lfo2_smooth->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_lfo2_smooth = new Label ("LFO 3 smooth", + TRANS("value"))); + m_label_lfo2_smooth->setFont (Font (14.00f, Font::plain)); m_label_lfo2_smooth->setJustificationType (Justification::centred); m_label_lfo2_smooth->setEditable (true, true, false); m_label_lfo2_smooth->setColour (TextEditor::textColourId, Colours::black); - m_label_lfo2_smooth->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_lfo2_smooth->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_lfo2_smooth->addListener (this); - addAndMakeVisible (m_slider_lfo3_smooth = new Slider (L"LFO 4 smooth")); - m_slider_lfo3_smooth->setTooltip (L"LFO 4 smooth [%]"); + addAndMakeVisible (m_slider_lfo3_smooth = new Slider ("LFO 4 smooth")); + m_slider_lfo3_smooth->setTooltip (TRANS("LFO 4 smooth [%]")); m_slider_lfo3_smooth->setRange (0, 1, 0); m_slider_lfo3_smooth->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_lfo3_smooth->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -995,17 +785,17 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_lfo3_smooth->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_lfo3_smooth->addListener (this); - addAndMakeVisible (m_label_lfo3_smooth = new Label (L"LFO 4 smooth", - L"value")); - m_label_lfo3_smooth->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_lfo3_smooth = new Label ("LFO 4 smooth", + TRANS("value"))); + m_label_lfo3_smooth->setFont (Font (14.00f, Font::plain)); m_label_lfo3_smooth->setJustificationType (Justification::centred); m_label_lfo3_smooth->setEditable (true, true, false); m_label_lfo3_smooth->setColour (TextEditor::textColourId, Colours::black); - m_label_lfo3_smooth->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_lfo3_smooth->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_lfo3_smooth->addListener (this); - addAndMakeVisible (m_slider_osc0_pwm_amt0 = new Slider (L"OSC 1 PWM amount 1")); - m_slider_osc0_pwm_amt0->setTooltip (L"OSC 1 PWM Amount [%]"); + addAndMakeVisible (m_slider_osc0_pwm_amt0 = new Slider ("OSC 1 PWM amount 1")); + m_slider_osc0_pwm_amt0->setTooltip (TRANS("OSC 1 PWM Amount [%]")); m_slider_osc0_pwm_amt0->setRange (0, 1, 0); m_slider_osc0_pwm_amt0->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_osc0_pwm_amt0->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1013,17 +803,17 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_osc0_pwm_amt0->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_osc0_pwm_amt0->addListener (this); - addAndMakeVisible (m_label_osc0_pwm_amt0 = new Label (L"OSC 1 PWM 1", - L"value")); - m_label_osc0_pwm_amt0->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_osc0_pwm_amt0 = new Label ("OSC 1 PWM 1", + TRANS("value"))); + m_label_osc0_pwm_amt0->setFont (Font (14.00f, Font::plain)); m_label_osc0_pwm_amt0->setJustificationType (Justification::centred); m_label_osc0_pwm_amt0->setEditable (true, true, false); m_label_osc0_pwm_amt0->setColour (TextEditor::textColourId, Colours::black); - m_label_osc0_pwm_amt0->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc0_pwm_amt0->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc0_pwm_amt0->addListener (this); - addAndMakeVisible (m_slider_osc1_pwm_amt0 = new Slider (L"OSC 2 PWM amount 1")); - m_slider_osc1_pwm_amt0->setTooltip (L"OSC 2 PWM Amount [%]"); + addAndMakeVisible (m_slider_osc1_pwm_amt0 = new Slider ("OSC 2 PWM amount 1")); + m_slider_osc1_pwm_amt0->setTooltip (TRANS("OSC 2 PWM Amount [%]")); m_slider_osc1_pwm_amt0->setRange (0, 1, 0); m_slider_osc1_pwm_amt0->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_osc1_pwm_amt0->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1031,33 +821,33 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_osc1_pwm_amt0->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_osc1_pwm_amt0->addListener (this); - addAndMakeVisible (m_label_osc1_pwm_amt0 = new Label (L"OSC 2 PWM amount 1", - L"value")); - m_label_osc1_pwm_amt0->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_osc1_pwm_amt0 = new Label ("OSC 2 PWM amount 1", + TRANS("value"))); + m_label_osc1_pwm_amt0->setFont (Font (14.00f, Font::plain)); m_label_osc1_pwm_amt0->setJustificationType (Justification::centred); m_label_osc1_pwm_amt0->setEditable (true, true, false); m_label_osc1_pwm_amt0->setColour (TextEditor::textColourId, Colours::black); - m_label_osc1_pwm_amt0->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc1_pwm_amt0->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc1_pwm_amt0->addListener (this); - addAndMakeVisible (m_comboBox_osc0_pwm_src0 = new ComboBox (L"OSC 1 PWM Source 1")); - m_comboBox_osc0_pwm_src0->setTooltip (L"OSC 1 PWM Modulation Source 1"); + addAndMakeVisible (m_comboBox_osc0_pwm_src0 = new ComboBox ("OSC 1 PWM Source 1")); + m_comboBox_osc0_pwm_src0->setTooltip (TRANS("OSC 1 PWM Modulation Source 1")); m_comboBox_osc0_pwm_src0->setEditableText (false); m_comboBox_osc0_pwm_src0->setJustificationType (Justification::centred); m_comboBox_osc0_pwm_src0->setTextWhenNothingSelected (String::empty); - m_comboBox_osc0_pwm_src0->setTextWhenNoChoicesAvailable (L"(no choices)"); + m_comboBox_osc0_pwm_src0->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); m_comboBox_osc0_pwm_src0->addListener (this); - addAndMakeVisible (m_comboBox_osc1_pwm_src0 = new ComboBox (L"OSC 2 PWM Source 1")); - m_comboBox_osc1_pwm_src0->setTooltip (L"OSC 2 PWM Modulation Source 1"); + addAndMakeVisible (m_comboBox_osc1_pwm_src0 = new ComboBox ("OSC 2 PWM Source 1")); + m_comboBox_osc1_pwm_src0->setTooltip (TRANS("OSC 2 PWM Modulation Source 1")); m_comboBox_osc1_pwm_src0->setEditableText (false); m_comboBox_osc1_pwm_src0->setJustificationType (Justification::centred); m_comboBox_osc1_pwm_src0->setTextWhenNothingSelected (String::empty); - m_comboBox_osc1_pwm_src0->setTextWhenNoChoicesAvailable (L"(no choices)"); + m_comboBox_osc1_pwm_src0->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); m_comboBox_osc1_pwm_src0->addListener (this); - addAndMakeVisible (m_slider_osc0_level = new Slider (L"OSC 1 Level")); - m_slider_osc0_level->setTooltip (L"OSC 1 Level [%]"); + addAndMakeVisible (m_slider_osc0_level = new Slider ("OSC 1 Level")); + m_slider_osc0_level->setTooltip (TRANS("OSC 1 Level [%]")); m_slider_osc0_level->setRange (0, 1, 0); m_slider_osc0_level->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_osc0_level->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1066,17 +856,17 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_osc0_level->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_osc0_level->addListener (this); - addAndMakeVisible (m_label_osc0_level = new Label (L"OSC 1 Level", - L"value")); - m_label_osc0_level->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_osc0_level = new Label ("OSC 1 Level", + TRANS("value"))); + m_label_osc0_level->setFont (Font (14.00f, Font::plain)); m_label_osc0_level->setJustificationType (Justification::centred); m_label_osc0_level->setEditable (true, true, false); m_label_osc0_level->setColour (TextEditor::textColourId, Colours::black); - m_label_osc0_level->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc0_level->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc0_level->addListener (this); - addAndMakeVisible (m_slider_osc1_level = new Slider (L"OSC 2 Level")); - m_slider_osc1_level->setTooltip (L"OSC 2 Level [%]"); + addAndMakeVisible (m_slider_osc1_level = new Slider ("OSC 2 Level")); + m_slider_osc1_level->setTooltip (TRANS("OSC 2 Level [%]")); m_slider_osc1_level->setRange (0, 1, 0); m_slider_osc1_level->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_osc1_level->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1085,17 +875,17 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_osc1_level->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_osc1_level->addListener (this); - addAndMakeVisible (m_label_osc1_level = new Label (L"OSC 2 Level", - L"value")); - m_label_osc1_level->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_osc1_level = new Label ("OSC 2 Level", + TRANS("value"))); + m_label_osc1_level->setFont (Font (14.00f, Font::plain)); m_label_osc1_level->setJustificationType (Justification::centred); m_label_osc1_level->setEditable (true, true, false); m_label_osc1_level->setColour (TextEditor::textColourId, Colours::black); - m_label_osc1_level->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc1_level->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc1_level->addListener (this); - addAndMakeVisible (m_slider_noise_level = new Slider (L"Noise Level")); - m_slider_noise_level->setTooltip (L"Noise Level [%]"); + addAndMakeVisible (m_slider_noise_level = new Slider ("Noise Level")); + m_slider_noise_level->setTooltip (TRANS("Noise Level [%]")); m_slider_noise_level->setRange (0, 1, 0); m_slider_noise_level->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_noise_level->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1104,98 +894,98 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_noise_level->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_noise_level->addListener (this); - addAndMakeVisible (m_label_noise_level = new Label (L"Noise Level", - L"value")); - m_label_noise_level->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_noise_level = new Label ("Noise Level", + TRANS("value"))); + m_label_noise_level->setFont (Font (14.00f, Font::plain)); m_label_noise_level->setJustificationType (Justification::centred); m_label_noise_level->setEditable (true, true, false); m_label_noise_level->setColour (TextEditor::textColourId, Colours::black); - m_label_noise_level->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_noise_level->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_noise_level->addListener (this); - addAndMakeVisible (m_comboBox_noise_shape = new ComboBox (L"Noise shape")); - m_comboBox_noise_shape->setTooltip (L"Noise shape"); + addAndMakeVisible (m_comboBox_noise_shape = new ComboBox ("Noise shape")); + m_comboBox_noise_shape->setTooltip (TRANS("Noise shape")); m_comboBox_noise_shape->setEditableText (false); m_comboBox_noise_shape->setJustificationType (Justification::centred); m_comboBox_noise_shape->setTextWhenNothingSelected (String::empty); - m_comboBox_noise_shape->setTextWhenNoChoicesAvailable (L"(no choices)"); - m_comboBox_noise_shape->addItem (L"Uniform", 1); - m_comboBox_noise_shape->addItem (L"Gauss", 2); + m_comboBox_noise_shape->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); + m_comboBox_noise_shape->addItem (TRANS("Uniform"), 1); + m_comboBox_noise_shape->addItem (TRANS("Gauss"), 2); m_comboBox_noise_shape->addListener (this); addAndMakeVisible (m_btn_noise_enable_led = new ButtonLED (L"Noise On/Off")); addAndMakeVisible (m_btn_osc0_enable = new ButtonLED (L"OSC 1 On/Off")); addAndMakeVisible (m_btn_osc1_enable = new ButtonLED (L"OSC 2 On/Off")); - addAndMakeVisible (m_label_patch_name = new Label (L"Label Patch Name", - L"Patch name")); - m_label_patch_name->setFont (Font (20.0000f, Font::plain)); + addAndMakeVisible (m_label_patch_name = new Label ("Label Patch Name", + TRANS("Patch name"))); + m_label_patch_name->setFont (Font (20.00f, Font::plain)); m_label_patch_name->setJustificationType (Justification::centredLeft); m_label_patch_name->setEditable (true, true, false); m_label_patch_name->setColour (Label::textColourId, Colours::white); m_label_patch_name->setColour (TextEditor::textColourId, Colours::black); - m_label_patch_name->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_patch_name->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_patch_name->addListener (this); - addAndMakeVisible (m_button_patch_incr = new TextButton (L"Patch Increment")); - m_button_patch_incr->setTooltip (L"Next Patch"); - m_button_patch_incr->setButtonText (L"+"); + addAndMakeVisible (m_button_patch_incr = new TextButton ("Patch Increment")); + m_button_patch_incr->setTooltip (TRANS("Next Patch")); + m_button_patch_incr->setButtonText (TRANS("+")); - addAndMakeVisible (m_button_patch_decr = new TextButton (L"Patch Decrement")); - m_button_patch_decr->setTooltip (L"Previous Patch"); - m_button_patch_decr->setButtonText (L"-"); + addAndMakeVisible (m_button_patch_decr = new TextButton ("Patch Decrement")); + m_button_patch_decr->setTooltip (TRANS("Previous Patch")); + m_button_patch_decr->setButtonText (TRANS("-")); - addAndMakeVisible (m_label_patch_number = new Label (L"Label Patch Number", - L"00")); - m_label_patch_number->setFont (Font (20.0000f, Font::plain)); + addAndMakeVisible (m_label_patch_number = new Label ("Label Patch Number", + TRANS("00"))); + m_label_patch_number->setFont (Font (20.00f, Font::plain)); m_label_patch_number->setJustificationType (Justification::centredLeft); m_label_patch_number->setEditable (true, true, false); m_label_patch_number->setColour (Label::textColourId, Colours::white); m_label_patch_number->setColour (TextEditor::textColourId, Colours::black); - m_label_patch_number->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_patch_number->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_patch_number->addListener (this); - addAndMakeVisible (m_label_osc1_pb_min = new Label (L"OSC 2 Pitch bender min", - L"-24")); - m_label_osc1_pb_min->setTooltip (L"OSC 2 pitch bender minimum [semitones]"); - m_label_osc1_pb_min->setFont (Font (12.0000f, Font::plain)); + addAndMakeVisible (m_label_osc1_pb_min = new Label ("OSC 2 Pitch bender min", + TRANS("-24"))); + m_label_osc1_pb_min->setTooltip (TRANS("OSC 2 pitch bender minimum [semitones]")); + m_label_osc1_pb_min->setFont (Font (12.00f, Font::plain)); m_label_osc1_pb_min->setJustificationType (Justification::centred); m_label_osc1_pb_min->setEditable (true, true, false); m_label_osc1_pb_min->setColour (TextEditor::textColourId, Colours::black); - m_label_osc1_pb_min->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc1_pb_min->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc1_pb_min->addListener (this); - addAndMakeVisible (m_label_osc1_pb_max = new Label (L"OSC 2 Pitch bender max", - L"+24")); - m_label_osc1_pb_max->setTooltip (L"OSC 2 pitch bender maximum [semitones]"); - m_label_osc1_pb_max->setFont (Font (12.0000f, Font::plain)); + addAndMakeVisible (m_label_osc1_pb_max = new Label ("OSC 2 Pitch bender max", + TRANS("+24"))); + m_label_osc1_pb_max->setTooltip (TRANS("OSC 2 pitch bender maximum [semitones]")); + m_label_osc1_pb_max->setFont (Font (12.00f, Font::plain)); m_label_osc1_pb_max->setJustificationType (Justification::centred); m_label_osc1_pb_max->setEditable (true, true, false); m_label_osc1_pb_max->setColour (TextEditor::textColourId, Colours::black); - m_label_osc1_pb_max->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc1_pb_max->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc1_pb_max->addListener (this); - addAndMakeVisible (m_label_osc0_pb_max = new Label (L"OSC 1 Pitch bender max", - L"+24")); - m_label_osc0_pb_max->setTooltip (L"OSC 1 pitch bender maximum [semitones]"); - m_label_osc0_pb_max->setFont (Font (12.0000f, Font::plain)); + addAndMakeVisible (m_label_osc0_pb_max = new Label ("OSC 1 Pitch bender max", + TRANS("+24"))); + m_label_osc0_pb_max->setTooltip (TRANS("OSC 1 pitch bender maximum [semitones]")); + m_label_osc0_pb_max->setFont (Font (12.00f, Font::plain)); m_label_osc0_pb_max->setJustificationType (Justification::centred); m_label_osc0_pb_max->setEditable (true, true, false); m_label_osc0_pb_max->setColour (TextEditor::textColourId, Colours::black); - m_label_osc0_pb_max->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc0_pb_max->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc0_pb_max->addListener (this); - addAndMakeVisible (m_label_osc0_pb_min = new Label (L"OSC 1 Pitch bender min", - L"-24")); - m_label_osc0_pb_min->setTooltip (L"OSC 1 pitch bender minimum [semitones]"); - m_label_osc0_pb_min->setFont (Font (12.0000f, Font::plain)); + addAndMakeVisible (m_label_osc0_pb_min = new Label ("OSC 1 Pitch bender min", + TRANS("-24"))); + m_label_osc0_pb_min->setTooltip (TRANS("OSC 1 pitch bender minimum [semitones]")); + m_label_osc0_pb_min->setFont (Font (12.00f, Font::plain)); m_label_osc0_pb_min->setJustificationType (Justification::centred); m_label_osc0_pb_min->setEditable (true, true, false); m_label_osc0_pb_min->setColour (TextEditor::textColourId, Colours::black); - m_label_osc0_pb_min->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc0_pb_min->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc0_pb_min->addListener (this); - addAndMakeVisible (m_slider_master_tune = new Slider (L"Master tune")); - m_slider_master_tune->setTooltip (L"Master tune [semitones]"); + addAndMakeVisible (m_slider_master_tune = new Slider ("Master tune")); + m_slider_master_tune->setTooltip (TRANS("Master tune [semitones]")); m_slider_master_tune->setRange (0, 1, 0); m_slider_master_tune->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_master_tune->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1203,33 +993,33 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_master_tune->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_master_tune->addListener (this); - addAndMakeVisible (m_label_master_tune = new Label (L"Master tune", - L"value")); - m_label_master_tune->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_master_tune = new Label ("Master tune", + TRANS("value"))); + m_label_master_tune->setFont (Font (14.00f, Font::plain)); m_label_master_tune->setJustificationType (Justification::centred); m_label_master_tune->setEditable (true, true, false); m_label_master_tune->setColour (TextEditor::textColourId, Colours::black); - m_label_master_tune->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_master_tune->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_master_tune->addListener (this); - addAndMakeVisible (m_button_humanize_enable = new ToggleButton (L"Humanize Enable")); - m_button_humanize_enable->setTooltip (L"Humanize spreads individual voice parameter to get a more vivid sound\\n. Humanize alters VCO tune, VCF cutoff and ENV times."); - m_button_humanize_enable->setButtonText (L"Humanize"); + addAndMakeVisible (m_button_humanize_enable = new ToggleButton ("Humanize Enable")); + m_button_humanize_enable->setTooltip (TRANS("Humanize spreads individual voice parameter to get a more vivid sound\\n. Humanize alters VCO tune, VCF cutoff and ENV times.")); + m_button_humanize_enable->setButtonText (TRANS("Humanize")); m_button_humanize_enable->setColour (ToggleButton::textColourId, Colours::white); - addAndMakeVisible (m_comboBox_vcf_order = new ComboBox (L"VCF Order")); - m_comboBox_vcf_order->setTooltip (L"VCF Order"); + addAndMakeVisible (m_comboBox_vcf_order = new ComboBox ("VCF Order")); + m_comboBox_vcf_order->setTooltip (TRANS("VCF Order")); m_comboBox_vcf_order->setEditableText (false); m_comboBox_vcf_order->setJustificationType (Justification::centred); m_comboBox_vcf_order->setTextWhenNothingSelected (String::empty); - m_comboBox_vcf_order->setTextWhenNoChoicesAvailable (L"(no choices)"); - m_comboBox_vcf_order->addItem (L"12 dB/Oct.", 1); - m_comboBox_vcf_order->addItem (L"24 dB/Oct.", 2); + m_comboBox_vcf_order->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); + m_comboBox_vcf_order->addItem (TRANS("12 dB/Oct."), 1); + m_comboBox_vcf_order->addItem (TRANS("24 dB/Oct."), 2); m_comboBox_vcf_order->addSeparator(); m_comboBox_vcf_order->addListener (this); - addAndMakeVisible (m_slider_portamento_time = new Slider (L"Portamento Time")); - m_slider_portamento_time->setTooltip (L"Portamento Time [s]"); + addAndMakeVisible (m_slider_portamento_time = new Slider ("Portamento Time")); + m_slider_portamento_time->setTooltip (TRANS("Portamento Time [s]")); m_slider_portamento_time->setRange (0, 1, 0); m_slider_portamento_time->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_portamento_time->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1238,22 +1028,22 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_portamento_time->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_portamento_time->addListener (this); - addAndMakeVisible (m_label_portamento_time = new Label (L"Portamento Time", - L"value")); - m_label_portamento_time->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_portamento_time = new Label ("Portamento Time", + TRANS("value"))); + m_label_portamento_time->setFont (Font (14.00f, Font::plain)); m_label_portamento_time->setJustificationType (Justification::centred); m_label_portamento_time->setEditable (true, true, false); m_label_portamento_time->setColour (TextEditor::textColourId, Colours::black); - m_label_portamento_time->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_portamento_time->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_portamento_time->addListener (this); - addAndMakeVisible (m_button_unisono_enable = new ToggleButton (L"Unisono Enable")); - m_button_unisono_enable->setTooltip (L"This button switches unisono mode on and off"); - m_button_unisono_enable->setButtonText (L"Unisono"); + addAndMakeVisible (m_button_unisono_enable = new ToggleButton ("Unisono Enable")); + m_button_unisono_enable->setTooltip (TRANS("This button switches unisono mode on and off")); + m_button_unisono_enable->setButtonText (TRANS("Unisono")); m_button_unisono_enable->setColour (ToggleButton::textColourId, Colours::white); - addAndMakeVisible (m_slider_humanize_var_vco = new Slider (L"Humanize Variance VCO")); - m_slider_humanize_var_vco->setTooltip (L"Humanize spread VCO [%]"); + addAndMakeVisible (m_slider_humanize_var_vco = new Slider ("Humanize Variance VCO")); + m_slider_humanize_var_vco->setTooltip (TRANS("Humanize spread VCO [%]")); m_slider_humanize_var_vco->setRange (0, 1, 0); m_slider_humanize_var_vco->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_humanize_var_vco->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1261,8 +1051,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_humanize_var_vco->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_humanize_var_vco->addListener (this); - addAndMakeVisible (m_slider_voice_pan_spread = new Slider (L"Voice Pan Spread")); - m_slider_voice_pan_spread->setTooltip (L"Voice Pan Spread [%]"); + addAndMakeVisible (m_slider_voice_pan_spread = new Slider ("Voice Pan Spread")); + m_slider_voice_pan_spread->setTooltip (TRANS("Voice Pan Spread [%]")); m_slider_voice_pan_spread->setRange (0, 1, 0); m_slider_voice_pan_spread->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_voice_pan_spread->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1271,17 +1061,17 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_voice_pan_spread->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_voice_pan_spread->addListener (this); - addAndMakeVisible (m_label_voice_pan_spread = new Label (L"Voice Pan Spread", - L"value")); - m_label_voice_pan_spread->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_voice_pan_spread = new Label ("Voice Pan Spread", + TRANS("value"))); + m_label_voice_pan_spread->setFont (Font (14.00f, Font::plain)); m_label_voice_pan_spread->setJustificationType (Justification::centred); m_label_voice_pan_spread->setEditable (true, true, false); m_label_voice_pan_spread->setColour (TextEditor::textColourId, Colours::black); - m_label_voice_pan_spread->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_voice_pan_spread->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_voice_pan_spread->addListener (this); - addAndMakeVisible (m_slider_humanize_var_vcf = new Slider (L"Humanize Variance VCF")); - m_slider_humanize_var_vcf->setTooltip (L"Humanize spread VCF [%]"); + addAndMakeVisible (m_slider_humanize_var_vcf = new Slider ("Humanize Variance VCF")); + m_slider_humanize_var_vcf->setTooltip (TRANS("Humanize spread VCF [%]")); m_slider_humanize_var_vcf->setRange (0, 1, 0); m_slider_humanize_var_vcf->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_humanize_var_vcf->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1289,8 +1079,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_humanize_var_vcf->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_humanize_var_vcf->addListener (this); - addAndMakeVisible (m_slider_humanize_var_env = new Slider (L"Humanize Variance ENV")); - m_slider_humanize_var_env->setTooltip (L"Humanize spread Envelopes [%]"); + addAndMakeVisible (m_slider_humanize_var_env = new Slider ("Humanize Variance ENV")); + m_slider_humanize_var_env->setTooltip (TRANS("Humanize spread Envelopes [%]")); m_slider_humanize_var_env->setRange (0, 1, 0); m_slider_humanize_var_env->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_humanize_var_env->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1298,81 +1088,81 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_humanize_var_env->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_humanize_var_env->addListener (this); - addAndMakeVisible (m_label_unisono_num_voices = new Label (L"Unisono Number of Voices", - L"999")); - m_label_unisono_num_voices->setTooltip (L"Unisono number of voices to allocate"); - m_label_unisono_num_voices->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_unisono_num_voices = new Label ("Unisono Number of Voices", + TRANS("999"))); + m_label_unisono_num_voices->setTooltip (TRANS("Unisono number of voices to allocate")); + m_label_unisono_num_voices->setFont (Font (14.00f, Font::plain)); m_label_unisono_num_voices->setJustificationType (Justification::centred); m_label_unisono_num_voices->setEditable (true, true, false); m_label_unisono_num_voices->setColour (TextEditor::textColourId, Colours::black); - m_label_unisono_num_voices->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_unisono_num_voices->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_unisono_num_voices->addListener (this); - addAndMakeVisible (m_button_osc0_restart_enable = new ToggleButton (L"Restart VCO 1 Enable")); - m_button_osc0_restart_enable->setTooltip (L"If not set the VCO runs free, starting with different phases on each note trigger. If set, phase is reset on note trigger. This may add more punch to the sound if set on both VCOs."); - m_button_osc0_restart_enable->setButtonText (L"Restart"); + addAndMakeVisible (m_button_osc0_restart_enable = new ToggleButton ("Restart VCO 1 Enable")); + m_button_osc0_restart_enable->setTooltip (TRANS("If not set the VCO runs free, starting with different phases on each note trigger. If set, phase is reset on note trigger. This may add more punch to the sound if set on both VCOs.")); + m_button_osc0_restart_enable->setButtonText (TRANS("Restart")); m_button_osc0_restart_enable->setColour (ToggleButton::textColourId, Colours::white); - addAndMakeVisible (m_button_osc1_restart_enable = new ToggleButton (L"Restart VCO 2 Enable")); - m_button_osc1_restart_enable->setTooltip (L"If not set the VCO runs free, starting with different phases on each note trigger. If set, phase is reset on note trigger. This may add more punch to the sound if set on both VCOs."); - m_button_osc1_restart_enable->setButtonText (L"Restart"); + addAndMakeVisible (m_button_osc1_restart_enable = new ToggleButton ("Restart VCO 2 Enable")); + m_button_osc1_restart_enable->setTooltip (TRANS("If not set the VCO runs free, starting with different phases on each note trigger. If set, phase is reset on note trigger. This may add more punch to the sound if set on both VCOs.")); + m_button_osc1_restart_enable->setButtonText (TRANS("Restart")); m_button_osc1_restart_enable->setColour (ToggleButton::textColourId, Colours::white); - addAndMakeVisible (m_button_mono_enable = new ToggleButton (L"Monophonic Enable")); - m_button_mono_enable->setTooltip (L"This button switches monophonic mode on and off"); - m_button_mono_enable->setButtonText (L"Monophonic"); + addAndMakeVisible (m_button_mono_enable = new ToggleButton ("Monophonic Enable")); + m_button_mono_enable->setTooltip (TRANS("This button switches monophonic mode on and off")); + m_button_mono_enable->setButtonText (TRANS("Monophonic")); m_button_mono_enable->setColour (ToggleButton::textColourId, Colours::white); - addAndMakeVisible (m_comboBox_osc1_fm_src1 = new ComboBox (L"OSC 2 FM Source 2")); - m_comboBox_osc1_fm_src1->setTooltip (L"OSC 2 FM Modulation Source 2"); + addAndMakeVisible (m_comboBox_osc1_fm_src1 = new ComboBox ("OSC 2 FM Source 2")); + m_comboBox_osc1_fm_src1->setTooltip (TRANS("OSC 2 FM Modulation Source 2")); m_comboBox_osc1_fm_src1->setEditableText (false); m_comboBox_osc1_fm_src1->setJustificationType (Justification::centred); m_comboBox_osc1_fm_src1->setTextWhenNothingSelected (String::empty); - m_comboBox_osc1_fm_src1->setTextWhenNoChoicesAvailable (L"(no choices)"); + m_comboBox_osc1_fm_src1->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); m_comboBox_osc1_fm_src1->addListener (this); - addAndMakeVisible (m_comboBox_osc1_pwm_src1 = new ComboBox (L"OSC 2 PWM Source 2")); - m_comboBox_osc1_pwm_src1->setTooltip (L"OSC 2 PWM Modulation Source 2"); + addAndMakeVisible (m_comboBox_osc1_pwm_src1 = new ComboBox ("OSC 2 PWM Source 2")); + m_comboBox_osc1_pwm_src1->setTooltip (TRANS("OSC 2 PWM Modulation Source 2")); m_comboBox_osc1_pwm_src1->setEditableText (false); m_comboBox_osc1_pwm_src1->setJustificationType (Justification::centred); m_comboBox_osc1_pwm_src1->setTextWhenNothingSelected (String::empty); - m_comboBox_osc1_pwm_src1->setTextWhenNoChoicesAvailable (L"(no choices)"); + m_comboBox_osc1_pwm_src1->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); m_comboBox_osc1_pwm_src1->addListener (this); - addAndMakeVisible (m_comboBox_osc0_fm_src1 = new ComboBox (L"OSC 1 FM Source 2")); - m_comboBox_osc0_fm_src1->setTooltip (L"OSC 1 FM Modulation Source 2"); + addAndMakeVisible (m_comboBox_osc0_fm_src1 = new ComboBox ("OSC 1 FM Source 2")); + m_comboBox_osc0_fm_src1->setTooltip (TRANS("OSC 1 FM Modulation Source 2")); m_comboBox_osc0_fm_src1->setEditableText (false); m_comboBox_osc0_fm_src1->setJustificationType (Justification::centred); m_comboBox_osc0_fm_src1->setTextWhenNothingSelected (String::empty); - m_comboBox_osc0_fm_src1->setTextWhenNoChoicesAvailable (L"(no choices)"); + m_comboBox_osc0_fm_src1->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); m_comboBox_osc0_fm_src1->addListener (this); - addAndMakeVisible (m_comboBox_osc0_pwm_src1 = new ComboBox (L"OSC 1 PWM Source 2")); - m_comboBox_osc0_pwm_src1->setTooltip (L"OSC 1 PWM Modulation Source 2"); + addAndMakeVisible (m_comboBox_osc0_pwm_src1 = new ComboBox ("OSC 1 PWM Source 2")); + m_comboBox_osc0_pwm_src1->setTooltip (TRANS("OSC 1 PWM Modulation Source 2")); m_comboBox_osc0_pwm_src1->setEditableText (false); m_comboBox_osc0_pwm_src1->setJustificationType (Justification::centred); m_comboBox_osc0_pwm_src1->setTextWhenNothingSelected (String::empty); - m_comboBox_osc0_pwm_src1->setTextWhenNoChoicesAvailable (L"(no choices)"); + m_comboBox_osc0_pwm_src1->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); m_comboBox_osc0_pwm_src1->addListener (this); - addAndMakeVisible (m_comboBox_osc1_am_src0 = new ComboBox (L"OSC 2 AM Source 1")); - m_comboBox_osc1_am_src0->setTooltip (L"OSC 2 AM Modulation Source 1"); + addAndMakeVisible (m_comboBox_osc1_am_src0 = new ComboBox ("OSC 2 AM Source 1")); + m_comboBox_osc1_am_src0->setTooltip (TRANS("OSC 2 AM Modulation Source 1")); m_comboBox_osc1_am_src0->setEditableText (false); m_comboBox_osc1_am_src0->setJustificationType (Justification::centred); m_comboBox_osc1_am_src0->setTextWhenNothingSelected (String::empty); - m_comboBox_osc1_am_src0->setTextWhenNoChoicesAvailable (L"(no choices)"); + m_comboBox_osc1_am_src0->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); m_comboBox_osc1_am_src0->addListener (this); - addAndMakeVisible (m_comboBox_osc1_am_src1 = new ComboBox (L"OSC 2 AM Source 2")); - m_comboBox_osc1_am_src1->setTooltip (L"OSC 2 AM Modulation Source 2"); + addAndMakeVisible (m_comboBox_osc1_am_src1 = new ComboBox ("OSC 2 AM Source 2")); + m_comboBox_osc1_am_src1->setTooltip (TRANS("OSC 2 AM Modulation Source 2")); m_comboBox_osc1_am_src1->setEditableText (false); m_comboBox_osc1_am_src1->setJustificationType (Justification::centred); m_comboBox_osc1_am_src1->setTextWhenNothingSelected (String::empty); - m_comboBox_osc1_am_src1->setTextWhenNoChoicesAvailable (L"(no choices)"); + m_comboBox_osc1_am_src1->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); m_comboBox_osc1_am_src1->addListener (this); - addAndMakeVisible (m_slider_osc1_am_amt0 = new Slider (L"OSC 2 AM amount 1")); - m_slider_osc1_am_amt0->setTooltip (L"OSC 2 AM amount [%]"); + addAndMakeVisible (m_slider_osc1_am_amt0 = new Slider ("OSC 2 AM amount 1")); + m_slider_osc1_am_amt0->setTooltip (TRANS("OSC 2 AM amount [%]")); m_slider_osc1_am_amt0->setRange (0, 1, 0); m_slider_osc1_am_amt0->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_osc1_am_amt0->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1380,33 +1170,33 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_osc1_am_amt0->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_osc1_am_amt0->addListener (this); - addAndMakeVisible (m_label_osc1_am_amt0 = new Label (L"OSC 2 AM amt 1", - L"value")); - m_label_osc1_am_amt0->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_osc1_am_amt0 = new Label ("OSC 2 AM amt 1", + TRANS("value"))); + m_label_osc1_am_amt0->setFont (Font (14.00f, Font::plain)); m_label_osc1_am_amt0->setJustificationType (Justification::centred); m_label_osc1_am_amt0->setEditable (true, true, false); m_label_osc1_am_amt0->setColour (TextEditor::textColourId, Colours::black); - m_label_osc1_am_amt0->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc1_am_amt0->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc1_am_amt0->addListener (this); - addAndMakeVisible (m_comboBox_osc0_am_src0 = new ComboBox (L"OSC 1 AM Source 1")); - m_comboBox_osc0_am_src0->setTooltip (L"OSC 1 AM Modulation Source 1"); + addAndMakeVisible (m_comboBox_osc0_am_src0 = new ComboBox ("OSC 1 AM Source 1")); + m_comboBox_osc0_am_src0->setTooltip (TRANS("OSC 1 AM Modulation Source 1")); m_comboBox_osc0_am_src0->setEditableText (false); m_comboBox_osc0_am_src0->setJustificationType (Justification::centred); m_comboBox_osc0_am_src0->setTextWhenNothingSelected (String::empty); - m_comboBox_osc0_am_src0->setTextWhenNoChoicesAvailable (L"(no choices)"); + m_comboBox_osc0_am_src0->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); m_comboBox_osc0_am_src0->addListener (this); - addAndMakeVisible (m_comboBox_osc0_am_src1 = new ComboBox (L"OSC 1 AM Source 2")); - m_comboBox_osc0_am_src1->setTooltip (L"OSC 1 AM Modulation Source 2"); + addAndMakeVisible (m_comboBox_osc0_am_src1 = new ComboBox ("OSC 1 AM Source 2")); + m_comboBox_osc0_am_src1->setTooltip (TRANS("OSC 1 AM Modulation Source 2")); m_comboBox_osc0_am_src1->setEditableText (false); m_comboBox_osc0_am_src1->setJustificationType (Justification::centred); m_comboBox_osc0_am_src1->setTextWhenNothingSelected (String::empty); - m_comboBox_osc0_am_src1->setTextWhenNoChoicesAvailable (L"(no choices)"); + m_comboBox_osc0_am_src1->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); m_comboBox_osc0_am_src1->addListener (this); - addAndMakeVisible (m_slider_osc0_am_amt0 = new Slider (L"OSC 1 AM amount 1")); - m_slider_osc0_am_amt0->setTooltip (L"OSC 1 AM amount [%]"); + addAndMakeVisible (m_slider_osc0_am_amt0 = new Slider ("OSC 1 AM amount 1")); + m_slider_osc0_am_amt0->setTooltip (TRANS("OSC 1 AM amount [%]")); m_slider_osc0_am_amt0->setRange (0, 1, 0); m_slider_osc0_am_amt0->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_osc0_am_amt0->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1414,17 +1204,17 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_osc0_am_amt0->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_osc0_am_amt0->addListener (this); - addAndMakeVisible (m_label_osc0_am_amt0 = new Label (L"OSC 1 AM amt 1", - L"value")); - m_label_osc0_am_amt0->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_osc0_am_amt0 = new Label ("OSC 1 AM amt 1", + TRANS("value"))); + m_label_osc0_am_amt0->setFont (Font (14.00f, Font::plain)); m_label_osc0_am_amt0->setJustificationType (Justification::centred); m_label_osc0_am_amt0->setEditable (true, true, false); m_label_osc0_am_amt0->setColour (TextEditor::textColourId, Colours::black); - m_label_osc0_am_amt0->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc0_am_amt0->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc0_am_amt0->addListener (this); - addAndMakeVisible (m_slider_env2_attack = new Slider (L"ENV 3 Attack")); - m_slider_env2_attack->setTooltip (L"ENV 3 Attack Time [ms]"); + addAndMakeVisible (m_slider_env2_attack = new Slider ("ENV 3 Attack")); + m_slider_env2_attack->setTooltip (TRANS("ENV 3 Attack Time [ms]")); m_slider_env2_attack->setRange (0, 1, 0); m_slider_env2_attack->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_env2_attack->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1432,8 +1222,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_env2_attack->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_env2_attack->addListener (this); - addAndMakeVisible (m_slider_env2_decay = new Slider (L"ENV 3 Decay")); - m_slider_env2_decay->setTooltip (L"ENV 3 Decay Time [ms]"); + addAndMakeVisible (m_slider_env2_decay = new Slider ("ENV 3 Decay")); + m_slider_env2_decay->setTooltip (TRANS("ENV 3 Decay Time [ms]")); m_slider_env2_decay->setRange (0, 1, 0); m_slider_env2_decay->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_env2_decay->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1441,8 +1231,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_env2_decay->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_env2_decay->addListener (this); - addAndMakeVisible (m_slider_env2_release = new Slider (L"ENV 3 Release")); - m_slider_env2_release->setTooltip (L"ENV 3 Release Time [ms]"); + addAndMakeVisible (m_slider_env2_release = new Slider ("ENV 3 Release")); + m_slider_env2_release->setTooltip (TRANS("ENV 3 Release Time [ms]")); m_slider_env2_release->setRange (0, 1, 0); m_slider_env2_release->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_env2_release->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1450,8 +1240,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_env2_release->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_env2_release->addListener (this); - addAndMakeVisible (m_slider_env2_sustain = new Slider (L"ENV 3 Sustain")); - m_slider_env2_sustain->setTooltip (L"ENV 3 Sustain Level [%]"); + addAndMakeVisible (m_slider_env2_sustain = new Slider ("ENV 3 Sustain")); + m_slider_env2_sustain->setTooltip (TRANS("ENV 3 Sustain Level [%]")); m_slider_env2_sustain->setRange (0, 1, 0); m_slider_env2_sustain->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_env2_sustain->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1459,44 +1249,44 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_env2_sustain->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_env2_sustain->addListener (this); - addAndMakeVisible (m_label_env2_attack = new Label (L"ENV 3 Attack", - L"value")); - m_label_env2_attack->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_env2_attack = new Label ("ENV 3 Attack", + TRANS("value"))); + m_label_env2_attack->setFont (Font (14.00f, Font::plain)); m_label_env2_attack->setJustificationType (Justification::centred); m_label_env2_attack->setEditable (true, true, false); m_label_env2_attack->setColour (TextEditor::textColourId, Colours::black); - m_label_env2_attack->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_env2_attack->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_env2_attack->addListener (this); - addAndMakeVisible (m_label_env2_decay = new Label (L"ENV 3 Decay", - L"value")); - m_label_env2_decay->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_env2_decay = new Label ("ENV 3 Decay", + TRANS("value"))); + m_label_env2_decay->setFont (Font (14.00f, Font::plain)); m_label_env2_decay->setJustificationType (Justification::centred); m_label_env2_decay->setEditable (true, true, false); m_label_env2_decay->setColour (TextEditor::textColourId, Colours::black); - m_label_env2_decay->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_env2_decay->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_env2_decay->addListener (this); - addAndMakeVisible (m_label_env2_sustain = new Label (L"ENV 3 Sustain", - L"value")); - m_label_env2_sustain->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_env2_sustain = new Label ("ENV 3 Sustain", + TRANS("value"))); + m_label_env2_sustain->setFont (Font (14.00f, Font::plain)); m_label_env2_sustain->setJustificationType (Justification::centred); m_label_env2_sustain->setEditable (true, true, false); m_label_env2_sustain->setColour (TextEditor::textColourId, Colours::black); - m_label_env2_sustain->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_env2_sustain->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_env2_sustain->addListener (this); - addAndMakeVisible (m_label_env2_release = new Label (L"ENV 3 Release", - L"value")); - m_label_env2_release->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_env2_release = new Label ("ENV 3 Release", + TRANS("value"))); + m_label_env2_release->setFont (Font (14.00f, Font::plain)); m_label_env2_release->setJustificationType (Justification::centred); m_label_env2_release->setEditable (true, true, false); m_label_env2_release->setColour (TextEditor::textColourId, Colours::black); - m_label_env2_release->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_env2_release->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_env2_release->addListener (this); - addAndMakeVisible (m_slider_env3_attack = new Slider (L"ENV 4 Attack")); - m_slider_env3_attack->setTooltip (L"ENV 4 Attack Time [ms]"); + addAndMakeVisible (m_slider_env3_attack = new Slider ("ENV 4 Attack")); + m_slider_env3_attack->setTooltip (TRANS("ENV 4 Attack Time [ms]")); m_slider_env3_attack->setRange (0, 1, 0); m_slider_env3_attack->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_env3_attack->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1504,8 +1294,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_env3_attack->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_env3_attack->addListener (this); - addAndMakeVisible (m_slider_env3_decay = new Slider (L"ENV 4 Decay")); - m_slider_env3_decay->setTooltip (L"ENV 4 Decay Time [ms]"); + addAndMakeVisible (m_slider_env3_decay = new Slider ("ENV 4 Decay")); + m_slider_env3_decay->setTooltip (TRANS("ENV 4 Decay Time [ms]")); m_slider_env3_decay->setRange (0, 1, 0); m_slider_env3_decay->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_env3_decay->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1513,8 +1303,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_env3_decay->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_env3_decay->addListener (this); - addAndMakeVisible (m_slider_env3_release = new Slider (L"ENV 4 Release")); - m_slider_env3_release->setTooltip (L"ENV 4 Release Time [ms]"); + addAndMakeVisible (m_slider_env3_release = new Slider ("ENV 4 Release")); + m_slider_env3_release->setTooltip (TRANS("ENV 4 Release Time [ms]")); m_slider_env3_release->setRange (0, 1, 0); m_slider_env3_release->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_env3_release->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1522,8 +1312,8 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_env3_release->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_env3_release->addListener (this); - addAndMakeVisible (m_slider_env3_sustain = new Slider (L"ENV 4 Sustain")); - m_slider_env3_sustain->setTooltip (L"ENV 4 Sustain Level [%]"); + addAndMakeVisible (m_slider_env3_sustain = new Slider ("ENV 4 Sustain")); + m_slider_env3_sustain->setTooltip (TRANS("ENV 4 Sustain Level [%]")); m_slider_env3_sustain->setRange (0, 1, 0); m_slider_env3_sustain->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_env3_sustain->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1531,52 +1321,52 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_env3_sustain->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_env3_sustain->addListener (this); - addAndMakeVisible (m_label_env3_attack = new Label (L"ENV 4 Attack", - L"value")); - m_label_env3_attack->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_env3_attack = new Label ("ENV 4 Attack", + TRANS("value"))); + m_label_env3_attack->setFont (Font (14.00f, Font::plain)); m_label_env3_attack->setJustificationType (Justification::centred); m_label_env3_attack->setEditable (true, true, false); m_label_env3_attack->setColour (TextEditor::textColourId, Colours::black); - m_label_env3_attack->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_env3_attack->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_env3_attack->addListener (this); - addAndMakeVisible (m_label_env3_decay = new Label (L"ENV 4 Decay", - L"value")); - m_label_env3_decay->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_env3_decay = new Label ("ENV 4 Decay", + TRANS("value"))); + m_label_env3_decay->setFont (Font (14.00f, Font::plain)); m_label_env3_decay->setJustificationType (Justification::centred); m_label_env3_decay->setEditable (true, true, false); m_label_env3_decay->setColour (TextEditor::textColourId, Colours::black); - m_label_env3_decay->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_env3_decay->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_env3_decay->addListener (this); - addAndMakeVisible (m_label_env3_sustain = new Label (L"ENV 4 Sustain", - L"value")); - m_label_env3_sustain->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_env3_sustain = new Label ("ENV 4 Sustain", + TRANS("value"))); + m_label_env3_sustain->setFont (Font (14.00f, Font::plain)); m_label_env3_sustain->setJustificationType (Justification::centred); m_label_env3_sustain->setEditable (true, true, false); m_label_env3_sustain->setColour (TextEditor::textColourId, Colours::black); - m_label_env3_sustain->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_env3_sustain->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_env3_sustain->addListener (this); - addAndMakeVisible (m_label_env3_release = new Label (L"ENV 4 Release", - L"value")); - m_label_env3_release->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_env3_release = new Label ("ENV 4 Release", + TRANS("value"))); + m_label_env3_release->setFont (Font (14.00f, Font::plain)); m_label_env3_release->setJustificationType (Justification::centred); m_label_env3_release->setEditable (true, true, false); m_label_env3_release->setColour (TextEditor::textColourId, Colours::black); - m_label_env3_release->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_env3_release->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_env3_release->addListener (this); - addAndMakeVisible (m_comboBox_vcf_f_src1 = new ComboBox (L"VCF Cutoff Source 2")); - m_comboBox_vcf_f_src1->setTooltip (L"VCF Cutoff Modulation Source 2"); + addAndMakeVisible (m_comboBox_vcf_f_src1 = new ComboBox ("VCF Cutoff Source 2")); + m_comboBox_vcf_f_src1->setTooltip (TRANS("VCF Cutoff Modulation Source 2")); m_comboBox_vcf_f_src1->setEditableText (false); m_comboBox_vcf_f_src1->setJustificationType (Justification::centred); m_comboBox_vcf_f_src1->setTextWhenNothingSelected (String::empty); - m_comboBox_vcf_f_src1->setTextWhenNoChoicesAvailable (L"(no choices)"); + m_comboBox_vcf_f_src1->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); m_comboBox_vcf_f_src1->addListener (this); - addAndMakeVisible (m_slider_vcf_q_amt0 = new Slider (L"VCF Resonance amount 1")); - m_slider_vcf_q_amt0->setTooltip (L"VCF Resonance Amount [%]"); + addAndMakeVisible (m_slider_vcf_q_amt0 = new Slider ("VCF Resonance amount 1")); + m_slider_vcf_q_amt0->setTooltip (TRANS("VCF Resonance Amount [%]")); m_slider_vcf_q_amt0->setRange (0, 1, 0); m_slider_vcf_q_amt0->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_vcf_q_amt0->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1584,70 +1374,70 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_vcf_q_amt0->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_vcf_q_amt0->addListener (this); - addAndMakeVisible (m_label_vcf_q_amt0 = new Label (L"VCF Resonance amount 1", - L"value")); - m_label_vcf_q_amt0->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_vcf_q_amt0 = new Label ("VCF Resonance amount 1", + TRANS("value"))); + m_label_vcf_q_amt0->setFont (Font (14.00f, Font::plain)); m_label_vcf_q_amt0->setJustificationType (Justification::centred); m_label_vcf_q_amt0->setEditable (true, true, false); m_label_vcf_q_amt0->setColour (TextEditor::textColourId, Colours::black); - m_label_vcf_q_amt0->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_vcf_q_amt0->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_vcf_q_amt0->addListener (this); - addAndMakeVisible (m_comboBox_vcf_q_src0 = new ComboBox (L"VCF Resonance Source 1")); - m_comboBox_vcf_q_src0->setTooltip (L"VCF Resonance Modulation Source 1"); + addAndMakeVisible (m_comboBox_vcf_q_src0 = new ComboBox ("VCF Resonance Source 1")); + m_comboBox_vcf_q_src0->setTooltip (TRANS("VCF Resonance Modulation Source 1")); m_comboBox_vcf_q_src0->setEditableText (false); m_comboBox_vcf_q_src0->setJustificationType (Justification::centred); m_comboBox_vcf_q_src0->setTextWhenNothingSelected (String::empty); - m_comboBox_vcf_q_src0->setTextWhenNoChoicesAvailable (L"(no choices)"); + m_comboBox_vcf_q_src0->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); m_comboBox_vcf_q_src0->addListener (this); - addAndMakeVisible (m_comboBox_vcf_q_src1 = new ComboBox (L"VCF Resonance Source 2")); - m_comboBox_vcf_q_src1->setTooltip (L"VCF Resonance Modulation Source 2"); + addAndMakeVisible (m_comboBox_vcf_q_src1 = new ComboBox ("VCF Resonance Source 2")); + m_comboBox_vcf_q_src1->setTooltip (TRANS("VCF Resonance Modulation Source 2")); m_comboBox_vcf_q_src1->setEditableText (false); m_comboBox_vcf_q_src1->setJustificationType (Justification::centred); m_comboBox_vcf_q_src1->setTextWhenNothingSelected (String::empty); - m_comboBox_vcf_q_src1->setTextWhenNoChoicesAvailable (L"(no choices)"); + m_comboBox_vcf_q_src1->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); m_comboBox_vcf_q_src1->addListener (this); - addAndMakeVisible (m_label_humanize_var_vco = new Label (L"Humanize Variance VCO", - L"value")); - m_label_humanize_var_vco->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_humanize_var_vco = new Label ("Humanize Variance VCO", + TRANS("value"))); + m_label_humanize_var_vco->setFont (Font (14.00f, Font::plain)); m_label_humanize_var_vco->setJustificationType (Justification::centred); m_label_humanize_var_vco->setEditable (true, true, false); m_label_humanize_var_vco->setColour (TextEditor::textColourId, Colours::black); - m_label_humanize_var_vco->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_humanize_var_vco->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_humanize_var_vco->addListener (this); - addAndMakeVisible (m_label_humanize_var_vcf = new Label (L"Humanize Variance VCF", - L"value")); - m_label_humanize_var_vcf->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_humanize_var_vcf = new Label ("Humanize Variance VCF", + TRANS("value"))); + m_label_humanize_var_vcf->setFont (Font (14.00f, Font::plain)); m_label_humanize_var_vcf->setJustificationType (Justification::centred); m_label_humanize_var_vcf->setEditable (true, true, false); m_label_humanize_var_vcf->setColour (TextEditor::textColourId, Colours::black); - m_label_humanize_var_vcf->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_humanize_var_vcf->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_humanize_var_vcf->addListener (this); - addAndMakeVisible (m_label_humanize_var_env = new Label (L"Humanize Variance ENV", - L"value")); - m_label_humanize_var_env->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_humanize_var_env = new Label ("Humanize Variance ENV", + TRANS("value"))); + m_label_humanize_var_env->setFont (Font (14.00f, Font::plain)); m_label_humanize_var_env->setJustificationType (Justification::centred); m_label_humanize_var_env->setEditable (true, true, false); m_label_humanize_var_env->setColour (TextEditor::textColourId, Colours::black); - m_label_humanize_var_env->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_humanize_var_env->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_humanize_var_env->addListener (this); addAndMakeVisible (m_btn_limiter_led = new ButtonLED (L"Limiter 1 On/Off")); - addAndMakeVisible (m_label_limiter_led = new Label (L"Limiter LED Text", - L"Limiting")); - m_label_limiter_led->setFont (Font (L"Arial", 12.0000f, Font::plain)); + addAndMakeVisible (m_label_limiter_led = new Label ("Limiter LED Text", + TRANS("Limiting"))); + m_label_limiter_led->setFont (Font ("Arial", 12.00f, Font::plain)); m_label_limiter_led->setJustificationType (Justification::centredLeft); m_label_limiter_led->setEditable (false, false, false); m_label_limiter_led->setColour (Label::textColourId, Colours::white); m_label_limiter_led->setColour (TextEditor::textColourId, Colours::black); - m_label_limiter_led->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_limiter_led->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); - addAndMakeVisible (m_slider_lfo0_delay = new Slider (L"LFO 1 Delay")); - m_slider_lfo0_delay->setTooltip (L"LFO 1 Delay [ms]. Use with Sync = \'Restart\'."); + addAndMakeVisible (m_slider_lfo0_delay = new Slider ("LFO 1 Delay")); + m_slider_lfo0_delay->setTooltip (TRANS("LFO 1 Delay [ms]. Use with Sync = \'Restart\'.")); m_slider_lfo0_delay->setRange (0, 1, 0); m_slider_lfo0_delay->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_lfo0_delay->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1655,19 +1445,19 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_lfo0_delay->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_lfo0_delay->addListener (this); - addAndMakeVisible (m_label_lfo0_delay = new Label (L"LFO 1 Delay", - L"value")); - m_label_lfo0_delay->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_lfo0_delay = new Label ("LFO 1 Delay", + TRANS("value"))); + m_label_lfo0_delay->setFont (Font (14.00f, Font::plain)); m_label_lfo0_delay->setJustificationType (Justification::centred); m_label_lfo0_delay->setEditable (true, true, false); - m_label_lfo0_delay->setColour (Label::outlineColourId, Colour (0x0)); + m_label_lfo0_delay->setColour (Label::outlineColourId, Colour (0x00000000)); m_label_lfo0_delay->setColour (TextEditor::textColourId, Colours::azure); - m_label_lfo0_delay->setColour (TextEditor::backgroundColourId, Colour (0x0)); - m_label_lfo0_delay->setColour (TextEditor::highlightColourId, Colour (0xf7f7f7)); + m_label_lfo0_delay->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); + m_label_lfo0_delay->setColour (TextEditor::highlightColourId, Colour (0x00f7f7f7)); m_label_lfo0_delay->addListener (this); - addAndMakeVisible (m_slider_lfo0_attack = new Slider (L"LFO 1 Attack")); - m_slider_lfo0_attack->setTooltip (L"LFO 1 Attack Time [ms]. Use with Sync = \'Restart\'."); + addAndMakeVisible (m_slider_lfo0_attack = new Slider ("LFO 1 Attack")); + m_slider_lfo0_attack->setTooltip (TRANS("LFO 1 Attack Time [ms]. Use with Sync = \'Restart\'.")); m_slider_lfo0_attack->setRange (0, 1, 0); m_slider_lfo0_attack->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_lfo0_attack->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1675,19 +1465,19 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_lfo0_attack->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_lfo0_attack->addListener (this); - addAndMakeVisible (m_label_lfo0_attack = new Label (L"LFO 1 Attack", - L"value")); - m_label_lfo0_attack->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_lfo0_attack = new Label ("LFO 1 Attack", + TRANS("value"))); + m_label_lfo0_attack->setFont (Font (14.00f, Font::plain)); m_label_lfo0_attack->setJustificationType (Justification::centred); m_label_lfo0_attack->setEditable (true, true, false); - m_label_lfo0_attack->setColour (Label::outlineColourId, Colour (0x0)); + m_label_lfo0_attack->setColour (Label::outlineColourId, Colour (0x00000000)); m_label_lfo0_attack->setColour (TextEditor::textColourId, Colours::azure); - m_label_lfo0_attack->setColour (TextEditor::backgroundColourId, Colour (0x0)); - m_label_lfo0_attack->setColour (TextEditor::highlightColourId, Colour (0xf7f7f7)); + m_label_lfo0_attack->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); + m_label_lfo0_attack->setColour (TextEditor::highlightColourId, Colour (0x00f7f7f7)); m_label_lfo0_attack->addListener (this); - addAndMakeVisible (m_slider_lfo1_delay = new Slider (L"LFO 2 Delay")); - m_slider_lfo1_delay->setTooltip (L"LFO 2 Delay [ms]. Use with Sync = \'Restart\'."); + addAndMakeVisible (m_slider_lfo1_delay = new Slider ("LFO 2 Delay")); + m_slider_lfo1_delay->setTooltip (TRANS("LFO 2 Delay [ms]. Use with Sync = \'Restart\'.")); m_slider_lfo1_delay->setRange (0, 1, 0); m_slider_lfo1_delay->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_lfo1_delay->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1695,19 +1485,19 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_lfo1_delay->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_lfo1_delay->addListener (this); - addAndMakeVisible (m_label_lfo1_delay = new Label (L"LFO 2 Delay", - L"value")); - m_label_lfo1_delay->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_lfo1_delay = new Label ("LFO 2 Delay", + TRANS("value"))); + m_label_lfo1_delay->setFont (Font (14.00f, Font::plain)); m_label_lfo1_delay->setJustificationType (Justification::centred); m_label_lfo1_delay->setEditable (true, true, false); - m_label_lfo1_delay->setColour (Label::outlineColourId, Colour (0x0)); + m_label_lfo1_delay->setColour (Label::outlineColourId, Colour (0x00000000)); m_label_lfo1_delay->setColour (TextEditor::textColourId, Colours::azure); - m_label_lfo1_delay->setColour (TextEditor::backgroundColourId, Colour (0x0)); - m_label_lfo1_delay->setColour (TextEditor::highlightColourId, Colour (0xf7f7f7)); + m_label_lfo1_delay->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); + m_label_lfo1_delay->setColour (TextEditor::highlightColourId, Colour (0x00f7f7f7)); m_label_lfo1_delay->addListener (this); - addAndMakeVisible (m_slider_lfo1_attack = new Slider (L"LFO 2 Attack")); - m_slider_lfo1_attack->setTooltip (L"LFO 2 Attack Time [ms]. Use with Sync = \'Restart\'."); + addAndMakeVisible (m_slider_lfo1_attack = new Slider ("LFO 2 Attack")); + m_slider_lfo1_attack->setTooltip (TRANS("LFO 2 Attack Time [ms]. Use with Sync = \'Restart\'.")); m_slider_lfo1_attack->setRange (0, 1, 0); m_slider_lfo1_attack->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_lfo1_attack->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1715,19 +1505,19 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_lfo1_attack->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_lfo1_attack->addListener (this); - addAndMakeVisible (m_label_lfo1_attack = new Label (L"LFO 2 Attack", - L"value")); - m_label_lfo1_attack->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_lfo1_attack = new Label ("LFO 2 Attack", + TRANS("value"))); + m_label_lfo1_attack->setFont (Font (14.00f, Font::plain)); m_label_lfo1_attack->setJustificationType (Justification::centred); m_label_lfo1_attack->setEditable (true, true, false); - m_label_lfo1_attack->setColour (Label::outlineColourId, Colour (0x0)); + m_label_lfo1_attack->setColour (Label::outlineColourId, Colour (0x00000000)); m_label_lfo1_attack->setColour (TextEditor::textColourId, Colours::azure); - m_label_lfo1_attack->setColour (TextEditor::backgroundColourId, Colour (0x0)); - m_label_lfo1_attack->setColour (TextEditor::highlightColourId, Colour (0xf7f7f7)); + m_label_lfo1_attack->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); + m_label_lfo1_attack->setColour (TextEditor::highlightColourId, Colour (0x00f7f7f7)); m_label_lfo1_attack->addListener (this); - addAndMakeVisible (m_slider_lfo2_delay = new Slider (L"LFO 3 Delay")); - m_slider_lfo2_delay->setTooltip (L"LFO 3 Delay [ms]. Use with Sync = \'Restart\'."); + addAndMakeVisible (m_slider_lfo2_delay = new Slider ("LFO 3 Delay")); + m_slider_lfo2_delay->setTooltip (TRANS("LFO 3 Delay [ms]. Use with Sync = \'Restart\'.")); m_slider_lfo2_delay->setRange (0, 1, 0); m_slider_lfo2_delay->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_lfo2_delay->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1735,19 +1525,19 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_lfo2_delay->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_lfo2_delay->addListener (this); - addAndMakeVisible (m_label_lfo2_delay = new Label (L"LFO 3 Delay", - L"value")); - m_label_lfo2_delay->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_lfo2_delay = new Label ("LFO 3 Delay", + TRANS("value"))); + m_label_lfo2_delay->setFont (Font (14.00f, Font::plain)); m_label_lfo2_delay->setJustificationType (Justification::centred); m_label_lfo2_delay->setEditable (true, true, false); - m_label_lfo2_delay->setColour (Label::outlineColourId, Colour (0x0)); + m_label_lfo2_delay->setColour (Label::outlineColourId, Colour (0x00000000)); m_label_lfo2_delay->setColour (TextEditor::textColourId, Colours::azure); - m_label_lfo2_delay->setColour (TextEditor::backgroundColourId, Colour (0x0)); - m_label_lfo2_delay->setColour (TextEditor::highlightColourId, Colour (0xf7f7f7)); + m_label_lfo2_delay->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); + m_label_lfo2_delay->setColour (TextEditor::highlightColourId, Colour (0x00f7f7f7)); m_label_lfo2_delay->addListener (this); - addAndMakeVisible (m_slider_lfo2_attack = new Slider (L"LFO 3 Attack")); - m_slider_lfo2_attack->setTooltip (L"LFO 3 Attack Time [ms]. Use with Sync = \'Restart\'."); + addAndMakeVisible (m_slider_lfo2_attack = new Slider ("LFO 3 Attack")); + m_slider_lfo2_attack->setTooltip (TRANS("LFO 3 Attack Time [ms]. Use with Sync = \'Restart\'.")); m_slider_lfo2_attack->setRange (0, 1, 0); m_slider_lfo2_attack->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_lfo2_attack->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1755,19 +1545,19 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_lfo2_attack->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_lfo2_attack->addListener (this); - addAndMakeVisible (m_label_lfo2_attack = new Label (L"LFO 3 Attack", - L"value")); - m_label_lfo2_attack->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_lfo2_attack = new Label ("LFO 3 Attack", + TRANS("value"))); + m_label_lfo2_attack->setFont (Font (14.00f, Font::plain)); m_label_lfo2_attack->setJustificationType (Justification::centred); m_label_lfo2_attack->setEditable (true, true, false); - m_label_lfo2_attack->setColour (Label::outlineColourId, Colour (0x0)); + m_label_lfo2_attack->setColour (Label::outlineColourId, Colour (0x00000000)); m_label_lfo2_attack->setColour (TextEditor::textColourId, Colours::azure); - m_label_lfo2_attack->setColour (TextEditor::backgroundColourId, Colour (0x0)); - m_label_lfo2_attack->setColour (TextEditor::highlightColourId, Colour (0xf7f7f7)); + m_label_lfo2_attack->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); + m_label_lfo2_attack->setColour (TextEditor::highlightColourId, Colour (0x00f7f7f7)); m_label_lfo2_attack->addListener (this); - addAndMakeVisible (m_slider_lfo3_delay = new Slider (L"LFO 4 Delay")); - m_slider_lfo3_delay->setTooltip (L"LFO 4 Delay [ms]. Use with Sync = \'Restart\'."); + addAndMakeVisible (m_slider_lfo3_delay = new Slider ("LFO 4 Delay")); + m_slider_lfo3_delay->setTooltip (TRANS("LFO 4 Delay [ms]. Use with Sync = \'Restart\'.")); m_slider_lfo3_delay->setRange (0, 1, 0); m_slider_lfo3_delay->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_lfo3_delay->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1775,19 +1565,19 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_lfo3_delay->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_lfo3_delay->addListener (this); - addAndMakeVisible (m_label_lfo3_delay = new Label (L"LFO 4 Delay", - L"value")); - m_label_lfo3_delay->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_lfo3_delay = new Label ("LFO 4 Delay", + TRANS("value"))); + m_label_lfo3_delay->setFont (Font (14.00f, Font::plain)); m_label_lfo3_delay->setJustificationType (Justification::centred); m_label_lfo3_delay->setEditable (true, true, false); - m_label_lfo3_delay->setColour (Label::outlineColourId, Colour (0x0)); + m_label_lfo3_delay->setColour (Label::outlineColourId, Colour (0x00000000)); m_label_lfo3_delay->setColour (TextEditor::textColourId, Colours::azure); - m_label_lfo3_delay->setColour (TextEditor::backgroundColourId, Colour (0x0)); - m_label_lfo3_delay->setColour (TextEditor::highlightColourId, Colour (0xf7f7f7)); + m_label_lfo3_delay->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); + m_label_lfo3_delay->setColour (TextEditor::highlightColourId, Colour (0x00f7f7f7)); m_label_lfo3_delay->addListener (this); - addAndMakeVisible (m_slider_lfo3_attack = new Slider (L"LFO 4 Attack")); - m_slider_lfo3_attack->setTooltip (L"LFO 4 Attack Time [ms]. Use with Sync = \'Restart\'."); + addAndMakeVisible (m_slider_lfo3_attack = new Slider ("LFO 4 Attack")); + m_slider_lfo3_attack->setTooltip (TRANS("LFO 4 Attack Time [ms]. Use with Sync = \'Restart\'.")); m_slider_lfo3_attack->setRange (0, 1, 0); m_slider_lfo3_attack->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_lfo3_attack->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1795,29 +1585,29 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_lfo3_attack->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_lfo3_attack->addListener (this); - addAndMakeVisible (m_label_lfo3_attack = new Label (L"LFO 4 Attack", - L"value")); - m_label_lfo3_attack->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_lfo3_attack = new Label ("LFO 4 Attack", + TRANS("value"))); + m_label_lfo3_attack->setFont (Font (14.00f, Font::plain)); m_label_lfo3_attack->setJustificationType (Justification::centred); m_label_lfo3_attack->setEditable (true, true, false); - m_label_lfo3_attack->setColour (Label::outlineColourId, Colour (0x0)); + m_label_lfo3_attack->setColour (Label::outlineColourId, Colour (0x00000000)); m_label_lfo3_attack->setColour (TextEditor::textColourId, Colours::azure); - m_label_lfo3_attack->setColour (TextEditor::backgroundColourId, Colour (0x0)); - m_label_lfo3_attack->setColour (TextEditor::highlightColourId, Colour (0xf7f7f7)); + m_label_lfo3_attack->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); + m_label_lfo3_attack->setColour (TextEditor::highlightColourId, Colour (0x00f7f7f7)); m_label_lfo3_attack->addListener (this); - addAndMakeVisible (m_button_lfo0_restart_enable = new ToggleButton (L"Restart LFO 1 Enable")); - m_button_lfo0_restart_enable->setTooltip (L"Use \'Restart\' to reset LFO phase on each note trigger. Use \'Free\' to use a free running LFO."); + addAndMakeVisible (m_button_lfo0_restart_enable = new ToggleButton ("Restart LFO 1 Enable")); + m_button_lfo0_restart_enable->setTooltip (TRANS("Use \'Restart\' to reset LFO phase on each note trigger. Use \'Free\' to use a free running LFO.")); m_button_lfo0_restart_enable->setButtonText (String::empty); m_button_lfo0_restart_enable->setColour (ToggleButton::textColourId, Colours::white); - addAndMakeVisible (m_button_lfo0_individual_enable = new ToggleButton (L"LFO 1 Global Enable")); - m_button_lfo0_individual_enable->setTooltip (L"Set this to \'Global\' to use the LFO for all voices. Set this to \'Individual\' to make voices have their own LFO."); + addAndMakeVisible (m_button_lfo0_individual_enable = new ToggleButton ("LFO 1 Global Enable")); + m_button_lfo0_individual_enable->setTooltip (TRANS("Set this to \'Global\' to use the LFO for all voices. Set this to \'Individual\' to make voices have their own LFO.")); m_button_lfo0_individual_enable->setButtonText (String::empty); m_button_lfo0_individual_enable->setColour (ToggleButton::textColourId, Colours::white); - addAndMakeVisible (m_slider_lfo0_symmetry = new Slider (L"LFO 1 Symmetry")); - m_slider_lfo0_symmetry->setTooltip (L"LFO 1 Symmetry [%]"); + addAndMakeVisible (m_slider_lfo0_symmetry = new Slider ("LFO 1 Symmetry")); + m_slider_lfo0_symmetry->setTooltip (TRANS("LFO 1 Symmetry [%]")); m_slider_lfo0_symmetry->setRange (0, 1, 0); m_slider_lfo0_symmetry->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_lfo0_symmetry->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1825,19 +1615,19 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_lfo0_symmetry->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_lfo0_symmetry->addListener (this); - addAndMakeVisible (m_label_lfo0_symmetry = new Label (L"LFO 1 Symmetry", - L"value")); - m_label_lfo0_symmetry->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_lfo0_symmetry = new Label ("LFO 1 Symmetry", + TRANS("value"))); + m_label_lfo0_symmetry->setFont (Font (14.00f, Font::plain)); m_label_lfo0_symmetry->setJustificationType (Justification::centred); m_label_lfo0_symmetry->setEditable (true, true, false); - m_label_lfo0_symmetry->setColour (Label::outlineColourId, Colour (0x0)); + m_label_lfo0_symmetry->setColour (Label::outlineColourId, Colour (0x00000000)); m_label_lfo0_symmetry->setColour (TextEditor::textColourId, Colours::azure); - m_label_lfo0_symmetry->setColour (TextEditor::backgroundColourId, Colour (0x0)); - m_label_lfo0_symmetry->setColour (TextEditor::highlightColourId, Colour (0xf7f7f7)); + m_label_lfo0_symmetry->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); + m_label_lfo0_symmetry->setColour (TextEditor::highlightColourId, Colour (0x00f7f7f7)); m_label_lfo0_symmetry->addListener (this); - addAndMakeVisible (m_slider_lfo1_symmetry = new Slider (L"LFO 2 Symmetry")); - m_slider_lfo1_symmetry->setTooltip (L"LFO 2 Symmetry [%]"); + addAndMakeVisible (m_slider_lfo1_symmetry = new Slider ("LFO 2 Symmetry")); + m_slider_lfo1_symmetry->setTooltip (TRANS("LFO 2 Symmetry [%]")); m_slider_lfo1_symmetry->setRange (0, 1, 0); m_slider_lfo1_symmetry->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_lfo1_symmetry->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1845,39 +1635,39 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_lfo1_symmetry->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_lfo1_symmetry->addListener (this); - addAndMakeVisible (m_label_lfo1_symmetry = new Label (L"LFO 2 Symmetry", - L"value")); - m_label_lfo1_symmetry->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_lfo1_symmetry = new Label ("LFO 2 Symmetry", + TRANS("value"))); + m_label_lfo1_symmetry->setFont (Font (14.00f, Font::plain)); m_label_lfo1_symmetry->setJustificationType (Justification::centred); m_label_lfo1_symmetry->setEditable (true, true, false); - m_label_lfo1_symmetry->setColour (Label::outlineColourId, Colour (0x0)); + m_label_lfo1_symmetry->setColour (Label::outlineColourId, Colour (0x00000000)); m_label_lfo1_symmetry->setColour (TextEditor::textColourId, Colours::azure); - m_label_lfo1_symmetry->setColour (TextEditor::backgroundColourId, Colour (0x0)); - m_label_lfo1_symmetry->setColour (TextEditor::highlightColourId, Colour (0xf7f7f7)); + m_label_lfo1_symmetry->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); + m_label_lfo1_symmetry->setColour (TextEditor::highlightColourId, Colour (0x00f7f7f7)); m_label_lfo1_symmetry->addListener (this); - addAndMakeVisible (m_button_lfo1_restart_enable = new ToggleButton (L"Restart LFO 2 Enable")); - m_button_lfo1_restart_enable->setTooltip (L"Use \'Restart\' to reset LFO phase on each note trigger. Use \'Free\' to use a free running LFO."); + addAndMakeVisible (m_button_lfo1_restart_enable = new ToggleButton ("Restart LFO 2 Enable")); + m_button_lfo1_restart_enable->setTooltip (TRANS("Use \'Restart\' to reset LFO phase on each note trigger. Use \'Free\' to use a free running LFO.")); m_button_lfo1_restart_enable->setButtonText (String::empty); m_button_lfo1_restart_enable->setColour (ToggleButton::textColourId, Colours::white); - addAndMakeVisible (m_button_lfo1_individual_enable = new ToggleButton (L"LFO 2 Global Enable")); - m_button_lfo1_individual_enable->setTooltip (L"Set this to \'Global\' to use the LFO for all voices. Set this to \'Individual\' to make voices have their own LFO."); + addAndMakeVisible (m_button_lfo1_individual_enable = new ToggleButton ("LFO 2 Global Enable")); + m_button_lfo1_individual_enable->setTooltip (TRANS("Set this to \'Global\' to use the LFO for all voices. Set this to \'Individual\' to make voices have their own LFO.")); m_button_lfo1_individual_enable->setButtonText (String::empty); m_button_lfo1_individual_enable->setColour (ToggleButton::textColourId, Colours::white); - addAndMakeVisible (m_button_lfo2_restart_enable = new ToggleButton (L"Restart LFO 3 Enable")); - m_button_lfo2_restart_enable->setTooltip (L"Use \'Restart\' to reset LFO phase on each note trigger. Use \'Free\' to use a free running LFO."); + addAndMakeVisible (m_button_lfo2_restart_enable = new ToggleButton ("Restart LFO 3 Enable")); + m_button_lfo2_restart_enable->setTooltip (TRANS("Use \'Restart\' to reset LFO phase on each note trigger. Use \'Free\' to use a free running LFO.")); m_button_lfo2_restart_enable->setButtonText (String::empty); m_button_lfo2_restart_enable->setColour (ToggleButton::textColourId, Colours::white); - addAndMakeVisible (m_button_lfo2_individual_enable = new ToggleButton (L"LFO 3 Global Enable")); - m_button_lfo2_individual_enable->setTooltip (L"Set this to \'Global\' to use the LFO for all voices. Set this to \'Individual\' to make voices have their own LFO."); + addAndMakeVisible (m_button_lfo2_individual_enable = new ToggleButton ("LFO 3 Global Enable")); + m_button_lfo2_individual_enable->setTooltip (TRANS("Set this to \'Global\' to use the LFO for all voices. Set this to \'Individual\' to make voices have their own LFO.")); m_button_lfo2_individual_enable->setButtonText (String::empty); m_button_lfo2_individual_enable->setColour (ToggleButton::textColourId, Colours::white); - addAndMakeVisible (m_slider_lfo2_symmetry = new Slider (L"LFO 3 Symmetry")); - m_slider_lfo2_symmetry->setTooltip (L"LFO 3 Symmetry [%]"); + addAndMakeVisible (m_slider_lfo2_symmetry = new Slider ("LFO 3 Symmetry")); + m_slider_lfo2_symmetry->setTooltip (TRANS("LFO 3 Symmetry [%]")); m_slider_lfo2_symmetry->setRange (0, 1, 0); m_slider_lfo2_symmetry->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_lfo2_symmetry->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1885,19 +1675,19 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_lfo2_symmetry->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_lfo2_symmetry->addListener (this); - addAndMakeVisible (m_label_lfo2_symmetry = new Label (L"LFO 3 Symmetry", - L"value")); - m_label_lfo2_symmetry->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_lfo2_symmetry = new Label ("LFO 3 Symmetry", + TRANS("value"))); + m_label_lfo2_symmetry->setFont (Font (14.00f, Font::plain)); m_label_lfo2_symmetry->setJustificationType (Justification::centred); m_label_lfo2_symmetry->setEditable (true, true, false); - m_label_lfo2_symmetry->setColour (Label::outlineColourId, Colour (0x0)); + m_label_lfo2_symmetry->setColour (Label::outlineColourId, Colour (0x00000000)); m_label_lfo2_symmetry->setColour (TextEditor::textColourId, Colours::azure); - m_label_lfo2_symmetry->setColour (TextEditor::backgroundColourId, Colour (0x0)); - m_label_lfo2_symmetry->setColour (TextEditor::highlightColourId, Colour (0xf7f7f7)); + m_label_lfo2_symmetry->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); + m_label_lfo2_symmetry->setColour (TextEditor::highlightColourId, Colour (0x00f7f7f7)); m_label_lfo2_symmetry->addListener (this); - addAndMakeVisible (m_slider_lfo3_symmetry = new Slider (L"LFO 4 Symmetry")); - m_slider_lfo3_symmetry->setTooltip (L"LFO 4 Symmetry [%]"); + addAndMakeVisible (m_slider_lfo3_symmetry = new Slider ("LFO 4 Symmetry")); + m_slider_lfo3_symmetry->setTooltip (TRANS("LFO 4 Symmetry [%]")); m_slider_lfo3_symmetry->setRange (0, 1, 0); m_slider_lfo3_symmetry->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_lfo3_symmetry->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1905,29 +1695,29 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_lfo3_symmetry->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_lfo3_symmetry->addListener (this); - addAndMakeVisible (m_label_lfo3_symmetry = new Label (L"LFO 4 Symmetry", - L"value")); - m_label_lfo3_symmetry->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_lfo3_symmetry = new Label ("LFO 4 Symmetry", + TRANS("value"))); + m_label_lfo3_symmetry->setFont (Font (14.00f, Font::plain)); m_label_lfo3_symmetry->setJustificationType (Justification::centred); m_label_lfo3_symmetry->setEditable (true, true, false); - m_label_lfo3_symmetry->setColour (Label::outlineColourId, Colour (0x0)); + m_label_lfo3_symmetry->setColour (Label::outlineColourId, Colour (0x00000000)); m_label_lfo3_symmetry->setColour (TextEditor::textColourId, Colours::azure); - m_label_lfo3_symmetry->setColour (TextEditor::backgroundColourId, Colour (0x0)); - m_label_lfo3_symmetry->setColour (TextEditor::highlightColourId, Colour (0xf7f7f7)); + m_label_lfo3_symmetry->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); + m_label_lfo3_symmetry->setColour (TextEditor::highlightColourId, Colour (0x00f7f7f7)); m_label_lfo3_symmetry->addListener (this); - addAndMakeVisible (m_button_lfo3_restart_enable = new ToggleButton (L"Restart LFO 4 Enable")); - m_button_lfo3_restart_enable->setTooltip (L"Use \'Restart\' to reset LFO phase on each note trigger. Use \'Free\' to use a free running LFO."); + addAndMakeVisible (m_button_lfo3_restart_enable = new ToggleButton ("Restart LFO 4 Enable")); + m_button_lfo3_restart_enable->setTooltip (TRANS("Use \'Restart\' to reset LFO phase on each note trigger. Use \'Free\' to use a free running LFO.")); m_button_lfo3_restart_enable->setButtonText (String::empty); m_button_lfo3_restart_enable->setColour (ToggleButton::textColourId, Colours::white); - addAndMakeVisible (m_button_lfo3_individual_enable = new ToggleButton (L"LFO 4 Global Enable")); - m_button_lfo3_individual_enable->setTooltip (L"Set this to \'Global\' to use the LFO for all voices. Set this to \'Individual\' to make voices have their own LFO."); + addAndMakeVisible (m_button_lfo3_individual_enable = new ToggleButton ("LFO 4 Global Enable")); + m_button_lfo3_individual_enable->setTooltip (TRANS("Set this to \'Global\' to use the LFO for all voices. Set this to \'Individual\' to make voices have their own LFO.")); m_button_lfo3_individual_enable->setButtonText (String::empty); m_button_lfo3_individual_enable->setColour (ToggleButton::textColourId, Colours::white); - addAndMakeVisible (m_slider_osc0_fm_amt1 = new Slider (L"OSC 1 FM amount 2")); - m_slider_osc0_fm_amt1->setTooltip (L"OSC 1 FM amount [%]"); + addAndMakeVisible (m_slider_osc0_fm_amt1 = new Slider ("OSC 1 FM amount 2")); + m_slider_osc0_fm_amt1->setTooltip (TRANS("OSC 1 FM amount [%]")); m_slider_osc0_fm_amt1->setRange (0, 1, 0); m_slider_osc0_fm_amt1->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_osc0_fm_amt1->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1935,17 +1725,17 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_osc0_fm_amt1->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_osc0_fm_amt1->addListener (this); - addAndMakeVisible (m_label_osc0_fm_amt1 = new Label (L"OSC 1 FM amt 2", - L"value")); - m_label_osc0_fm_amt1->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_osc0_fm_amt1 = new Label ("OSC 1 FM amt 2", + TRANS("value"))); + m_label_osc0_fm_amt1->setFont (Font (14.00f, Font::plain)); m_label_osc0_fm_amt1->setJustificationType (Justification::centred); m_label_osc0_fm_amt1->setEditable (true, true, false); m_label_osc0_fm_amt1->setColour (TextEditor::textColourId, Colours::black); - m_label_osc0_fm_amt1->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc0_fm_amt1->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc0_fm_amt1->addListener (this); - addAndMakeVisible (m_slider_osc0_pwm_amt1 = new Slider (L"OSC 1 PWM amount 2")); - m_slider_osc0_pwm_amt1->setTooltip (L"OSC 1 PWM Amount [%]"); + addAndMakeVisible (m_slider_osc0_pwm_amt1 = new Slider ("OSC 1 PWM amount 2")); + m_slider_osc0_pwm_amt1->setTooltip (TRANS("OSC 1 PWM Amount [%]")); m_slider_osc0_pwm_amt1->setRange (0, 1, 0); m_slider_osc0_pwm_amt1->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_osc0_pwm_amt1->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1953,17 +1743,17 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_osc0_pwm_amt1->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_osc0_pwm_amt1->addListener (this); - addAndMakeVisible (m_label_osc0_pwm_amt1 = new Label (L"OSC 1 PWM amt 2", - L"value")); - m_label_osc0_pwm_amt1->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_osc0_pwm_amt1 = new Label ("OSC 1 PWM amt 2", + TRANS("value"))); + m_label_osc0_pwm_amt1->setFont (Font (14.00f, Font::plain)); m_label_osc0_pwm_amt1->setJustificationType (Justification::centred); m_label_osc0_pwm_amt1->setEditable (true, true, false); m_label_osc0_pwm_amt1->setColour (TextEditor::textColourId, Colours::black); - m_label_osc0_pwm_amt1->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc0_pwm_amt1->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc0_pwm_amt1->addListener (this); - addAndMakeVisible (m_slider_osc0_am_amt1 = new Slider (L"OSC 1 AM amount 2")); - m_slider_osc0_am_amt1->setTooltip (L"OSC 1 AM amount [%]"); + addAndMakeVisible (m_slider_osc0_am_amt1 = new Slider ("OSC 1 AM amount 2")); + m_slider_osc0_am_amt1->setTooltip (TRANS("OSC 1 AM amount [%]")); m_slider_osc0_am_amt1->setRange (0, 1, 0); m_slider_osc0_am_amt1->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_osc0_am_amt1->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1971,17 +1761,17 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_osc0_am_amt1->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_osc0_am_amt1->addListener (this); - addAndMakeVisible (m_label_osc0_am_amt1 = new Label (L"OSC 1 AM amt 2", - L"value")); - m_label_osc0_am_amt1->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_osc0_am_amt1 = new Label ("OSC 1 AM amt 2", + TRANS("value"))); + m_label_osc0_am_amt1->setFont (Font (14.00f, Font::plain)); m_label_osc0_am_amt1->setJustificationType (Justification::centred); m_label_osc0_am_amt1->setEditable (true, true, false); m_label_osc0_am_amt1->setColour (TextEditor::textColourId, Colours::black); - m_label_osc0_am_amt1->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc0_am_amt1->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc0_am_amt1->addListener (this); - addAndMakeVisible (m_slider_osc1_fm_amt1 = new Slider (L"OSC 2 FM amount 2")); - m_slider_osc1_fm_amt1->setTooltip (L"OSC 2 FM amount [%]"); + addAndMakeVisible (m_slider_osc1_fm_amt1 = new Slider ("OSC 2 FM amount 2")); + m_slider_osc1_fm_amt1->setTooltip (TRANS("OSC 2 FM amount [%]")); m_slider_osc1_fm_amt1->setRange (0, 1, 0); m_slider_osc1_fm_amt1->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_osc1_fm_amt1->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -1989,17 +1779,17 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_osc1_fm_amt1->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_osc1_fm_amt1->addListener (this); - addAndMakeVisible (m_label_osc1_fm_amt1 = new Label (L"OSC 2 FM amt 2", - L"value")); - m_label_osc1_fm_amt1->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_osc1_fm_amt1 = new Label ("OSC 2 FM amt 2", + TRANS("value"))); + m_label_osc1_fm_amt1->setFont (Font (14.00f, Font::plain)); m_label_osc1_fm_amt1->setJustificationType (Justification::centred); m_label_osc1_fm_amt1->setEditable (true, true, false); m_label_osc1_fm_amt1->setColour (TextEditor::textColourId, Colours::black); - m_label_osc1_fm_amt1->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc1_fm_amt1->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc1_fm_amt1->addListener (this); - addAndMakeVisible (m_slider_osc1_pwm_amt1 = new Slider (L"OSC 2 PWM amount 2")); - m_slider_osc1_pwm_amt1->setTooltip (L"OSC 2 PWM Amount [%]"); + addAndMakeVisible (m_slider_osc1_pwm_amt1 = new Slider ("OSC 2 PWM amount 2")); + m_slider_osc1_pwm_amt1->setTooltip (TRANS("OSC 2 PWM Amount [%]")); m_slider_osc1_pwm_amt1->setRange (0, 1, 0); m_slider_osc1_pwm_amt1->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_osc1_pwm_amt1->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -2007,17 +1797,17 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_osc1_pwm_amt1->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_osc1_pwm_amt1->addListener (this); - addAndMakeVisible (m_label_osc1_pwm_amt1 = new Label (L"OSC 2 PWM amt 2", - L"value")); - m_label_osc1_pwm_amt1->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_osc1_pwm_amt1 = new Label ("OSC 2 PWM amt 2", + TRANS("value"))); + m_label_osc1_pwm_amt1->setFont (Font (14.00f, Font::plain)); m_label_osc1_pwm_amt1->setJustificationType (Justification::centred); m_label_osc1_pwm_amt1->setEditable (true, true, false); m_label_osc1_pwm_amt1->setColour (TextEditor::textColourId, Colours::black); - m_label_osc1_pwm_amt1->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc1_pwm_amt1->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc1_pwm_amt1->addListener (this); - addAndMakeVisible (m_slider_osc1_am_amt1 = new Slider (L"OSC 2 AM amount 2")); - m_slider_osc1_am_amt1->setTooltip (L"OSC 2 AM amount [%]"); + addAndMakeVisible (m_slider_osc1_am_amt1 = new Slider ("OSC 2 AM amount 2")); + m_slider_osc1_am_amt1->setTooltip (TRANS("OSC 2 AM amount [%]")); m_slider_osc1_am_amt1->setRange (0, 1, 0); m_slider_osc1_am_amt1->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_osc1_am_amt1->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -2025,17 +1815,17 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_osc1_am_amt1->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_osc1_am_amt1->addListener (this); - addAndMakeVisible (m_label_osc1_am_amt1 = new Label (L"OSC 2 AM amt 2", - L"value")); - m_label_osc1_am_amt1->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_osc1_am_amt1 = new Label ("OSC 2 AM amt 2", + TRANS("value"))); + m_label_osc1_am_amt1->setFont (Font (14.00f, Font::plain)); m_label_osc1_am_amt1->setJustificationType (Justification::centred); m_label_osc1_am_amt1->setEditable (true, true, false); m_label_osc1_am_amt1->setColour (TextEditor::textColourId, Colours::black); - m_label_osc1_am_amt1->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_osc1_am_amt1->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_osc1_am_amt1->addListener (this); - addAndMakeVisible (m_slider_vcf_f_amt1 = new Slider (L"VCF Cutoff amount 2")); - m_slider_vcf_f_amt1->setTooltip (L"VCF Cutoff Amount [%]"); + addAndMakeVisible (m_slider_vcf_f_amt1 = new Slider ("VCF Cutoff amount 2")); + m_slider_vcf_f_amt1->setTooltip (TRANS("VCF Cutoff Amount [%]")); m_slider_vcf_f_amt1->setRange (0, 1, 0); m_slider_vcf_f_amt1->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_vcf_f_amt1->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -2043,17 +1833,17 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_vcf_f_amt1->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_vcf_f_amt1->addListener (this); - addAndMakeVisible (m_label_vcf_f_amt1 = new Label (L"VCF Cutoff amount 2", - L"value")); - m_label_vcf_f_amt1->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_vcf_f_amt1 = new Label ("VCF Cutoff amount 2", + TRANS("value"))); + m_label_vcf_f_amt1->setFont (Font (14.00f, Font::plain)); m_label_vcf_f_amt1->setJustificationType (Justification::centred); m_label_vcf_f_amt1->setEditable (true, true, false); m_label_vcf_f_amt1->setColour (TextEditor::textColourId, Colours::black); - m_label_vcf_f_amt1->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_vcf_f_amt1->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_vcf_f_amt1->addListener (this); - addAndMakeVisible (m_slider_vcf_q_amt1 = new Slider (L"VCF Resonance amount 2")); - m_slider_vcf_q_amt1->setTooltip (L"VCF Resonance Amount [%]"); + addAndMakeVisible (m_slider_vcf_q_amt1 = new Slider ("VCF Resonance amount 2")); + m_slider_vcf_q_amt1->setTooltip (TRANS("VCF Resonance Amount [%]")); m_slider_vcf_q_amt1->setRange (0, 1, 0); m_slider_vcf_q_amt1->setSliderStyle (Slider::RotaryVerticalDrag); m_slider_vcf_q_amt1->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); @@ -2061,41 +1851,51 @@ JaySynthAudioProcessorEditor::JaySynthAudioProcessorEditor (JaySynthAudioProcess m_slider_vcf_q_amt1->setColour (Slider::rotarySliderOutlineColourId, Colour (0x66ffffff)); m_slider_vcf_q_amt1->addListener (this); - addAndMakeVisible (m_label_vcf_q_amt1 = new Label (L"VCF Resonance amount 2", - L"value")); - m_label_vcf_q_amt1->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_vcf_q_amt1 = new Label ("VCF Resonance amount 2", + TRANS("value"))); + m_label_vcf_q_amt1->setFont (Font (14.00f, Font::plain)); m_label_vcf_q_amt1->setJustificationType (Justification::centred); m_label_vcf_q_amt1->setEditable (true, true, false); m_label_vcf_q_amt1->setColour (TextEditor::textColourId, Colours::black); - m_label_vcf_q_amt1->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_vcf_q_amt1->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_vcf_q_amt1->addListener (this); - addAndMakeVisible (m_button_mono_retrigger = new ToggleButton (L"Monophonic Retrigger")); - m_button_mono_retrigger->setTooltip (L"This button switches monophonic retrigger mode on and off"); - m_button_mono_retrigger->setButtonText (L"Mono Retrigger"); + addAndMakeVisible (m_button_mono_retrigger = new ToggleButton ("Monophonic Retrigger")); + m_button_mono_retrigger->setTooltip (TRANS("This button switches monophonic retrigger mode on and off")); + m_button_mono_retrigger->setButtonText (TRANS("Mono Retrigger")); m_button_mono_retrigger->setColour (ToggleButton::textColourId, Colours::white); - addAndMakeVisible (m_label_max_num_voices = new Label (L"Maximum number of voices (Polyphony)", - L"999")); - m_label_max_num_voices->setTooltip (L"Unisono number of voices to allocate"); - m_label_max_num_voices->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_max_num_voices = new Label ("Maximum number of voices (Polyphony)", + TRANS("999"))); + m_label_max_num_voices->setTooltip (TRANS("Unisono number of voices to allocate")); + m_label_max_num_voices->setFont (Font (14.00f, Font::plain)); m_label_max_num_voices->setJustificationType (Justification::centred); m_label_max_num_voices->setEditable (true, true, false); m_label_max_num_voices->setColour (TextEditor::textColourId, Colours::black); - m_label_max_num_voices->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_max_num_voices->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_max_num_voices->addListener (this); - addAndMakeVisible (m_label_num_voices_playing = new Label (L"Number of Voices Playing", - L"0")); - m_label_num_voices_playing->setTooltip (L"Number of voices currently playing"); - m_label_num_voices_playing->setFont (Font (14.0000f, Font::plain)); + addAndMakeVisible (m_label_num_voices_playing = new Label ("Number of Voices Playing", + TRANS("0"))); + m_label_num_voices_playing->setTooltip (TRANS("Number of voices currently playing")); + m_label_num_voices_playing->setFont (Font (14.00f, Font::plain)); m_label_num_voices_playing->setJustificationType (Justification::centred); m_label_num_voices_playing->setEditable (true, true, false); m_label_num_voices_playing->setColour (Label::textColourId, Colours::yellow); m_label_num_voices_playing->setColour (TextEditor::textColourId, Colours::black); - m_label_num_voices_playing->setColour (TextEditor::backgroundColourId, Colour (0x0)); + m_label_num_voices_playing->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); m_label_num_voices_playing->addListener (this); + addAndMakeVisible (m_labelDebug = new Label ("Debug Label", + TRANS("label text"))); + m_labelDebug->setFont (Font (15.00f, Font::plain)); + m_labelDebug->setJustificationType (Justification::centredLeft); + m_labelDebug->setEditable (false, false, false); + m_labelDebug->setColour (Label::textColourId, Colours::white); + m_labelDebug->setColour (TextEditor::textColourId, Colours::black); + m_labelDebug->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); + + addAndMakeVisible (m_btn_midiClockLed = new ButtonLED (L"MidiClock")); //[UserPreSize] //[/UserPreSize] @@ -2561,214 +2361,216 @@ JaySynthAudioProcessorEditor::~JaySynthAudioProcessorEditor() deleteAndZero(m_VelKey_PopUp); //[/Destructor_pre] - deleteAndZero (m_label_colon); - deleteAndZero (m_slider_master_volume); - deleteAndZero (m_slider_vcf_f); - deleteAndZero (m_slider_vcf_q); - deleteAndZero (m_slider_osc0_det); - deleteAndZero (m_slider_osc1_det); - deleteAndZero (m_slider_osc0_transpose); - deleteAndZero (m_slider_osc1_transpose); - deleteAndZero (m_slider_vca_env_attack); - deleteAndZero (m_slider_vca_env_decay); - deleteAndZero (m_slider_vca_env_release); - deleteAndZero (m_slider_vca_env_sustain); - deleteAndZero (m_slider_vcf_env_attack); - deleteAndZero (m_slider_vcf_env_decay); - deleteAndZero (m_slider_vcf_env_release); - deleteAndZero (m_slider_vcf_env_sustain); - deleteAndZero (m_slider_vcf_env_amount); - deleteAndZero (m_label_vcf_env_attack); - deleteAndZero (m_label_vcf_f); - deleteAndZero (m_label_vca_env_attack); - deleteAndZero (m_label_vca_env_decay); - deleteAndZero (m_label_vca_env_sustain); - deleteAndZero (m_label_vca_env_release); - deleteAndZero (m_label_vcf_env_decay); - deleteAndZero (m_label_vcf_env_sustain); - deleteAndZero (m_label_vcf_env_release); - deleteAndZero (m_label_vcf_q); - deleteAndZero (m_label_vcf_env_amount); - deleteAndZero (m_label_master_volume); - deleteAndZero (m_label_osc0_transpose); - deleteAndZero (m_label_osc1_transpose); - deleteAndZero (m_label_osc0_det); - deleteAndZero (m_label_osc1_det); - deleteAndZero (m_slider_vca_env_amount); - deleteAndZero (m_label_vca_env_amount); - deleteAndZero (m_slider_osc0_dutycycle); - deleteAndZero (m_slider_osc1_dutycycle); - deleteAndZero (m_label_osc0_dutycycle); - deleteAndZero (m_label_osc1_dutycycle); - deleteAndZero (m_slider_lfo0_speed); - deleteAndZero (m_slider_osc1_fm_amt0); - deleteAndZero (m_slider_osc0_fm_amt0); - deleteAndZero (m_label_lfo0_speed); - deleteAndZero (m_label_osc0_fm_amt0); - deleteAndZero (m_label_osc1_fm_amt0); - deleteAndZero (m_slider_vcf_f_amt0); - deleteAndZero (m_label_vcf_f_amt0); - deleteAndZero (m_slider_lfo1_speed); - deleteAndZero (m_label_lfo1_speed); - deleteAndZero (m_comboBox_osc0_shape); - deleteAndZero (m_comboBox_osc1_shape); - deleteAndZero (m_comboBox_lfo0_shape); - deleteAndZero (m_comboBox_lfo1_shape); - deleteAndZero (m_slider_lfo2_speed); - deleteAndZero (m_slider_lfo3_speed); - deleteAndZero (m_comboBox_lfo2_shape); - deleteAndZero (m_comboBox_lfo3_shape); - deleteAndZero (m_label_lfo2_speed); - deleteAndZero (m_label_lfo3_speed); - deleteAndZero (m_comboBox_vcf_f_src0); - deleteAndZero (m_comboBox_osc0_fm_src0); - deleteAndZero (m_comboBox_osc1_fm_src0); - deleteAndZero (m_slider_vca_am_amt0); - deleteAndZero (m_label_vca_am_amt0); - deleteAndZero (m_comboBox_vca_am_src0); - deleteAndZero (m_slider_vca_pan_amt0); - deleteAndZero (m_label_vca_pan_amt0); - deleteAndZero (m_comboBox_vca_pan_src0); - deleteAndZero (m_label_synth_name); - deleteAndZero (m_label_synth_version); - deleteAndZero (m_comboBox_vcf_type); - deleteAndZero (m_slider_lfo1_smooth); - deleteAndZero (m_label_lfo1_smooth); - deleteAndZero (m_slider_lfo0_smooth); - deleteAndZero (m_label_lfo0_smooth); - deleteAndZero (m_slider_lfo2_smooth); - deleteAndZero (m_label_lfo2_smooth); - deleteAndZero (m_slider_lfo3_smooth); - deleteAndZero (m_label_lfo3_smooth); - deleteAndZero (m_slider_osc0_pwm_amt0); - deleteAndZero (m_label_osc0_pwm_amt0); - deleteAndZero (m_slider_osc1_pwm_amt0); - deleteAndZero (m_label_osc1_pwm_amt0); - deleteAndZero (m_comboBox_osc0_pwm_src0); - deleteAndZero (m_comboBox_osc1_pwm_src0); - deleteAndZero (m_slider_osc0_level); - deleteAndZero (m_label_osc0_level); - deleteAndZero (m_slider_osc1_level); - deleteAndZero (m_label_osc1_level); - deleteAndZero (m_slider_noise_level); - deleteAndZero (m_label_noise_level); - deleteAndZero (m_comboBox_noise_shape); - deleteAndZero (m_btn_noise_enable_led); - deleteAndZero (m_btn_osc0_enable); - deleteAndZero (m_btn_osc1_enable); - deleteAndZero (m_label_patch_name); - deleteAndZero (m_button_patch_incr); - deleteAndZero (m_button_patch_decr); - deleteAndZero (m_label_patch_number); - deleteAndZero (m_label_osc1_pb_min); - deleteAndZero (m_label_osc1_pb_max); - deleteAndZero (m_label_osc0_pb_max); - deleteAndZero (m_label_osc0_pb_min); - deleteAndZero (m_slider_master_tune); - deleteAndZero (m_label_master_tune); - deleteAndZero (m_button_humanize_enable); - deleteAndZero (m_comboBox_vcf_order); - deleteAndZero (m_slider_portamento_time); - deleteAndZero (m_label_portamento_time); - deleteAndZero (m_button_unisono_enable); - deleteAndZero (m_slider_humanize_var_vco); - deleteAndZero (m_slider_voice_pan_spread); - deleteAndZero (m_label_voice_pan_spread); - deleteAndZero (m_slider_humanize_var_vcf); - deleteAndZero (m_slider_humanize_var_env); - deleteAndZero (m_label_unisono_num_voices); - deleteAndZero (m_button_osc0_restart_enable); - deleteAndZero (m_button_osc1_restart_enable); - deleteAndZero (m_button_mono_enable); - deleteAndZero (m_comboBox_osc1_fm_src1); - deleteAndZero (m_comboBox_osc1_pwm_src1); - deleteAndZero (m_comboBox_osc0_fm_src1); - deleteAndZero (m_comboBox_osc0_pwm_src1); - deleteAndZero (m_comboBox_osc1_am_src0); - deleteAndZero (m_comboBox_osc1_am_src1); - deleteAndZero (m_slider_osc1_am_amt0); - deleteAndZero (m_label_osc1_am_amt0); - deleteAndZero (m_comboBox_osc0_am_src0); - deleteAndZero (m_comboBox_osc0_am_src1); - deleteAndZero (m_slider_osc0_am_amt0); - deleteAndZero (m_label_osc0_am_amt0); - deleteAndZero (m_slider_env2_attack); - deleteAndZero (m_slider_env2_decay); - deleteAndZero (m_slider_env2_release); - deleteAndZero (m_slider_env2_sustain); - deleteAndZero (m_label_env2_attack); - deleteAndZero (m_label_env2_decay); - deleteAndZero (m_label_env2_sustain); - deleteAndZero (m_label_env2_release); - deleteAndZero (m_slider_env3_attack); - deleteAndZero (m_slider_env3_decay); - deleteAndZero (m_slider_env3_release); - deleteAndZero (m_slider_env3_sustain); - deleteAndZero (m_label_env3_attack); - deleteAndZero (m_label_env3_decay); - deleteAndZero (m_label_env3_sustain); - deleteAndZero (m_label_env3_release); - deleteAndZero (m_comboBox_vcf_f_src1); - deleteAndZero (m_slider_vcf_q_amt0); - deleteAndZero (m_label_vcf_q_amt0); - deleteAndZero (m_comboBox_vcf_q_src0); - deleteAndZero (m_comboBox_vcf_q_src1); - deleteAndZero (m_label_humanize_var_vco); - deleteAndZero (m_label_humanize_var_vcf); - deleteAndZero (m_label_humanize_var_env); - deleteAndZero (m_btn_limiter_led); - deleteAndZero (m_label_limiter_led); - deleteAndZero (m_slider_lfo0_delay); - deleteAndZero (m_label_lfo0_delay); - deleteAndZero (m_slider_lfo0_attack); - deleteAndZero (m_label_lfo0_attack); - deleteAndZero (m_slider_lfo1_delay); - deleteAndZero (m_label_lfo1_delay); - deleteAndZero (m_slider_lfo1_attack); - deleteAndZero (m_label_lfo1_attack); - deleteAndZero (m_slider_lfo2_delay); - deleteAndZero (m_label_lfo2_delay); - deleteAndZero (m_slider_lfo2_attack); - deleteAndZero (m_label_lfo2_attack); - deleteAndZero (m_slider_lfo3_delay); - deleteAndZero (m_label_lfo3_delay); - deleteAndZero (m_slider_lfo3_attack); - deleteAndZero (m_label_lfo3_attack); - deleteAndZero (m_button_lfo0_restart_enable); - deleteAndZero (m_button_lfo0_individual_enable); - deleteAndZero (m_slider_lfo0_symmetry); - deleteAndZero (m_label_lfo0_symmetry); - deleteAndZero (m_slider_lfo1_symmetry); - deleteAndZero (m_label_lfo1_symmetry); - deleteAndZero (m_button_lfo1_restart_enable); - deleteAndZero (m_button_lfo1_individual_enable); - deleteAndZero (m_button_lfo2_restart_enable); - deleteAndZero (m_button_lfo2_individual_enable); - deleteAndZero (m_slider_lfo2_symmetry); - deleteAndZero (m_label_lfo2_symmetry); - deleteAndZero (m_slider_lfo3_symmetry); - deleteAndZero (m_label_lfo3_symmetry); - deleteAndZero (m_button_lfo3_restart_enable); - deleteAndZero (m_button_lfo3_individual_enable); - deleteAndZero (m_slider_osc0_fm_amt1); - deleteAndZero (m_label_osc0_fm_amt1); - deleteAndZero (m_slider_osc0_pwm_amt1); - deleteAndZero (m_label_osc0_pwm_amt1); - deleteAndZero (m_slider_osc0_am_amt1); - deleteAndZero (m_label_osc0_am_amt1); - deleteAndZero (m_slider_osc1_fm_amt1); - deleteAndZero (m_label_osc1_fm_amt1); - deleteAndZero (m_slider_osc1_pwm_amt1); - deleteAndZero (m_label_osc1_pwm_amt1); - deleteAndZero (m_slider_osc1_am_amt1); - deleteAndZero (m_label_osc1_am_amt1); - deleteAndZero (m_slider_vcf_f_amt1); - deleteAndZero (m_label_vcf_f_amt1); - deleteAndZero (m_slider_vcf_q_amt1); - deleteAndZero (m_label_vcf_q_amt1); - deleteAndZero (m_button_mono_retrigger); - deleteAndZero (m_label_max_num_voices); - deleteAndZero (m_label_num_voices_playing); + m_label_colon = nullptr; + m_slider_master_volume = nullptr; + m_slider_vcf_f = nullptr; + m_slider_vcf_q = nullptr; + m_slider_osc0_det = nullptr; + m_slider_osc1_det = nullptr; + m_slider_osc0_transpose = nullptr; + m_slider_osc1_transpose = nullptr; + m_slider_vca_env_attack = nullptr; + m_slider_vca_env_decay = nullptr; + m_slider_vca_env_release = nullptr; + m_slider_vca_env_sustain = nullptr; + m_slider_vcf_env_attack = nullptr; + m_slider_vcf_env_decay = nullptr; + m_slider_vcf_env_release = nullptr; + m_slider_vcf_env_sustain = nullptr; + m_slider_vcf_env_amount = nullptr; + m_label_vcf_env_attack = nullptr; + m_label_vcf_f = nullptr; + m_label_vca_env_attack = nullptr; + m_label_vca_env_decay = nullptr; + m_label_vca_env_sustain = nullptr; + m_label_vca_env_release = nullptr; + m_label_vcf_env_decay = nullptr; + m_label_vcf_env_sustain = nullptr; + m_label_vcf_env_release = nullptr; + m_label_vcf_q = nullptr; + m_label_vcf_env_amount = nullptr; + m_label_master_volume = nullptr; + m_label_osc0_transpose = nullptr; + m_label_osc1_transpose = nullptr; + m_label_osc0_det = nullptr; + m_label_osc1_det = nullptr; + m_slider_vca_env_amount = nullptr; + m_label_vca_env_amount = nullptr; + m_slider_osc0_dutycycle = nullptr; + m_slider_osc1_dutycycle = nullptr; + m_label_osc0_dutycycle = nullptr; + m_label_osc1_dutycycle = nullptr; + m_slider_lfo0_speed = nullptr; + m_slider_osc1_fm_amt0 = nullptr; + m_slider_osc0_fm_amt0 = nullptr; + m_label_lfo0_speed = nullptr; + m_label_osc0_fm_amt0 = nullptr; + m_label_osc1_fm_amt0 = nullptr; + m_slider_vcf_f_amt0 = nullptr; + m_label_vcf_f_amt0 = nullptr; + m_slider_lfo1_speed = nullptr; + m_label_lfo1_speed = nullptr; + m_comboBox_osc0_shape = nullptr; + m_comboBox_osc1_shape = nullptr; + m_comboBox_lfo0_shape = nullptr; + m_comboBox_lfo1_shape = nullptr; + m_slider_lfo2_speed = nullptr; + m_slider_lfo3_speed = nullptr; + m_comboBox_lfo2_shape = nullptr; + m_comboBox_lfo3_shape = nullptr; + m_label_lfo2_speed = nullptr; + m_label_lfo3_speed = nullptr; + m_comboBox_vcf_f_src0 = nullptr; + m_comboBox_osc0_fm_src0 = nullptr; + m_comboBox_osc1_fm_src0 = nullptr; + m_slider_vca_am_amt0 = nullptr; + m_label_vca_am_amt0 = nullptr; + m_comboBox_vca_am_src0 = nullptr; + m_slider_vca_pan_amt0 = nullptr; + m_label_vca_pan_amt0 = nullptr; + m_comboBox_vca_pan_src0 = nullptr; + m_label_synth_name = nullptr; + m_label_synth_version = nullptr; + m_comboBox_vcf_type = nullptr; + m_slider_lfo1_smooth = nullptr; + m_label_lfo1_smooth = nullptr; + m_slider_lfo0_smooth = nullptr; + m_label_lfo0_smooth = nullptr; + m_slider_lfo2_smooth = nullptr; + m_label_lfo2_smooth = nullptr; + m_slider_lfo3_smooth = nullptr; + m_label_lfo3_smooth = nullptr; + m_slider_osc0_pwm_amt0 = nullptr; + m_label_osc0_pwm_amt0 = nullptr; + m_slider_osc1_pwm_amt0 = nullptr; + m_label_osc1_pwm_amt0 = nullptr; + m_comboBox_osc0_pwm_src0 = nullptr; + m_comboBox_osc1_pwm_src0 = nullptr; + m_slider_osc0_level = nullptr; + m_label_osc0_level = nullptr; + m_slider_osc1_level = nullptr; + m_label_osc1_level = nullptr; + m_slider_noise_level = nullptr; + m_label_noise_level = nullptr; + m_comboBox_noise_shape = nullptr; + m_btn_noise_enable_led = nullptr; + m_btn_osc0_enable = nullptr; + m_btn_osc1_enable = nullptr; + m_label_patch_name = nullptr; + m_button_patch_incr = nullptr; + m_button_patch_decr = nullptr; + m_label_patch_number = nullptr; + m_label_osc1_pb_min = nullptr; + m_label_osc1_pb_max = nullptr; + m_label_osc0_pb_max = nullptr; + m_label_osc0_pb_min = nullptr; + m_slider_master_tune = nullptr; + m_label_master_tune = nullptr; + m_button_humanize_enable = nullptr; + m_comboBox_vcf_order = nullptr; + m_slider_portamento_time = nullptr; + m_label_portamento_time = nullptr; + m_button_unisono_enable = nullptr; + m_slider_humanize_var_vco = nullptr; + m_slider_voice_pan_spread = nullptr; + m_label_voice_pan_spread = nullptr; + m_slider_humanize_var_vcf = nullptr; + m_slider_humanize_var_env = nullptr; + m_label_unisono_num_voices = nullptr; + m_button_osc0_restart_enable = nullptr; + m_button_osc1_restart_enable = nullptr; + m_button_mono_enable = nullptr; + m_comboBox_osc1_fm_src1 = nullptr; + m_comboBox_osc1_pwm_src1 = nullptr; + m_comboBox_osc0_fm_src1 = nullptr; + m_comboBox_osc0_pwm_src1 = nullptr; + m_comboBox_osc1_am_src0 = nullptr; + m_comboBox_osc1_am_src1 = nullptr; + m_slider_osc1_am_amt0 = nullptr; + m_label_osc1_am_amt0 = nullptr; + m_comboBox_osc0_am_src0 = nullptr; + m_comboBox_osc0_am_src1 = nullptr; + m_slider_osc0_am_amt0 = nullptr; + m_label_osc0_am_amt0 = nullptr; + m_slider_env2_attack = nullptr; + m_slider_env2_decay = nullptr; + m_slider_env2_release = nullptr; + m_slider_env2_sustain = nullptr; + m_label_env2_attack = nullptr; + m_label_env2_decay = nullptr; + m_label_env2_sustain = nullptr; + m_label_env2_release = nullptr; + m_slider_env3_attack = nullptr; + m_slider_env3_decay = nullptr; + m_slider_env3_release = nullptr; + m_slider_env3_sustain = nullptr; + m_label_env3_attack = nullptr; + m_label_env3_decay = nullptr; + m_label_env3_sustain = nullptr; + m_label_env3_release = nullptr; + m_comboBox_vcf_f_src1 = nullptr; + m_slider_vcf_q_amt0 = nullptr; + m_label_vcf_q_amt0 = nullptr; + m_comboBox_vcf_q_src0 = nullptr; + m_comboBox_vcf_q_src1 = nullptr; + m_label_humanize_var_vco = nullptr; + m_label_humanize_var_vcf = nullptr; + m_label_humanize_var_env = nullptr; + m_btn_limiter_led = nullptr; + m_label_limiter_led = nullptr; + m_slider_lfo0_delay = nullptr; + m_label_lfo0_delay = nullptr; + m_slider_lfo0_attack = nullptr; + m_label_lfo0_attack = nullptr; + m_slider_lfo1_delay = nullptr; + m_label_lfo1_delay = nullptr; + m_slider_lfo1_attack = nullptr; + m_label_lfo1_attack = nullptr; + m_slider_lfo2_delay = nullptr; + m_label_lfo2_delay = nullptr; + m_slider_lfo2_attack = nullptr; + m_label_lfo2_attack = nullptr; + m_slider_lfo3_delay = nullptr; + m_label_lfo3_delay = nullptr; + m_slider_lfo3_attack = nullptr; + m_label_lfo3_attack = nullptr; + m_button_lfo0_restart_enable = nullptr; + m_button_lfo0_individual_enable = nullptr; + m_slider_lfo0_symmetry = nullptr; + m_label_lfo0_symmetry = nullptr; + m_slider_lfo1_symmetry = nullptr; + m_label_lfo1_symmetry = nullptr; + m_button_lfo1_restart_enable = nullptr; + m_button_lfo1_individual_enable = nullptr; + m_button_lfo2_restart_enable = nullptr; + m_button_lfo2_individual_enable = nullptr; + m_slider_lfo2_symmetry = nullptr; + m_label_lfo2_symmetry = nullptr; + m_slider_lfo3_symmetry = nullptr; + m_label_lfo3_symmetry = nullptr; + m_button_lfo3_restart_enable = nullptr; + m_button_lfo3_individual_enable = nullptr; + m_slider_osc0_fm_amt1 = nullptr; + m_label_osc0_fm_amt1 = nullptr; + m_slider_osc0_pwm_amt1 = nullptr; + m_label_osc0_pwm_amt1 = nullptr; + m_slider_osc0_am_amt1 = nullptr; + m_label_osc0_am_amt1 = nullptr; + m_slider_osc1_fm_amt1 = nullptr; + m_label_osc1_fm_amt1 = nullptr; + m_slider_osc1_pwm_amt1 = nullptr; + m_label_osc1_pwm_amt1 = nullptr; + m_slider_osc1_am_amt1 = nullptr; + m_label_osc1_am_amt1 = nullptr; + m_slider_vcf_f_amt1 = nullptr; + m_label_vcf_f_amt1 = nullptr; + m_slider_vcf_q_amt1 = nullptr; + m_label_vcf_q_amt1 = nullptr; + m_button_mono_retrigger = nullptr; + m_label_max_num_voices = nullptr; + m_label_num_voices_playing = nullptr; + m_labelDebug = nullptr; + m_btn_midiClockLed = nullptr; //[Destructor]. You can add your own custom destruction code here.. @@ -2784,797 +2586,797 @@ void JaySynthAudioProcessorEditor::paint (Graphics& g) g.fillAll (Colour (0xff8b94bd)); g.setColour (Colour (0xff2a64a5)); - g.fillRoundedRectangle (644.0f, 4.0f, 80.0f, 310.0f, 10.0000f); + g.fillRoundedRectangle (644.0f, 4.0f, 80.0f, 310.0f, 10.000f); g.setColour (Colour (0xff2a64a5)); - g.fillRoundedRectangle (644.0f, 318.0f, 80.0f, 310.0f, 10.0000f); + g.fillRoundedRectangle (644.0f, 318.0f, 80.0f, 310.0f, 10.000f); g.setColour (Colour (0xff2a64a5)); - g.fillRoundedRectangle (962.0f, 4.0f, 154.0f, 310.0f, 10.0000f); + g.fillRoundedRectangle (962.0f, 4.0f, 154.0f, 310.0f, 10.000f); g.setColour (Colour (0xff2a64a5)); - g.fillRoundedRectangle (962.0f, 318.0f, 154.0f, 310.0f, 10.0000f); + g.fillRoundedRectangle (962.0f, 318.0f, 154.0f, 310.0f, 10.000f); g.setColour (Colour (0xff2a64a5)); - g.fillRoundedRectangle (560.0f, 318.0f, 80.0f, 310.0f, 10.0000f); + g.fillRoundedRectangle (560.0f, 318.0f, 80.0f, 310.0f, 10.000f); g.setColour (Colour (0xff2a64a5)); - g.fillRoundedRectangle (560.0f, 4.0f, 80.0f, 310.0f, 10.0000f); + g.fillRoundedRectangle (560.0f, 4.0f, 80.0f, 310.0f, 10.000f); g.setColour (Colour (0xff2a64a5)); - g.fillRoundedRectangle (4.0f, 632.0f, 1112.0f, 84.0f, 10.0000f); + g.fillRoundedRectangle (4.0f, 632.0f, 1112.0f, 84.0f, 10.000f); g.setColour (Colour (0xff2a64a5)); - g.fillRoundedRectangle (4.0f, 318.0f, 324.0f, 310.0f, 10.0000f); + g.fillRoundedRectangle (4.0f, 318.0f, 324.0f, 310.0f, 10.000f); g.setColour (Colour (0xff2a64a5)); - g.fillRoundedRectangle (446.0f, 318.0f, 110.0f, 310.0f, 10.0000f); + g.fillRoundedRectangle (446.0f, 318.0f, 110.0f, 310.0f, 10.000f); g.setColour (Colour (0xff2a64a5)); - g.fillRoundedRectangle (446.0f, 4.0f, 110.0f, 310.0f, 10.0000f); + g.fillRoundedRectangle (446.0f, 4.0f, 110.0f, 310.0f, 10.000f); g.setColour (Colours::black); - g.setFont (Font (15.0000f, Font::plain)); - g.drawText (L"OSC 1 tune", + g.setFont (Font (15.00f, Font::plain)); + g.drawText (TRANS("OSC 1 tune"), 12, -108, 76, 30, Justification::centred, true); g.setColour (Colour (0xff2a64a5)); - g.fillRoundedRectangle (728.0f, 318.0f, 230.0f, 310.0f, 10.0000f); + g.fillRoundedRectangle (728.0f, 318.0f, 230.0f, 310.0f, 10.000f); g.setColour (Colours::white); - g.setFont (Font (16.0000f, Font::plain)); - g.drawText (L"VCA", + g.setFont (Font (16.00f, Font::plain)); + g.drawText (TRANS("VCA"), 732, 322, 48, 24, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Env. amt.", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Env. amt."), 740, 504, 52, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Volume", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Volume"), 968, 572, 40, 16, Justification::centred, true); g.setColour (Colour (0xff2a64a5)); - g.fillRoundedRectangle (728.0f, 4.0f, 230.0f, 310.0f, 10.0000f); + g.fillRoundedRectangle (728.0f, 4.0f, 230.0f, 310.0f, 10.000f); g.setColour (Colours::white); - g.setFont (Font (16.0000f, Font::plain)); - g.drawText (L"VCF", + g.setFont (Font (16.00f, Font::plain)); + g.drawText (TRANS("VCF"), 732, 8, 48, 24, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Env. amt.", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Env. amt."), 886, 156, 52, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Reson.", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Reson."), 816, 88, 44, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Cutoff", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Cutoff"), 746, 88, 40, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Sustain", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Sustain"), 664, 222, 40, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Decay", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Decay"), 664, 156, 40, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Release", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Release"), 660, 290, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Attack", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Attack"), 660, 88, 48, 16, Justification::centred, true); g.setColour (Colour (0xff2a64a5)); - g.fillRoundedRectangle (4.0f, 4.0f, 324.0f, 310.0f, 10.0000f); + g.fillRoundedRectangle (4.0f, 4.0f, 324.0f, 310.0f, 10.000f); g.setColour (Colours::white); - g.setFont (Font (16.0000f, Font::plain)); - g.drawText (L"VCO 1", + g.setFont (Font (16.00f, Font::plain)); + g.drawText (TRANS("VCO 1"), 6, 8, 72, 32, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Detune", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Detune"), 96, 86, 54, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Transpose", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Transpose"), 246, 154, 58, 16, Justification::centred, true); g.setColour (Colours::white); - g.setFont (Font (16.0000f, Font::plain)); - g.drawText (L"VCO 2", + g.setFont (Font (16.00f, Font::plain)); + g.drawText (TRANS("VCO 2"), 6, 322, 72, 32, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Pulse Width", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Pulse Width"), 160, 86, 68, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Shape", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Shape"), 242, 86, 64, 16, Justification::centred, true); g.setColour (Colour (0xff2a64a5)); - g.fillRoundedRectangle (332.0f, 4.0f, 110.0f, 310.0f, 10.0000f); + g.fillRoundedRectangle (332.0f, 4.0f, 110.0f, 310.0f, 10.000f); g.setColour (Colours::white); - g.setFont (Font (16.0000f, Font::plain)); - g.drawText (L"LFO 1", + g.setFont (Font (16.00f, Font::plain)); + g.drawText (TRANS("LFO 1"), 336, 8, 60, 24, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"FM amt. 1", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("FM amt. 1"), 90, 154, 70, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Speed", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Speed"), 338, 120, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Shape", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Shape"), 348, 54, 72, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Mod. amt. 1", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Mod. amt. 1"), 736, 156, 64, 16, Justification::centred, true); g.setColour (Colour (0xff2a64a5)); - g.fillRoundedRectangle (332.0f, 318.0f, 110.0f, 310.0f, 10.0000f); + g.fillRoundedRectangle (332.0f, 318.0f, 110.0f, 310.0f, 10.000f); g.setColour (Colours::white); - g.setFont (Font (16.0000f, Font::plain)); - g.drawText (L"LFO 2", + g.setFont (Font (16.00f, Font::plain)); + g.drawText (TRANS("LFO 2"), 450, 8, 60, 24, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Polyphon", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Polyphon"), 388, 290, 44, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Restart", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Restart"), 346, 290, 30, 16, Justification::centred, true); g.setColour (Colours::white); - g.setFont (Font (16.0000f, Font::plain)); - g.drawText (L"LFO 3", + g.setFont (Font (16.00f, Font::plain)); + g.drawText (TRANS("LFO 3"), 336, 322, 60, 24, Justification::centred, true); g.setColour (Colours::white); - g.setFont (Font (16.0000f, Font::plain)); - g.drawText (L"LFO 4", + g.setFont (Font (16.00f, Font::plain)); + g.drawText (TRANS("LFO 4"), 450, 322, 60, 24, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Tremolo", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Tremolo"), 736, 402, 60, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Stereo pan", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Stereo pan"), 810, 402, 60, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"FM Source 1", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("FM Source 1"), 94, 188, 64, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Source", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Source"), 804, 436, 72, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Source", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Source"), 732, 436, 72, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Source 2", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Source 2"), 732, 290, 72, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"VCF type", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("VCF type"), 878, 54, 72, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Smooth", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Smooth"), 386, 120, 44, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"PWM amt. 1", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("PWM amt. 1"), 160, 154, 70, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"PWM Source 1", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("PWM Source 1"), 166, 188, 64, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Level", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Level"), 30, 86, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Noise level", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Noise level"), 802, 504, 72, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Noise shape", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Noise shape"), 810, 540, 60, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Tune", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Tune"), 1018, 572, 40, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"VCF Order", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("VCF Order"), 878, 90, 72, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Portamento", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Portamento"), 1058, 376, 60, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Voice pan.", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Voice pan."), 1064, 572, 52, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"VCO hum.", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("VCO hum."), 966, 504, 44, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"VCF hum.", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("VCF hum."), 1016, 504, 44, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"ENV hum.", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("ENV hum."), 1068, 504, 44, 16, Justification::centred, true); g.setColour (Colours::white); - g.setFont (Font (11.0000f, Font::plain)); - g.drawText (L"Unison num. voices :", + g.setFont (Font (11.00f, Font::plain)); + g.drawText (TRANS("Unison num. voices :"), 966, 414, 100, 18, Justification::centredRight, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"FM Source 2", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("FM Source 2"), 94, 290, 64, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"PWM Source 2", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("PWM Source 2"), 166, 290, 64, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"AM source 1", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("AM source 1"), 22, 188, 64, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"AM source 2", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("AM source 2"), 22, 290, 64, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"AM amt. 1", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("AM amt. 1"), 20, 154, 70, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Detune", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Detune"), 96, 400, 54, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Transpose", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Transpose"), 246, 468, 58, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Pulse Width", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Pulse Width"), 160, 400, 68, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Shape", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Shape"), 242, 400, 64, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Level", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Level"), 30, 400, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Speed", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Speed"), 338, 434, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Shape", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Shape"), 348, 368, 72, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Smooth", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Smooth"), 386, 434, 44, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Speed", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Speed"), 452, 120, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Shape", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Shape"), 462, 54, 72, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Smooth", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Smooth"), 500, 120, 44, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Speed", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Speed"), 452, 434, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Shape", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Shape"), 462, 368, 72, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Smooth", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Smooth"), 500, 434, 44, 16, Justification::centred, true); g.setColour (Colours::white); - g.setFont (Font (16.0000f, Font::plain)); - g.drawText (L"VCF ENV", + g.setFont (Font (16.00f, Font::plain)); + g.drawText (TRANS("VCF ENV"), 562, 8, 76, 24, Justification::centred, true); g.setColour (Colours::white); - g.setFont (Font (16.0000f, Font::plain)); - g.drawText (L"VCA ENV", + g.setFont (Font (16.00f, Font::plain)); + g.drawText (TRANS("VCA ENV"), 648, 8, 72, 24, Justification::centred, true); g.setColour (Colours::white); - g.setFont (Font (16.0000f, Font::plain)); - g.drawText (L"ENV 3", + g.setFont (Font (16.00f, Font::plain)); + g.drawText (TRANS("ENV 3"), 562, 322, 76, 24, Justification::centred, true); g.setColour (Colours::white); - g.setFont (Font (16.0000f, Font::plain)); - g.drawText (L"ENV 4", + g.setFont (Font (16.00f, Font::plain)); + g.drawText (TRANS("ENV 4"), 648, 322, 72, 24, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Sustain", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Sustain"), 664, 534, 40, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Decay", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Decay"), 664, 470, 40, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Release", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Release"), 660, 604, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Attack", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Attack"), 660, 402, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Sustain", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Sustain"), 580, 222, 40, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Decay", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Decay"), 580, 156, 40, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Release", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Release"), 576, 290, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Attack", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Attack"), 576, 88, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Sustain", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Sustain"), 580, 534, 40, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Decay", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Decay"), 580, 470, 40, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Release", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Release"), 576, 604, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Attack", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Attack"), 576, 402, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Source 1", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Source 1"), 732, 190, 72, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Mod. amt. 1", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Mod. amt. 1"), 808, 156, 64, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Source 2", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Source 2"), 804, 290, 72, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Source 1", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Source 1"), 804, 190, 72, 16, Justification::centred, true); g.setColour (Colours::white); - g.setFont (Font (16.0000f, Font::plain)); - g.drawText (L"Misc.", + g.setFont (Font (16.00f, Font::plain)); + g.drawText (TRANS("Misc."), 966, 322, 58, 24, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Delay", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Delay"), 338, 188, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Attack", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Attack"), 384, 188, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Delay", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Delay"), 452, 188, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Attack", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Attack"), 498, 188, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Delay", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Delay"), 452, 502, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Attack", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Attack"), 498, 502, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Delay", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Delay"), 338, 502, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Attack", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Attack"), 384, 502, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Symmetry", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Symmetry"), 362, 256, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Polyphon", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Polyphon"), 500, 290, 44, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Restart", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Restart"), 458, 290, 30, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Symmetry", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Symmetry"), 476, 256, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Polyphon", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Polyphon"), 388, 604, 44, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Restart", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Restart"), 346, 604, 30, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Polyphon", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Polyphon"), 500, 604, 44, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Restart", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Restart"), 458, 604, 30, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Symmetry", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Symmetry"), 362, 570, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Symmetry", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Symmetry"), 476, 570, 48, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"FM amt. 2", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("FM amt. 2"), 90, 256, 70, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"PWM amt. 2", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("PWM amt. 2"), 160, 256, 70, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"AM amt. 2", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("AM amt. 2"), 20, 256, 70, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"FM amt. 1", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("FM amt. 1"), 90, 468, 70, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"PWM amt. 1", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("PWM amt. 1"), 160, 468, 70, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"AM amt. 1", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("AM amt. 1"), 20, 468, 70, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"FM Source 1", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("FM Source 1"), 94, 502, 64, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"PWM Source 1", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("PWM Source 1"), 166, 502, 64, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"AM source 1", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("AM source 1"), 22, 502, 64, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"FM amt. 2", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("FM amt. 2"), 90, 570, 70, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"PWM amt. 2", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("PWM amt. 2"), 160, 570, 70, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"AM amt. 2", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("AM amt. 2"), 20, 570, 70, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"FM Source 2", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("FM Source 2"), 92, 604, 64, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"PWM Source 2", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("PWM Source 2"), 164, 604, 64, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"AM source 2", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("AM source 2"), 20, 604, 64, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Mod. amt. 2", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Mod. amt. 2"), 736, 258, 64, 16, Justification::centred, true); g.setColour (Colours::black); - g.setFont (Font (10.0000f, Font::plain)); - g.drawText (L"Mod. amt. 2", + g.setFont (Font (10.00f, Font::plain)); + g.drawText (TRANS("Mod. amt. 2"), 810, 258, 64, 16, Justification::centred, true); g.setColour (Colours::white); - g.setFont (Font (11.0000f, Font::plain)); - g.drawText (L"Max. Polyphony :", + g.setFont (Font (11.00f, Font::plain)); + g.drawText (TRANS("Max. Polyphony :"), 966, 394, 100, 18, Justification::centredRight, true); @@ -3792,6 +3594,8 @@ void JaySynthAudioProcessorEditor::resized() m_button_mono_retrigger->setBounds (965, 364, 86, 16); m_label_max_num_voices->setBounds (1064, 394, 42, 18); m_label_num_voices_playing->setBounds (1060, 598, 42, 18); + m_labelDebug->setBounds (966, 274, 150, 24); + m_btn_midiClockLed->setBounds (1058, 272, 32, 32); //[UserResized] Add your own custom resize handling here.. //[/UserResized] } @@ -5305,6 +5109,13 @@ void JaySynthAudioProcessorEditor::actionListenerCallback (const String &message m_label_num_voices_playing->setText(String::formatted("%d", paramID), juce::NotificationType::dontSendNotification); break; + case JaySynthActionListener::JAYSYNTH_CHANGED_MIDICLOCK: + uint32_t deltaTime_ms; + deltaTime_ms = spa.getValue("value", "-1").getIntValue(); + m_btn_midiClockLed->flash(100); + m_labelDebug->setText(String("dT = ") + String(deltaTime_ms), juce::NotificationType::dontSendNotification); + break; + default: break; } @@ -5418,9 +5229,10 @@ void JaySynthAudioProcessorEditor::timerCallback() //============================================================================== #if 0 -/* -- Jucer information section -- +/* -- Introjucer information section -- - This is where the Jucer puts all of its metadata, so don't change anything in here! + This is where the Introjucer stores the metadata that describe this GUI layout, so + make changes in here at your peril! BEGIN_JUCER_METADATA @@ -5428,7 +5240,7 @@ BEGIN_JUCER_METADATA componentName="" parentClasses="public AudioProcessorEditor, public Timer, public ButtonListener, public ActionListener, public MidiCC_PopUp_Listener, public VelKey_PopUp_Listener" constructorParams="JaySynthAudioProcessor* ownerFilter, bool has_wt" variableInitialisers="AudioProcessorEditor (ownerFilter)" snapPixels="2" - snapActive="1" snapShown="1" overlayOpacity="0.330000013" fixedSize="1" + snapActive="1" snapShown="1" overlayOpacity="0.330" fixedSize="1" initialWidth="1120" initialHeight="720"> @@ -6671,6 +6483,14 @@ BEGIN_JUCER_METADATA textCol="ffffff00" edTextCol="ff000000" edBkgCol="0" labelText="0" editableSingleClick="1" editableDoubleClick="1" focusDiscardsChanges="0" fontname="Default font" fontsize="14" bold="0" italic="0" justification="36"/> +