From c3438a1b4e89686f16f433c66db7aa1cc866153f Mon Sep 17 00:00:00 2001 From: Tres Finocchiaro Date: Wed, 20 Dec 2017 20:46:47 -0500 Subject: [PATCH 01/31] Remove alpha channel from splash Closes #4062 --- data/themes/default/splash.png | Bin 121287 -> 113394 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/themes/default/splash.png b/data/themes/default/splash.png index c5e3b6cd55f8ef8aee882753ec9fc8dd5e15b5fd..f95733e957786f53442b1acf5a82936055f69048 100644 GIT binary patch literal 113394 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 From 7de9649b2f2cb3c1bb80398a10fbb0363ae5ab82 Mon Sep 17 00:00:00 2001 From: tresf Date: Fri, 22 Dec 2017 14:54:43 -0500 Subject: [PATCH 02/31] Fix quantization of pasted notes Fixes a regression caused by #4058 --- src/gui/editors/PianoRoll.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/editors/PianoRoll.cpp b/src/gui/editors/PianoRoll.cpp index f1e1c9356..98547583c 100644 --- a/src/gui/editors/PianoRoll.cpp +++ b/src/gui/editors/PianoRoll.cpp @@ -3757,7 +3757,7 @@ void PianoRoll::pasteNotes() // create the note Note cur_note; cur_note.restoreState( list.item( i ).toElement() ); - cur_note.setPos( cur_note.pos() + m_timeLine->pos() ); + cur_note.setPos( cur_note.pos() + Note::quantized( m_timeLine->pos(), quantization() ) ); // select it cur_note.setSelected( true ); From 2c3df226ee08120df877dad2bf0ce625f16365ce Mon Sep 17 00:00:00 2001 From: gandalf3 Date: Fri, 22 Dec 2017 12:29:08 -0800 Subject: [PATCH 03/31] Allow individual velocity/pan changes with alt (#3923) Fix regression caused by 6e3d4f4, allow ALT to change the velocity of multiple selected notes. --- src/gui/editors/PianoRoll.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/gui/editors/PianoRoll.cpp b/src/gui/editors/PianoRoll.cpp index 98547583c..d2ce4b94e 100644 --- a/src/gui/editors/PianoRoll.cpp +++ b/src/gui/editors/PianoRoll.cpp @@ -2121,9 +2121,14 @@ void PianoRoll::mouseMoveEvent( QMouseEvent * me ) bool isUnderPosition = n->withinRange( ticks_start, ticks_end ); // Play note under the cursor if ( isUnderPosition ) { testPlayNote( n ); } - // If note is the one under the cursor or is selected when alt is - // not pressed - if ( ( isUnderPosition && !isSelection() ) || ( n->selected() && !altPressed ) ) + // If note is: + // Under the cursor, when there is no selection + // Selected, and alt is not pressed + // Under the cursor, selected, and alt is pressed + if ( ( isUnderPosition && !isSelection() ) || + ( n->selected() && !altPressed ) || + ( isUnderPosition && n->selected() && altPressed ) + ) { if( m_noteEditMode == NoteEditVolume ) { From a3d72def4dcc1af74a79142268c71d9d794c24fa Mon Sep 17 00:00:00 2001 From: Tres Finocchiaro Date: Fri, 22 Dec 2017 15:29:32 -0500 Subject: [PATCH 04/31] Move Zyn GUI to main thread (#4065) --- plugins/zynaddsubfx/RemoteZynAddSubFx.cpp | 25 ++++++++--------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/plugins/zynaddsubfx/RemoteZynAddSubFx.cpp b/plugins/zynaddsubfx/RemoteZynAddSubFx.cpp index cdb46eb63..7cb6e635a 100644 --- a/plugins/zynaddsubfx/RemoteZynAddSubFx.cpp +++ b/plugins/zynaddsubfx/RemoteZynAddSubFx.cpp @@ -62,18 +62,11 @@ public: waitForMessage( IdInitDone ); pthread_mutex_init( &m_guiMutex, NULL ); - pthread_create( &m_guiThreadHandle, NULL, guiThread, this ); + pthread_create( &m_messageThreadHandle, NULL, messageLoop, this ); } virtual ~RemoteZynAddSubFx() { - m_guiExit = true; -#ifdef LMMS_BUILD_WIN32 - Sleep( m_guiSleepTime * 2 ); -#else - usleep( m_guiSleepTime * 2 * 1000 ); -#endif - Nio::stop(); } @@ -87,7 +80,7 @@ public: LocalZynAddSubFx::setBufferSize( bufferSize() ); } - void run() + void messageLoop() { message m; while( ( m = receiveMessage() ).id != IdQuit ) @@ -96,6 +89,7 @@ public: processMessage( m ); pthread_mutex_unlock( &m_master->mutex ); } + m_guiExit = true; } virtual bool processMessage( const message & _m ) @@ -151,23 +145,22 @@ public: LocalZynAddSubFx::processAudio( _out ); } - static void * guiThread( void * _arg ) + static void * messageLoop( void * _arg ) { RemoteZynAddSubFx * _this = static_cast( _arg ); - _this->guiThread(); + _this->messageLoop(); return NULL; } + void guiLoop(); private: - void guiThread(); - const int m_guiSleepTime; - pthread_t m_guiThreadHandle; + pthread_t m_messageThreadHandle; pthread_mutex_t m_guiMutex; std::queue m_guiMessages; bool m_guiExit; @@ -177,7 +170,7 @@ private: -void RemoteZynAddSubFx::guiThread() +void RemoteZynAddSubFx::guiLoop() { int exitProgram = 0; MasterUI * ui = NULL; @@ -292,7 +285,7 @@ int main( int _argc, char * * _argv ) RemoteZynAddSubFx * remoteZASF = new RemoteZynAddSubFx( _argv[1] ); #endif - remoteZASF->run(); + remoteZASF->guiLoop(); delete remoteZASF; From 96c5f05120ecff5694ce581bd71c71991e9ee43e Mon Sep 17 00:00:00 2001 From: liushuyu Date: Sat, 30 Dec 2017 01:21:00 -0700 Subject: [PATCH 05/31] update i18n and add i18n maint script --- buildtools/update_locales | 71 + data/locale/en.ts | 7083 +++++++++++++++++++++++++------------ 2 files changed, 4964 insertions(+), 2190 deletions(-) create mode 100755 buildtools/update_locales diff --git a/buildtools/update_locales b/buildtools/update_locales new file mode 100755 index 000000000..4a2825d29 --- /dev/null +++ b/buildtools/update_locales @@ -0,0 +1,71 @@ +#!/bin/bash +aberr(){ printf "[\e[31mERROR\e[0m]: \e[1m%s\e[0m\n" "$*" >&2; } +abinfo(){ printf "[\e[96mINFO\e[0m]: \e[1m%s\e[0m\n" "$*" >&2; } + +function upload_to_tx() { + if ! which tx > /dev/null; then + aberr "You don't have Transifex client installed. \n Run \`pip install transifex-client\` to install it." + exit 1 + fi + abinfo "Uploading to transifex..." + if ! tx push -s; then + aberr "Problems occurred when uploading strings to Transifex." + printf "\t Either there are syntax errors in source file or you don't have permission to update the source file." + exit 1 + fi + exit 0 +} + +function validate() { + ERR_LANG="" + ERR_BUF="" + for i in data/locale/*.ts; do + if ! ERR_BUF=$(lconvert-qt5 -i "${i}" -o "/tmp/test.qm" -of qm 2>&1); then + ERR_LANG+="\e[96m$(basename "${i}")\e[0m: \e[93m${ERR_BUF}\e[0m " + printf "\e[31mx\e[0m" + continue + fi + printf "\e[32m.\e[0m" + done + echo "" + if [[ "x${ERR_LANG}" != "x" ]]; then + aberr "The following files failed the validation: " + echo -e "${ERR_LANG}" + fi +} + +abinfo "Checking for your environment..." +if ! which lupdate-qt5 > /dev/null; then + aberr "You don't seem to have Qt i18n tools installed." + printf "\tUsually this comes with your Qt installation, or you need to\n" + printf "\tinstall extra packages like \`qt5-tools\` or similar.\n" + exit 1; +fi + +abinfo "Scanning directories..." + +if test -d src/3rdparty/qt5-x11embed/3rdparty/ECM/; then + # prevent from collecting strings in ECM + rm -rf src/3rdparty/qt5-x11embed/3rdparty/ECM/ +fi + +if ! lupdate-qt5 -I include/ src/ plugins/ -ts data/locale/en.ts; then + aberr "There are some problems when collecting the strings." + exit 1 +fi + +abinfo "Validating translations..." +validate + +abinfo "Translations successfully updated." +printf "Do you want to upload translations to Transifex? [y/N]: " +read -n 1 -r TX +echo "" + +if [[ "$TX" == "y" || "$TX" == "Y" ]]; then + upload_to_tx +fi + +abinfo "No upload as required." + +exit 0 diff --git a/data/locale/en.ts b/data/locale/en.ts index 49b55bd88..12b1b30cc 100644 --- a/data/locale/en.ts +++ b/data/locale/en.ts @@ -4,91 +4,112 @@ AboutDialog + About LMMS + + LMMS + + + + Version %1 (%2/%3, Qt %4, %5) + About + LMMS - easy music production for everyone + + Copyright © %1 + + + + + <html><head/><body><p><a href="https://lmms.io"><span style=" text-decoration: underline; color:#0000ff;">https://lmms.io</span></a></p></body></html> + + + + Authors + + Involved + + + + + Contributors ordered by number of commits: + + + + Translation + Current language not translated (or native English). If you're interested in translating LMMS in another language or want to improve existing translations, you're welcome to help us! Simply contact the maintainer! + License - - LMMS - - - - Involved - - - - Contributors ordered by number of commits: - - - - Copyright © %1 - - - - <html><head/><body><p><a href="https://lmms.io"><span style=" text-decoration: underline; color:#0000ff;">https://lmms.io</span></a></p></body></html> - - AmplifierControlDialog + VOL + Volume: + PAN + Panning: + LEFT + Left gain: + RIGHT + Right gain: @@ -96,18 +117,22 @@ If you're interested in translating LMMS in another language or want to imp AmplifierControls + Volume + Panning + Left gain + Right gain @@ -115,10 +140,12 @@ If you're interested in translating LMMS in another language or want to imp AudioAlsaSetupWidget + DEVICE + CHANNELS @@ -126,78 +153,98 @@ If you're interested in translating LMMS in another language or want to imp AudioFileProcessorView + Open other sample + Click here, if you want to open another audio-file. A dialog will appear where you can select your file. Settings like looping-mode, start and end-points, amplify-value, and so on are not reset. So, it may not sound like the original sample. + Reverse sample + If you enable this button, the whole sample is reversed. This is useful for cool effects, e.g. a reversed crash. - Amplify: - - - - With this knob you can set the amplify ratio. When you set a value of 100% your sample isn't changed. Otherwise it will be amplified up or down (your actual sample-file isn't touched!) - - - - Startpoint: - - - - Endpoint: - - - - Continue sample playback across notes - - - - Enabling this option makes the sample continue playing across different notes - if you change pitch, or the note length stops before the end of the sample, then the next note played will continue where it left off. To reset the playback to the start of the sample, insert a note at the bottom of the keyboard (< 20 Hz) - - - + Disable loop + This button disables looping. The sample plays only once from start to end. + + Enable loop + This button enables forwards-looping. The sample loops between the end point and the loop point. + This button enables ping-pong-looping. The sample loops backwards and forwards between the end point and the loop point. + + Continue sample playback across notes + + + + + Enabling this option makes the sample continue playing across different notes - if you change pitch, or the note length stops before the end of the sample, then the next note played will continue where it left off. To reset the playback to the start of the sample, insert a note at the bottom of the keyboard (< 20 Hz) + + + + + Amplify: + + + + + With this knob you can set the amplify ratio. When you set a value of 100% your sample isn't changed. Otherwise it will be amplified up or down (your actual sample-file isn't touched!) + + + + + Startpoint: + + + + With this knob you can set the point where AudioFileProcessor should begin playing your sample. + + Endpoint: + + + + With this knob you can set the point where AudioFileProcessor should stop playing your sample. + Loopback point: + With this knob you can set the point where the loop starts. @@ -205,6 +252,7 @@ If you're interested in translating LMMS in another language or want to imp AudioFileProcessorWaveView + Sample length: @@ -212,26 +260,32 @@ If you're interested in translating LMMS in another language or want to imp AudioJack + JACK client restarted + LMMS was kicked by JACK for some reason. Therefore the JACK backend of LMMS has been restarted. You will have to make manual connections again. + JACK server down + The JACK server seems to have been shutdown and starting a new instance failed. Therefore LMMS is unable to proceed. You should save your project and restart JACK and LMMS. + CLIENT-NAME + CHANNELS @@ -239,10 +293,12 @@ If you're interested in translating LMMS in another language or want to imp AudioOss::setupWidget + DEVICE + CHANNELS @@ -250,10 +306,12 @@ If you're interested in translating LMMS in another language or want to imp AudioPortAudio::setupWidget + BACKEND + DEVICE @@ -261,10 +319,12 @@ If you're interested in translating LMMS in another language or want to imp AudioPulseAudio::setupWidget + DEVICE + CHANNELS @@ -272,6 +332,7 @@ If you're interested in translating LMMS in another language or want to imp AudioSdl::setupWidget + DEVICE @@ -279,10 +340,12 @@ If you're interested in translating LMMS in another language or want to imp AudioSndio::setupWidget + DEVICE + CHANNELS @@ -290,10 +353,12 @@ If you're interested in translating LMMS in another language or want to imp AudioSoundIo::setupWidget + BACKEND + DEVICE @@ -301,61 +366,75 @@ If you're interested in translating LMMS in another language or want to imp AutomatableModel + &Reset (%1%2) + &Copy value (%1%2) + &Paste value (%1%2) + Edit song-global automation - Connected to %1 - - - - Connected to controller - - - - Edit connection... - - - - Remove connection - - - - Connect to controller... - - - + Remove song-global automation + Remove all linked controls + + + Connected to %1 + + + + + Connected to controller + + + + + Edit connection... + + + + + Remove connection + + + + + Connect to controller... + + AutomationEditor + Please open an automation pattern with the context menu of a control! + Values copied + All selected values were copied to the clipboard. @@ -363,157 +442,192 @@ If you're interested in translating LMMS in another language or want to imp AutomationEditorWindow + Play/pause current pattern (Space) + Click here if you want to play the current pattern. This is useful while editing it. The pattern is automatically looped when the end is reached. + Stop playing of current pattern (Space) + Click here if you want to stop playing of the current pattern. - Draw mode (Shift+D) - - - - Erase mode (Shift+E) - - - - Flip vertically - - - - Flip horizontally - - - - Click here and the pattern will be inverted.The points are flipped in the y direction. - - - - Click here and the pattern will be reversed. The points are flipped in the x direction. - - - - Click here and draw-mode will be activated. In this mode you can add and move single values. This is the default mode which is used most of the time. You can also press 'Shift+D' on your keyboard to activate this mode. - - - - Click here and erase-mode will be activated. In this mode you can erase single values. You can also press 'Shift+E' on your keyboard to activate this mode. - - - - Discrete progression - - - - Linear progression - - - - Cubic Hermite progression - - - - Tension value for spline - - - - A higher tension value may make a smoother curve but overshoot some values. A low tension value will cause the slope of the curve to level off at each control point. - - - - Click here to choose discrete progressions for this automation pattern. The value of the connected object will remain constant between control points and be set immediately to the new value when each control point is reached. - - - - Click here to choose linear progressions for this automation pattern. The value of the connected object will change at a steady rate over time between control points to reach the correct value at each control point without a sudden change. - - - - Click here to choose cubic hermite progressions for this automation pattern. The value of the connected object will change in a smooth curve and ease in to the peaks and valleys. - - - - Cut selected values (%1+X) - - - - Copy selected values (%1+C) - - - - Paste values from clipboard (%1+V) - - - - Click here and selected values will be cut into the clipboard. You can paste them anywhere in any pattern by clicking on the paste button. - - - - Click here and selected values will be copied into the clipboard. You can paste them anywhere in any pattern by clicking on the paste button. - - - - Click here and the values from the clipboard will be pasted at the first visible measure. - - - - Tension: - - - - Automation Editor - no pattern - - - - Automation Editor - %1 - - - + Edit actions + + Draw mode (Shift+D) + + + + + Erase mode (Shift+E) + + + + + Flip vertically + + + + + Flip horizontally + + + + + Click here and the pattern will be inverted.The points are flipped in the y direction. + + + + + Click here and the pattern will be reversed. The points are flipped in the x direction. + + + + + Click here and draw-mode will be activated. In this mode you can add and move single values. This is the default mode which is used most of the time. You can also press 'Shift+D' on your keyboard to activate this mode. + + + + + Click here and erase-mode will be activated. In this mode you can erase single values. You can also press 'Shift+E' on your keyboard to activate this mode. + + + + Interpolation controls - Timeline controls + + Discrete progression + + Linear progression + + + + + Cubic Hermite progression + + + + + Tension value for spline + + + + + A higher tension value may make a smoother curve but overshoot some values. A low tension value will cause the slope of the curve to level off at each control point. + + + + + Click here to choose discrete progressions for this automation pattern. The value of the connected object will remain constant between control points and be set immediately to the new value when each control point is reached. + + + + + Click here to choose linear progressions for this automation pattern. The value of the connected object will change at a steady rate over time between control points to reach the correct value at each control point without a sudden change. + + + + + Click here to choose cubic hermite progressions for this automation pattern. The value of the connected object will change in a smooth curve and ease in to the peaks and valleys. + + + + + Tension: + + + + + Cut selected values (%1+X) + + + + + Copy selected values (%1+C) + + + + + Paste values from clipboard (%1+V) + + + + + Click here and selected values will be cut into the clipboard. You can paste them anywhere in any pattern by clicking on the paste button. + + + + + Click here and selected values will be copied into the clipboard. You can paste them anywhere in any pattern by clicking on the paste button. + + + + + Click here and the values from the clipboard will be pasted at the first visible measure. + + + + Zoom controls + Quantization controls - Model is already connected to this pattern. - - - + Quantization + Quantization. Sets the smallest step size for the Automation Point. By default this also sets the length, clearing out other points in the range. Press <Ctrl> to override this behaviour. + + + + Automation Editor - no pattern + + + + + + Automation Editor - %1 + + + + + Model is already connected to this pattern. + + AutomationPattern + Drag a control while pressing <%1> @@ -521,46 +635,57 @@ If you're interested in translating LMMS in another language or want to imp AutomationPatternView + double-click to open this pattern in automation editor + Open in Automation editor + Clear + Reset name + Change name - %1 Connections - - - - Disconnect "%1" - - - + Set/clear record + Flip Vertically (Visible) + Flip Horizontally (Visible) + + %1 Connections + + + + + Disconnect "%1" + + + + Model is already connected to this pattern. @@ -568,6 +693,7 @@ If you're interested in translating LMMS in another language or want to imp AutomationTrack + Automation track @@ -575,77 +701,95 @@ If you're interested in translating LMMS in another language or want to imp BBEditor + Beat+Bassline Editor + Play/pause current beat/bassline (Space) + Stop playback of current beat/bassline (Space) + Click here to play the current beat/bassline. The beat/bassline is automatically looped when its end is reached. + Click here to stop playing of current beat/bassline. - Add beat/bassline - - - - Add automation-track - - - - Remove steps - - - - Add steps - - - + Beat selector + Track and step actions - Clone Steps + + Add beat/bassline + Add sample-track + + + Add automation-track + + + + + Remove steps + + + + + Add steps + + + + + Clone Steps + + BBTCOView + Open in Beat+Bassline-Editor + Reset name + Change name + Change color + Reset color to default @@ -653,10 +797,12 @@ If you're interested in translating LMMS in another language or want to imp BBTrack + Beat/Bassline %1 + Clone of %1 @@ -664,26 +810,32 @@ If you're interested in translating LMMS in another language or want to imp BassBoosterControlDialog + FREQ + Frequency: + GAIN + Gain: + RATIO + Ratio: @@ -691,14 +843,17 @@ If you're interested in translating LMMS in another language or want to imp BassBoosterControls + Frequency + Gain + Ratio @@ -706,89 +861,111 @@ If you're interested in translating LMMS in another language or want to imp BitcrushControlDialog + IN + OUT + + GAIN + Input Gain: - Input Noise: - - - - Output Gain: - - - - CLIP - - - - Output Clip: - - - - Rate Enabled - - - - Enable samplerate-crushing - - - - Depth Enabled - - - - Enable bitdepth-crushing - - - - Sample rate: - - - - Stereo difference: - - - - Levels: - - - + NOISE + + Input Noise: + + + + + Output Gain: + + + + + CLIP + + + + + Output Clip: + + + + + Rate Enabled + + + + + Enable samplerate-crushing + + + + + Depth Enabled + + + + + Enable bitdepth-crushing + + + + FREQ + + Sample rate: + + + + STEREO + + Stereo difference: + + + + QUANT + + + Levels: + + CaptionMenu + &Help + Help (not available) @@ -796,10 +973,12 @@ If you're interested in translating LMMS in another language or want to imp CarlaInstrumentView + Show GUI + Click here to show or hide the graphical user interface (GUI) of Carla. @@ -807,6 +986,7 @@ If you're interested in translating LMMS in another language or want to imp Controller + Controller %1 @@ -814,58 +994,73 @@ If you're interested in translating LMMS in another language or want to imp ControllerConnectionDialog + Connection Settings + MIDI CONTROLLER + Input channel + CHANNEL + Input controller + CONTROLLER + + Auto Detect + MIDI-devices to receive MIDI-events from + USER CONTROLLER + MAPPING FUNCTION + OK + Cancel + LMMS + Cycle Detected. @@ -873,18 +1068,22 @@ If you're interested in translating LMMS in another language or want to imp ControllerRackView + Controller Rack + Add + Confirm Delete + Confirm delete? There are existing connection(s) associated with this controller. There is no way to undo. @@ -892,93 +1091,115 @@ If you're interested in translating LMMS in another language or want to imp ControllerView + Controls + Controllers are able to automate the value of a knob, slider, and other controls. + Rename controller + Enter the new name for this controller + + LFO + + + + &Remove this controller + Re&name this controller - - LFO - - CrossoverEQControlDialog + Band 1/2 Crossover: + Band 2/3 Crossover: + Band 3/4 Crossover: + Band 1 Gain: + Band 2 Gain: + Band 3 Gain: + Band 4 Gain: + Band 1 Mute + Mute Band 1 + Band 2 Mute + Mute Band 2 + Band 3 Mute + Mute Band 3 + Band 4 Mute + Mute Band 4 @@ -986,22 +1207,27 @@ If you're interested in translating LMMS in another language or want to imp DelayControls + Delay Samples + Feedback + Lfo Frequency + Lfo Amount + Output gain @@ -1009,228 +1235,311 @@ If you're interested in translating LMMS in another language or want to imp DelayControlsDialog - Lfo Amt - - - - Delay Time - - - - Feedback Amount - - - - Lfo - - - - Out Gain - - - - Gain - - - + DELAY + + Delay Time + + + + FDBK + + Feedback Amount + + + + RATE + + Lfo + + + + AMNT + + + Lfo Amt + + + + + Out Gain + + + + + Gain + + DualFilterControlDialog - Filter 1 enabled - - - - Filter 2 enabled - - - - Click to enable/disable Filter 1 - - - - Click to enable/disable Filter 2 - - - + + FREQ + + Cutoff frequency + + RESO + + Resonance + + GAIN + + Gain + MIX + Mix + + + Filter 1 enabled + + + + + Filter 2 enabled + + + + + Click to enable/disable Filter 1 + + + + + Click to enable/disable Filter 2 + + DualFilterControls + Filter 1 enabled + Filter 1 type + Cutoff 1 frequency + Q/Resonance 1 + Gain 1 + Mix + Filter 2 enabled + Filter 2 type + Cutoff 2 frequency + Q/Resonance 2 + Gain 2 + + LowPass + + HiPass + + BandPass csg + + BandPass czpg + + Notch + + Allpass + + Moog + + 2x LowPass + + RC LowPass 12dB + + RC BandPass 12dB + + RC HighPass 12dB + + RC LowPass 24dB + + RC BandPass 24dB + + RC HighPass 24dB + + Vocal Formant Filter + + 2x Moog + + SV LowPass + + SV BandPass + + SV HighPass + + SV Notch + + Fast Formant + + Tripole @@ -1238,41 +1547,50 @@ If you're interested in translating LMMS in another language or want to imp Editor + + Transport controls + + + + Play (Space) + Stop (Space) + Record + Record while playing - - Transport controls - - Effect + Effect enabled + Wet/Dry mix + Gate + Decay @@ -1280,6 +1598,7 @@ If you're interested in translating LMMS in another language or want to imp EffectChain + Effects enabled @@ -1287,10 +1606,12 @@ If you're interested in translating LMMS in another language or want to imp EffectRackView + EFFECTS CHAIN + Add effect @@ -1298,22 +1619,28 @@ If you're interested in translating LMMS in another language or want to imp EffectSelectDialog + Add effect + + Name + Type + Description + Author @@ -1321,54 +1648,67 @@ If you're interested in translating LMMS in another language or want to imp EffectView + Toggles the effect on or off. + On/Off + W/D + Wet Level: + The Wet/Dry knob sets the ratio between the input signal and the effect signal that forms the output. + DECAY + Time: + The Decay knob controls how many buffers of silence must pass before the plugin stops processing. Smaller values will reduce the CPU overhead but run the risk of clipping the tail on delay and reverb effects. + GATE + Gate: + The Gate knob controls the signal level that is considered to be 'silence' while deciding when to stop processing signals. + Controls + Effect plugins function as a chained series of effects where the signal will be processed from top to bottom. The On/Off switch allows you to bypass a given plugin at any point in time. @@ -1385,14 +1725,17 @@ Right clicking will bring up a context menu where you can change the order in wh + Move &up + Move &down + &Remove this plugin @@ -1400,58 +1743,72 @@ Right clicking will bring up a context menu where you can change the order in wh EnvelopeAndLfoParameters + Predelay + Attack + Hold + Decay + Sustain + Release + Modulation + LFO Predelay + LFO Attack + LFO speed + LFO Modulation + LFO Wave Shape + Freq x 100 + Modulate Env-Amount @@ -1459,349 +1816,439 @@ Right clicking will bring up a context menu where you can change the order in wh EnvelopeAndLfoView + + DEL + Predelay: + Use this knob for setting predelay of the current envelope. The bigger this value the longer the time before start of actual envelope. + + ATT + Attack: + Use this knob for setting attack-time of the current envelope. The bigger this value the longer the envelope needs to increase to attack-level. Choose a small value for instruments like pianos and a big value for strings. + HOLD + Hold: + Use this knob for setting hold-time of the current envelope. The bigger this value the longer the envelope holds attack-level before it begins to decrease to sustain-level. + DEC + Decay: + Use this knob for setting decay-time of the current envelope. The bigger this value the longer the envelope needs to decrease from attack-level to sustain-level. Choose a small value for instruments like pianos. + SUST + Sustain: + Use this knob for setting sustain-level of the current envelope. The bigger this value the higher the level on which the envelope stays before going down to zero. + REL + Release: + Use this knob for setting release-time of the current envelope. The bigger this value the longer the envelope needs to decrease from sustain-level to zero. Choose a big value for soft instruments like strings. + + AMT + + Modulation amount: + Use this knob for setting modulation amount of the current envelope. The bigger this value the more the according size (e.g. volume or cutoff-frequency) will be influenced by this envelope. + LFO predelay: + Use this knob for setting predelay-time of the current LFO. The bigger this value the the time until the LFO starts to oscillate. + LFO- attack: + Use this knob for setting attack-time of the current LFO. The bigger this value the longer the LFO needs to increase its amplitude to maximum. + SPD + LFO speed: + Use this knob for setting speed of the current LFO. The bigger this value the faster the LFO oscillates and the faster will be your effect. + Use this knob for setting modulation amount of the current LFO. The bigger this value the more the selected size (e.g. volume or cutoff-frequency) will be influenced by this LFO. + Click here for a sine-wave. + Click here for a triangle-wave. + Click here for a saw-wave for current. + Click here for a square-wave. + Click here for a user-defined wave. Afterwards, drag an according sample-file onto the LFO graph. + + Click here for random wave. + + + + FREQ x 100 + Click here if the frequency of this LFO should be multiplied by 100. + multiply LFO-frequency by 100 + MODULATE ENV-AMOUNT + Click here to make the envelope-amount controlled by this LFO. + control envelope-amount by this LFO + ms/LFO: + Hint + Drag a sample from somewhere and drop it in this window. - - Click here for random wave. - - EqControls + Input gain + Output gain + Low shelf gain + Peak 1 gain + Peak 2 gain + Peak 3 gain + Peak 4 gain + High Shelf gain + HP res + Low Shelf res + Peak 1 BW + Peak 2 BW + Peak 3 BW + Peak 4 BW + High Shelf res + LP res + HP freq + Low Shelf freq + Peak 1 freq + Peak 2 freq + Peak 3 freq + Peak 4 freq + High shelf freq + LP freq + HP active + Low shelf active + Peak 1 active + Peak 2 active + Peak 3 active + Peak 4 active + High shelf active + LP active + LP 12 + LP 24 + LP 48 + HP 12 + HP 24 + HP 48 + low pass type + high pass type + Analyse IN + Analyse OUT @@ -1809,85 +2256,108 @@ Right clicking will bring up a context menu where you can change the order in wh EqControlsDialog + HP + Low Shelf + Peak 1 + Peak 2 + Peak 3 + Peak 4 + High Shelf + LP + In Gain + + + Gain + Out Gain + Bandwidth: + + Octave + + + + Resonance : + Frequency: + lp grp + hp grp - - Octave - - EqHandle + Reso: + BW: + + Freq: @@ -1895,178 +2365,242 @@ Right clicking will bring up a context menu where you can change the order in wh ExportProjectDialog + Export project + Output + File format: + Samplerate: + 44100 Hz + 48000 Hz + 88200 Hz + 96000 Hz + 192000 Hz - Bitrate: - - - - 64 KBit/s - - - - 128 KBit/s - - - - 160 KBit/s - - - - 192 KBit/s - - - - 256 KBit/s - - - - 320 KBit/s - - - + Depth: + 16 Bit Integer + + 24 Bit Integer + + + + 32 Bit Float + + Stereo mode: + + + + + Stereo + + + + + Joint Stereo + + + + + Mono + + + + + Bitrate: + + + + + 64 KBit/s + + + + + 128 KBit/s + + + + + 160 KBit/s + + + + + 192 KBit/s + + + + + 256 KBit/s + + + + + 320 KBit/s + + + + + Use variable bitrate + + + + Quality settings + Interpolation: + Zero Order Hold + Sinc Fastest + Sinc Medium (recommended) + Sinc Best (very slow!) + Oversampling (use with care!): + 1x (None) + 2x + 4x + 8x - Start - - - - Cancel - - - + Export as loop (remove end silence) + Export between loop markers + + Start + + + + + Cancel + + + + Could not open file - Export project to %1 - - - - Error - - - - Error while determining file-encoder device. Please try to choose a different output format. - - - - Rendering: %1% - - - + Could not open file %1 for writing. Please make sure you have write permission to the file and the directory containing the file and try again! - 24 Bit Integer + + Export project to %1 - Use variable bitrate + + Error + + + + + Error while determining file-encoder device. Please try to choose a different output format. + + + + + Rendering: %1% Fader + + Please enter a new value between %1 and %2: @@ -2074,6 +2608,7 @@ Please make sure you have write permission to the file and the directory contain FileBrowser + Browser @@ -2081,65 +2616,80 @@ Please make sure you have write permission to the file and the directory contain FileBrowserTreeWidget + Send to active instrument-track - Open in new instrument-track/B+B Editor - - - - Loading sample - - - - Please wait, loading sample for preview... - - - - --- Factory files --- - - - + Open in new instrument-track/Song Editor + + Open in new instrument-track/B+B Editor + + + + + Loading sample + + + + + Please wait, loading sample for preview... + + + + Error + does not appear to be a valid + file + + + --- Factory files --- + + FlangerControls + Delay Samples + Lfo Frequency + Seconds + Regen + Noise + Invert @@ -2147,57 +2697,70 @@ Please make sure you have write permission to the file and the directory contain FlangerControlsDialog - Delay Time: - - - - Feedback Amount: - - - - White Noise Amount: - - - + DELAY + + Delay Time: + + + + RATE + + Period: + + + + AMNT + Amount: + FDBK + + Feedback Amount: + + + + NOISE - Invert + + White Noise Amount: - Period: + + Invert FxLine + Channel send amount + The FX channel receives input from one or more instrument tracks. It in turn can be routed to multiple other FX channels. LMMS automatically takes care of preventing infinite loops for you and doesn't allow making a connection that would result in an infinite loop. @@ -2208,22 +2771,27 @@ You can remove and move FX channels in the context menu, which is accessed by ri + Move &left + Move &right + Rename &channel + R&emove channel + Remove &unused channels @@ -2231,22 +2799,29 @@ You can remove and move FX channels in the context menu, which is accessed by ri FxMixer + Master + + + FX %1 + Volume + Mute + Solo @@ -2254,26 +2829,32 @@ You can remove and move FX channels in the context menu, which is accessed by ri FxMixerView + FX-Mixer + FX Fader %1 + Mute + Mute this FX channel + Solo + Solo FX channel @@ -2281,6 +2862,8 @@ You can remove and move FX channels in the context menu, which is accessed by ri FxRoute + + Amount to send from channel %1 to channel %2 @@ -2288,14 +2871,17 @@ You can remove and move FX channels in the context menu, which is accessed by ri GigInstrument + Bank + Patch + Gain @@ -2303,46 +2889,58 @@ You can remove and move FX channels in the context menu, which is accessed by ri GigInstrumentView + Open other GIG file + Click here to open another GIG file + Choose the patch + Click here to change which patch of the GIG file to use + + Change which instrument of the GIG file is being played + Which GIG file is currently being used + Which patch of the GIG file is currently being used + Gain + Factor to multiply samples by + Open GIG file + GIG Files (*.gig) @@ -2350,42 +2948,52 @@ You can remove and move FX channels in the context menu, which is accessed by ri GuiApplication + Working directory + The LMMS working directory %1 does not exist. Create it now? You can change the directory later via Edit -> Settings. + Preparing UI + Preparing song editor + Preparing mixer + Preparing controller rack + Preparing project notes + Preparing beat/bassline editor + Preparing piano roll + Preparing automation editor @@ -2393,650 +3001,814 @@ You can remove and move FX channels in the context menu, which is accessed by ri InstrumentFunctionArpeggio + Arpeggio + Arpeggio type + Arpeggio range - Arpeggio time - - - - Arpeggio gate - - - - Arpeggio direction - - - - Arpeggio mode - - - - Up - - - - Down - - - - Up and down - - - - Random - - - - Free - - - - Sort - - - - Sync - - - - Down and up + + Cycle steps + Skip rate + Miss rate - Cycle steps + + Arpeggio time + + + + + Arpeggio gate + + + + + Arpeggio direction + + + + + Arpeggio mode + + + + + Up + + + + + Down + + + + + Up and down + + + + + Down and up + + + + + Random + + + + + Free + + + + + Sort + + + + + Sync InstrumentFunctionArpeggioView + ARPEGGIO + An arpeggio is a method playing (especially plucked) instruments, which makes the music much livelier. The strings of such instruments (e.g. harps) are plucked like chords. The only difference is that this is done in a sequential order, so the notes are not played at the same time. Typical arpeggios are major or minor triads, but there are a lot of other possible chords, you can select. + RANGE + Arpeggio range: + octave(s) + Use this knob for setting the arpeggio range in octaves. The selected arpeggio will be played within specified number of octaves. - TIME - - - - Arpeggio time: - - - - ms - - - - Use this knob for setting the arpeggio time in milliseconds. The arpeggio time specifies how long each arpeggio-tone should be played. - - - - GATE - - - - Arpeggio gate: - - - - % - - - - Use this knob for setting the arpeggio gate. The arpeggio gate specifies the percent of a whole arpeggio-tone that should be played. With this you can make cool staccato arpeggios. - - - - Chord: - - - - Direction: - - - - Mode: - - - - SKIP - - - - Skip rate: - - - - The skip function will make the arpeggiator pause one step randomly. From its start in full counter clockwise position and no effect it will gradually progress to full amnesia at maximum setting. - - - - MISS - - - - Miss rate: - - - - The miss function will make the arpeggiator miss the intended note. - - - + CYCLE + Cycle notes: + note(s) + Jumps over n steps in the arpeggio and cycles around if we're over the note range. If the total note range is evenly divisible by the number of steps jumped over you will get stuck in a shorter arpeggio or even on one note. + + + SKIP + + + + + Skip rate: + + + + + + + % + + + + + The skip function will make the arpeggiator pause one step randomly. From its start in full counter clockwise position and no effect it will gradually progress to full amnesia at maximum setting. + + + + + MISS + + + + + Miss rate: + + + + + The miss function will make the arpeggiator miss the intended note. + + + + + TIME + + + + + Arpeggio time: + + + + + ms + + + + + Use this knob for setting the arpeggio time in milliseconds. The arpeggio time specifies how long each arpeggio-tone should be played. + + + + + GATE + + + + + Arpeggio gate: + + + + + Use this knob for setting the arpeggio gate. The arpeggio gate specifies the percent of a whole arpeggio-tone that should be played. With this you can make cool staccato arpeggios. + + + + + Chord: + + + + + Direction: + + + + + Mode: + + InstrumentFunctionNoteStacking + octave + + Major + Majb5 + minor + minb5 + sus2 + sus4 + aug + augsus4 + tri + 6 + 6sus4 + 6add9 + m6 + m6add9 + 7 + 7sus4 + 7#5 + 7b5 + 7#9 + 7b9 + 7#5#9 + 7#5b9 + 7b5b9 + 7add11 + 7add13 + 7#11 + Maj7 + Maj7b5 + Maj7#5 + Maj7#11 + Maj7add13 + m7 + m7b5 + m7b9 + m7add11 + m7add13 + m-Maj7 + m-Maj7add11 + m-Maj7add13 + 9 + 9sus4 + add9 + 9#5 + 9b5 + 9#11 + 9b13 + Maj9 + Maj9sus4 + Maj9#5 + Maj9#11 + m9 + madd9 + m9b5 + m9-Maj7 + 11 + 11b9 + Maj11 + m11 + m-Maj11 + 13 + 13#9 + 13b9 + 13b5b9 + Maj13 + m13 + m-Maj13 + Harmonic minor + Melodic minor + Whole tone + Diminished + Major pentatonic + Minor pentatonic + Jap in sen + Major bebop + Dominant bebop + Blues + Arabic + Enigmatic + Neopolitan + Neopolitan minor + Hungarian minor + Dorian + Phrygolydian + Lydian + Mixolydian + Aeolian + Locrian - Chords - - - - Chord type - - - - Chord range - - - + Minor + Chromatic + Half-Whole Diminished + 5 + Phrygian dominant + Persian + + + Chords + + + + + Chord type + + + + + Chord range + + InstrumentFunctionNoteStackingView - RANGE - - - - Chord range: - - - - octave(s) - - - - Use this knob for setting the chord range in octaves. The selected chord will be played within specified number of octaves. - - - + STACKING + Chord: + + + RANGE + + + + + Chord range: + + + + + octave(s) + + + + + Use this knob for setting the chord range in octaves. The selected chord will be played within specified number of octaves. + + InstrumentMidiIOView + ENABLE MIDI INPUT + + CHANNEL + + VELOCITY + ENABLE MIDI OUTPUT + PROGRAM - MIDI devices to receive MIDI events from - - - - MIDI devices to send MIDI events to - - - + NOTE + + MIDI devices to receive MIDI events from + + + + + MIDI devices to send MIDI events to + + + + CUSTOM BASE VELOCITY + Specify the velocity normalization base for MIDI-based instruments at 100% note velocity + BASE VELOCITY @@ -3044,10 +3816,12 @@ You can remove and move FX channels in the context menu, which is accessed by ri InstrumentMiscView + MASTER PITCH + Enables the use of Master Pitch @@ -3055,126 +3829,158 @@ You can remove and move FX channels in the context menu, which is accessed by ri InstrumentSoundShaping + VOLUME + Volume + CUTOFF + + Cutoff frequency + RESO + Resonance + Envelopes/LFOs + Filter type + Q/Resonance + LowPass + HiPass + BandPass csg + BandPass czpg + Notch + Allpass + Moog + 2x LowPass + RC LowPass 12dB + RC BandPass 12dB + RC HighPass 12dB + RC LowPass 24dB + RC BandPass 24dB + RC HighPass 24dB + Vocal Formant Filter + 2x Moog + SV LowPass + SV BandPass + SV HighPass + SV Notch + Fast Formant + Tripole @@ -3182,50 +3988,62 @@ You can remove and move FX channels in the context menu, which is accessed by ri InstrumentSoundShapingView + TARGET + These tabs contain envelopes. They're very important for modifying a sound, in that they are almost always necessary for substractive synthesis. For example if you have a volume envelope, you can set when the sound should have a specific volume. If you want to create some soft strings then your sound has to fade in and out very softly. This can be done by setting large attack and release times. It's the same for other envelope targets like panning, cutoff frequency for the used filter and so on. Just monkey around with it! You can really make cool sounds out of a saw-wave with just some envelopes...! + FILTER + Here you can select the built-in filter you want to use for this instrument-track. Filters are very important for changing the characteristics of a sound. - Hz - - - - Use this knob for setting the cutoff frequency for the selected filter. The cutoff frequency specifies the frequency for cutting the signal by a filter. For example a lowpass-filter cuts all frequencies above the cutoff frequency. A highpass-filter cuts all frequencies below cutoff frequency, and so on... - - - - RESO - - - - Resonance: - - - - Use this knob for setting Q/Resonance for the selected filter. Q/Resonance tells the filter how much it should amplify frequencies near Cutoff-frequency. - - - + FREQ + cutoff frequency: + + Hz + + + + + Use this knob for setting the cutoff frequency for the selected filter. The cutoff frequency specifies the frequency for cutting the signal by a filter. For example a lowpass-filter cuts all frequencies above the cutoff frequency. A highpass-filter cuts all frequencies below cutoff frequency, and so on... + + + + + RESO + + + + + Resonance: + + + + + Use this knob for setting Q/Resonance for the selected filter. Q/Resonance tells the filter how much it should amplify frequencies near Cutoff-frequency. + + + + Envelopes, LFOs and filters are not supported by the current instrument. @@ -3233,85 +4051,107 @@ You can remove and move FX channels in the context menu, which is accessed by ri InstrumentTrack - unnamed_track - - - - Volume - - - - Panning - - - - Pitch - - - - FX channel - - - - Default preset - - - + With this knob you can set the volume of the opened channel. + + + unnamed_track + + + + Base note + + Volume + + + + + Panning + + + + + Pitch + + + + Pitch range + + FX channel + + + + Master Pitch + + + + Default preset + + InstrumentTrackView + Volume + Volume: + VOL + Panning + Panning: + PAN + MIDI + Input + Output + FX %1: %2 @@ -3319,110 +4159,137 @@ You can remove and move FX channels in the context menu, which is accessed by ri InstrumentTrackWindow + GENERAL SETTINGS - Instrument volume - - - - Volume: - - - - VOL - - - - Panning - - - - Panning: - - - - PAN - - - - Pitch - - - - Pitch: - - - - cents - - - - PITCH - - - - FX channel - - - - FX - - - - Save preset - - - - XML preset file (*.xpf) - - - - Pitch range (semitones) - - - - RANGE - - - - Save current instrument track settings in a preset file - - - - Click here, if you want to save current instrument track settings in a preset file. Later you can load this preset by double-clicking it in the preset-browser. - - - + Use these controls to view and edit the next/previous track in the song editor. + + Instrument volume + + + + + Volume: + + + + + VOL + + + + + Panning + + + + + Panning: + + + + + PAN + + + + + Pitch + + + + + Pitch: + + + + + cents + + + + + PITCH + + + + + Pitch range (semitones) + + + + + RANGE + + + + + FX channel + + + + + FX + + + + + Save current instrument track settings in a preset file + + + + + Click here, if you want to save current instrument track settings in a preset file. Later you can load this preset by double-clicking it in the preset-browser. + + + + SAVE + Envelope, filter & LFO + Chord stacking & arpeggio + Effects + MIDI settings + Miscellaneous + + Save preset + + + + + XML preset file (*.xpf) + + + + Plugin @@ -3430,25 +4297,30 @@ You can remove and move FX channels in the context menu, which is accessed by ri Knob + Set linear + Set logarithmic - Please enter a new value between %1 and %2: + + Please enter a new value between -96.0 dBFS and 6.0 dBFS: - Please enter a new value between -96.0 dBFS and 6.0 dBFS: + + Please enter a new value between %1 and %2: LadspaControl + Link channels @@ -3456,10 +4328,12 @@ You can remove and move FX channels in the context menu, which is accessed by ri LadspaControlDialog + Link Channels + Channel @@ -3467,14 +4341,17 @@ You can remove and move FX channels in the context menu, which is accessed by ri LadspaControlView + Link channels + Value: + Sorry, no help available. @@ -3482,6 +4359,7 @@ You can remove and move FX channels in the context menu, which is accessed by ri LadspaEffect + Unknown LADSPA plugin %1 requested. @@ -3489,6 +4367,7 @@ You can remove and move FX channels in the context menu, which is accessed by ri LcdSpinBox + Please enter a new value between %1 and %2: @@ -3496,18 +4375,26 @@ You can remove and move FX channels in the context menu, which is accessed by ri LeftRightNav + + + Previous + + + Next + Previous (%1) + Next (%1) @@ -3515,30 +4402,37 @@ You can remove and move FX channels in the context menu, which is accessed by ri LfoController + LFO Controller + Base value + Oscillator speed + Oscillator amount + Oscillator phase + Oscillator waveform + Frequency Multiplier @@ -3546,114 +4440,141 @@ You can remove and move FX channels in the context menu, which is accessed by ri LfoControllerDialog + LFO + LFO Controller + BASE + Base amount: + todo + SPD + LFO-speed: + Use this knob for setting speed of the LFO. The bigger this value the faster the LFO oscillates and the faster the effect. + + AMNT + + + + Modulation amount: + Use this knob for setting modulation amount of the LFO. The bigger this value, the more the connected control (e.g. volume or cutoff-frequency) will be influenced by the LFO. + PHS + Phase offset: + degrees + With this knob you can set the phase offset of the LFO. That means you can move the point within an oscillation where the oscillator begins to oscillate. For example if you have a sine-wave and have a phase-offset of 180 degrees the wave will first go down. It's the same with a square-wave. + Click here for a sine-wave. + Click here for a triangle-wave. + Click here for a saw-wave. + Click here for a square-wave. - Click here for an exponential wave. - - - - Click here for white-noise. - - - - Click here for a user-defined shape. -Double click to pick a file. - - - + Click here for a moog saw-wave. - AMNT + + Click here for an exponential wave. + + + + + Click here for white-noise. + + + + + Click here for a user-defined shape. +Double click to pick a file. LmmsCore + Generating wavetables + Initializing data structures + Opening audio and midi devices + Launching mixer threads @@ -3661,391 +4582,498 @@ Double click to pick a file. MainWindow + + Configuration file + + + + + Error while parsing configuration file at line %1:%2: %3 + + + + + Could not open file + + + + + Could not open file %1 for writing. +Please make sure you have write permission to the file and the directory containing the file and try again! + + + + + Project recovery + + + + + There is a recovery file present. It looks like the last session did not end properly or another instance of LMMS is already running. Do you want to recover the project of this session? + + + + + + + Recover + + + + + Recover the file. Please don't run multiple instances of LMMS when you do this. + + + + + + + Discard + + + + + Launch a default session and delete the restored files. This is not reversible. + + + + + Version %1 + + + + + Preparing plugin browser + + + + + Preparing file browsers + + + + + My Projects + + + + + My Samples + + + + + My Presets + + + + + My Home + + + + + Root directory + + + + + Volumes + + + + + My Computer + + + + + Loading background artwork + + + + + &File + + + + &New + + New from template + + + + &Open... + + &Recently Opened Projects + + + + &Save + Save &As... + + Save as New &Version + + + + + Save as default template + + + + Import... + E&xport... + + E&xport Tracks... + + + + + Export &MIDI... + + + + &Quit + &Edit + + Undo + + + + + Redo + + + + Settings + + &View + + + + &Tools + &Help + + Online Help + + + + Help - What's this? + + What's This? + About + Create new project + Create new project from template + Open existing project + Recently opened projects + Save current project + Export current project - Song Editor + + What's this? + + Toggle metronome + + + + + Show/hide Song-Editor + + + + By pressing this button, you can show or hide the Song-Editor. With the help of the Song-Editor you can edit song-playlist and specify when which track should be played. You can also insert and move samples (e.g. rap samples) directly into the playlist. - Beat+Bassline Editor + + Show/hide Beat+Bassline Editor + By pressing this button, you can show or hide the Beat+Bassline Editor. The Beat+Bassline Editor is needed for creating beats, and for opening, adding, and removing channels, and for cutting, copying and pasting beat and bassline-patterns, and for other things like that. - Piano Roll + + Show/hide Piano-Roll + Click here to show or hide the Piano-Roll. With the help of the Piano-Roll you can edit melodies in an easy way. - Automation Editor + + Show/hide Automation Editor + Click here to show or hide the Automation Editor. With the help of the Automation Editor you can edit dynamic values in an easy way. - FX Mixer + + Show/hide FX Mixer + Click here to show or hide the FX Mixer. The FX Mixer is a very powerful tool for managing effects for your song. You can insert effects into different effect-channels. - Project Notes + + Show/hide project notes + Click here to show or hide the project notes window. In this window you can put down your project notes. - Controller Rack + + Show/hide controller rack + Untitled + + Recover session. Please save your work! + + + + LMMS %1 + + Recovered project not saved + + + + + This project was recovered from the previous session. It is currently unsaved and will be lost if you don't save it. Do you want to save it now? + + + + Project not saved + The current project was modified since last saving. Do you want to save it now? + + Open Project + + + + + LMMS (*.mmp *.mmpz) + + + + + Save Project + + + + + LMMS Project + + + + + LMMS Project Template + + + + + Save project template + + + + + Overwrite default template? + + + + + This will overwrite your current default template. + + + + Help not available + Currently there's no help available in LMMS. Please visit http://lmms.sf.net/wiki for documentation on LMMS. - LMMS (*.mmp *.mmpz) + + Song Editor - Version %1 + + Beat+Bassline Editor - Configuration file + + Piano Roll - Error while parsing configuration file at line %1:%2: %3 + + Automation Editor - Volumes + + FX Mixer - Undo + + Project Notes - Redo - - - - My Projects - - - - My Samples - - - - My Presets - - - - My Home - - - - My Computer - - - - &File - - - - &Recently Opened Projects - - - - Save as New &Version - - - - E&xport Tracks... - - - - Online Help - - - - What's This? - - - - Open Project - - - - Save Project - - - - Project recovery - - - - There is a recovery file present. It looks like the last session did not end properly or another instance of LMMS is already running. Do you want to recover the project of this session? - - - - Recover - - - - Recover the file. Please don't run multiple instances of LMMS when you do this. - - - - Discard - - - - Launch a default session and delete the restored files. This is not reversible. - - - - Preparing plugin browser - - - - Preparing file browsers - - - - Root directory - - - - Loading background artwork - - - - New from template - - - - Save as default template - - - - &View - - - - Toggle metronome - - - - Show/hide Song-Editor - - - - Show/hide Beat+Bassline Editor - - - - Show/hide Piano-Roll - - - - Show/hide Automation Editor - - - - Show/hide FX Mixer - - - - Show/hide project notes - - - - Show/hide controller rack - - - - Recover session. Please save your work! - - - - Recovered project not saved - - - - This project was recovered from the previous session. It is currently unsaved and will be lost if you don't save it. Do you want to save it now? - - - - LMMS Project - - - - LMMS Project Template - - - - Overwrite default template? - - - - This will overwrite your current default template. - - - - Smooth scroll - - - - Enable note labels in piano roll - - - - Save project template + + Controller Rack + Volume as dBFS - Could not open file + + Smooth scroll - Could not open file %1 for writing. -Please make sure you have write permission to the file and the directory containing the file and try again! + + Enable note labels in piano roll MeterDialog + + Meter Numerator + + Meter Denominator + TIME SIG @@ -4053,10 +5081,12 @@ Please make sure you have write permission to the file and the directory contain MeterModel + Numerator + Denominator @@ -4064,10 +5094,12 @@ Please make sure you have write permission to the file and the directory contain MidiController + MIDI Controller + unnamed_midi_controller @@ -4075,18 +5107,23 @@ Please make sure you have write permission to the file and the directory contain MidiImport + + Setup incomplete + You do not have set up a default soundfont in the settings dialog (Edit->Settings). Therefore no sound will be played back after importing this MIDI file. You should download a General MIDI soundfont, specify it in settings dialog and try again. + You did not compile LMMS with support for SoundFont2 player, which is used to add default sound to imported MIDI files. Therefore no sound will be played back after importing this MIDI file. + Track @@ -4094,11 +5131,13 @@ Please make sure you have write permission to the file and the directory contain MidiJack + JACK server down When JACK(JACK Audio Connection Kit) disconnects, it will show the following message (title) + The JACK server seems to be shuted down. When JACK(JACK Audio Connection Kit) disconnects, it will show the following message (dialog message) @@ -4107,53 +5146,65 @@ Please make sure you have write permission to the file and the directory contain MidiPort + Input channel + Output channel + Input controller + Output controller + Fixed input velocity + Fixed output velocity - Output MIDI program - - - - Receive MIDI-events - - - - Send MIDI-events - - - + Fixed output note + + Output MIDI program + + + + Base velocity + + + Receive MIDI-events + + + + + Send MIDI-events + + MidiSetupWidget + DEVICE @@ -4161,474 +5212,595 @@ Please make sure you have write permission to the file and the directory contain MonstroInstrument + Osc 1 Volume + Osc 1 Panning + Osc 1 Coarse detune + Osc 1 Fine detune left + Osc 1 Fine detune right + Osc 1 Stereo phase offset + Osc 1 Pulse width + Osc 1 Sync send on rise + Osc 1 Sync send on fall + Osc 2 Volume + Osc 2 Panning + Osc 2 Coarse detune + Osc 2 Fine detune left + Osc 2 Fine detune right + Osc 2 Stereo phase offset + Osc 2 Waveform + Osc 2 Sync Hard + Osc 2 Sync Reverse + Osc 3 Volume + Osc 3 Panning + Osc 3 Coarse detune + Osc 3 Stereo phase offset + Osc 3 Sub-oscillator mix + Osc 3 Waveform 1 + Osc 3 Waveform 2 + Osc 3 Sync Hard + Osc 3 Sync Reverse + LFO 1 Waveform + LFO 1 Attack + LFO 1 Rate + LFO 1 Phase + LFO 2 Waveform + LFO 2 Attack + LFO 2 Rate + LFO 2 Phase + Env 1 Pre-delay + Env 1 Attack + Env 1 Hold + Env 1 Decay + Env 1 Sustain + Env 1 Release + Env 1 Slope + Env 2 Pre-delay + Env 2 Attack + Env 2 Hold + Env 2 Decay + Env 2 Sustain + Env 2 Release + Env 2 Slope + Osc2-3 modulation + Selected view + Vol1-Env1 + Vol1-Env2 + Vol1-LFO1 + Vol1-LFO2 + Vol2-Env1 + Vol2-Env2 + Vol2-LFO1 + Vol2-LFO2 + Vol3-Env1 + Vol3-Env2 + Vol3-LFO1 + Vol3-LFO2 + Phs1-Env1 + Phs1-Env2 + Phs1-LFO1 + Phs1-LFO2 + Phs2-Env1 + Phs2-Env2 + Phs2-LFO1 + Phs2-LFO2 + Phs3-Env1 + Phs3-Env2 + Phs3-LFO1 + Phs3-LFO2 + Pit1-Env1 + Pit1-Env2 + Pit1-LFO1 + Pit1-LFO2 + Pit2-Env1 + Pit2-Env2 + Pit2-LFO1 + Pit2-LFO2 + Pit3-Env1 + Pit3-Env2 + Pit3-LFO1 + Pit3-LFO2 + PW1-Env1 + PW1-Env2 + PW1-LFO1 + PW1-LFO2 + Sub3-Env1 + Sub3-Env2 + Sub3-LFO1 + Sub3-LFO2 + + Sine wave + Bandlimited Triangle wave + Bandlimited Saw wave + Bandlimited Ramp wave + Bandlimited Square wave + Bandlimited Moog saw wave + + Soft square wave + Absolute sine wave + + Exponential wave + White noise + Digital Triangle wave + Digital Saw wave + Digital Ramp wave + Digital Square wave + Digital Moog saw wave + Triangle wave + Saw wave + Ramp wave + Square wave + Moog saw wave + Abs. sine wave + Random + Random smooth @@ -4636,20 +5808,24 @@ Please make sure you have write permission to the file and the directory contain MonstroView + Operators view + The Operators view contains all the operators. These include both audible operators (oscillators) and inaudible operators, or modulators: Low-frequency oscillators and Envelopes. Knobs and other widgets in the Operators view have their own what's this -texts, so you can get more specific help for them that way. + Matrix view + The Matrix view contains the modulation matrix. Here you can define the modulation relationships between the various operators: Each audible operator (oscillators 1-3) has 3-4 properties that can be modulated by any of the modulators. Using more modulations consumes more CPU power. The view is divided to modulation targets, grouped by the target oscillator. Available targets are volume, pitch, phase, pulse width and sub-osc ratio. Note: some targets are specific to one oscillator only. @@ -4658,256 +5834,407 @@ Each modulation target has 4 knobs, one for each modulator. By default the knobs + + + + Volume + + + + + + + Panning + + + + + + + Coarse detune + + + + + + + semitones + + + + + + Finetune left + + + + + + + + cents + + + + + + Finetune right + + + + + + + Stereo phase offset + + + + + + + + + deg + + + + + Pulse width + + + + + Send sync on pulse rise + + + + + Send sync on pulse fall + + + + + Hard sync oscillator 2 + + + + + Reverse sync oscillator 2 + + + + + Sub-osc mix + + + + + Hard sync oscillator 3 + + + + + Reverse sync oscillator 3 + + + + + + + + Attack + + + + + + Rate + + + + + + Phase + + + + + + Pre-delay + + + + + + Hold + + + + + + Decay + + + + + + Sustain + + + + + + Release + + + + + + Slope + + + + Mix Osc2 with Osc3 + Modulate amplitude of Osc3 with Osc2 + Modulate frequency of Osc3 with Osc2 + Modulate phase of Osc3 with Osc2 + The CRS knob changes the tuning of oscillator 1 in semitone steps. + The CRS knob changes the tuning of oscillator 2 in semitone steps. + The CRS knob changes the tuning of oscillator 3 in semitone steps. + + + + FTL and FTR change the finetuning of the oscillator for left and right channels respectively. These can add stereo-detuning to the oscillator which widens the stereo image and causes an illusion of space. + + + The SPO knob modifies the difference in phase between left and right channels. Higher difference creates a wider stereo image. + The PW knob controls the pulse width, also known as duty cycle, of oscillator 1. Oscillator 1 is a digital pulse wave oscillator, it doesn't produce bandlimited output, which means that you can use it as an audible oscillator but it will cause aliasing. You can also use it as an inaudible source of a sync signal, which can be used to synchronize oscillators 2 and 3. + Send Sync on Rise: When enabled, the Sync signal is sent every time the state of oscillator 1 changes from low to high, ie. when the amplitude changes from -1 to 1. Oscillator 1's pitch, phase and pulse width may affect the timing of syncs, but its volume has no effect on them. Sync signals are sent independently for both left and right channels. + Send Sync on Fall: When enabled, the Sync signal is sent every time the state of oscillator 1 changes from high to low, ie. when the amplitude changes from 1 to -1. Oscillator 1's pitch, phase and pulse width may affect the timing of syncs, but its volume has no effect on them. Sync signals are sent independently for both left and right channels. + + Hard sync: Every time the oscillator receives a sync signal from oscillator 1, its phase is reset to 0 + whatever its phase offset is. + + Reverse sync: Every time the oscillator receives a sync signal from oscillator 1, the amplitude of the oscillator gets inverted. + Choose waveform for oscillator 2. + Choose waveform for oscillator 3's first sub-osc. Oscillator 3 can smoothly interpolate between two different waveforms. + Choose waveform for oscillator 3's second sub-osc. Oscillator 3 can smoothly interpolate between two different waveforms. + The SUB knob changes the mixing ratio of the two sub-oscs of oscillator 3. Each sub-osc can be set to produce a different waveform, and oscillator 3 can smoothly interpolate between them. All incoming modulations to oscillator 3 are applied to both sub-oscs/waveforms in the exact same way. + In addition to dedicated modulators, Monstro allows oscillator 3 to be modulated by the output of oscillator 2. Mix mode means no modulation: the outputs of the oscillators are simply mixed together. + In addition to dedicated modulators, Monstro allows oscillator 3 to be modulated by the output of oscillator 2. AM means amplitude modulation: Oscillator 3's amplitude (volume) is modulated by oscillator 2. + In addition to dedicated modulators, Monstro allows oscillator 3 to be modulated by the output of oscillator 2. FM means frequency modulation: Oscillator 3's frequency (pitch) is modulated by oscillator 2. The frequency modulation is implemented as phase modulation, which gives a more stable overall pitch than "pure" frequency modulation. + In addition to dedicated modulators, Monstro allows oscillator 3 to be modulated by the output of oscillator 2. PM means phase modulation: Oscillator 3's phase is modulated by oscillator 2. It differs from frequency modulation in that the phase changes are not cumulative. + Select the waveform for LFO 1. "Random" and "Random smooth" are special waveforms: they produce random output, where the rate of the LFO controls how often the state of the LFO changes. The smooth version interpolates between these states with cosine interpolation. These random modes can be used to give "life" to your presets - add some of that analog unpredictability... + Select the waveform for LFO 2. "Random" and "Random smooth" are special waveforms: they produce random output, where the rate of the LFO controls how often the state of the LFO changes. The smooth version interpolates between these states with cosine interpolation. These random modes can be used to give "life" to your presets - add some of that analog unpredictability... + + Attack causes the LFO to come on gradually from the start of the note. + + Rate sets the speed of the LFO, measured in milliseconds per cycle. Can be synced to tempo. + + PHS controls the phase offset of the LFO. + + PRE, or pre-delay, delays the start of the envelope from the start of the note. 0 means no delay. + + ATT, or attack, controls how fast the envelope ramps up at start, measured in milliseconds. A value of 0 means instant. + + HOLD controls how long the envelope stays at peak after the attack phase. + + DEC, or decay, controls how fast the envelope falls off from its peak, measured in milliseconds it would take to go from peak to zero. The actual decay may be shorter if sustain is used. + + SUS, or sustain, controls the sustain level of the envelope. The decay phase will not go below this level as long as the note is held. + + REL, or release, controls how long the release is for the note, measured in how long it would take to fall from peak to zero. Actual release may be shorter, depending on at what phase the note is released. + + The slope knob controls the curve or shape of the envelope. A value of 0 creates straight rises and falls. Negative values create curves that start slowly, peak quickly and fall of slowly again. Positive values create curves that start and end quickly, and stay longer near the peaks. - Volume - - - - Panning - - - - Coarse detune - - - - semitones - - - - Finetune left - - - - cents - - - - Finetune right - - - - Stereo phase offset - - - - deg - - - - Pulse width - - - - Send sync on pulse rise - - - - Send sync on pulse fall - - - - Hard sync oscillator 2 - - - - Reverse sync oscillator 2 - - - - Sub-osc mix - - - - Hard sync oscillator 3 - - - - Reverse sync oscillator 3 - - - - Attack - - - - Rate - - - - Phase - - - - Pre-delay - - - - Hold - - - - Decay - - - - Sustain - - - - Release - - - - Slope - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Modulation amount @@ -4915,34 +6242,42 @@ PM means phase modulation: Oscillator 3's phase is modulated by oscillator MultitapEchoControlDialog + Length + Step length: + Dry + Dry Gain: + Stages + Lowpass stages: + Swap inputs + Swap left and right input channel for reflections @@ -4950,82 +6285,102 @@ PM means phase modulation: Oscillator 3's phase is modulated by oscillator NesInstrument + Channel 1 Coarse detune + Channel 1 Volume + Channel 1 Envelope length + Channel 1 Duty cycle + Channel 1 Sweep amount + Channel 1 Sweep rate + Channel 2 Coarse detune + Channel 2 Volume + Channel 2 Envelope length + Channel 2 Duty cycle + Channel 2 Sweep amount + Channel 2 Sweep rate + Channel 3 Coarse detune + Channel 3 Volume + Channel 4 Volume + Channel 4 Envelope length + Channel 4 Noise frequency + Channel 4 Noise frequency sweep + Master volume + Vibrato @@ -5033,114 +6388,155 @@ PM means phase modulation: Oscillator 3's phase is modulated by oscillator NesInstrumentView + + + + Volume + + + Coarse detune + + + Envelope length + Enable channel 1 + Enable envelope 1 + Enable envelope 1 loop + Enable sweep 1 + + Sweep amount + + Sweep rate + + 12.5% Duty cycle + + 25% Duty cycle + + 50% Duty cycle + + 75% Duty cycle + Enable channel 2 + Enable envelope 2 + Enable envelope 2 loop + Enable sweep 2 + Enable channel 3 + Noise Frequency + Frequency sweep + Enable channel 4 + Enable envelope 4 + Enable envelope 4 loop + Quantize noise frequency when using note frequency + Use note frequency for noise + Noise mode + Master Volume + Vibrato @@ -5148,81 +6544,103 @@ PM means phase modulation: Oscillator 3's phase is modulated by oscillator OscillatorObject - Osc %1 volume - - - - Osc %1 panning - - - - Osc %1 coarse detuning - - - - Osc %1 fine detuning left - - - - Osc %1 fine detuning right - - - - Osc %1 phase-offset - - - - Osc %1 stereo phase-detuning - - - - Osc %1 wave shape - - - - Modulation type %1 - - - + Osc %1 waveform + Osc %1 harmonic + + + + Osc %1 volume + + + + + + Osc %1 panning + + + + + + Osc %1 fine detuning left + + + + + Osc %1 coarse detuning + + + + + Osc %1 fine detuning right + + + + + Osc %1 phase-offset + + + + + Osc %1 stereo phase-detuning + + + + + Osc %1 wave shape + + + + + Modulation type %1 + + PatchesDialog + Qsynth: Channel Preset + Bank selector + Bank + Program selector + Patch + Name + OK + Cancel @@ -5230,46 +6648,57 @@ PM means phase modulation: Oscillator 3's phase is modulated by oscillator PatmanView + Open other patch + Click here to open another patch-file. Loop and Tune settings are not reset. + Loop + Loop mode + Here you can toggle the Loop mode. If enabled, PatMan will use the loop information available in the file. + Tune + Tune mode + Here you can toggle the Tune mode. If enabled, PatMan will tune the sample to match the note's frequency. + No file selected + Open patch file + Patch-Files (*.pat) @@ -5277,38 +6706,47 @@ PM means phase modulation: Oscillator 3's phase is modulated by oscillator PatternView - Open in piano-roll - - - - Clear all notes - - - - Reset name - - - - Change name - - - - Add steps - - - - Remove steps - - - + use mouse wheel to set velocity of a step + double-click to open in Piano Roll + + Open in piano-roll + + + + + Clear all notes + + + + + Reset name + + + + + Change name + + + + + Add steps + + + + + Remove steps + + + + Clone Steps @@ -5316,14 +6754,17 @@ PM means phase modulation: Oscillator 3's phase is modulated by oscillator PeakController + Peak Controller + Peak Controller Bug + Due to a bug in older version of LMMS, the peak controllers may not be connect properly. Please ensure that peak controllers are connected properly and re-save this file. Sorry for any inconvenience caused. @@ -5331,10 +6772,12 @@ PM means phase modulation: Oscillator 3's phase is modulated by oscillator PeakControllerDialog + PEAK + LFO Controller @@ -5342,306 +6785,382 @@ PM means phase modulation: Oscillator 3's phase is modulated by oscillator PeakControllerEffectControlDialog + BASE + Base amount: - Modulation amount: - - - - Attack: - - - - Release: - - - + AMNT + + Modulation amount: + + + + MULT + Amount Multiplicator: + ATCK + + Attack: + + + + DCAY - Treshold: + + Release: + TRSH + + + Treshold: + + PeakControllerEffectControls + Base value + Modulation amount - Mute output - - - + Attack + Release + + Treshold + + + + + Mute output + + + + Abs Value + Amount Multiplicator - - Treshold - - PianoRoll - Please open a pattern by double-clicking on it! - - - - Last note - - - - Note lock - - - + Note Velocity + Note Panning + Mark/unmark current semitone - Mark current scale - - - - Mark current chord - - - - Unmark all - - - - No scale - - - - No chord - - - - Velocity: %1% - - - - Panning: %1% left - - - - Panning: %1% right - - - - Panning: center - - - - Please enter a new value between %1 and %2: - - - + Mark/unmark all corresponding octave semitones + + Mark current scale + + + + + Mark current chord + + + + + Unmark all + + + + Select all notes on this key + + + Note lock + + + + + Last note + + + + + No scale + + + + + No chord + + + + + Velocity: %1% + + + + + Panning: %1% left + + + + + Panning: %1% right + + + + + Panning: center + + + + + Please open a pattern by double-clicking on it! + + + + + + Please enter a new value between %1 and %2: + + PianoRollWindow + Play/pause current pattern (Space) + Record notes from MIDI-device/channel-piano + Record notes from MIDI-device/channel-piano while playing song or BB track + Stop playing of current pattern (Space) + Click here to play the current pattern. This is useful while editing it. The pattern is automatically looped when its end is reached. + Click here to record notes from a MIDI-device or the virtual test-piano of the according channel-window to the current pattern. When recording all notes you play will be written to this pattern and you can play and edit them afterwards. + Click here to record notes from a MIDI-device or the virtual test-piano of the according channel-window to the current pattern. When recording all notes you play will be written to this pattern and you will hear the song or BB track in the background. + Click here to stop playback of current pattern. - Draw mode (Shift+D) - - - - Erase mode (Shift+E) - - - - Select mode (Shift+S) - - - - Detune mode (Shift+T) - - - - Click here and draw mode will be activated. In this mode you can add, resize and move notes. This is the default mode which is used most of the time. You can also press 'Shift+D' on your keyboard to activate this mode. In this mode, hold %1 to temporarily go into select mode. - - - - Click here and erase mode will be activated. In this mode you can erase notes. You can also press 'Shift+E' on your keyboard to activate this mode. - - - - Click here and select mode will be activated. In this mode you can select notes. Alternatively, you can hold %1 in draw mode to temporarily use select mode. - - - - Click here and detune mode will be activated. In this mode you can click a note to open its automation detuning. You can utilize this to slide notes from one to another. You can also press 'Shift+T' on your keyboard to activate this mode. - - - - Cut selected notes (%1+X) - - - - Copy selected notes (%1+C) - - - - Paste notes from clipboard (%1+V) - - - - Click here and the selected notes will be cut into the clipboard. You can paste them anywhere in any pattern by clicking on the paste button. - - - - Click here and the selected notes will be copied into the clipboard. You can paste them anywhere in any pattern by clicking on the paste button. - - - - Click here and the notes from the clipboard will be pasted at the first visible measure. - - - - This controls the magnification of an axis. It can be helpful to choose magnification for a specific task. For ordinary editing, the magnification should be fitted to your smallest notes. - - - - The 'Q' stands for quantization, and controls the grid size notes and control points snap to. With smaller quantization values, you can draw shorter notes in Piano Roll, and more exact control points in the Automation Editor. - - - - This lets you select the length of new notes. 'Last Note' means that LMMS will use the note length of the note you last edited - - - - The feature is directly connected to the context-menu on the virtual keyboard, to the left in Piano Roll. After you have chosen the scale you want in this drop-down menu, you can right click on a desired key in the virtual keyboard, and then choose 'Mark current Scale'. LMMS will highlight all notes that belongs to the chosen scale, and in the key you have selected! - - - - Let you select a chord which LMMS then can draw or highlight.You can find the most common chords in this drop-down menu. After you have selected a chord, click anywhere to place the chord, and right click on the virtual keyboard to open context menu and highlight the chord. To return to single note placement, you need to choose 'No chord' in this drop-down menu. - - - + Edit actions + + Draw mode (Shift+D) + + + + + Erase mode (Shift+E) + + + + + Select mode (Shift+S) + + + + + Detune mode (Shift+T) + + + + + Click here and draw mode will be activated. In this mode you can add, resize and move notes. This is the default mode which is used most of the time. You can also press 'Shift+D' on your keyboard to activate this mode. In this mode, hold %1 to temporarily go into select mode. + + + + + Click here and erase mode will be activated. In this mode you can erase notes. You can also press 'Shift+E' on your keyboard to activate this mode. + + + + + Click here and select mode will be activated. In this mode you can select notes. Alternatively, you can hold %1 in draw mode to temporarily use select mode. + + + + + Click here and detune mode will be activated. In this mode you can click a note to open its automation detuning. You can utilize this to slide notes from one to another. You can also press 'Shift+T' on your keyboard to activate this mode. + + + + + Quantize + + + + Copy paste controls + + Cut selected notes (%1+X) + + + + + Copy selected notes (%1+C) + + + + + Paste notes from clipboard (%1+V) + + + + + Click here and the selected notes will be cut into the clipboard. You can paste them anywhere in any pattern by clicking on the paste button. + + + + + Click here and the selected notes will be copied into the clipboard. You can paste them anywhere in any pattern by clicking on the paste button. + + + + + Click here and the notes from the clipboard will be pasted at the first visible measure. + + + + Timeline controls + Zoom and note controls + + This controls the magnification of an axis. It can be helpful to choose magnification for a specific task. For ordinary editing, the magnification should be fitted to your smallest notes. + + + + + The 'Q' stands for quantization, and controls the grid size notes and control points snap to. With smaller quantization values, you can draw shorter notes in Piano Roll, and more exact control points in the Automation Editor. + + + + + This lets you select the length of new notes. 'Last Note' means that LMMS will use the note length of the note you last edited + + + + + The feature is directly connected to the context-menu on the virtual keyboard, to the left in Piano Roll. After you have chosen the scale you want in this drop-down menu, you can right click on a desired key in the virtual keyboard, and then choose 'Mark current Scale'. LMMS will highlight all notes that belongs to the chosen scale, and in the key you have selected! + + + + + Let you select a chord which LMMS then can draw or highlight.You can find the most common chords in this drop-down menu. After you have selected a chord, click anywhere to place the chord, and right click on the virtual keyboard to open context menu and highlight the chord. To return to single note placement, you need to choose 'No chord' in this drop-down menu. + + + + + Piano-Roll - %1 + + Piano-Roll - no pattern - - Quantize - - PianoView + Base note @@ -5649,19 +7168,23 @@ PM means phase modulation: Oscillator 3's phase is modulated by oscillator Plugin + Plugin not found + The plugin "%1" wasn't found or could not be loaded! Reason: "%2" + Error while loading plugin + Failed to load plugin "%1"! @@ -5669,25 +7192,30 @@ Reason: "%2" PluginBrowser + + Instrument Plugins + + + + Instrument browser + Drag an instrument into either the Song-Editor, the Beat+Bassline Editor or into an existing instrument track. - - Instrument Plugins - - PluginFactory + Plugin not found. + LMMS plugin %1 does not have a plugin descriptor named %2! @@ -5695,187 +7223,255 @@ Reason: "%2" ProjectNotes - Edit Actions - - - - &Undo - - - - %1+Z - - - - &Redo - - - - %1+Y - - - - &Copy - - - - %1+C - - - - Cu&t - - - - %1+X - - - - &Paste - - - - %1+V - - - - Format Actions - - - - &Bold - - - - %1+B - - - - &Italic - - - - %1+I - - - - &Underline - - - - %1+U - - - - &Left - - - - %1+L - - - - C&enter - - - - %1+E - - - - &Right - - - - %1+R - - - - &Justify - - - - %1+J - - - - &Color... - - - + Project Notes + Enter project notes here + + + Edit Actions + + + + + &Undo + + + + + %1+Z + + + + + &Redo + + + + + %1+Y + + + + + &Copy + + + + + %1+C + + + + + Cu&t + + + + + %1+X + + + + + &Paste + + + + + %1+V + + + + + Format Actions + + + + + &Bold + + + + + %1+B + + + + + &Italic + + + + + %1+I + + + + + &Underline + + + + + %1+U + + + + + &Left + + + + + %1+L + + + + + C&enter + + + + + %1+E + + + + + &Right + + + + + %1+R + + + + + &Justify + + + + + %1+J + + + + + &Color... + + ProjectRenderer + WAV-File (*.wav) + Compressed OGG-File (*.ogg) + + + Compressed MP3-File (*.mp3) + + QWidget + + + Name: + + Maker: + + Copyright: + + Requires Real Time: + + + + + + Yes + + + + + + No + + Real Time Capable: + + In Place Broken: + + Channels In: + + Channels Out: - File: + + File: %1 - File: %1 + + File: RenameDialog + Rename... @@ -5883,34 +7479,42 @@ Reason: "%2" ReverbSCControlDialog + Input + Input Gain: + Size + Size: + Color + Color: + Output + Output Gain: @@ -5918,18 +7522,22 @@ Reason: "%2" ReverbSCControls + Input Gain + Size + Color + Output Gain @@ -5937,81 +7545,100 @@ Reason: "%2" SampleBuffer - Open audio file - - - - Wave-Files (*.wav) - - - - OGG-Files (*.ogg) - - - - DrumSynth-Files (*.ds) - - - - FLAC-Files (*.flac) - - - - SPEEX-Files (*.spx) - - - - VOC-Files (*.voc) - - - - AIFF-Files (*.aif *.aiff) - - - - AU-Files (*.au) - - - - RAW-Files (*.raw) - - - - All Audio-Files (*.wav *.ogg *.ds *.flac *.spx *.voc *.aif *.aiff *.au *.raw) - - - + Fail to open file + Audio files are limited to %1 MB in size and %2 minutes of playing time + + + Open audio file + + + + + All Audio-Files (*.wav *.ogg *.ds *.flac *.spx *.voc *.aif *.aiff *.au *.raw) + + + + + Wave-Files (*.wav) + + + + + OGG-Files (*.ogg) + + + + + DrumSynth-Files (*.ds) + + + + + FLAC-Files (*.flac) + + + + + SPEEX-Files (*.spx) + + + + + VOC-Files (*.voc) + + + + + AIFF-Files (*.aif *.aiff) + + + + + AU-Files (*.au) + + + + + RAW-Files (*.raw) + + SampleTCOView + double-click to select sample + Delete (middle mousebutton) + Cut + Copy + Paste + Mute/unmute (<%1> + middle click) @@ -6019,41 +7646,51 @@ Reason: "%2" SampleTrack - Sample track - - - + Volume + Panning + + + + Sample track + + SampleTrackView + Track volume + Channel volume: + VOL + Panning + Panning: + PAN @@ -6061,494 +7698,651 @@ Reason: "%2" SetupDialog + Setup LMMS + + General settings + BUFFER SIZE + + Reset to default-value + MISC + Enable tooltips + Show restart warning after changing settings + + Display volume as dBFS + + + + Compress project files per default + One instrument track window mode + HQ-mode for output audio-device + Compact track buttons + Sync VST plugins to host playback + Enable note labels in piano roll + Enable waveform display by default + Keep effects running even without input + Create backup file when saving a project + + Reopen last project on start + + + + + PLUGIN EMBEDDING + + + + + No embedding + + + + + Embed using Qt API + + + + + Embed using native Win32 API + + + + + Embed using XEmbed protocol + + + + LANGUAGE + + Paths + + Directories + + + + LMMS working directory - VST-plugin directory + + Themes directory + Background artwork + + VST-plugin directory + + + + + GIG directory + + + + + SF2 directory + + + + + LADSPA plugin directories + + + + STK rawwave directory + Default Soundfont File + + Performance settings + + Auto save + + + + + Enable auto-save + + + + + Allow auto-save while playing + + + + UI effects vs. performance + Smooth scroll in Song Editor + Show playback cursor in AudioFileProcessor + + Audio settings + AUDIO INTERFACE + + MIDI settings + MIDI INTERFACE + OK + Cancel + Restart LMMS + Please note that most changes won't take effect until you restart LMMS! + Frames: %1 Latency: %2 ms + Here you can setup the internal buffer-size used by LMMS. Smaller values result in a lower latency but also may cause unusable sound or bad performance, especially on older computers or systems with a non-realtime kernel. + Choose LMMS working directory - Choose your VST-plugin directory - - - - Choose artwork-theme directory - - - - Choose LADSPA plugin directory - - - - Choose STK rawwave directory - - - - Choose default SoundFont - - - - Choose background artwork - - - - Here you can select your preferred audio-interface. Depending on the configuration of your system during compilation time you can choose between ALSA, JACK, OSS and more. Below you see a box which offers controls to setup the selected audio-interface. - - - - Here you can select your preferred MIDI-interface. Depending on the configuration of your system during compilation time you can choose between ALSA, OSS and more. Below you see a box which offers controls to setup the selected MIDI-interface. - - - - Reopen last project on start - - - - Directories - - - - Themes directory - - - - GIG directory - - - - SF2 directory - - - - LADSPA plugin directories - - - - Auto save - - - + Choose your GIG directory + Choose your SF2 directory + + Choose your VST-plugin directory + + + + + Choose artwork-theme directory + + + + + Choose LADSPA plugin directory + + + + + Choose STK rawwave directory + + + + + Choose default SoundFont + + + + + Choose background artwork + + + + minutes + minute - Display volume as dBFS - - - - Enable auto-save - - - - Allow auto-save while playing - - - + Disabled + Auto-save interval: %1 + Set the time between automatic backup to %1. Remember to also save your project manually. You can choose to disable saving while playing, something some older systems find difficult. + + + Here you can select your preferred audio-interface. Depending on the configuration of your system during compilation time you can choose between ALSA, JACK, OSS and more. Below you see a box which offers controls to setup the selected audio-interface. + + + + + Here you can select your preferred MIDI-interface. Depending on the configuration of your system during compilation time you can choose between ALSA, OSS and more. Below you see a box which offers controls to setup the selected MIDI-interface. + + Song + Tempo + Master volume + Master pitch - Project saved - - - - The project %1 is now saved. - - - - Project NOT saved. - - - - The project %1 was not saved! - - - - Import file - - - - MIDI sequences - - - - Hydrogen projects - - - - All file types - - - - Empty project - - - - This project is empty so exporting makes no sense. Please put some items into Song Editor first! - - - - Select directory for writing exported tracks... - - - - untitled - - - - Select file for project-export... - - - - The following errors occured while loading: - - - - MIDI File (*.mid) - - - + LMMS Error report + + Project saved + + + + + The project %1 is now saved. + + + + + Project NOT saved. + + + + + The project %1 was not saved! + + + + + Import file + + + + + MIDI sequences + + + + + Hydrogen projects + + + + + All file types + + + + + + Empty project + + + + + + This project is empty so exporting makes no sense. Please put some items into Song Editor first! + + + + + Select directory for writing exported tracks... + + + + + + untitled + + + + + + Select file for project-export... + + + + Save project + + + MIDI File (*.mid) + + + + + The following errors occured while loading: + + SongEditor + Could not open file - Could not write file - - - + Could not open file %1. You probably have no permissions to read this file. Please make sure to have at least read permissions to the file and try again. - Error in file - - - - The file %1 seems to contain errors and therefore can't be loaded. - - - - Tempo - - - - TEMPO/BPM - - - - tempo of song - - - - The tempo of a song is specified in beats per minute (BPM). If you want to change the tempo of your song, change this value. Every measure has four beats, so the tempo in BPM specifies, how many measures / 4 should be played within a minute (or how many measures should be played within four minutes). - - - - High quality mode - - - - Master volume - - - - master volume - - - - Master pitch - - - - master pitch - - - - Value: %1% - - - - Value: %1 semitones + + Could not write file + Could not open %1 for writing. You probably are not permitted to write to this file. Please make sure you have write-access to the file and try again. - template + + Error in file - project + + The file %1 seems to contain errors and therefore can't be loaded. + Version difference + This %1 was created with LMMS %2. + + + template + + + + + project + + + + + Tempo + + + + + TEMPO/BPM + + + + + tempo of song + + + + + The tempo of a song is specified in beats per minute (BPM). If you want to change the tempo of your song, change this value. Every measure has four beats, so the tempo in BPM specifies, how many measures / 4 should be played within a minute (or how many measures should be played within four minutes). + + + + + High quality mode + + + + + + Master volume + + + + + master volume + + + + + + Master pitch + + + + + master pitch + + + + + Value: %1% + + + + + Value: %1 semitones + + SongEditorWindow + Song-Editor + Play song (Space) + Record samples from Audio-device + Record samples from Audio-device while playing song or BB track + Stop song (Space) - Add beat/bassline - - - - Add sample-track - - - - Add automation-track - - - - Draw mode - - - - Edit mode (select and move) - - - + Click here, if you want to play your whole song. Playing will be started at the song-position-marker (green). You can also move it while playing. + Click here, if you want to stop playing of your song. The song-position-marker will be set to the start of your song. + Track actions + + Add beat/bassline + + + + + Add sample-track + + + + + Add automation-track + + + + Edit actions + + Draw mode + + + + + Edit mode (select and move) + + + + Timeline controls + Zoom controls @@ -6556,10 +8350,12 @@ Remember to also save your project manually. You can choose to disable saving wh SpectrumAnalyzerControlDialog + Linear spectrum + Linear Y axis @@ -6567,14 +8363,17 @@ Remember to also save your project manually. You can choose to disable saving wh SpectrumAnalyzerControls + Linear spectrum + Linear Y axis + Channel mode @@ -6582,14 +8381,17 @@ Remember to also save your project manually. You can choose to disable saving wh SubWindow + Close + Maximize + Restore @@ -6597,6 +8399,8 @@ Remember to also save your project manually. You can choose to disable saving wh TabWidget + + Settings for %1 @@ -6604,74 +8408,93 @@ Remember to also save your project manually. You can choose to disable saving wh TempoSyncKnob + + Tempo Sync + No Sync + Eight beats + Whole note + Half note + Quarter note + 8th note + 16th note + 32nd note + Custom... + Custom + Synced to Eight Beats + Synced to Whole Note + Synced to Half Note + Synced to Quarter Note + Synced to 8th Note + Synced to 16th Note + Synced to 32nd Note @@ -6679,30 +8502,37 @@ Remember to also save your project manually. You can choose to disable saving wh TimeDisplayWidget + click to change time units + MIN + SEC + MSEC + BAR + BEAT + TICK @@ -6710,34 +8540,43 @@ Remember to also save your project manually. You can choose to disable saving wh TimeLineWidget + Enable/disable auto-scrolling + Enable/disable loop-points + After stopping go back to begin + After stopping go back to position at which playing was started + After stopping keep position + + Hint + Press <%1> to disable magnetic loop points. + Hold <Shift> to move the begin loop point; Press <%1> to disable magnetic loop points. @@ -6745,10 +8584,12 @@ Remember to also save your project manually. You can choose to disable saving wh Track + Mute + Solo @@ -6756,36 +8597,61 @@ Remember to also save your project manually. You can choose to disable saving wh TrackContainer + Couldn't import file + Couldn't find a filter for importing file %1. You should convert this file into a format supported by LMMS using another software. + Couldn't open file + Couldn't open file %1 for reading. Please make sure you have read-permission to the file and the directory containing the file and try again! + Loading project... + + Cancel + + Please wait... + + Loading cancelled + + + + + Project loading was cancelled. + + + + + Loading Track %1 (%2/Total %3) + + + + Importing MIDI-file... @@ -6793,6 +8659,7 @@ Please make sure you have read-permission to the file and the directory containi TrackContentObject + Mute @@ -6800,46 +8667,58 @@ Please make sure you have read-permission to the file and the directory containi TrackContentObjectView + Current position + + Hint + Press <%1> and drag to make a copy. + Current length + Press <%1> for free resizing. + %1:%2 (%3:%4 to %5:%6) + Delete (middle mousebutton) + Cut + Copy + Paste + Mute/unmute (<%1> + middle click) @@ -6847,193 +8726,243 @@ Please make sure you have read-permission to the file and the directory containi TrackOperationsWidget + Press <%1> while clicking on move-grip to begin a new drag'n'drop-action. + Actions for this track + Mute + + Solo + Mute this track + Clone this track + Remove this track + Clear this track + FX %1: %2 + + Assign to new FX Channel + + + + Turn all recording on + Turn all recording off - - Assign to new FX Channel - - TripleOscillatorView + Use phase modulation for modulating oscillator 1 with oscillator 2 + Use amplitude modulation for modulating oscillator 1 with oscillator 2 + Mix output of oscillator 1 & 2 + Synchronize oscillator 1 with oscillator 2 + Use frequency modulation for modulating oscillator 1 with oscillator 2 + Use phase modulation for modulating oscillator 2 with oscillator 3 + Use amplitude modulation for modulating oscillator 2 with oscillator 3 + Mix output of oscillator 2 & 3 + Synchronize oscillator 2 with oscillator 3 + Use frequency modulation for modulating oscillator 2 with oscillator 3 + Osc %1 volume: + With this knob you can set the volume of oscillator %1. When setting a value of 0 the oscillator is turned off. Otherwise you can hear the oscillator as loud as you set it here. + Osc %1 panning: + With this knob you can set the panning of the oscillator %1. A value of -100 means 100% left and a value of 100 moves oscillator-output right. + Osc %1 coarse detuning: + semitones + With this knob you can set the coarse detuning of oscillator %1. You can detune the oscillator 24 semitones (2 octaves) up and down. This is useful for creating sounds with a chord. + Osc %1 fine detuning left: + + cents + With this knob you can set the fine detuning of oscillator %1 for the left channel. The fine-detuning is ranged between -100 cents and +100 cents. This is useful for creating "fat" sounds. + Osc %1 fine detuning right: + With this knob you can set the fine detuning of oscillator %1 for the right channel. The fine-detuning is ranged between -100 cents and +100 cents. This is useful for creating "fat" sounds. + Osc %1 phase-offset: + + degrees + With this knob you can set the phase-offset of oscillator %1. That means you can move the point within an oscillation where the oscillator begins to oscillate. For example if you have a sine-wave and have a phase-offset of 180 degrees the wave will first go down. It's the same with a square-wave. + Osc %1 stereo phase-detuning: + With this knob you can set the stereo phase-detuning of oscillator %1. The stereo phase-detuning specifies the size of the difference between the phase-offset of left and right channel. This is very good for creating wide stereo sounds. + Use a sine-wave for current oscillator. + Use a triangle-wave for current oscillator. + Use a saw-wave for current oscillator. + Use a square-wave for current oscillator. + Use a moog-like saw-wave for current oscillator. + Use an exponential wave for current oscillator. + Use white-noise for current oscillator. + Use a user-defined waveform for current oscillator. @@ -7041,14 +8970,17 @@ Please make sure you have read-permission to the file and the directory containi VersionedSaveDialog + Increment version number + Decrement version number + already exists. Do you want to replace it? @@ -7056,90 +8988,113 @@ Please make sure you have read-permission to the file and the directory containi VestigeInstrumentView + Open other VST-plugin + Click here, if you want to open another VST-plugin. After clicking on this button, a file-open-dialog appears and you can select your file. - Show/hide GUI - - - - Click here to show or hide the graphical user interface (GUI) of your VST-plugin. - - - - Turn off all notes - - - - Open VST-plugin - - - - DLL-files (*.dll) - - - - EXE-files (*.exe) - - - - No VST-plugin loaded - - - + Control VST-plugin from LMMS host + Click here, if you want to control VST-plugin from host. + Open VST-plugin preset + Click here, if you want to open another *.fxp, *.fxb VST-plugin preset. + Previous (-) + + Click here, if you want to switch to another VST-plugin preset program. + Save preset + Click here, if you want to save current VST-plugin preset program. + Next (+) + Click here to select presets that are currently loaded in VST. + + Show/hide GUI + + + + + Click here to show or hide the graphical user interface (GUI) of your VST-plugin. + + + + + Turn off all notes + + + + + Open VST-plugin + + + + + DLL-files (*.dll) + + + + + EXE-files (*.exe) + + + + + No VST-plugin loaded + + + + Preset + by + - VST plugin control @@ -7147,10 +9102,12 @@ Please make sure you have read-permission to the file and the directory containi VisualizationWidget + click to enable/disable visualization of master-output + Click to enable @@ -7158,54 +9115,69 @@ Please make sure you have read-permission to the file and the directory containi VstEffectControlDialog + Show/hide + Control VST-plugin from LMMS host + Click here, if you want to control VST-plugin from host. + Open VST-plugin preset + Click here, if you want to open another *.fxp, *.fxb VST-plugin preset. + Previous (-) + + Click here, if you want to switch to another VST-plugin preset program. + Next (+) + Click here to select presets that are currently loaded in VST. + Save preset + Click here, if you want to save current VST-plugin preset program. + + Effect by: + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /> @@ -7213,173 +9185,217 @@ Please make sure you have read-permission to the file and the directory containi VstPlugin - Loading plugin + + + The VST plugin %1 could not be loaded. + Open Preset + + Vst Plugin Preset (*.fxp *.fxb) + : default + " + ' + Save Preset + .fxp + .FXP + .FXB + .fxb - Please wait while loading VST plugin... + + Loading plugin - The VST plugin %1 could not be loaded. + + Please wait while loading VST plugin... WatsynInstrument + Volume A1 + Volume A2 + Volume B1 + Volume B2 + Panning A1 + Panning A2 + Panning B1 + Panning B2 + Freq. multiplier A1 + Freq. multiplier A2 + Freq. multiplier B1 + Freq. multiplier B2 + Left detune A1 + Left detune A2 + Left detune B1 + Left detune B2 + Right detune A1 + Right detune A2 + Right detune B1 + Right detune B2 + A-B Mix + A-B Mix envelope amount + A-B Mix envelope attack + A-B Mix envelope hold + A-B Mix envelope decay + A1-B2 Crosstalk + A2-A1 modulation + B2-B1 modulation + Selected graph @@ -7387,213 +9403,291 @@ Please make sure you have read-permission to the file and the directory containi WatsynView - Select oscillator A1 - - - - Select oscillator A2 - - - - Select oscillator B1 - - - - Select oscillator B2 - - - - Mix output of A2 to A1 - - - - Modulate amplitude of A1 with output of A2 - - - - Ring-modulate A1 and A2 - - - - Modulate phase of A1 with output of A2 - - - - Mix output of B2 to B1 - - - - Modulate amplitude of B1 with output of B2 - - - - Ring-modulate B1 and B2 - - - - Modulate phase of B1 with output of B2 - - - - Draw your own waveform here by dragging your mouse on this graph. - - - - Load waveform - - - - Click to load a waveform from a sample file - - - - Phase left - - - - Click to shift phase by -15 degrees - - - - Phase right - - - - Click to shift phase by +15 degrees - - - - Normalize - - - - Click to normalize - - - - Invert - - - - Click to invert - - - - Smooth - - - - Click to smooth - - - - Sine wave - - - - Click for sine wave - - - - Triangle wave - - - - Click for triangle wave - - - - Click for saw wave - - - - Square wave - - - - Click for square wave - - - + + + + Volume + + + + Panning + + + + Freq. multiplier + + + + Left detune + + + + + + + + cents + + + + Right detune + A-B Mix + Mix envelope amount + Mix envelope attack + Mix envelope hold + Mix envelope decay + Crosstalk + + + Select oscillator A1 + + + + + Select oscillator A2 + + + + + Select oscillator B1 + + + + + Select oscillator B2 + + + + + Mix output of A2 to A1 + + + + + Modulate amplitude of A1 with output of A2 + + + + + Ring-modulate A1 and A2 + + + + + Modulate phase of A1 with output of A2 + + + + + Mix output of B2 to B1 + + + + + Modulate amplitude of B1 with output of B2 + + + + + Ring-modulate B1 and B2 + + + + + Modulate phase of B1 with output of B2 + + + + + + + + Draw your own waveform here by dragging your mouse on this graph. + + + + + Load waveform + + + + + Click to load a waveform from a sample file + + + + + Phase left + + + + + Click to shift phase by -15 degrees + + + + + Phase right + + + + + Click to shift phase by +15 degrees + + + + + Normalize + + + + + Click to normalize + + + + + Invert + + + + + Click to invert + + + + + Smooth + + + + + Click to smooth + + + + + Sine wave + + + + + Click for sine wave + + + + + + Triangle wave + + + + + Click for triangle wave + + + + + Click for saw wave + + + + + Square wave + + + + + Click for square wave + + ZynAddSubFxInstrument + Portamento + Filter Frequency + Filter Resonance + Bandwidth + FM Gain + Resonance Center Frequency + Resonance Bandwidth + Forward MIDI Control Change Events @@ -7601,121 +9695,150 @@ Please make sure you have read-permission to the file and the directory containi ZynAddSubFxView - Show GUI - - - - Click here to show or hide the graphical user interface (GUI) of ZynAddSubFX. - - - + Portamento: + PORT + Filter Frequency: + FREQ + Filter Resonance: + RES + Bandwidth: + BW + FM Gain: + FM GAIN + Resonance center frequency: + RES CF + Resonance bandwidth: + RES BW + Forward MIDI Control Changes + + + Show GUI + + + + + Click here to show or hide the graphical user interface (GUI) of ZynAddSubFX. + + audioFileProcessor + Amplify + Start of sample + End of sample - Reverse sample - - - - Stutter - - - + Loopback point + + Reverse sample + + + + Loop mode + + Stutter + + + + Interpolation mode + None + Linear + Sinc + Sample not found: %1 @@ -7723,6 +9846,7 @@ Please make sure you have read-permission to the file and the directory containi bitInvader + Samplelength @@ -7730,165 +9854,205 @@ Please make sure you have read-permission to the file and the directory containi bitInvaderView + Sample Length - Sine wave - - - - Triangle wave - - - - Saw wave - - - - Square wave - - - - White noise wave - - - - User defined wave - - - - Smooth - - - - Click here to smooth waveform. - - - - Interpolation - - - - Normalize - - - + Draw your own waveform here by dragging your mouse on this graph. + + Sine wave + + + + Click for a sine-wave. + + Triangle wave + + + + Click here for a triangle-wave. + + Saw wave + + + + Click here for a saw-wave. + + Square wave + + + + Click here for a square-wave. + + White noise wave + + + + Click here for white-noise. + + User defined wave + + + + Click here for a user-defined shape. + + + Smooth + + + + + Click here to smooth waveform. + + + + + Interpolation + + + + + Normalize + + dynProcControlDialog + INPUT + Input gain: + OUTPUT + Output gain: + ATTACK + Peak attack time: + RELEASE + Peak release time: + Reset waveform + Click here to reset the wavegraph back to default + Smooth waveform + Click here to apply smoothing to wavegraph + Increase wavegraph amplitude by 1dB + Click here to increase wavegraph amplitude by 1dB + Decrease wavegraph amplitude by 1dB + Click here to decrease wavegraph amplitude by 1dB + Stereomode Maximum + Process based on the maximum of both stereo channels + Stereomode Average + Process based on the average of both stereo channels + Stereomode Unlinked + Process each stereo channel independently @@ -7896,22 +10060,27 @@ Please make sure you have read-permission to the file and the directory containi dynProcControls + Input gain + Output gain + Attack time + Release time + Stereo mode @@ -7919,10 +10088,12 @@ Please make sure you have read-permission to the file and the directory containi fxLineLcdSpinBox + Assign to: + New FX Channel @@ -7930,6 +10101,7 @@ Please make sure you have read-permission to the file and the directory containi graphModel + Graph @@ -7937,50 +10109,62 @@ Please make sure you have read-permission to the file and the directory containi kickerInstrument + Start frequency + End frequency - Gain - - - + Length + Distortion Start + Distortion End + + Gain + + + + Envelope Slope + Noise + Click + Frequency Slope + Start from note + End to note @@ -7988,42 +10172,52 @@ Please make sure you have read-permission to the file and the directory containi kickerInstrumentView + Start frequency: + End frequency: - Gain: - - - + Frequency Slope: + + Gain: + + + + Envelope Length: + Envelope Slope: + Click: + Noise: + Distortion Start: + Distortion End: @@ -8031,26 +10225,37 @@ Please make sure you have read-permission to the file and the directory containi ladspaBrowserView + + Available Effects + + Unavailable Effects + + Instruments + + Analysis Tools + + Don't know + This dialog displays information on all of the LADSPA plugins LMMS was able to locate. The plugins are divided into five categories based upon an interpretation of the port types and names. Available Effects are those that can be used by LMMS. In order for LMMS to be able to use an effect, it must, first and foremost, be an effect, which is to say, it has to have both input channels and output channels. LMMS identifies an input channel as an audio rate port containing 'in' in the name. Output channels are identified by the letters 'out'. Furthermore, the effect must have the same number of inputs and outputs and be real time capable. @@ -8067,6 +10272,7 @@ Double clicking any of the plugins will bring up information on the ports. + Type: @@ -8074,10 +10280,12 @@ Double clicking any of the plugins will bring up information on the ports. ladspaDescription + Plugins + Description @@ -8085,66 +10293,83 @@ Double clicking any of the plugins will bring up information on the ports. ladspaPortDialog + Ports + Name + Rate + Direction + Type + Min < Default < Max + Logarithmic + SR Dependent + Audio + Control + Input + Output + Toggled + Integer + Float + + Yes @@ -8152,46 +10377,57 @@ Double clicking any of the plugins will bring up information on the ports. lb302Synth + VCF Cutoff Frequency + VCF Resonance + VCF Envelope Mod + VCF Envelope Decay + Distortion + Waveform + Slide Decay + Slide + Accent + Dead + 24dB/oct Filter @@ -8199,122 +10435,153 @@ Double clicking any of the plugins will bring up information on the ports. lb302SynthView + Cutoff Freq: + Resonance: + Env Mod: + Decay: + 303-es-que, 24dB/octave, 3 pole filter + Slide Decay: + DIST: + Saw wave + Click here for a saw-wave. + Triangle wave + Click here for a triangle-wave. + Square wave + Click here for a square-wave. + Rounded square wave + Click here for a square-wave with a rounded end. + Moog wave + Click here for a moog-like wave. + Sine wave + Click for a sine-wave. + + White noise wave + Click here for an exponential wave. + Click here for white-noise. + Bandlimited saw wave + Click here for bandlimited saw wave. + Bandlimited square wave + Click here for bandlimited square wave. + Bandlimited triangle wave + Click here for bandlimited triangle wave. + Bandlimited moog saw wave + Click here for bandlimited moog saw wave. @@ -8322,118 +10589,147 @@ Double clicking any of the plugins will bring up information on the ports. malletsInstrument + Hardness + Position + Vibrato Gain + Vibrato Freq + Stick Mix + Modulator + Crossfade + LFO Speed + LFO Depth + ADSR + Pressure + Motion + Speed + Bowed + Spread + Marimba + Vibraphone + Agogo + Wood1 + Reso + Wood2 + Beats + Two Fixed + Clump + Tubular Bells + Uniform Bar + Tuned Bar + Glass + Tibetan Bowl @@ -8441,149 +10737,186 @@ Double clicking any of the plugins will bring up information on the ports. malletsInstrumentView + Instrument + Spread + Spread: - Hardness - - - - Hardness: - - - - Position - - - - Position: - - - - Vib Gain - - - - Vib Gain: - - - - Vib Freq - - - - Vib Freq: - - - - Stick Mix - - - - Stick Mix: - - - - Modulator - - - - Modulator: - - - - Crossfade - - - - Crossfade: - - - - LFO Speed - - - - LFO Speed: - - - - LFO Depth - - - - LFO Depth: - - - - ADSR - - - - ADSR: - - - - Pressure - - - - Pressure: - - - - Speed - - - - Speed: - - - + Missing files + Your Stk-installation seems to be incomplete. Please make sure the full Stk-package is installed! + + + Hardness + + + + + Hardness: + + + + + Position + + + + + Position: + + + + + Vib Gain + + + + + Vib Gain: + + + + + Vib Freq + + + + + Vib Freq: + + + + + Stick Mix + + + + + Stick Mix: + + + + + Modulator + + + + + Modulator: + + + + + Crossfade + + + + + Crossfade: + + + + + LFO Speed + + + + + LFO Speed: + + + + + LFO Depth + + + + + LFO Depth: + + + + + ADSR + + + + + ADSR: + + + + + Pressure + + + + + Pressure: + + + + + Speed + + + + + Speed: + + manageVSTEffectView + - VST parameter control + VST Sync + Click here if you want to synchronize all parameters with VST plugin. + + Automated + Click here if you want to display automated parameters only. + Close + Close VST effect knob-controller window. @@ -8591,30 +10924,39 @@ Double clicking any of the plugins will bring up information on the ports. manageVestigeInstrumentView + + - VST plugin control + VST Sync + Click here if you want to synchronize all parameters with VST plugin. + + Automated + Click here if you want to display automated parameters only. + Close + Close VST plugin knob-controller window. @@ -8622,118 +10964,147 @@ Double clicking any of the plugins will bring up information on the ports. opl2instrument + Patch + Op 1 Attack + Op 1 Decay + Op 1 Sustain + Op 1 Release + Op 1 Level + Op 1 Level Scaling + Op 1 Frequency Multiple + Op 1 Feedback + Op 1 Key Scaling Rate + Op 1 Percussive Envelope + Op 1 Tremolo + Op 1 Vibrato + Op 1 Waveform + Op 2 Attack + Op 2 Decay + Op 2 Sustain + Op 2 Release + Op 2 Level + Op 2 Level Scaling + Op 2 Frequency Multiple + Op 2 Key Scaling Rate + Op 2 Percussive Envelope + Op 2 Tremolo + Op 2 Vibrato + Op 2 Waveform + FM + Vibrato Depth + Tremolo Depth @@ -8741,18 +11112,26 @@ Double clicking any of the plugins will bring up information on the ports. opl2instrumentView + + Attack + + Decay + + Release + + Frequency multiplier @@ -8760,10 +11139,12 @@ Double clicking any of the plugins will bring up information on the ports. organicInstrument + Distortion + Volume @@ -8771,50 +11152,63 @@ Double clicking any of the plugins will bring up information on the ports. organicInstrumentView + Distortion: - Volume: - - - - Randomise - - - - Osc %1 waveform: - - - - Osc %1 volume: - - - - Osc %1 panning: - - - - cents - - - + The distortion knob adds distortion to the output of the instrument. + + Volume: + + + + The volume knob controls the volume of the output of the instrument. It is cumulative with the instrument window's volume control. + + Randomise + + + + The randomize button randomizes all knobs except the harmonics,main volume and distortion knobs. + + + Osc %1 waveform: + + + + + Osc %1 volume: + + + + + Osc %1 panning: + + + + Osc %1 stereo detuning + + cents + + + + Osc %1 harmonic: @@ -8822,265 +11216,351 @@ Double clicking any of the plugins will bring up information on the ports. papuInstrument + Sweep time + Sweep direction + Sweep RtShift amount + + Wave Pattern Duty + Channel 1 volume + + + Volume sweep direction + + + Length of each step in sweep + Channel 2 volume + Channel 3 volume + Channel 4 volume + + Shift Register width + + + + Right Output level + Left Output level + Channel 1 to SO2 (Left) + Channel 2 to SO2 (Left) + Channel 3 to SO2 (Left) + Channel 4 to SO2 (Left) + Channel 1 to SO1 (Right) + Channel 2 to SO1 (Right) + Channel 3 to SO1 (Right) + Channel 4 to SO1 (Right) + Treble + Bass - - Shift Register width - - papuInstrumentView + Sweep Time: + Sweep Time - Sweep RtShift amount: - - - - Sweep RtShift amount - - - - Wave pattern duty: - - - - Wave Pattern Duty - - - - Square Channel 1 Volume: - - - - Length of each step in sweep: - - - - Length of each step in sweep - - - - Wave pattern duty - - - - Square Channel 2 Volume: - - - - Square Channel 2 Volume - - - - Wave Channel Volume: - - - - Wave Channel Volume - - - - Noise Channel Volume: - - - - Noise Channel Volume - - - - SO1 Volume (Right): - - - - SO1 Volume (Right) - - - - SO2 Volume (Left): - - - - SO2 Volume (Left) - - - - Treble: - - - - Treble - - - - Bass: - - - - Bass - - - - Sweep Direction - - - - Volume Sweep Direction - - - - Shift Register Width - - - - Channel1 to SO1 (Right) - - - - Channel2 to SO1 (Right) - - - - Channel3 to SO1 (Right) - - - - Channel4 to SO1 (Right) - - - - Channel1 to SO2 (Left) - - - - Channel2 to SO2 (Left) - - - - Channel3 to SO2 (Left) - - - - Channel4 to SO2 (Left) - - - - Wave Pattern - - - + The amount of increase or decrease in frequency + + Sweep RtShift amount: + + + + + Sweep RtShift amount + + + + The rate at which increase or decrease in frequency occurs + + + Wave pattern duty: + + + + + Wave Pattern Duty + + + + + The duty cycle is the ratio of the duration (time) that a signal is ON versus the total period of the signal. + + + Square Channel 1 Volume: + + + + Square Channel 1 Volume + + + + Length of each step in sweep: + + + + + + + Length of each step in sweep + + + + + + The delay between step change + + Wave pattern duty + + + + + Square Channel 2 Volume: + + + + + + Square Channel 2 Volume + + + + + Wave Channel Volume: + + + + + + Wave Channel Volume + + + + + Noise Channel Volume: + + + + + + Noise Channel Volume + + + + + SO1 Volume (Right): + + + + + SO1 Volume (Right) + + + + + SO2 Volume (Left): + + + + + SO2 Volume (Left) + + + + + Treble: + + + + + Treble + + + + + Bass: + + + + + Bass + + + + + Sweep Direction + + + + + + + + + Volume Sweep Direction + + + + + Shift Register Width + + + + + Channel1 to SO1 (Right) + + + + + Channel2 to SO1 (Right) + + + + + Channel3 to SO1 (Right) + + + + + Channel4 to SO1 (Right) + + + + + Channel1 to SO2 (Left) + + + + + Channel2 to SO2 (Left) + + + + + Channel3 to SO2 (Left) + + + + + Channel4 to SO2 (Left) + + + + + Wave Pattern + + + + Draw the wave here @@ -9088,34 +11568,42 @@ Double clicking any of the plugins will bring up information on the ports. patchesDialog + Qsynth: Channel Preset + Bank selector + Bank + Program selector + Patch + Name + OK + Cancel @@ -9123,242 +11611,301 @@ Double clicking any of the plugins will bring up information on the ports. pluginBrowser + no description - Incomplete monophonic imitation tb303 + + A native amplifier plugin - Plugin for freely manipulating stereo output + + Simple sampler with various settings for using samples (e.g. drums) in an instrument-track - Plugin for controlling knobs with sound peaks + + Boost your bass the fast and simple way - Plugin for enhancing stereo separation of a stereo input file + + Customizable wavetable synthesizer + + An oversampling bitcrusher + + + + + Carla Patchbay Instrument + + + + + Carla Rack Instrument + + + + + A 4-band Crossover Equalizer + + + + + A native delay plugin + + + + + A Dual filter plugin + + + + + plugin for processing dynamics in a flexible way + + + + + A native eq plugin + + + + + A native flanger plugin + + + + + Player for GIG files + + + + + Filter for importing Hydrogen files into LMMS + + + + + Versatile drum synthesizer + + + + List installed LADSPA plugins - GUS-compatible patch instrument - - - - Additive Synthesizer for organ-like sounds - - - - Tuneful things to bang on - - - - VST-host for using VST(i)-plugins within LMMS - - - - Vibrating string modeler - - - + plugin for using arbitrary LADSPA-effects inside LMMS. + + Incomplete monophonic imitation tb303 + + + + + Filter for exporting MIDI-files from LMMS + + + + Filter for importing MIDI-files into LMMS + + Monstrous 3-oscillator synth with modulation matrix + + + + + A multitap echo delay plugin + + + + + A NES-like synthesizer + + + + + 2-operator FM Synth + + + + + Additive Synthesizer for organ-like sounds + + + + + Emulation of GameBoy (TM) APU + + + + + GUS-compatible patch instrument + + + + + Plugin for controlling knobs with sound peaks + + + + + Reverb algorithm by Sean Costello + + + + + Player for SoundFont files + + + + + LMMS port of sfxr + + + + Emulation of the MOS6581 and MOS8580 SID. This chip was used in the Commodore 64 computer. - Player for SoundFont files - - - - Emulation of GameBoy (TM) APU - - - - Customizable wavetable synthesizer - - - - Embedded ZynAddSubFX - - - - 2-operator FM Synth - - - - Filter for importing Hydrogen files into LMMS - - - - LMMS port of sfxr - - - - Monstrous 3-oscillator synth with modulation matrix - - - - Three powerful oscillators you can modulate in several ways - - - - A native amplifier plugin - - - - Carla Rack Instrument - - - - 4-oscillator modulatable wavetable synth - - - - plugin for waveshaping - - - - Boost your bass the fast and simple way - - - - Versatile drum synthesizer - - - - Simple sampler with various settings for using samples (e.g. drums) in an instrument-track - - - - plugin for processing dynamics in a flexible way - - - - Carla Patchbay Instrument - - - - plugin for using arbitrary VST effects inside LMMS. - - - + Graphical spectrum analyzer plugin - A NES-like synthesizer + + Plugin for enhancing stereo separation of a stereo input file - A native delay plugin + + Plugin for freely manipulating stereo output - Player for GIG files + + Tuneful things to bang on - A multitap echo delay plugin + + Three powerful oscillators you can modulate in several ways - A native flanger plugin + + VST-host for using VST(i)-plugins within LMMS - An oversampling bitcrusher + + Vibrating string modeler - A native eq plugin + + plugin for using arbitrary VST effects inside LMMS. - A 4-band Crossover Equalizer + + 4-oscillator modulatable wavetable synth - A Dual filter plugin + + plugin for waveshaping - Filter for exporting MIDI-files from LMMS - - - - Reverb algorithm by Sean Costello + + Embedded ZynAddSubFX sf2Instrument + Bank + Patch + Gain + Reverb + Reverb Roomsize + Reverb Damping + Reverb Width + Reverb Level + Chorus + Chorus Lines + Chorus Level + Chorus Speed + Chorus Depth + A soundfont %1 could not be loaded. @@ -9366,74 +11913,92 @@ This chip was used in the Commodore 64 computer. sf2InstrumentView + Open other SoundFont file + Click here to open another SF2 file + Choose the patch + Gain + Apply reverb (if supported) + This button enables the reverb effect. This is useful for cool effects, but only works on files that support it. + Reverb Roomsize: + Reverb Damping: + Reverb Width: + Reverb Level: + Apply chorus (if supported) + This button enables the chorus effect. This is useful for cool echo effects, but only works on files that support it. + Chorus Lines: + Chorus Level: + Chorus Speed: + Chorus Depth: + Open SoundFont file + SoundFont2 Files (*.sf2) @@ -9441,6 +12006,7 @@ This chip was used in the Commodore 64 computer. sfxrInstrument + Wave Form @@ -9448,26 +12014,32 @@ This chip was used in the Commodore 64 computer. sidInstrument + Cutoff + Resonance + Filter type + Voice 3 off + Volume + Chip model @@ -9475,134 +12047,172 @@ This chip was used in the Commodore 64 computer. sidInstrumentView + Volume: + Resonance: + + Cutoff frequency: + High-Pass filter + Band-Pass filter + Low-Pass filter + Voice3 Off + MOS6581 SID + MOS8580 SID + + Attack: + Attack rate determines how rapidly the output of Voice %1 rises from zero to peak amplitude. + + Decay: + Decay rate determines how rapidly the output falls from the peak amplitude to the selected Sustain level. + Sustain: + Output of Voice %1 will remain at the selected Sustain amplitude as long as the note is held. + + Release: + The output of of Voice %1 will fall from Sustain amplitude to zero amplitude at the selected Release rate. + + Pulse Width: + The Pulse Width resolution allows the width to be smoothly swept with no discernable stepping. The Pulse waveform on Oscillator %1 must be selected to have any audible effect. + Coarse: + The Coarse detuning allows to detune Voice %1 one octave up or down. + Pulse Wave + Triangle Wave + SawTooth + Noise + Sync + Sync synchronizes the fundamental frequency of Oscillator %1 with the fundamental frequency of Oscillator %2 producing "Hard Sync" effects. + Ring-Mod + Ring-mod replaces the Triangle Waveform output of Oscillator %1 with a "Ring Modulated" combination of Oscillators %1 and %2. + Filtered + When Filtered is on, Voice %1 will be processed through the Filter. When Filtered is off, Voice %1 appears directly at the output, and the Filter has no effect on it. + Test + Test, when set, resets and locks Oscillator %1 at zero until Test is turned off. @@ -9610,10 +12220,12 @@ This chip was used in the Commodore 64 computer. stereoEnhancerControlDialog + WIDE + Width: @@ -9621,6 +12233,7 @@ This chip was used in the Commodore 64 computer. stereoEnhancerControls + Width @@ -9628,18 +12241,22 @@ This chip was used in the Commodore 64 computer. stereoMatrixControlDialog + Left to Left Vol: + Left to Right Vol: + Right to Left Vol: + Right to Right Vol: @@ -9647,18 +12264,22 @@ This chip was used in the Commodore 64 computer. stereoMatrixControls + Left to Left + Left to Right + Right to Left + Right to Right @@ -9666,10 +12287,12 @@ This chip was used in the Commodore 64 computer. vestigeInstrument + Loading plugin + Please wait while loading VST-plugin... @@ -9677,42 +12300,52 @@ This chip was used in the Commodore 64 computer. vibed + String %1 volume + String %1 stiffness + Pick %1 position + Pickup %1 position + Pan %1 + Detune %1 + Fuzziness %1 + Length %1 + Impulse %1 + Octave %1 @@ -9720,90 +12353,112 @@ This chip was used in the Commodore 64 computer. vibedView + Volume: + The 'V' knob sets the volume of the selected string. + String stiffness: + The 'S' knob sets the stiffness of the selected string. The stiffness of the string affects how long the string will ring out. The lower the setting, the longer the string will ring. + Pick position: + The 'P' knob sets the position where the selected string will be 'picked'. The lower the setting the closer the pick is to the bridge. + Pickup position: + The 'PU' knob sets the position where the vibrations will be monitored for the selected string. The lower the setting, the closer the pickup is to the bridge. + Pan: + The Pan knob determines the location of the selected string in the stereo field. + Detune: + The Detune knob modifies the pitch of the selected string. Settings less than zero will cause the string to sound flat. Settings greater than zero will cause the string to sound sharp. + Fuzziness: + The Slap knob adds a bit of fuzz to the selected string which is most apparent during the attack, though it can also be used to make the string sound more 'metallic'. + Length: + The Length knob sets the length of the selected string. Longer strings will both ring longer and sound brighter, however, they will also eat up more CPU cycles. + Impulse or initial state + The 'Imp' selector determines whether the waveform in the graph is to be treated as an impulse imparted to the string by the pick or the initial state of the string. + Octave + The Octave selector is used to choose which harmonic of the note the string will ring at. For example, '-2' means the string will ring two octaves below the fundamental, 'F' means the string will ring at the fundamental, and '6' means the string will ring six octaves above the fundamental. + Impulse Editor + The waveform editor provides control over the initial state or impulse that is used to start the string vibrating. The buttons to the right of the graph will initialize the waveform to the selected type. The '?' button will load a waveform from a file--only the first 128 samples will be loaded. The waveform can also be drawn in the graph. @@ -9814,6 +12469,7 @@ The 'N' button will normalize the waveform. + Vibed models up to nine independently vibrating strings. The 'String' selector allows you to choose which string is being edited. The 'Imp' selector chooses whether the graph represents an impulse or the initial state of the string. The 'Octave' selector chooses which harmonic the string should vibrate at. The graph allows you to control the initial state or impulse used to set the string in motion. @@ -9828,129 +12484,160 @@ The LED in the lower right corner of the waveform editor determines whether the + Enable waveform + Click here to enable/disable waveform. + String + The String selector is used to choose which string the controls are editing. A Vibed instrument can contain up to nine independently vibrating strings. The LED in the lower right corner of the waveform editor indicates whether the selected string is active. + Sine wave - Triangle wave - - - - Saw wave - - - - Square wave - - - - White noise wave - - - - User defined wave - - - - Smooth - - - - Click here to smooth waveform. - - - - Normalize - - - - Click here to normalize waveform. - - - + Use a sine-wave for current oscillator. + + Triangle wave + + + + Use a triangle-wave for current oscillator. + + Saw wave + + + + Use a saw-wave for current oscillator. + + Square wave + + + + Use a square-wave for current oscillator. + + White noise wave + + + + Use white-noise for current oscillator. + + User defined wave + + + + Use a user-defined waveform for current oscillator. + + + Smooth + + + + + Click here to smooth waveform. + + + + + Normalize + + + + + Click here to normalize waveform. + + voiceObject + Voice %1 pulse width + Voice %1 attack + Voice %1 decay + Voice %1 sustain + Voice %1 release + Voice %1 coarse detuning + Voice %1 wave shape + Voice %1 sync + Voice %1 ring modulate + Voice %1 filtered + Voice %1 test @@ -9958,58 +12645,72 @@ The LED in the lower right corner of the waveform editor determines whether the waveShaperControlDialog + INPUT + Input gain: + OUTPUT + Output gain: + Reset waveform + Click here to reset the wavegraph back to default + Smooth waveform + Click here to apply smoothing to wavegraph + Increase graph amplitude by 1dB + Click here to increase wavegraph amplitude by 1dB + Decrease graph amplitude by 1dB + Click here to decrease wavegraph amplitude by 1dB + Clip input + Clip input signal to 0dB @@ -10017,10 +12718,12 @@ The LED in the lower right corner of the waveform editor determines whether the waveShaperControls + Input gain + Output gain From bd8c27249fec77d4ade4bd6ddfeb242284f75b1c Mon Sep 17 00:00:00 2001 From: David Carlier Date: Sun, 31 Dec 2017 20:02:49 +0000 Subject: [PATCH 06/31] Using the cmake variable will insure the proper value regardless of the platform (already available in 2.0.7 version) --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 262930bee..858e310c1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -381,7 +381,7 @@ IF(WANT_JACK) SET(STATUS_JACK "OK (weak linking enabled)") SET(JACK_INCLUDE_DIRS "") # use dlsym instead - SET(JACK_LIBRARIES "dl") + SET(JACK_LIBRARIES ${CMAKE_DL_LIBS}) ELSE() SET(STATUS_JACK "OK") ENDIF() From 59eba30d334dd5000dd8b80de713982f36bc3f4e Mon Sep 17 00:00:00 2001 From: Mark-Agent003 Date: Fri, 5 Jan 2018 10:43:24 -0600 Subject: [PATCH 07/31] Add File Browser Styling (#4085) Use CSS to style the selected and hovered items in the File Browser --- data/themes/default/closed_branch.png | Bin 0 -> 288 bytes data/themes/default/open_branch.png | Bin 0 -> 298 bytes data/themes/default/style.css | 22 ++++++++++++++++++++++ 3 files changed, 22 insertions(+) create mode 100755 data/themes/default/closed_branch.png create mode 100755 data/themes/default/open_branch.png diff --git a/data/themes/default/closed_branch.png b/data/themes/default/closed_branch.png new file mode 100755 index 0000000000000000000000000000000000000000..73f2de78737d9a894be2bdde0ffbc5a79da357d5 GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3y=napU%7MffQ$fM`STj z$8`{9bkdkz0Tg5}@$_|Nf5gZnW^Ux*bw33twARzbF~s6@vWS3C+5)wNq{PI<>l%4N z*cP)TH7%O->c5du(G}wWr=TuH+uaZLH!M*2y64QngC_%`0{_PcdbV1z85tQFY}mZn zcuDG$|KWk5i{qAT*s#ffg~j#H@>z}b|NkW3*i@*i9OvC>_~L&(TigBp^@e9=+fMy> z?rk)Wi1d%=-}Bo#|IY2vpKq@$qtha?r{-r<;@eqIT_lek00IpqwUZy7pI?7*k4*;; a3&W{vx=-h|AHD%}ID@CFpUXO@geCyNMQ+ys literal 0 HcmV?d00001 diff --git a/data/themes/default/open_branch.png b/data/themes/default/open_branch.png new file mode 100755 index 0000000000000000000000000000000000000000..5bbd5aa4e461c8c78513eaff6dfe04cce3e15eff GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3y=napU%7MffQ$fM`STj z$8`{9bkdkz0Tg5}@$_|Nf5gZnW^S=yzF8GeXuGG2V~EA+WD&v1DGS7Ye10y@e0sk9 zeu)*FGbC2*P8>OM z;7HGb9v>eb`})5r5nGcCmGw?bu(q^p^y={TGJGOF?SFc5a&!0JKR+ig+`V|>$HTwB zFKK^x8fezDv-3{Z0!?f-vCiMs#44jZID6WP=DuvC#JBO}B3#}D@Z_c!FRKAwAf mJBJ&WBeT2kw-t>u7#O@#ET6MTEtCa%fx*+&&t;ucLK6U60CnU5 literal 0 HcmV?d00001 diff --git a/data/themes/default/style.css b/data/themes/default/style.css index fc25d6180..8da7522fd 100644 --- a/data/themes/default/style.css +++ b/data/themes/default/style.css @@ -7,6 +7,28 @@ QLabel, QTreeWidget, QListWidget, QGroupBox, QMenuBar { color: #d1d8e4; } +QTreeView { + outline: none; +} + +QTreeWidget::item:hover, +QTreeWidget::branch:hover { + background-color: #3C444E; +} + +QTreeWidget::item:selected, +QTreeWidget::branch:selected { + background-color: #17793b; +} + +QTreeView::branch:has-children:open { + border-image: url("resources:open_branch.png") 0; +} + +QTreeView::branch:has-children:closed { + border-image: url("resources:closed_branch.png") 0; +} + QMdiArea { background-color: #111314; } From 46512fdf19f42150d2728feb439b1c8441ce93dd Mon Sep 17 00:00:00 2001 From: tresf Date: Tue, 9 Jan 2018 21:33:52 -0500 Subject: [PATCH 08/31] Fix macOS compilation without SDL Closes #4105 --- src/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e906eda3f..718a6fc1d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -123,7 +123,7 @@ IF(LMMS_BUILD_WIN32) ENDIF() IF(LMMS_BUILD_APPLE) - SET(EXTRA_LIBRARIES "-framework CoreMIDI") + SET(EXTRA_LIBRARIES "-framework CoreMIDI -framework CoreFoundation") ENDIF() if(LMMS_HAVE_OSS AND LMMS_BUILD_OPENBSD) From 6e0dda692af91ac0b71fb65d2a5a1d369e119239 Mon Sep 17 00:00:00 2001 From: DomClark Date: Wed, 20 Dec 2017 22:00:31 +0000 Subject: [PATCH 09/31] Remove plugin lock from RemoteVstPlugin --- plugins/vst_base/RemoteVstPlugin.cpp | 59 +++++----------------------- 1 file changed, 10 insertions(+), 49 deletions(-) diff --git a/plugins/vst_base/RemoteVstPlugin.cpp b/plugins/vst_base/RemoteVstPlugin.cpp index f3a7ebc16..09270c776 100644 --- a/plugins/vst_base/RemoteVstPlugin.cpp +++ b/plugins/vst_base/RemoteVstPlugin.cpp @@ -237,21 +237,16 @@ public: // has to be called as soon as input- or output-count changes void updateInOutCount(); - inline void lock() - { - pthread_mutex_lock( &m_pluginLock ); - } - - inline void unlock() - { - pthread_mutex_unlock( &m_pluginLock ); - } - inline void lockShm() { pthread_mutex_lock( &m_shmLock ); } + inline bool tryLockShm() + { + return pthread_mutex_trylock( &m_shmLock ) == 0; + } + inline void unlockShm() { pthread_mutex_unlock( &m_shmLock ); @@ -318,22 +313,8 @@ private: bool load( const std::string & _plugin_file ); - // thread-safe dispatching of plugin int pluginDispatch( int cmd, int param1 = 0, int param2 = 0, void * p = NULL, float f = 0 ) - { - int ret = 0; - lock(); - if( m_plugin ) - { - ret = m_plugin->dispatcher( m_plugin, cmd, param1, param2, p, f ); - } - unlock(); - return ret; - } - - // thread-safe dispatching of plugin - int pluginDispatchNoLocking( int cmd, int param1 = 0, int param2 = 0, void * p = NULL, float f = 0 ) { if( m_plugin ) { @@ -356,7 +337,6 @@ private: bool m_initialized; bool m_registeredWindowClass; - pthread_mutex_t m_pluginLock; bool m_processing; std::queue m_messageList; @@ -408,7 +388,6 @@ RemoteVstPlugin::RemoteVstPlugin( const char * socketPath ) : m_windowHeight( 0 ), m_initialized( false ), m_registeredWindowClass( false ), - m_pluginLock(), m_processing( false ), m_messageList(), m_shouldGiveIdle( false ), @@ -424,7 +403,6 @@ RemoteVstPlugin::RemoteVstPlugin( const char * socketPath ) : m_shmID( -1 ), m_vstSyncData( NULL ) { - pthread_mutex_init( &m_pluginLock, NULL ); pthread_mutex_init( &m_shmLock, NULL ); __plugin = this; @@ -518,7 +496,6 @@ RemoteVstPlugin::~RemoteVstPlugin() delete[] m_outputs; pthread_mutex_destroy( &m_shmLock ); - pthread_mutex_destroy( &m_pluginLock ); } @@ -623,9 +600,7 @@ bool RemoteVstPlugin::processMessage( const message & _m ) break; case IdVstSetParameter: - lock(); m_plugin->setParameter( m_plugin, _m.getInt( 0 ), _m.getFloat( 1 ) ); - unlock(); //sendMessage( IdVstSetParameter ); break; @@ -906,13 +881,14 @@ void RemoteVstPlugin::process( const sampleFrame * _in, sampleFrame * _out ) // now we're ready to fetch sound from VST-plugin - lock(); - lockShm(); + if( !tryLockShm() ) + { + return; + } if( !isShmValid() ) { unlockShm(); - unlock(); return; } @@ -943,7 +919,6 @@ void RemoteVstPlugin::process( const sampleFrame * _in, sampleFrame * _out ) #endif unlockShm(); - unlock(); m_currentSamplePos += bufferSize(); } @@ -1050,8 +1025,6 @@ void RemoteVstPlugin::sendCurrentProgramName() void RemoteVstPlugin::getParameterDump() { - lock(); - message m( IdVstParameterDump ); m.addInt( m_plugin->numParams ); @@ -1059,7 +1032,7 @@ void RemoteVstPlugin::getParameterDump() { char paramName[32]; memset( paramName, 0, sizeof( paramName ) ); - pluginDispatchNoLocking( effGetParamName, i, 0, paramName ); + pluginDispatch( effGetParamName, i, 0, paramName ); paramName[sizeof(paramName)-1] = 0; m.addInt( i ); @@ -1067,8 +1040,6 @@ void RemoteVstPlugin::getParameterDump() m.addFloat( m_plugin->getParameter( m_plugin, i ) ); } - unlock(); - sendMessage( m ); } @@ -1077,7 +1048,6 @@ void RemoteVstPlugin::getParameterDump() void RemoteVstPlugin::setParameterDump( const message & _m ) { - lock(); const int n = _m.getInt( 0 ); const int params = ( n > m_plugin->numParams ) ? m_plugin->numParams : n; @@ -1090,7 +1060,6 @@ void RemoteVstPlugin::setParameterDump( const message & _m ) item.value = _m.getFloat( ++p ); m_plugin->setParameter( m_plugin, item.index, item.value ); } - unlock(); } @@ -1243,14 +1212,12 @@ void RemoteVstPlugin::savePreset( const std::string & _file ) chunk_size = m_plugin->numParams * sizeof( float ); data = new char[ chunk_size ]; unsigned int* toUIntArray = reinterpret_cast( data ); - lock(); for ( int i = 0; i < m_plugin->numParams; i++ ) { float value = m_plugin->getParameter( m_plugin, i ); unsigned int * pValue = ( unsigned int * ) &value; toUIntArray[ i ] = endian_swap( *pValue ); } - unlock(); } else chunk_size = (((m_plugin->numParams * sizeof( float )) + 56)*m_plugin->numPrograms); } @@ -1296,14 +1263,12 @@ void RemoteVstPlugin::savePreset( const std::string & _file ) pluginDispatch( effSetProgram, 0, j ); pluginDispatch( effGetProgramName, 0, 0, pBank->prgName ); fwrite ( pBank, 1, 56, stream ); - lock(); for ( int i = 0; i < m_plugin->numParams; i++ ) { value = m_plugin->getParameter( m_plugin, i ); pValue = ( unsigned int * ) &value; toUIntArray[ i ] = endian_swap( *pValue ); } - unlock(); fwrite ( data, 1, chunk_size, stream ); } pluginDispatch( effSetProgram, 0, currProgram ); @@ -1370,7 +1335,6 @@ void RemoteVstPlugin::loadPresetFile( const std::string & _file ) pluginDispatch( 24, 1, len, chunk ); else { - lock(); unsigned int* toUIntArray = reinterpret_cast( chunk ); for (int i = 0; i < pBank->numPrograms; i++ ) { @@ -1378,7 +1342,6 @@ void RemoteVstPlugin::loadPresetFile( const std::string & _file ) pFloat = ( float* ) &toUInt; m_plugin->setParameter( m_plugin, i, *pFloat ); } - unlock(); } } else { if(pBank->fxMagic != 0x6B427846) { @@ -1389,7 +1352,6 @@ void RemoteVstPlugin::loadPresetFile( const std::string & _file ) int currProgram = pluginDispatch( effGetProgram ); chunk = new char[ len = sizeof(float)*m_plugin->numParams ]; toUIntArray = reinterpret_cast( chunk ); - lock(); for (int i =0; i < numPrograms; i++) { if ( fread (pBank, 1, 56, stream) != 56 ) { @@ -1410,7 +1372,6 @@ void RemoteVstPlugin::loadPresetFile( const std::string & _file ) m_plugin->setParameter( m_plugin, j, *pFloat ); } } - unlock(); pluginDispatch( effSetProgram, 0, currProgram ); fclose( stream ); } From 709fc7948b78d1fc55e941951266c1d6be302697 Mon Sep 17 00:00:00 2001 From: DomClark Date: Sat, 23 Dec 2017 01:42:30 +0000 Subject: [PATCH 10/31] Set buffer size during plugin init Fixes AmpliTube crash --- plugins/vst_base/RemoteVstPlugin.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/vst_base/RemoteVstPlugin.cpp b/plugins/vst_base/RemoteVstPlugin.cpp index 09270c776..38dde09c9 100644 --- a/plugins/vst_base/RemoteVstPlugin.cpp +++ b/plugins/vst_base/RemoteVstPlugin.cpp @@ -635,6 +635,7 @@ void RemoteVstPlugin::init( const std::string & _plugin_file ) } updateInOutCount(); + updateBufferSize(); // some plugins have to set samplerate during init if( m_vstSyncData->hasSHM ) From d0b3be7f00e732dd1c5dbb43cb7030d42ff6a346 Mon Sep 17 00:00:00 2001 From: DomClark Date: Wed, 27 Dec 2017 00:15:49 +0000 Subject: [PATCH 11/31] Wait for reply when updating sample rate --- include/RemotePlugin.h | 7 +++++++ plugins/vst_base/RemoteVstPlugin.cpp | 7 +------ plugins/vst_base/VstPlugin.cpp | 1 + 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/include/RemotePlugin.h b/include/RemotePlugin.h index f8080af78..811827730 100644 --- a/include/RemotePlugin.h +++ b/include/RemotePlugin.h @@ -419,6 +419,7 @@ enum RemoteMessageIDs IdQuit, IdSampleRateInformation, IdBufferSizeInformation, + IdInformationUpdated, IdMidiEvent, IdStartProcessing, IdProcessingDone, @@ -807,6 +808,7 @@ public: { lock(); sendMessage( message( IdSampleRateInformation ).addInt( _sr ) ); + waitForMessage( IdInformationUpdated, true ); unlock(); } @@ -1318,9 +1320,14 @@ bool RemotePluginClient::processMessage( const message & _m ) case IdSampleRateInformation: m_sampleRate = _m.getInt(); updateSampleRate(); + reply_message.id = IdInformationUpdated; + reply = true; break; case IdBufferSizeInformation: + // Should LMMS gain the ability to change buffer size + // without a restart, it must wait for this message to + // complete processing or else risk VST crashes m_bufferSize = _m.getInt(); updateBufferSize(); break; diff --git a/plugins/vst_base/RemoteVstPlugin.cpp b/plugins/vst_base/RemoteVstPlugin.cpp index 38dde09c9..f1fc673b1 100644 --- a/plugins/vst_base/RemoteVstPlugin.cpp +++ b/plugins/vst_base/RemoteVstPlugin.cpp @@ -636,12 +636,7 @@ void RemoteVstPlugin::init( const std::string & _plugin_file ) updateInOutCount(); updateBufferSize(); - - // some plugins have to set samplerate during init - if( m_vstSyncData->hasSHM ) - { - updateSampleRate(); - } + updateSampleRate(); /* set program to zero */ /* i comment this out because it breaks dfx Geometer diff --git a/plugins/vst_base/VstPlugin.cpp b/plugins/vst_base/VstPlugin.cpp index e291e15ba..a06663a7e 100644 --- a/plugins/vst_base/VstPlugin.cpp +++ b/plugins/vst_base/VstPlugin.cpp @@ -306,6 +306,7 @@ void VstPlugin::updateSampleRate() lock(); sendMessage( message( IdSampleRateInformation ). addInt( Engine::mixer()->processingSampleRate() ) ); + waitForMessage( IdInformationUpdated, true ); unlock(); } From e2c71e3369d191afb0bd8267846666505d5e92a7 Mon Sep 17 00:00:00 2001 From: DomClark Date: Sun, 7 Jan 2018 21:24:24 +0000 Subject: [PATCH 12/31] Fix lack of sound in iZotope plugins (#4095) --- plugins/vst_base/RemoteVstPlugin.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/vst_base/RemoteVstPlugin.cpp b/plugins/vst_base/RemoteVstPlugin.cpp index f1fc673b1..1c403576e 100644 --- a/plugins/vst_base/RemoteVstPlugin.cpp +++ b/plugins/vst_base/RemoteVstPlugin.cpp @@ -1499,7 +1499,7 @@ intptr_t RemoteVstPlugin::hostCallback( AEffect * _effect, int32_t _opcode, // value is 0 for input and != 0 otherwise. note: the // return value is 0 for such that older versions // will always return true. - return 1; + return 0; case audioMasterGetTime: SHOW_CALLBACK( "amc: audioMasterGetTime\n" ); From a193ec25f2b6f133e60902cb4c274621fa62ce39 Mon Sep 17 00:00:00 2001 From: Filip Hron Date: Wed, 17 Jan 2018 22:16:40 +0100 Subject: [PATCH 13/31] Fix patman logo Closes #3660 Supercedes #4121 --- plugins/patman/logo.png | Bin 1224 -> 1489 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/plugins/patman/logo.png b/plugins/patman/logo.png index e4007e9688b5863b24cfeaf880e7bfc3cb501830..104bc95b9846a908d540ec2d84a0eb4b59330061 100644 GIT binary patch delta 1426 zcmV;D1#SAs3DFCXQGenA5fm#f^Az%F000GENkl{H+c4(og%~-W1&6;4k{PwV$P_y(;a#LGbe{i|vobx;9`+q&T=l473dlV7jV>SyP zxos2JCh&hJpyshJ4fqsr0;R@#xlIDI#`||5w%G(UzztLZUjXGs*?KGnJOdsA{lNX4 z35iIy&oL44iO8Jf&*qFik7bJ|o5pSt8Iz5*-;6Qb`6N&-B7O2XsKQE-rHE(j{tZYw`Jfbai!Y z*fe)_b#e3NP3r3ExP19Ci;IitO`HbCjGxdk;0~}mS${A+JJt5>wPwz6l>p5;yd0KNhO=>&cOK1=?H zL?X1dw&HX;iN#_>qfsJ}2(egu1(9^rPom%Hr- z#(`(a#c+T5N_p_$ft)*cPHJmw<-&yv;`jR{9)FLEh{)L3m^d5`*|%?>I2;bqbv@?= ztLwUymX^xiy?bTXu3a)V_HUw($K&Gn`{n%k^K$0Q8EI%}kfEWWbocwoL{^+$bM@*~ zal75p*Oxf~_w@9Lq9_7LSy`DxqtUFvN25_GD=QN~6h)Dqo}P^DdV71t<#I`9XJ>lV zUw5C4g8gmaIM{UDw58u?Qe8mrD|f#F{=UU}{1{I&%GnM@B|cvshhS zohqN1nUVhfe)0Ky;`8}rU|>K(p-`&6x_`Pl#cc3|Gc1qgY+ohnO zV8xj)C@7Hj_I9(wgbb`15A{Eo?fvD;mvZsqMLB-_xY+G>vD@u(;=~DQX=#zk$w{-_ zj~f_QJk+a3NIkhlrO+YZG_bUixVr>=X-Ixs%^n)qmex|IBgX0f&K3fHCx4?Nu?}st z%@CJ1Q`l-VD=mI5BKjtP*ViNVW+U!?Eg};i0QiJ4R^HX=LmuzisrL6&}UJ zJ#n!ig1HP$sXU7dlO^MVBLMsi{FLjS%nX4{f^fN^o|UX{#WZicpXKX{DW3$kZz;D4 gY!lcfkiGo_2FpAa%2LYR01E&B07*qoM6N<$g1Q&T^#A|> delta 1158 zcmV;11bO?>3&;tOQGeJ59TglhE5{>7000D4NklZxr0+;mS(+mJA^+F-0rou&wAgr*Zu&qWXX~xOBNZBEPp21!k5!RviPG!f92cr z^}R(4lHd9Md?zX1T6{PEf4Vc#CY}*q3E<}kPqROT5WA^56=}r(^&5x>fS-3-UX(Hq z2!%rI>guB3?|=8a@%#O>*=!7jLXY|~dIKc;65H3;*BBlihSh3?+wI28%*?wz>Y14t zOifLpy}cbHBYz{fzP?VY?a>?{X#ucw-#$4x!Q|v5%FD|UjYc6!61KOu@#V`GjE;`J zsd$&mg^i63)YQ~KtyUv9Hy4M8hp^l2C@y}mT(k-y{(Tex$v*%D@7v*U7=)l0hz?+Dlo}R|+>?}%4OMjtKsi4(rp;oJ*(P(gfevXNW z3FPPJC%Wi_5SPgTJjgMJ!vO%ey1K&7&JK=`k5OA&i><9K7z_r4!(oh$j-tD}TbB6Q z*;$N_kE5WV02db*FquqPTU&$CXoSgRLS9}TR4Nr*F4x1<5ke%Ujy`d+tgf!Iv$K;{ ztChXIy?^w2y^KbqB+1RqO&SaamXwsxU@$Nc2)ug21_A*V78cTIG_t6uh?|?6B*|zr zO0U<;o}L~yH#gH}vvFl*CD~n{7{HIjp7HT_*r_-6%c5iQw{r&x^%W87R>FMdS0%EZk&1N$JP@zz~D3t<%02K-a0nltVGZu?I z>+_VRlmTSQ`uckODOxO+`0r*VkV?hvHQz z)qg6N35|`7@cDcYLcr(qVPRnbmzS3)D=Wi&p&*H)qa*0`dbGB-qM@MyB+<~&0I%2k z>Ix?AOOc!a78VxJ-rf!XsI06+eSJL=D_qh-3BTWu-Q8b%v-$aXw6(Q;Yygo+1Uj7# zH#awEX=#B%p-5{Vi^bsac%V|L5DW&PR)4Ey1(0+1{ciyOyk-!!T8--JYHV$7;pF5b zBOi@MgQ}`3S>o?B<30e7oRLf>69Rz%j*pKsvX>+YCX-3-4#bmoEAbLSp%8RB9d2)L zGqTUg$w4p}gjTDSl|ISaY29lF(`vPFI-MEYJDpBh;!|oRX_0dn85M@MqS_hodbmop#U z6Y<0Xqex@e^&4sL5-C>4&wH(M_a=7lBLDUQ!oP`M>}IbPKgH$lr@CIxk|j%)ET4w| Y0JQ%t(YA;;H~;_u07*qoM6N<$f^8Z&l>h($ From 27007c258a7b83b8fb89bea753c9b4d767686ef3 Mon Sep 17 00:00:00 2001 From: Dominic Clark Date: Fri, 26 Jan 2018 15:48:46 +0000 Subject: [PATCH 14/31] Fix command line rendering with VSTs (#4093) Fix command line rendering with VSTs --- plugins/VstEffect/VstEffect.cpp | 14 ++-- plugins/VstEffect/VstEffectControlDialog.cpp | 5 +- plugins/VstEffect/VstEffectControls.cpp | 61 +++++++--------- plugins/VstEffect/VstEffectControls.h | 3 +- plugins/vestige/vestige.cpp | 75 ++++++++------------ plugins/vestige/vestige.h | 2 +- plugins/vst_base/RemoteVstPlugin.cpp | 64 +++++++++-------- plugins/vst_base/VstPlugin.cpp | 6 +- 8 files changed, 110 insertions(+), 120 deletions(-) diff --git a/plugins/VstEffect/VstEffect.cpp b/plugins/VstEffect/VstEffect.cpp index 178aa0456..ea0241a5a 100644 --- a/plugins/VstEffect/VstEffect.cpp +++ b/plugins/VstEffect/VstEffect.cpp @@ -25,6 +25,8 @@ #include #include "VstEffect.h" + +#include "GuiApplication.h" #include "Song.h" #include "TextFloat.h" #include "VstSubPluginFeatures.h" @@ -122,10 +124,14 @@ bool VstEffect::processAudioBuffer( sampleFrame * _buf, const fpp_t _frames ) void VstEffect::openPlugin( const QString & _plugin ) { - TextFloat * tf = TextFloat::displayMessage( - VstPlugin::tr( "Loading plugin" ), - VstPlugin::tr( "Please wait while loading VST plugin..." ), - PLUGIN_NAME::getIconPixmap( "logo", 24, 24 ), 0 ); + TextFloat * tf = NULL; + if( gui ) + { + tf = TextFloat::displayMessage( + VstPlugin::tr( "Loading plugin" ), + VstPlugin::tr( "Please wait while loading VST plugin..." ), + PLUGIN_NAME::getIconPixmap( "logo", 24, 24 ), 0 ); + } QMutexLocker ml( &m_pluginMutex ); Q_UNUSED( ml ); m_plugin = QSharedPointer(new VstPlugin( _plugin )); diff --git a/plugins/VstEffect/VstEffectControlDialog.cpp b/plugins/VstEffect/VstEffectControlDialog.cpp index 021fae490..34ad097c9 100644 --- a/plugins/VstEffect/VstEffectControlDialog.cpp +++ b/plugins/VstEffect/VstEffectControlDialog.cpp @@ -192,7 +192,10 @@ VstEffectControlDialog::VstEffectControlDialog( VstEffectControls * _ctl ) : _ctl->m_selPresetButton->setWhatsThis( tr( "Click here to select presets that are currently loaded in VST." ) ); - _ctl->m_selPresetButton->setMenu(_ctl->menu); + QMenu * menu = new QMenu; + connect( menu, SIGNAL( aboutToShow() ), _ctl, SLOT( updateMenu() ) ); + + _ctl->m_selPresetButton->setMenu(menu); _ctl->m_selPresetButton->setMinimumWidth( 16 ); _ctl->m_selPresetButton->setMaximumWidth( 16 ); diff --git a/plugins/VstEffect/VstEffectControls.cpp b/plugins/VstEffect/VstEffectControls.cpp index ff2379439..92688545b 100644 --- a/plugins/VstEffect/VstEffectControls.cpp +++ b/plugins/VstEffect/VstEffectControls.cpp @@ -39,13 +39,10 @@ VstEffectControls::VstEffectControls( VstEffect * _eff ) : m_effect( _eff ), m_subWindow( NULL ), knobFModel( NULL ), - vstKnobs( NULL ), ctrHandle( NULL ), lastPosInMenu (0) // m_presetLabel ( NULL ) { - menu = new QMenu; - connect( menu, SIGNAL( aboutToShow() ), this, SLOT( updateMenu() ) ); } @@ -72,19 +69,13 @@ void VstEffectControls::loadSettings( const QDomElement & _this ) const QMap & dump = m_effect->m_plugin->parameterDump(); paramCount = dump.size(); char paramStr[35]; - vstKnobs = new Knob *[ paramCount ]; knobFModel = new FloatModel *[ paramCount ]; QStringList s_dumpValues; - QWidget * widget = new QWidget(); for( int i = 0; i < paramCount; i++ ) { sprintf( paramStr, "param%d", i ); s_dumpValues = dump[ paramStr ].split( ":" ); - vstKnobs[i] = new Knob( knobBright_26, widget, s_dumpValues.at( 1 ) ); - vstKnobs[i]->setHintText( s_dumpValues.at( 1 ) + ":", "" ); - vstKnobs[i]->setLabel( s_dumpValues.at( 1 ).left( 15 ) ); - knobFModel[i] = new FloatModel( 0.0f, 0.0f, 1.0f, 0.01f, this, QString::number(i) ); knobFModel[i]->loadSettings( _this, paramStr ); @@ -96,8 +87,6 @@ void VstEffectControls::loadSettings( const QDomElement & _this ) } connect( knobFModel[i], SIGNAL( dataChanged() ), this, SLOT( setParameter() ) ); - - vstKnobs[i]->setModel( knobFModel[i] ); } } @@ -358,37 +347,35 @@ manageVSTEffectView::manageVSTEffectView( VstEffect * _eff, VstEffectControls * const QMap & dump = m_effect->m_plugin->parameterDump(); m_vi->paramCount = dump.size(); - bool isVstKnobs = true; + vstKnobs = new Knob *[ m_vi->paramCount ]; - - if (m_vi->vstKnobs == NULL) { - m_vi->vstKnobs = new Knob *[ m_vi->paramCount ]; - isVstKnobs = false; - } + bool hasKnobModel = true; if (m_vi->knobFModel == NULL) { m_vi->knobFModel = new FloatModel *[ m_vi->paramCount ]; + hasKnobModel = false; } char paramStr[35]; QStringList s_dumpValues; - if (isVstKnobs == false) { - for( int i = 0; i < m_vi->paramCount; i++ ) + for( int i = 0; i < m_vi->paramCount; i++ ) + { + sprintf( paramStr, "param%d", i); + s_dumpValues = dump[ paramStr ].split( ":" ); + + vstKnobs[ i ] = new Knob( knobBright_26, widget, s_dumpValues.at( 1 ) ); + vstKnobs[ i ]->setHintText( s_dumpValues.at( 1 ) + ":", "" ); + vstKnobs[ i ]->setLabel( s_dumpValues.at( 1 ).left( 15 ) ); + + if( !hasKnobModel ) { - sprintf( paramStr, "param%d", i); - s_dumpValues = dump[ paramStr ].split( ":" ); - - m_vi->vstKnobs[ i ] = new Knob( knobBright_26, widget, s_dumpValues.at( 1 ) ); - m_vi->vstKnobs[ i ]->setHintText( s_dumpValues.at( 1 ) + ":", "" ); - m_vi->vstKnobs[ i ]->setLabel( s_dumpValues.at( 1 ).left( 15 ) ); - sprintf( paramStr, "%d", i); m_vi->knobFModel[ i ] = new FloatModel( ( s_dumpValues.at( 2 ) ).toFloat(), 0.0f, 1.0f, 0.01f, _eff, tr( paramStr ) ); - connect( m_vi->knobFModel[ i ], SIGNAL( dataChanged() ), this, - SLOT( setParameter() ) ); - m_vi->vstKnobs[ i ] ->setModel( m_vi->knobFModel[ i ] ); } + connect( m_vi->knobFModel[ i ], SIGNAL( dataChanged() ), this, + SLOT( setParameter() ) ); + vstKnobs[ i ] ->setModel( m_vi->knobFModel[ i ] ); } int i = 0; @@ -398,7 +385,7 @@ manageVSTEffectView::manageVSTEffectView( VstEffect * _eff, VstEffectControls * { if( i < m_vi->paramCount ) { - l->addWidget( m_vi->vstKnobs[i], lrow, lcolumn, Qt::AlignCenter ); + l->addWidget( vstKnobs[i], lrow, lcolumn, Qt::AlignCenter ); } i++; } @@ -466,12 +453,12 @@ void manageVSTEffectView::displayAutomatedOnly( void ) if( !( m_vi2->knobFModel[ i ]->isAutomated() || m_vi2->knobFModel[ i ]->controllerConnection() ) ) { - if( m_vi2->vstKnobs[ i ]->isVisible() == true && isAuto ) + if( vstKnobs[ i ]->isVisible() == true && isAuto ) { - m_vi2->vstKnobs[ i ]->hide(); + vstKnobs[ i ]->hide(); m_displayAutomatedOnly->setText( "All" ); } else { - m_vi2->vstKnobs[ i ]->show(); + vstKnobs[ i ]->show(); m_displayAutomatedOnly->setText( "Automated" ); } } @@ -502,14 +489,14 @@ manageVSTEffectView::~manageVSTEffectView() for( int i = 0; i < m_vi2->paramCount; i++ ) { delete m_vi2->knobFModel[ i ]; - delete m_vi2->vstKnobs[ i ]; + delete vstKnobs[ i ]; } } - if( m_vi2->vstKnobs != NULL ) + if( vstKnobs != NULL ) { - delete [] m_vi2->vstKnobs; - m_vi2->vstKnobs = NULL; + delete [] vstKnobs; + vstKnobs = NULL; } if( m_vi2->knobFModel != NULL ) diff --git a/plugins/VstEffect/VstEffectControls.h b/plugins/VstEffect/VstEffectControls.h index 12e30f08f..7328f2f42 100644 --- a/plugins/VstEffect/VstEffectControls.h +++ b/plugins/VstEffect/VstEffectControls.h @@ -82,12 +82,10 @@ private: VstEffect * m_effect; QPushButton * m_selPresetButton; - QMenu *menu; QMdiSubWindow * m_subWindow; QScrollArea * m_scrollArea; FloatModel ** knobFModel; - Knob ** vstKnobs; int paramCount; QObject * ctrHandle; @@ -133,6 +131,7 @@ private: QPushButton * m_syncButton; QPushButton * m_displayAutomatedOnly; QPushButton * m_closeButton; + Knob ** vstKnobs; } ; diff --git a/plugins/vestige/vestige.cpp b/plugins/vestige/vestige.cpp index 22cc804f2..db9cf5bba 100644 --- a/plugins/vestige/vestige.cpp +++ b/plugins/vestige/vestige.cpp @@ -83,7 +83,6 @@ vestigeInstrument::vestigeInstrument( InstrumentTrack * _instrument_track ) : m_pluginMutex(), m_subWindow( NULL ), m_scrollArea( NULL ), - vstKnobs( NULL ), knobFModel( NULL ), p_subWindow( NULL ) { @@ -131,19 +130,13 @@ void vestigeInstrument::loadSettings( const QDomElement & _this ) const QMap & dump = m_plugin->parameterDump(); paramCount = dump.size(); char paramStr[35]; - vstKnobs = new Knob *[ paramCount ]; knobFModel = new FloatModel *[ paramCount ]; QStringList s_dumpValues; - QWidget * widget = new QWidget(); for( int i = 0; i < paramCount; i++ ) { sprintf( paramStr, "param%d", i ); s_dumpValues = dump[ paramStr ].split( ":" ); - vstKnobs[i] = new Knob( knobBright_26, widget, s_dumpValues.at( 1 ) ); - vstKnobs[i]->setHintText( s_dumpValues.at( 1 ) + ":", "" ); - vstKnobs[i]->setLabel( s_dumpValues.at( 1 ).left( 15 ) ); - knobFModel[i] = new FloatModel( 0.0f, 0.0f, 1.0f, 0.01f, this, QString::number(i) ); knobFModel[i]->loadSettings( _this, paramStr ); @@ -154,8 +147,6 @@ void vestigeInstrument::loadSettings( const QDomElement & _this ) } connect( knobFModel[i], SIGNAL( dataChanged() ), this, SLOT( setParameter() ) ); - - vstKnobs[i]->setModel( knobFModel[i] ); } } m_pluginMutex.unlock(); @@ -266,10 +257,14 @@ void vestigeInstrument::loadFile( const QString & _file ) closePlugin(); } m_pluginDLL = SampleBuffer::tryToMakeRelative( _file ); - TextFloat * tf = TextFloat::displayMessage( - tr( "Loading plugin" ), - tr( "Please wait while loading VST-plugin..." ), - PLUGIN_NAME::getIconPixmap( "logo", 24, 24 ), 0 ); + TextFloat * tf = NULL; + if( gui ) + { + tf = TextFloat::displayMessage( + tr( "Loading plugin" ), + tr( "Please wait while loading VST-plugin..." ), + PLUGIN_NAME::getIconPixmap( "logo", 24, 24 ), 0 ); + } m_pluginMutex.lock(); m_plugin = new VstPlugin( m_pluginDLL ); @@ -347,16 +342,9 @@ void vestigeInstrument::closePlugin( void ) for( int i = 0; i < paramCount; i++ ) { delete knobFModel[ i ]; - delete vstKnobs[ i ]; } } - if( vstKnobs != NULL ) - { - delete [] vstKnobs; - vstKnobs = NULL; - } - if( knobFModel != NULL ) { delete [] knobFModel; @@ -920,35 +908,34 @@ manageVestigeInstrumentView::manageVestigeInstrumentView( Instrument * _instrume const QMap & dump = m_vi->m_plugin->parameterDump(); m_vi->paramCount = dump.size(); - bool isVstKnobs = true; + vstKnobs = new Knob *[ m_vi->paramCount ]; - if (m_vi->vstKnobs == NULL) { - m_vi->vstKnobs = new Knob *[ m_vi->paramCount ]; - isVstKnobs = false; - } + bool hasKnobModel = true; if (m_vi->knobFModel == NULL) { m_vi->knobFModel = new FloatModel *[ m_vi->paramCount ]; + hasKnobModel = false; } char paramStr[35]; QStringList s_dumpValues; - if (isVstKnobs == false) { - for( int i = 0; i < m_vi->paramCount; i++ ) + for( int i = 0; i < m_vi->paramCount; i++ ) + { + sprintf( paramStr, "param%d", i); + s_dumpValues = dump[ paramStr ].split( ":" ); + + vstKnobs[ i ] = new Knob( knobBright_26, this, s_dumpValues.at( 1 ) ); + vstKnobs[ i ]->setHintText( s_dumpValues.at( 1 ) + ":", "" ); + vstKnobs[ i ]->setLabel( s_dumpValues.at( 1 ).left( 15 ) ); + + if( !hasKnobModel ) { - sprintf( paramStr, "param%d", i); - s_dumpValues = dump[ paramStr ].split( ":" ); - - m_vi->vstKnobs[ i ] = new Knob( knobBright_26, this, s_dumpValues.at( 1 ) ); - m_vi->vstKnobs[ i ]->setHintText( s_dumpValues.at( 1 ) + ":", "" ); - m_vi->vstKnobs[ i ]->setLabel( s_dumpValues.at( 1 ).left( 15 ) ); - sprintf( paramStr, "%d", i); m_vi->knobFModel[ i ] = new FloatModel( (s_dumpValues.at( 2 )).toFloat(), 0.0f, 1.0f, 0.01f, castModel(), tr( paramStr ) ); - connect( m_vi->knobFModel[i], SIGNAL( dataChanged() ), this, SLOT( setParameter() ) ); - m_vi->vstKnobs[i] ->setModel( m_vi->knobFModel[i] ); } + connect( m_vi->knobFModel[i], SIGNAL( dataChanged() ), this, SLOT( setParameter() ) ); + vstKnobs[i] ->setModel( m_vi->knobFModel[i] ); } int i = 0; @@ -958,7 +945,7 @@ manageVestigeInstrumentView::manageVestigeInstrumentView( Instrument * _instrume { if( i < m_vi->paramCount ) { - l->addWidget( m_vi->vstKnobs[i], lrow, lcolumn, Qt::AlignCenter ); + l->addWidget( vstKnobs[i], lrow, lcolumn, Qt::AlignCenter ); } i++; } @@ -1024,12 +1011,12 @@ void manageVestigeInstrumentView::displayAutomatedOnly( void ) if( !( m_vi->knobFModel[ i ]->isAutomated() || m_vi->knobFModel[ i ]->controllerConnection() ) ) { - if( m_vi->vstKnobs[ i ]->isVisible() == true && isAuto ) + if( vstKnobs[ i ]->isVisible() == true && isAuto ) { - m_vi->vstKnobs[ i ]->hide(); + vstKnobs[ i ]->hide(); m_displayAutomatedOnly->setText( "All" ); } else { - m_vi->vstKnobs[ i ]->show(); + vstKnobs[ i ]->show(); m_displayAutomatedOnly->setText( "Automated" ); } } @@ -1044,13 +1031,13 @@ manageVestigeInstrumentView::~manageVestigeInstrumentView() for( int i = 0; i < m_vi->paramCount; i++ ) { delete m_vi->knobFModel[ i ]; - delete m_vi->vstKnobs[ i ]; + delete vstKnobs[ i ]; } } - if (m_vi->vstKnobs != NULL) { - delete []m_vi->vstKnobs; - m_vi->vstKnobs = NULL; + if (vstKnobs != NULL) { + delete []vstKnobs; + vstKnobs = NULL; } if( m_vi->knobFModel != NULL ) diff --git a/plugins/vestige/vestige.h b/plugins/vestige/vestige.h index df076bbb9..2c007efc0 100644 --- a/plugins/vestige/vestige.h +++ b/plugins/vestige/vestige.h @@ -87,7 +87,6 @@ private: QString m_pluginDLL; QMdiSubWindow * m_subWindow; QScrollArea * m_scrollArea; - Knob ** vstKnobs; FloatModel ** knobFModel; QObject * p_subWindow; int paramCount; @@ -130,6 +129,7 @@ private: QPushButton * m_syncButton; QPushButton * m_displayAutomatedOnly; QPushButton * m_closeButton; + Knob ** vstKnobs; } ; diff --git a/plugins/vst_base/RemoteVstPlugin.cpp b/plugins/vst_base/RemoteVstPlugin.cpp index 1c403576e..04ff97731 100644 --- a/plugins/vst_base/RemoteVstPlugin.cpp +++ b/plugins/vst_base/RemoteVstPlugin.cpp @@ -110,6 +110,7 @@ static VstHostLanguages hlang = LanguageEnglish; static bool EMBED = false; static bool EMBED_X11 = false; static bool EMBED_WIN32 = false; +static bool HEADLESS = false; class RemoteVstPlugin; @@ -335,7 +336,6 @@ private: int m_windowHeight; bool m_initialized; - bool m_registeredWindowClass; bool m_processing; @@ -387,7 +387,6 @@ RemoteVstPlugin::RemoteVstPlugin( const char * socketPath ) : m_windowWidth( 0 ), m_windowHeight( 0 ), m_initialized( false ), - m_registeredWindowClass( false ), m_processing( false ), m_messageList(), m_shouldGiveIdle( false ), @@ -689,7 +688,7 @@ static void close_check( int fd ) void RemoteVstPlugin::initEditor() { - if( m_window || !( m_plugin->flags & effFlagsHasEditor ) ) + if( HEADLESS || m_window || !( m_plugin->flags & effFlagsHasEditor ) ) { return; } @@ -703,27 +702,6 @@ void RemoteVstPlugin::initEditor() } - if( !m_registeredWindowClass ) - { - WNDCLASS wc; - wc.style = CS_HREDRAW | CS_VREDRAW; - wc.lpfnWndProc = DefWindowProc; - wc.cbClsExtra = 0; - wc.cbWndExtra = 0; - wc.hInstance = hInst; - wc.hIcon = LoadIcon( NULL, IDI_APPLICATION ); - wc.hCursor = LoadCursor( NULL, IDC_ARROW ); - wc.hbrBackground = NULL; - wc.lpszMenuName = NULL; - wc.lpszClassName = "LVSL"; - - if( !RegisterClass( &wc ) ) - { - return; - } - m_registeredWindowClass = true; - } - DWORD dwStyle; if (EMBED) { dwStyle = WS_POPUP | WS_SYSMENU | WS_BORDER; @@ -2019,6 +1997,29 @@ int main( int _argc, char * * _argv ) } #endif + HMODULE hInst = GetModuleHandle( NULL ); + if( hInst == NULL ) + { + return -1; + } + + WNDCLASS wc; + wc.style = CS_HREDRAW | CS_VREDRAW; + wc.lpfnWndProc = DefWindowProc; + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + wc.hInstance = hInst; + wc.hIcon = LoadIcon( NULL, IDI_APPLICATION ); + wc.hCursor = LoadCursor( NULL, IDC_ARROW ); + wc.hbrBackground = NULL; + wc.lpszMenuName = NULL; + wc.lpszClassName = "LVSL"; + + if( !RegisterClass( &wc ) ) + { + return -1; + } + { #ifdef SYNC_WITH_SHM_FIFO int embedMethodIndex = 3; @@ -2030,27 +2031,32 @@ int main( int _argc, char * * _argv ) if ( embedMethod == "none" ) { cerr << "Starting detached." << endl; - EMBED = EMBED_X11 = EMBED_WIN32 = false; + EMBED = EMBED_X11 = EMBED_WIN32 = HEADLESS = false; } else if ( embedMethod == "win32" ) { cerr << "Starting using Win32-native embedding." << endl; - EMBED = EMBED_WIN32 = true; EMBED_X11= false; + EMBED = EMBED_WIN32 = true; EMBED_X11 = HEADLESS = false; } else if ( embedMethod == "qt" ) { cerr << "Starting using Qt-native embedding." << endl; - EMBED = true; EMBED_X11 = EMBED_WIN32 = false; + EMBED = true; EMBED_X11 = EMBED_WIN32 = HEADLESS = false; } else if ( embedMethod == "xembed" ) { cerr << "Starting using X11Embed protocol." << endl; - EMBED = EMBED_X11 = true; EMBED_WIN32 = false; + EMBED = EMBED_X11 = true; EMBED_WIN32 = HEADLESS = false; + } + else if ( embedMethod == "headless" ) + { + cerr << "Starting without UI." << endl; + HEADLESS = true; EMBED = EMBED_X11 = EMBED_WIN32 = false; } else { cerr << "Unknown embed method " << embedMethod << ". Starting detached instead." << endl; - EMBED = EMBED_X11 = EMBED_WIN32 = false; + EMBED = EMBED_X11 = EMBED_WIN32 = HEADLESS = false; } } diff --git a/plugins/vst_base/VstPlugin.cpp b/plugins/vst_base/VstPlugin.cpp index a06663a7e..5c7504dd1 100644 --- a/plugins/vst_base/VstPlugin.cpp +++ b/plugins/vst_base/VstPlugin.cpp @@ -88,7 +88,9 @@ public: VstPlugin::VstPlugin( const QString & _plugin ) : m_plugin( _plugin ), m_pluginWindowID( 0 ), - m_embedMethod( ConfigManager::inst()->vstEmbedMethod() ), + m_embedMethod( gui + ? ConfigManager::inst()->vstEmbedMethod() + : "headless" ), m_badDllFormat( false ), m_version( 0 ), m_currentProgram() @@ -575,7 +577,7 @@ void VstPlugin::showUI() { RemotePlugin::showUI(); } - else + else if ( m_embedMethod != "headless" ) { if (! pluginWidget()) { createUI( NULL, false ); From c3b47678368d1a617c3d58b062901ee4b732c4c9 Mon Sep 17 00:00:00 2001 From: Oskar Wallgren Date: Thu, 1 Feb 2018 19:45:05 +0100 Subject: [PATCH 15/31] Add journaling checkpoint to recording notes (#4144) --- src/gui/editors/PianoRoll.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/editors/PianoRoll.cpp b/src/gui/editors/PianoRoll.cpp index d2ce4b94e..ac9b0a891 100644 --- a/src/gui/editors/PianoRoll.cpp +++ b/src/gui/editors/PianoRoll.cpp @@ -3409,6 +3409,7 @@ void PianoRoll::record() return; } + m_pattern->addJournalCheckPoint(); m_recording = true; Engine::getSong()->playPattern( m_pattern, false ); @@ -3428,6 +3429,7 @@ void PianoRoll::recordAccompany() return; } + m_pattern->addJournalCheckPoint(); m_recording = true; if( m_pattern->getTrack()->trackContainer() == Engine::getSong() ) From a39ea2b1630e516a718ae5c4048ddc29f19e8188 Mon Sep 17 00:00:00 2001 From: noahb01 Date: Thu, 8 Feb 2018 23:02:59 -0500 Subject: [PATCH 16/31] Reset window title after render Closes #4160 --- src/gui/ExportProjectDialog.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/ExportProjectDialog.cpp b/src/gui/ExportProjectDialog.cpp index 0bd815010..1c821ee5e 100644 --- a/src/gui/ExportProjectDialog.cpp +++ b/src/gui/ExportProjectDialog.cpp @@ -115,6 +115,8 @@ void ExportProjectDialog::accept() m_renderManager = NULL; QDialog::accept(); + + gui->mainWindow()->resetWindowTitle(); } From 0f0b08b852196d14683e29e3d7be3a62d1f2539b Mon Sep 17 00:00:00 2001 From: Hyunin Song Date: Sat, 17 Feb 2018 13:01:19 +0900 Subject: [PATCH 17/31] Travis: replace homebrew/versions/qt55 with qt5 --- .travis/osx..install.sh | 2 +- .travis/osx..script.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis/osx..install.sh b/.travis/osx..install.sh index 7af8bd374..3fb1df701 100644 --- a/.travis/osx..install.sh +++ b/.travis/osx..install.sh @@ -3,7 +3,7 @@ PACKAGES="cmake pkgconfig fftw libogg libvorbis lame libsndfile libsamplerate jack sdl libgig libsoundio stk portaudio node fltk" if [ $QT5 ]; then - PACKAGES="$PACKAGES homebrew/versions/qt55" + PACKAGES="$PACKAGES qt5" else PACKAGES="$PACKAGES cartr/qt4/qt" fi diff --git a/.travis/osx..script.sh b/.travis/osx..script.sh index 30c938748..176bc2ffa 100644 --- a/.travis/osx..script.sh +++ b/.travis/osx..script.sh @@ -2,7 +2,7 @@ if [ $QT5 ]; then # Workaround; No FindQt5.cmake module exists - export CMAKE_PREFIX_PATH="$(brew --prefix qt55)" + export CMAKE_PREFIX_PATH="$(brew --prefix qt5)" fi cmake $CMAKE_FLAGS -DUSE_WERROR=OFF .. From 3980e546670fb4303e8b3c8da7821f22c8a47332 Mon Sep 17 00:00:00 2001 From: Tres Finocchiaro Date: Fri, 23 Feb 2018 13:20:35 -0500 Subject: [PATCH 18/31] Better wine prefix detection (#4176) Closes #4108 --- cmake/modules/FindWine.cmake | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/cmake/modules/FindWine.cmake b/cmake/modules/FindWine.cmake index 47850dcd1..458df0653 100644 --- a/cmake/modules/FindWine.cmake +++ b/cmake/modules/FindWine.cmake @@ -18,23 +18,23 @@ set(WINE_LIBRARIES ${WINE_LIBRARY} ) # Handle wine linking problems EXEC_PROGRAM(${WINE_CXX} ARGS "-v -m32 /dev/zero" OUTPUT_VARIABLE WINEBUILD_OUTPUT) +STRING(REPLACE " " ";" WINEBUILD_FLAGS "${WINEBUILD_OUTPUT}") -# Debian systems -IF("${WINEBUILD_OUTPUT}" MATCHES ".*x86_64-linux-gnu/wine/libwinecrt0.a.*") - SET(WINE_LIBRARY_FIX "/usr/lib/i386-linux-gnu/" ) -# Fedora systems -ELSEIF("${WINEBUILD_OUTPUT}" MATCHES "/usr/lib/lib64/wine/libwinecrt0.a.*") - SET(WINE_LIBRARY_FIX "/usr/lib/i386/") -# Wine stable -ELSEIF("${WINEBUILD_OUTPUT}" MATCHES "/opt/wine-stable/lib64/wine/libwinecrt0.a.*") - SET(WINE_LIBRARY_FIX "/opt/wine-stable/lib/") -# Wine development -ELSEIF("${WINEBUILD_OUTPUT}" MATCHES "/opt/wine-devel/lib64/wine/libwinecrt0.a.*") - SET(WINE_LIBRARY_FIX "/opt/wine-devel/lib/") -# Wine staging -ELSEIF("${WINEBUILD_OUTPUT}" MATCHES "/opt/wine-staging/lib64/wine/libwinecrt0.a.*") - SET(WINE_LIBRARY_FIX "/opt/wine-staging/lib/") -ENDIF() +FOREACH(FLAG ${WINEBUILD_FLAGS}) + IF("${FLAG}" MATCHES "libwinecrt0.a.*") + # Debian systems + STRING(REPLACE "/lib/x86_64-" "/lib/i386-" FLAG "${FLAG}") + # Fedora systems + STRING(REPLACE "/lib/lib64" "/lib/i386" FLAG "${FLAG}") + # Gentoo systems + STRING(REPLACE "/lib/wine-" "/lib32/wine-" FLAG "${FLAG}") + # WineHQ (/opt/wine-stable, /opt/wine-devel, /opt/wine-staging) + STRING(REPLACE "/lib64/wine/" "/lib/wine/" FLAG "${FLAG}") + + STRING(REGEX REPLACE "/wine/libwinecrt0.a.*" "" WINE_LIBRARY_FIX "${FLAG}") + SET(WINE_LIBRARY_FIX "${WINE_LIBRARY_FIX}/") + ENDIF() +ENDFOREACH() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Wine DEFAULT_MSG WINE_LIBRARIES WINE_INCLUDE_DIRS) From edc8f43d5b3b4975f4dc998e4eb8d2c30dd8b7b7 Mon Sep 17 00:00:00 2001 From: tresf Date: Sat, 24 Feb 2018 02:01:45 -0500 Subject: [PATCH 19/31] Use bundled jack if missing Closes #4094 --- cmake/linux/package_linux.sh.in | 6 ++---- src/core/CMakeLists.txt | 9 --------- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/cmake/linux/package_linux.sh.in b/cmake/linux/package_linux.sh.in index 7f500e613..19c9823de 100644 --- a/cmake/linux/package_linux.sh.in +++ b/cmake/linux/package_linux.sh.in @@ -181,12 +181,10 @@ rm -f "${APPDIR}/usr/lib/libwine.so.1" # Use system-provided carla rm -f "${APPDIR}usr/lib/"libcarla*.so -# Remove problematic jack library, replace with weakjack +# Move jack out of LD_LIBRARY_PATH if [ -e "${APPDIR}/usr/lib/libjack.so.0" ]; then - rm -f "${APPDIR}/usr/lib/libjack.so.0" mkdir -p "${APPDIR}usr/lib/lmms/optional/" - cp "@CMAKE_BINARY_DIR@/optional/weakjack.so" "${APPDIR}usr/lib/lmms/optional/weakjack.so" - ln -sr "${APPDIR}usr/lib/lmms/optional/weakjack.so" "${APPDIR}usr/lib/lmms/optional/libjack.so.0" + mv "${APPDIR}/usr/lib/libjack.so.0" "${APPDIR}usr/lib/lmms/optional/" fi # Create AppImage diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 30566e5ae..c8840997d 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -1,14 +1,5 @@ IF(LMMS_HAVE_WEAKJACK) set(WEAKJACK core/audio/AudioWeakJack.c) - - # Build libjack.so.0 stub as weakjack.so for AppImages - IF(LMMS_BUILD_LINUX) - ADD_LIBRARY(weakjack MODULE ../../src/core/audio/AudioWeakJack.c) - INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/include") - # We can't predict an AppImage build, so stash the build artifact for later - INSTALL(TARGETS weakjack LIBRARY DESTINATION "${CMAKE_BINARY_DIR}/optional") - SET_TARGET_PROPERTIES(weakjack PROPERTIES PREFIX "" SUFFIX ".so") - ENDIF() ENDIF() set(LMMS_SRCS From fc9c3eadefeec9f22ecdd0b43af1718b3b40a3e3 Mon Sep 17 00:00:00 2001 From: tresf Date: Sat, 24 Feb 2018 02:49:08 -0500 Subject: [PATCH 20/31] Fix the AppImages --- cmake/linux/package_linux.sh.in | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/cmake/linux/package_linux.sh.in b/cmake/linux/package_linux.sh.in index 19c9823de..60442aff0 100644 --- a/cmake/linux/package_linux.sh.in +++ b/cmake/linux/package_linux.sh.in @@ -8,9 +8,7 @@ set -e -USERBIN="$HOME/bin" -LINUXDEPLOYQT="$USERBIN/linuxdeployqt" -APPIMAGETOOL="$USERBIN/appimagetool" +LINUXDEPLOYQT="@CMAKE_BINARY_DIR@/linuxdeployqt" VERBOSITY=2 # 3=debug LOGFILE="@CMAKE_BINARY_DIR@/appimage.log" APPDIR="@CMAKE_BINARY_DIR@/@PROJECT_NAME_UCASE@.AppDir/" @@ -71,12 +69,8 @@ elif ! find "$LINUXDEPLOYQT" -mtime -$DAYSOLD 2>/dev/null|grep -q "." > /dev/nul touch "$LINUXDEPLOYQT" success "Downloaded $LINUXDEPLOYQT" "$LINUXDEPLOYQT" --appimage-extract > /dev/null 2>&1 - mv "squashfs-root/usr/bin/appimagetool" "$APPIMAGETOOL" + APPIMAGETOOL="squashfs-root/usr/bin/appimagetool" success "Extracted $APPIMAGETOOL" - mv "squashfs-root/usr/bin/mksquashfs" "$USERBIN/mksquashfs" - success "Extracted $USERBIN/mksquashfs" - rm -rf "squashfs-root/" - else skipped "$LINUXDEPLOYQT is less than $DAYSOLD days old" fi From 33d2b71b013e6f08b94c1567e0ab8fb9c0fb94a6 Mon Sep 17 00:00:00 2001 From: Oskar Wallgren Date: Tue, 27 Feb 2018 15:59:15 +0100 Subject: [PATCH 21/31] Piano Roll - Erase on mouse button drag in erase mode (#4150) --- src/gui/editors/PianoRoll.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/gui/editors/PianoRoll.cpp b/src/gui/editors/PianoRoll.cpp index ac9b0a891..c2ab9feff 100644 --- a/src/gui/editors/PianoRoll.cpp +++ b/src/gui/editors/PianoRoll.cpp @@ -2059,7 +2059,8 @@ void PianoRoll::mouseMoveEvent( QMouseEvent * me ) pauseTestNotes( false ); } } - else if( ( edit_note || m_action == ActionChangeNoteProperty ) && + else if( m_editMode != ModeErase && + ( edit_note || m_action == ActionChangeNoteProperty ) && ( me->buttons() & Qt::LeftButton || me->buttons() & Qt::MiddleButton || ( me->buttons() & Qt::RightButton && me->modifiers() & Qt::ShiftModifier ) ) ) { @@ -2254,9 +2255,11 @@ void PianoRoll::mouseMoveEvent( QMouseEvent * me ) --m_selectedKeys; } } - else if( m_editMode == ModeDraw && me->buttons() & Qt::RightButton ) + else if( ( m_editMode == ModeDraw && me->buttons() & Qt::RightButton ) + || ( m_editMode == ModeErase && me->buttons() ) ) { - // holding down right-click to delete notes + // holding down right-click to delete notes or holding down + // any key if in erase mode // get tick in which the user clicked int pos_ticks = x * MidiTime::ticksPerTact() / m_ppt + From 31775752b42eeb76c7a184aab17872c5c4bc9737 Mon Sep 17 00:00:00 2001 From: Dominic Clark Date: Tue, 27 Feb 2018 15:08:42 +0000 Subject: [PATCH 22/31] Fix rendering cancellation with VSTs (#4189) --- src/core/RenderManager.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/RenderManager.cpp b/src/core/RenderManager.cpp index 5fcc6a583..5cda794c3 100644 --- a/src/core/RenderManager.cpp +++ b/src/core/RenderManager.cpp @@ -52,6 +52,8 @@ RenderManager::~RenderManager() void RenderManager::abortProcessing() { if ( m_activeRenderer ) { + disconnect( m_activeRenderer, SIGNAL( finished() ), + this, SLOT( renderNextTrack() ) ); m_activeRenderer->abortProcessing(); } restoreMutedState(); From a8e874601169820b15107aae2396539f212205a2 Mon Sep 17 00:00:00 2001 From: tresf Date: Wed, 28 Feb 2018 21:32:50 -0500 Subject: [PATCH 23/31] Add support for .pat previews, drag+drop Closes #4202 --- src/gui/FileBrowser.cpp | 6 +++++- src/gui/TrackContainerView.cpp | 5 +++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/gui/FileBrowser.cpp b/src/gui/FileBrowser.cpp index a9c949c37..b661a9fb2 100644 --- a/src/gui/FileBrowser.cpp +++ b/src/gui/FileBrowser.cpp @@ -424,7 +424,7 @@ void FileBrowserTreeWidget::mousePressEvent(QMouseEvent * me ) m_previewPlayHandle = s; delete tf; } - else if( ( f->extension ()== "xiz" || f->extension() == "sf2" || f->extension() == "gig" ) && + else if( ( f->extension ()== "xiz" || f->extension() == "sf2" || f->extension() == "gig" || f->extension() == "pat" ) && ! pluginFactory->pluginSupportingExtension(f->extension()).isNull() ) { m_previewPlayHandle = new PresetPreviewPlayHandle( f->fullName(), f->handling() == FileItem::LoadByPlugin ); @@ -489,6 +489,10 @@ void FileBrowserTreeWidget::mouseMoveEvent( QMouseEvent * me ) new StringPairDrag( "soundfontfile", f->fullName(), embed::getIconPixmap( "soundfont_file" ), this ); break; + case FileItem::PatchFile: + new StringPairDrag( "patchfile", f->fullName(), + embed::getIconPixmap( "sample_file" ), this ); + break; case FileItem::VstPluginFile: new StringPairDrag( "vstpluginfile", f->fullName(), embed::getIconPixmap( "vst_plugin_file" ), this ); diff --git a/src/gui/TrackContainerView.cpp b/src/gui/TrackContainerView.cpp index 0f7d43d4c..4c7498ab0 100644 --- a/src/gui/TrackContainerView.cpp +++ b/src/gui/TrackContainerView.cpp @@ -340,7 +340,7 @@ void TrackContainerView::dragEnterEvent( QDragEnterEvent * _dee ) { StringPairDrag::processDragEnterEvent( _dee, QString( "presetfile,pluginpresetfile,samplefile,instrument," - "importedproject,soundfontfile,vstpluginfile,projectfile," + "importedproject,soundfontfile,patchfile,vstpluginfile,projectfile," "track_%1,track_%2" ). arg( Track::InstrumentTrack ). arg( Track::SampleTrack ) ); @@ -378,7 +378,8 @@ void TrackContainerView::dropEvent( QDropEvent * _de ) _de->accept(); } else if( type == "samplefile" || type == "pluginpresetfile" - || type == "soundfontfile" || type == "vstpluginfile") + || type == "soundfontfile" || type == "vstpluginfile" + || type == "patchfile" ) { InstrumentTrack * it = dynamic_cast( Track::create( Track::InstrumentTrack, From 063a5050267f7797f83f77d1b6eeccc0841de1d6 Mon Sep 17 00:00:00 2001 From: Oskar Wallgren Date: Thu, 1 Mar 2018 19:03:02 +0100 Subject: [PATCH 24/31] Turn journalling off when moving fader (#4147) --- src/gui/widgets/Fader.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/gui/widgets/Fader.cpp b/src/gui/widgets/Fader.cpp index 20a588220..afd2a1f50 100644 --- a/src/gui/widgets/Fader.cpp +++ b/src/gui/widgets/Fader.cpp @@ -188,6 +188,13 @@ void Fader::mousePressEvent( QMouseEvent* mouseEvent ) if( mouseEvent->button() == Qt::LeftButton && ! ( mouseEvent->modifiers() & Qt::ControlModifier ) ) { + AutomatableModel *thisModel = model(); + if( thisModel ) + { + thisModel->addJournalCheckPoint(); + thisModel->saveJournallingState( false ); + } + if( mouseEvent->y() >= knobPosY() - ( *m_knob ).height() && mouseEvent->y() < knobPosY() ) { updateTextFloat(); @@ -245,8 +252,17 @@ void Fader::mouseDoubleClickEvent( QMouseEvent* mouseEvent ) -void Fader::mouseReleaseEvent( QMouseEvent * _me ) +void Fader::mouseReleaseEvent( QMouseEvent * mouseEvent ) { + if( mouseEvent && mouseEvent->button() == Qt::LeftButton ) + { + AutomatableModel *thisModel = model(); + if( thisModel ) + { + thisModel->restoreJournallingState(); + } + } + s_textFloat->hide(); } From 9f1c73bc123925940a17222c5675395d524718de Mon Sep 17 00:00:00 2001 From: Tres Finocchiaro Date: Thu, 1 Mar 2018 17:53:31 -0500 Subject: [PATCH 25/31] Fix theme after upgrade Closes #4199 --- src/core/ConfigManager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/ConfigManager.cpp b/src/core/ConfigManager.cpp index 985d5e08c..734ccb80e 100644 --- a/src/core/ConfigManager.cpp +++ b/src/core/ConfigManager.cpp @@ -553,6 +553,8 @@ void ConfigManager::loadConfigFile( const QString & configFile ) } #endif + upgrade(); + QStringList searchPaths; if(! qgetenv("LMMS_THEME_PATH").isNull()) searchPaths << qgetenv("LMMS_THEME_PATH"); @@ -564,8 +566,6 @@ void ConfigManager::loadConfigFile( const QString & configFile ) { createWorkingDir(); } - - upgrade(); } From 926b6542ae6804f346eb1a014ac16e71714b1e5f Mon Sep 17 00:00:00 2001 From: Hyunjin Song Date: Fri, 2 Mar 2018 13:28:56 +0900 Subject: [PATCH 26/31] Don't restore audio device during exporting (#4083) Fixes deadlock on multi-track export with SDL --- include/Mixer.h | 1 + include/ProjectRenderer.h | 1 - include/RenderManager.h | 1 + src/core/Mixer.cpp | 14 +++++++++++--- src/core/ProjectRenderer.cpp | 3 --- src/core/RenderManager.cpp | 6 ++++++ 6 files changed, 19 insertions(+), 7 deletions(-) diff --git a/include/Mixer.h b/include/Mixer.h index 1c3780b1b..499205892 100644 --- a/include/Mixer.h +++ b/include/Mixer.h @@ -175,6 +175,7 @@ public: void setAudioDevice( AudioDevice * _dev, const struct qualitySettings & _qs, bool _needs_fifo ); + void storeAudioDevice(); void restoreAudioDevice(); inline AudioDevice * audioDev() { diff --git a/include/ProjectRenderer.h b/include/ProjectRenderer.h index 543eb43c3..9a449447c 100644 --- a/include/ProjectRenderer.h +++ b/include/ProjectRenderer.h @@ -88,7 +88,6 @@ private: AudioFileDevice * m_fileDev; Mixer::qualitySettings m_qualitySettings; - Mixer::qualitySettings m_oldQualitySettings; volatile int m_progress; volatile bool m_abort; diff --git a/include/RenderManager.h b/include/RenderManager.h index e7e119b87..d4562ed67 100644 --- a/include/RenderManager.h +++ b/include/RenderManager.h @@ -65,6 +65,7 @@ private: void restoreMutedState(); const Mixer::qualitySettings m_qualitySettings; + const Mixer::qualitySettings m_oldQualitySettings; const OutputSettings m_outputSettings; ProjectRenderer::ExportFileFormats m_format; QString m_outputPath; diff --git a/src/core/Mixer.cpp b/src/core/Mixer.cpp index ed8d04a6c..830d7e6c8 100644 --- a/src/core/Mixer.cpp +++ b/src/core/Mixer.cpp @@ -579,8 +579,6 @@ void Mixer::setAudioDevice( AudioDevice * _dev ) { stopProcessing(); - m_oldAudioDev = m_audioDev; - if( _dev == NULL ) { printf( "param _dev == NULL in Mixer::setAudioDevice(...). " @@ -608,7 +606,6 @@ void Mixer::setAudioDevice( AudioDevice * _dev, stopProcessing(); m_qualitySettings = _qs; - m_oldAudioDev = m_audioDev; if( _dev == NULL ) { @@ -630,6 +627,17 @@ void Mixer::setAudioDevice( AudioDevice * _dev, +void Mixer::storeAudioDevice() +{ + if( !m_oldAudioDev ) + { + m_oldAudioDev = m_audioDev; + } +} + + + + void Mixer::restoreAudioDevice() { if( m_oldAudioDev != NULL ) diff --git a/src/core/ProjectRenderer.cpp b/src/core/ProjectRenderer.cpp index 56e9c01c0..3e3004db7 100644 --- a/src/core/ProjectRenderer.cpp +++ b/src/core/ProjectRenderer.cpp @@ -77,7 +77,6 @@ ProjectRenderer::ProjectRenderer( const Mixer::qualitySettings & qualitySettings QThread( Engine::mixer() ), m_fileDev( NULL ), m_qualitySettings( qualitySettings ), - m_oldQualitySettings( Engine::mixer()->currentQualitySettings() ), m_progress( 0 ), m_abort( false ) { @@ -103,8 +102,6 @@ ProjectRenderer::ProjectRenderer( const Mixer::qualitySettings & qualitySettings ProjectRenderer::~ProjectRenderer() { - Engine::mixer()->restoreAudioDevice(); // also deletes audio-dev - Engine::mixer()->changeQuality( m_oldQualitySettings ); } diff --git a/src/core/RenderManager.cpp b/src/core/RenderManager.cpp index 5cda794c3..e2058a136 100644 --- a/src/core/RenderManager.cpp +++ b/src/core/RenderManager.cpp @@ -37,16 +37,22 @@ RenderManager::RenderManager( ProjectRenderer::ExportFileFormats fmt, QString outputPath) : m_qualitySettings(qualitySettings), + m_oldQualitySettings( Engine::mixer()->currentQualitySettings() ), m_outputSettings(outputSettings), m_format(fmt), m_outputPath(outputPath), m_activeRenderer(NULL) { + Engine::mixer()->storeAudioDevice(); } RenderManager::~RenderManager() { delete m_activeRenderer; + m_activeRenderer = NULL; + + Engine::mixer()->restoreAudioDevice(); // Also deletes audio dev. + Engine::mixer()->changeQuality( m_oldQualitySettings ); } void RenderManager::abortProcessing() From 1d63bd3b4e1077200498533e2a4863d1fca3dd4b Mon Sep 17 00:00:00 2001 From: Tres Finocchiaro Date: Sat, 3 Mar 2018 22:46:07 -0500 Subject: [PATCH 27/31] Use Canonical Paths for Relative Paths Calculations (#4211) Fix redundant path elements Closes #4173 --- src/core/ConfigManager.cpp | 4 ++-- src/core/SampleBuffer.cpp | 3 ++- tests/src/core/RelativePathsTest.cpp | 3 +++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/core/ConfigManager.cpp b/src/core/ConfigManager.cpp index 734ccb80e..a99223a9d 100644 --- a/src/core/ConfigManager.cpp +++ b/src/core/ConfigManager.cpp @@ -225,9 +225,9 @@ bool ConfigManager::hasWorkingDir() const } -void ConfigManager::setWorkingDir( const QString & _wd ) +void ConfigManager::setWorkingDir( const QString & wd ) { - m_workingDir = ensureTrailingSlash( _wd ); + m_workingDir = ensureTrailingSlash( QFileInfo( wd ).canonicalFilePath() ); } diff --git a/src/core/SampleBuffer.cpp b/src/core/SampleBuffer.cpp index cb930b087..141085dd2 100644 --- a/src/core/SampleBuffer.cpp +++ b/src/core/SampleBuffer.cpp @@ -1415,7 +1415,8 @@ QString SampleBuffer::tryToMakeRelative( const QString & file ) { if( QFileInfo( file ).isRelative() == false ) { - QString f = QString( file ).replace( QDir::separator(), '/' ); + // Normalize the path + QString f = QFileInfo( file ).canonicalFilePath().replace( QDir::separator(), '/' ); // First, look in factory samples // Isolate "samples/" from "data:/samples/" diff --git a/tests/src/core/RelativePathsTest.cpp b/tests/src/core/RelativePathsTest.cpp index 555fa39b5..6a7548377 100644 --- a/tests/src/core/RelativePathsTest.cpp +++ b/tests/src/core/RelativePathsTest.cpp @@ -40,8 +40,11 @@ private slots: QString absPath = fi.absoluteFilePath(); QString relPath = "drums/kick01.ogg"; + QString fuzPath = absPath; + fuzPath.replace(relPath, "drums/.///kick01.ogg"); QCOMPARE(SampleBuffer::tryToMakeRelative(absPath), relPath); QCOMPARE(SampleBuffer::tryToMakeAbsolute(relPath), absPath); + QCOMPARE(SampleBuffer::tryToMakeRelative(fuzPath), relPath); } } RelativePathTests; From 533f4759430a04c6b5b43b774102e29f10dfe01d Mon Sep 17 00:00:00 2001 From: Hyunjin Song Date: Tue, 6 Mar 2018 09:57:16 +0900 Subject: [PATCH 28/31] Ensure correct length of automation patterns in BB editor (#4212) When the length of an automation pattern is an integer multiple of one bar, it was displayed with wrong length. This commit fixes the bug. --- src/core/AutomationPattern.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/AutomationPattern.cpp b/src/core/AutomationPattern.cpp index c307236d5..32b13f3f4 100644 --- a/src/core/AutomationPattern.cpp +++ b/src/core/AutomationPattern.cpp @@ -189,7 +189,7 @@ MidiTime AutomationPattern::timeMapLength() const { if( m_timeMap.isEmpty() ) return 0; timeMap::const_iterator it = m_timeMap.end(); - return MidiTime( qMax( MidiTime( (it-1).key() ).getTact() + 1, 1 ), 0 ); + return MidiTime( MidiTime( (it-1).key() ).nextFullTact(), 0 ); } From 788c990ae12b137b5551e60d44f0ebf62b43e7ec Mon Sep 17 00:00:00 2001 From: Hyunjin Song Date: Tue, 6 Mar 2018 09:57:40 +0900 Subject: [PATCH 29/31] Remove MIDI connection from factory files (#4207) --- data/presets/LB302/DroneArp.xpf | 2 +- data/presets/Monstro/Growl.xpf | 2 +- data/presets/Monstro/HorrorLead.xpf | 2 +- data/presets/TripleOscillator/Erazzor.xpf | 2 +- data/presets/TripleOscillator/GhostBoy.xpf | 2 +- data/presets/TripleOscillator/SEGuitar.xpf | 2 +- data/presets/TripleOscillator/Supernova.xpf | 2 +- data/presets/TripleOscillator/TINTNpad.xpf | 2 +- data/presets/Watsyn/Pulse.xpf | 2 +- data/projects/demos/StrictProduction-DearJonDoe.mmp | 5 ----- data/projects/shorties/Crunk(Demo).mmp | 5 ----- data/projects/templates/AcousticDrumset.mpt | 5 ----- data/projects/templates/CR8000.mpt | 5 ----- data/projects/templates/ClubMix.mpt | 5 ----- data/projects/templates/Empty.mpt | 5 ----- data/projects/templates/TR808.mpt | 5 ----- data/projects/tutorials/editing_note_volumes.mmp | 5 ----- 17 files changed, 9 insertions(+), 49 deletions(-) diff --git a/data/presets/LB302/DroneArp.xpf b/data/presets/LB302/DroneArp.xpf index 93b65595b..2d21adc2d 100644 --- a/data/presets/LB302/DroneArp.xpf +++ b/data/presets/LB302/DroneArp.xpf @@ -14,7 +14,7 @@ - + diff --git a/data/presets/Monstro/Growl.xpf b/data/presets/Monstro/Growl.xpf index 97a098637..f553b1641 100644 --- a/data/presets/Monstro/Growl.xpf +++ b/data/presets/Monstro/Growl.xpf @@ -14,7 +14,7 @@ - + diff --git a/data/presets/Monstro/HorrorLead.xpf b/data/presets/Monstro/HorrorLead.xpf index 867693d91..23cba07c4 100644 --- a/data/presets/Monstro/HorrorLead.xpf +++ b/data/presets/Monstro/HorrorLead.xpf @@ -14,7 +14,7 @@ - + diff --git a/data/presets/TripleOscillator/Erazzor.xpf b/data/presets/TripleOscillator/Erazzor.xpf index 5619b1e7a..02e020b78 100644 --- a/data/presets/TripleOscillator/Erazzor.xpf +++ b/data/presets/TripleOscillator/Erazzor.xpf @@ -14,7 +14,7 @@ - + diff --git a/data/presets/TripleOscillator/GhostBoy.xpf b/data/presets/TripleOscillator/GhostBoy.xpf index 32f33964c..0742a1c3c 100644 --- a/data/presets/TripleOscillator/GhostBoy.xpf +++ b/data/presets/TripleOscillator/GhostBoy.xpf @@ -14,7 +14,7 @@ - + diff --git a/data/presets/TripleOscillator/SEGuitar.xpf b/data/presets/TripleOscillator/SEGuitar.xpf index 543c4f412..1215552b0 100644 --- a/data/presets/TripleOscillator/SEGuitar.xpf +++ b/data/presets/TripleOscillator/SEGuitar.xpf @@ -14,7 +14,7 @@ - + diff --git a/data/presets/TripleOscillator/Supernova.xpf b/data/presets/TripleOscillator/Supernova.xpf index 01837983b..e5cebe159 100644 --- a/data/presets/TripleOscillator/Supernova.xpf +++ b/data/presets/TripleOscillator/Supernova.xpf @@ -14,7 +14,7 @@ - + diff --git a/data/presets/TripleOscillator/TINTNpad.xpf b/data/presets/TripleOscillator/TINTNpad.xpf index 840ee358f..6f04ca4f2 100644 --- a/data/presets/TripleOscillator/TINTNpad.xpf +++ b/data/presets/TripleOscillator/TINTNpad.xpf @@ -14,7 +14,7 @@ - + diff --git a/data/presets/Watsyn/Pulse.xpf b/data/presets/Watsyn/Pulse.xpf index 129a584d2..b3ace765e 100644 --- a/data/presets/Watsyn/Pulse.xpf +++ b/data/presets/Watsyn/Pulse.xpf @@ -14,7 +14,7 @@ - + diff --git a/data/projects/demos/StrictProduction-DearJonDoe.mmp b/data/projects/demos/StrictProduction-DearJonDoe.mmp index 7c114fb11..98d26d74a 100644 --- a/data/projects/demos/StrictProduction-DearJonDoe.mmp +++ b/data/projects/demos/StrictProduction-DearJonDoe.mmp @@ -676,11 +676,6 @@ - - - - - diff --git a/data/projects/shorties/Crunk(Demo).mmp b/data/projects/shorties/Crunk(Demo).mmp index 86113c462..59e26f8f7 100644 --- a/data/projects/shorties/Crunk(Demo).mmp +++ b/data/projects/shorties/Crunk(Demo).mmp @@ -190,11 +190,6 @@ - - - - - diff --git a/data/projects/templates/AcousticDrumset.mpt b/data/projects/templates/AcousticDrumset.mpt index 7386ec94b..e7fe006c4 100644 --- a/data/projects/templates/AcousticDrumset.mpt +++ b/data/projects/templates/AcousticDrumset.mpt @@ -117,11 +117,6 @@ - - - - - diff --git a/data/projects/templates/CR8000.mpt b/data/projects/templates/CR8000.mpt index c47a3ef2e..2336437f7 100644 --- a/data/projects/templates/CR8000.mpt +++ b/data/projects/templates/CR8000.mpt @@ -235,11 +235,6 @@ - - - - - diff --git a/data/projects/templates/ClubMix.mpt b/data/projects/templates/ClubMix.mpt index 744492e5a..6ebf1cfcf 100644 --- a/data/projects/templates/ClubMix.mpt +++ b/data/projects/templates/ClubMix.mpt @@ -134,11 +134,6 @@ - - - - - diff --git a/data/projects/templates/Empty.mpt b/data/projects/templates/Empty.mpt index 4974213b7..b314a5719 100644 --- a/data/projects/templates/Empty.mpt +++ b/data/projects/templates/Empty.mpt @@ -20,11 +20,6 @@ - - - - - diff --git a/data/projects/templates/TR808.mpt b/data/projects/templates/TR808.mpt index fe2a47f70..f092e2b10 100644 --- a/data/projects/templates/TR808.mpt +++ b/data/projects/templates/TR808.mpt @@ -303,11 +303,6 @@ - - - - - diff --git a/data/projects/tutorials/editing_note_volumes.mmp b/data/projects/tutorials/editing_note_volumes.mmp index 365dbf5a1..2ffd893ce 100644 --- a/data/projects/tutorials/editing_note_volumes.mmp +++ b/data/projects/tutorials/editing_note_volumes.mmp @@ -70,11 +70,6 @@ - - - - - From 38b69a7e3a06fdb86e71e28753e808c5b037f718 Mon Sep 17 00:00:00 2001 From: tresf Date: Tue, 6 Mar 2018 14:35:24 -0500 Subject: [PATCH 30/31] Fix incrementation of LcdSpinBox QInputDialog Closes #4218 --- src/gui/widgets/LcdSpinBox.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gui/widgets/LcdSpinBox.cpp b/src/gui/widgets/LcdSpinBox.cpp index 90a58728c..7dc21194a 100644 --- a/src/gui/widgets/LcdSpinBox.cpp +++ b/src/gui/widgets/LcdSpinBox.cpp @@ -178,7 +178,8 @@ void LcdSpinBox::enterValue() arg( model()->maxValue() ), model()->value(), model()->minValue(), - model()->maxValue(), 4, &ok ); + model()->maxValue(), + model()->step(), &ok ); if( ok ) { From ec0f47e9e38c9f1a3c03e95558373f94099529f6 Mon Sep 17 00:00:00 2001 From: Hyunjin Song Date: Wed, 7 Mar 2018 23:27:28 +0900 Subject: [PATCH 31/31] Fix AppImage tool path --- cmake/linux/package_linux.sh.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/linux/package_linux.sh.in b/cmake/linux/package_linux.sh.in index 60442aff0..61afe35a0 100644 --- a/cmake/linux/package_linux.sh.in +++ b/cmake/linux/package_linux.sh.in @@ -52,7 +52,7 @@ fi echo -e "\nWriting verbose output to \"${LOGFILE}\"" # Ensure linuxdeployqt uses the same qmake version as cmake -export PATH="$HOME/bin:$(dirname "@QT_QMAKE_EXECUTABLE@")":$PATH +export PATH="$(pwd -P)/squashfs-root/usr/bin:$(dirname "@QT_QMAKE_EXECUTABLE@")":$PATH # Fetch portable linuxdeployqt if cache is older than $DAYSOLD echo -e "\nDownloading linuxdeployqt to ${LINUXDEPLOYQT}..."