From d2a3c9438c7fd64fff8dea090f7b308200191d5a Mon Sep 17 00:00:00 2001 From: Spekular Date: Sat, 13 Jul 2019 13:28:08 +0200 Subject: [PATCH] Merge upstream changes (#4) * Allow sub plugins for instruments aswell * Move m_key member of Effect into Plugin * Pass key to Instrument ctors and instantiaters * Add pluginKeys to all plugin selector widgets, and let them pass the keys when instantiating the instruments; or, if the keys must be passed over threads, pass the keys to the Engine using `Engine::setDndPluginKey()` * As instrument plugin libraries now also need to get their key passed, their second argument, which was always the same as the first, is now used to pass the sub plugin keys. This affects *all* instrument plugins. * Plugin.h: Add more virtuals to `SubPluginFeatures` in order to draw logos and images into instrument selector widgets * LadspaSubPluginFeatures: Implement the `displayName` virtual because the new behaviour to resolve displayNames is to first look at the SubPluginFeatures, which, without override, returns the superior plugin's name (Plugin.cpp) Additional: * PluginFactory.h: Allow setting up search paths without discovering plugins yet * Plugin.h: Add full documentation (should be checked) * Fix Engine.cpp not compiling on some compilers * Fix or remove wrong or useless debug printfs * Fix missing IntrumentTrack header * Use QString for SubPluginFeatures' virtuals The former virtuals returned `const char*`, which lead to invalid reads when `LadspaSubPluginFeatures` returned pointers to temporary `QByteArray::data`. * Test deployment preparation in regular builds (#4847) Tests whether contributions break packaging inadvertently * Add needed macOS shortcuts (#4851) Fix insert bars, delete bars, delete notes on Apple keyboard * Move apt_mingw_cache out of build directory (#4842) * Add missing include Compilation fails with debug build. Fixes regression from dd99f3a7c466e86e02a8a8811e4b41f471a8b15d * Fix DrumSynth sscanf (#4869) * Fix failing build due to missing include Fix the build of MixHelpers.cpp which fails due to a missing include of cstdio (printf is not defined). * Add /sbin to AppImage search path Closes #4846 * Fix AudioFileProcessor tooltip (#4868) * Disable soundio on macOS Temporarily disable soundio on macOS to address stability issues with PortAudio Closes #4864 * Blacklist $HOME as VST directory Closes #4854 * Sync Debian version (#4840) * Sync Debian version * Drop temporary logging * Install 32-bit RemoteVstPlugin to a separate directory (#4797) * Fix loading 32bit VSTs on Linux Fix a regression in #4797 * Fix loading 32bit VSTs when loading LMMS in the build directory Fix another regression in #4797 * Fix MidiJack crash on exit * Fix uninitialized m_jackClient being used in MidiJack destructor * Fix destruction order in Mixer.cpp so that MidiJack doesn't access the deleted AudioJack instance Fixes #4688 * Fix #3926: QCursor in AFP Fix a crash that occurred on the following steps: 1. Add an AFP track. 2. Open it, and move the waveform display to overlap the track label button. 3. Close the AFP window and open it again by clicking the track label. 4. Move the mouse pointer. The problem occurs because the code makes the implicit assumption that AudioFileProcessorWaveView::enterEvent (and hence QApplication::setOverrideCursor) is called before AudioFileProcessorWaveView::mouseMoveEvent. This is not the case when the waveform display is on top of the track label. In this case the AFP windows is opened with the mouse being immediately positioned over the wave form display. There is no enter event and move events are issues directly. This then leads to a crash in AudioFileProcessorWaveView::mouseMoveEvent when trying to determine the value for is_size_cursor because the override cursor is still null but is dereferenced directly without checking. Only adding a check would not solve the problem because in that case the cursor would not change to the hand cursor when being moved inside the waveform display. The solution is to remove all calls to the global methods setOverrideCursor and restoreOverrideCursor and to only set the cursor locally. This fix is based on a patch by gi0e5b06 which is committed under 8a10c52 in his repository but for which he never created a pull request. * Fix CONTRIBUTORS override * Debian integration: update build dependencies It was wrongly done in 231a8407e8b7422f47c3b0f8d2d807b667c75c24. * Debian: don't bundle CALF LADSPA library separately anymore It's LMMS specific now * Better Wine detection and support * Support more Wine packagings * Allow building 64-bit RemoteVstPlugin using 32-bit Wine tools if possible * Provide suitable library paths for creating AppImages * Check if winegcc works before building RemoteVstPlugin * Modify VST build systems to make debian integration work correctly * Allow creating AppImages on systems newer than linuxdeployqt officially supports Note that the additional -unsupported-allow-new-glibc switch may result in an AppImage which is unusable on old systems. * Support FX Mixer for sample tracks and add controls to sample track window (#3866) This work is based on https://github.com/LMMS/lmms/pull/3632 by @grejppi. * Fix zyn pitch on project load/export Closes #3451 * Add info about LadspaControls::m_noLink * Fix compilation on Qt4 * Avoid shallow clones in all Debian sid builds (#4888) hallow clone may break version detection. This is fatal in Debian builds, so use full clone. Note: This is safe for stable-1.2 but needs review after merging to master due to submodules. See #4888 for more information. * Add VST always-on-top config option * Ensure VST windows show properly in taskbar * Don't show error when loading empty VeSTige instance * Fix layout of VstSyncData struct Ensure member of type double is 8-byte aligned for consistent layout between 32- and 64-bit Linux builds. * Rework after code reading * Fix possible segfault in `SubPluginFeatures::displayName` * Minor fixes * Allow TabWidget to be variable sized * Allow instrument views to grow with contents Make InstrumentTrackWindow as large as the InstrumentView requires * Make instrument window's piano optional * Make Model class visitable * Forbid copying the Knob class * Always instantiate at least a dummy plugin * Fix too small instrument tabs Previously, they had been resized by the fixed size parent tab widget. We need to do this manually now. * Fix Blackman-Harris window formula (#4895) Adds missing parentheses * Automation Editor: Don't accept drag events when there's no pattern Fixes #4857 * TCO drag: Fix Ctrl+Drag crash Fix some assumptions that source and target of a drag actions are the same track container. Instead of looking up necessary information (track name, type and container id) by track index, add it to the metadata. Refactor canPasteSelection to take QDropEvent instead of the drop event's QMimeData. Coincidentally, this fixes the method to be consistent with its documentation. Fixes #4844 * Bump zyn submodule Per #4642 * Allow new Zyn bank creation on Linux (#4905) Allow new Zyn bank creation on Linux Closes #4642 * Fix empty editors after closing them and creating a new project (#4891) * Remove useless include * Fix invalid display names * Travis: use carla instead of carla-git Due to some breaking changes in the development branch of Carla, we can't use the package right now. Fortunately, the carla package now points to 2.0 series. So we will use it. See also: https://kx.studio/News/?action=view&url=changes-in-kxstudio-repos-regarding-carla-and-jack2 * Travis: fix shellcheck warnings for the Debian sid script * Remove some Qt4 compatibility code * SetupDialog: fix file dialog not opening for theme directory It was caused by a typo affecting a signal-slot connection. * Fix instrument window tab sizes - Fix the instrument window tabs minimum width and height formulae - Also set minimum height and width for instrument tab * PluginBrowser: Tree layout and search bar * [Equalizer] Bright analyzer colors, opacity increased (#4772) * [Equalizer] Bright analyzer colors, opacity incr Brightened spectrum analyzer colors and increased opacity a tad to make more visible * Fixed RGB Value * Update EqControlsDialog.cpp * Fixed color change * Changed colors again * Fixed colors, now brighter and bluer * Ok, its actually bright now lol * Replace Monstro icons * Shrink ComboBox arrow section slightly This is being done for two reasons: 1. The new Monstro icons (and the icons for Microwave when it's finished) are too large. 2. All ComboBoxes (subjectively) look much nicer this way. * Don't try to connect to nonexistent controllers (#4939) Fixes crash on loading presets with controllers. * Allow sample track TCOs to resize smaller than one bar (#4933) Other changes: * Update TCO position more exact when a drag leaves a TCO and enters `TrackContentWidget` (required to detect that the cursor has really moved when leaving a TCO with length < 1 to the right) * Use exact length when samples are loaded, don't round it up * Reset size when reloading same file * Use local cursor for TrackContentObjectView (#4918) Fixes crash on cloning patterns on Qt >= 5.12. * Add PluginIssue class (#4901) * Move macro definition out of class * Fix -1 offset in plugin tab In the instrument plugin tab, there was an orange stripe for TripleOscillator. This was because internally, TabWidget moves up the widget by 1 (TabWidget.cpp, line 89). The size of the whole window is: ``` widget->height() + m_tabbarHeight - 1 ``` So this code adds an offset of "-1" to the necessary computations. * Fix bad identation in old code * Coding conventions * FileBrowser: Backup expanded directories and restore that state when the tree is reloaded. * Allow build for Wayland w/o X11Extras, if VST off @lukas-w reminds in 134dae8 comments that X11Extras help Linux users of VST effects #3786. Now LMMS builds and runs on Weston without X11 dependencies, though only if WANT_VST is off. * Document Effect::checkGate * Document graph widget * Update wiki submodule * Fix wiki submodule * Fix notes getting stuck under high CPU conditions (#4908) * Record chords (#4938) * Added check for chord to notes recorded from keyboard * Make more connections direct for automation (#4942) * Improve dcast * document `dcast` * make `dcast` not only cast exact, but also upwards * add `dcast` test * rename `dcast` -> `dynamicCast` * AutomatableModelTest: Improve tests Check whether returned pointers from the cast are equal to the original pointers, rather than just checking wether they are not `nullptr`. * Fix CI on windows * Code style + Extend for TempoSyncKnob * Travis: fix a debootstrap error from missing keyrings Uses 18.04's debian-archive-keyring to fix the missing keyrings. * Don't draw note detuning info over the volume/panning area (#4965) * Show/Focus BBEditor on TrackLabelButton click #4946 (#4959) It will be shown even if the parent is hidden. * Use extracted linuxdeployqt directly As of https://github.com/probonopd/linuxdeployqt/pull/370/, the AppRun of linuxdeployqt unsets LD_LIBRARY_PATH. This behavior isn't suitable for our cases, so we use the extracted binary directly as a workaround. * Fix invisible note editing handles when a note has detuning info Fixes a regression in 32df2d7fbad48c97322fdd1ebdffd0b5fee8fff8, the clipping area was restored in a wrong place. Also, a wrong value was used while restoring. * Fix the wrong merge * fix hanging mouse in piano roll (#4822) (#4960) * fix hanging mouse in piano roll (#4822) * fix hanging mouse in automation & pianoroll (#4822); * fix hanging mouse in automation & pianoroll (#4822) removed TODO comment that I forgot in the code * Fix race conditions in NotePlayHandleManager (#4966) NotePlayHandleManager::acquire uses a read lock unless the pool is empty. If two threads try to acquire NotePlayHandle simultaneously when the value of s_availableIndex is 1, one thread will try to read s_available[-1]. If the acquire action and the release action are done at the same time, NotePlayHandleManager::acquire may try to read data before NotePlayHandleManager::release actually writes. This commit prevents them by always using the write lock when acquiring a NotePlayHandle. * Nescaline and Freeboy - Better default sound (#4968) * Fix controller loading error on loading projects Fixes a regression in 91f9f1a890f529779931501d7f571de9cec54226, which added the range check into the wrong if statement. * Extend ProjectJournal docs, thx to @DomClark * Fixes #4781: Don't disconnect LADSPA automation on export * playing/recording pianoRoll's chord notes (#4963) * SampleTrack: call requestChangesInModel before unref SampleBuffer (#4982) To avoid a race condition between the gui thread which destroys the samplebuffer and the mixer thread which increases the buffer's ref- count, we'll make sure to touch the ref-count only when wh're synced with the mixer. * Making clearer the hierarchy. (#4967) Add `override` keyword * i18n: update translations from Transifex * Bugfix - SampleTrack -> Load & Save: Fix recorded sample track not being played correctly after saving and loading a project due to sample rate not getting saved in the project file. * Bugfix - SampleTrack -> Play: Fix sample track not being played in the right place when it not played from the begining. That has created a difference between the ticks and the metronome and the sample track. The cause of the problem was that the calculation of the frame to play was wrong: we had calculated `framesPerTick` according to the current engine's sample rate instead of the SampleBuffer's sample rate. * SampleBuffer -> Use processingSampleRate. SampleBuffer was using baseSampleRate as the default samplerate instead of the actual processingSampleRate. * i18n: update template strings * Travis: fix macOS build due to the old default version of Node.js appdmg recently dropped support for Node.js < 8.5 * MP3 export: initialize ID3 tag with id3tag_init Fixes wrongly set 'Blues' genre(ID 0) in exported mp3 files. * updated splash (#5002) * Fixes #4996: Fix metadata when exporting multiple tracks (#5005) Co-Authored-By: Hyunjin Song * Fix German translation * Fix "Export Tracks" * Add "Export MIDI" [ci skip] * DMG rebranding (#5013) Rebrand macOS DMG background - Design and artwork courtesy @RebeccaDeField - Closes #4289 * fix color profile error (#5019) * Bump version to 1.2.0 * Add a save option to discard MIDI connections (#5021) * Song: add isSavingProject. * VersionedSaveDialog: Add support for a custom option dialog. * AutomatableModel: Support the discardMIDIConnections save option. * InstrumentTrack: Support the discardMIDIConnections save option. * SaveOptions: Show the save option dialog on "save as". * Enable dark title bar on macOS Closes #5031 * Travis: drop unneeded prefix setting for npm * Fix macOS builds * Increase Mixer fader falloff speed This also fixes a display bug that is present with large fader falloff speeds. * Replace tLimit() with qBound() and remove templates.h (#5040) * Replace tLimit() with qBound() * Remove templates.h * Add .editorconfig This file tells the github online editor to use tabs of width 4 instead of 8. Open [this](https://github.com/JohannesLorenz/github_test/blob/master/test.cpp) test file in your browser to see how it works (the width is 5 in the example). Actually, it also tells many other editors... * FadeButtons now remain partially lit as a note plays out (#4969) * MDI Subwindow Decoration for VeSTige instruments closes #2824 (#2826) * MDI Subwindow Decoration for VeSTige instruments closes #2824 * revert changes * change QMdiSubWindow to our SubWindow in Vestige * Drop sample on sampletracks (#5043) * implements drag and drop samples to sampletracks * clean up / take care of timeLineWidget heigth in songeditor * unused memeber removed * clean up * Update include/TrackContainerView.h Co-Authored-By: Spekular * Update src/gui/TrackContainerView.cpp Co-Authored-By: Spekular * Update src/gui/TrackContainerView.cpp Co-Authored-By: Spekular * Update src/gui/editors/SongEditor.cpp Co-Authored-By: Spekular * load AFP if we don't drop on a sample track * take care of timeLineWidget size changes * clean up * consolidate some code * requested changes by code review * move logic to SampleTrackView * clean up * clean up * clean up * Closes #5050: Add Mixer threading comments (#5069) [ci skip] --- .editorconfig | 5 + .travis.yml | 11 +- .travis/debian_pkgs.sha256 | 1 + .travis/linux..install.sh | 2 +- .travis/linux.debian-sid.install.sh | 5 +- .travis/linux.debian-sid.script.sh | 41 +- .travis/linux.win.download.sh | 2 +- .travis/osx..install.sh | 2 +- CMakeLists.txt | 8 +- cmake/apple/dmg_branding.png | Bin 18099 -> 50759 bytes cmake/apple/dmg_branding@2x.png | Bin 0 -> 115793 bytes cmake/apple/lmms.plist.in | 2 + cmake/apple/package_apple.json.in | 6 +- cmake/linux/package_linux.sh.in | 15 +- cmake/modules/CheckWineGcc.cmake | 27 + cmake/modules/FindWine.cmake | 117 +- cmake/modules/winegcc_wrapper.in | 11 + data/locale/cs.ts | 9860 ++++------------ data/locale/de.ts | 6 +- data/locale/en.ts | 8049 ++----------- data/locale/ko.ts | 9929 ++++------------ data/locale/ru.ts | 9940 ++++------------- data/locale/sv.ts | 5955 +++++++--- data/locale/uk.ts | 9900 ++++------------ data/locale/zh_TW.ts | 9921 ++++------------ data/themes/default/splash.png | Bin 113394 -> 112040 bytes debian/calf-ladspa.install | 1 - debian/changelog | 2 +- debian/control | 31 +- debian/lmms-bin.install | 5 +- debian/lmms-vst-server.install | 2 +- debian/rules | 14 +- doc/wiki | 2 +- include/AutomatableModel.h | 55 + include/BasicFilters.h | 1 - include/ComboBoxModel.h | 1 + include/Controller.h | 3 +- include/DspEffectLibrary.h | 1 - include/Editor.h | 1 + include/Effect.h | 14 +- include/Engine.h | 8 + include/FadeButton.h | 16 +- include/FileBrowser.h | 6 +- include/{templates.h => FxLineLcdSpinBox.h} | 32 +- include/Graph.h | 38 +- include/Instrument.h | 17 +- include/InstrumentTrack.h | 12 +- include/Knob.h | 2 +- include/Ladspa2LMMS.h | 2 + include/Mixer.h | 7 + include/Model.h | 17 - include/ModelVisitor.h | 64 + include/NotePlayHandle.h | 1 + include/PianoRoll.h | 2 + include/Plugin.h | 167 +- include/PluginBrowser.h | 30 +- include/PluginFactory.h | 24 +- include/PluginIssue.h | 66 + include/ProjectJournal.h | 3 + include/SampleBuffer.h | 2 + include/SampleTrack.h | 105 +- include/SetupDialog.h | 5 + include/Song.h | 19 + include/TabWidget.h | 8 +- include/TempoSyncKnobModel.h | 7 +- include/Track.h | 6 +- include/VersionedSaveDialog.h | 10 + include/VstSyncData.h | 2 +- include/panning.h | 1 - plugins/Eq/EqControlsDialog.cpp | 4 +- plugins/Eq/EqSpectrumView.cpp | 8 +- plugins/FreeBoy/FreeBoy.cpp | 8 +- plugins/GigPlayer/GigPlayer.cpp | 4 +- plugins/LadspaEffect/LadspaControls.cpp | 9 +- .../LadspaEffect/LadspaSubPluginFeatures.cpp | 10 + .../LadspaEffect/LadspaSubPluginFeatures.h | 12 +- plugins/OpulenZ/OpulenZ.cpp | 4 +- plugins/VstEffect/VstEffect.cpp | 3 - plugins/VstEffect/VstEffectControls.cpp | 10 - plugins/Xpressive/Xpressive.cpp | 4 +- .../audio_file_processor.cpp | 54 +- .../audio_file_processor.h | 2 +- plugins/bit_invader/bit_invader.cpp | 5 +- plugins/carlapatchbay/carlapatchbay.cpp | 5 +- plugins/carlarack/carlarack.cpp | 5 +- plugins/kicker/kicker.cpp | 4 +- plugins/lb302/lb302.cpp | 5 +- plugins/monstro/Monstro.cpp | 5 +- plugins/monstro/exp.png | Bin 522 -> 539 bytes plugins/monstro/moog.png | Bin 599 -> 498 bytes plugins/monstro/noise.png | Bin 563 -> 711 bytes plugins/monstro/ramp.png | Bin 520 -> 443 bytes plugins/monstro/saw.png | Bin 529 -> 489 bytes plugins/monstro/sin.png | Bin 578 -> 596 bytes plugins/monstro/sinabs.png | Bin 468 -> 530 bytes plugins/monstro/sqr.png | Bin 427 -> 345 bytes plugins/monstro/sqrsoft.png | Bin 539 -> 453 bytes plugins/monstro/tri.png | Bin 602 -> 566 bytes plugins/nes/Nes.cpp | 7 +- plugins/organic/organic.cpp | 5 +- plugins/patman/patman.cpp | 4 +- plugins/sf2_player/sf2_player.cpp | 4 +- plugins/sfxr/sfxr.cpp | 5 +- plugins/sid/sid_instrument.cpp | 5 +- plugins/stk/mallets/mallets.cpp | 4 +- .../triple_oscillator/TripleOscillator.cpp | 4 +- plugins/vestige/vestige.cpp | 26 +- plugins/vestige/vestige.h | 3 +- plugins/vibed/vibed.cpp | 5 +- plugins/vibed/vibrating_string.cpp | 7 +- plugins/vst_base/CMakeLists.txt | 16 +- plugins/vst_base/RemoteVstPlugin.cpp | 7 +- .../vst_base/RemoteVstPlugin/CMakeLists.txt | 1 + plugins/vst_base/RemoteVstPlugin32.cmake | 61 +- plugins/vst_base/RemoteVstPlugin64.cmake | 6 + plugins/vst_base/VstPlugin.cpp | 11 +- plugins/vst_base/vstbase/CMakeLists.txt | 3 + plugins/watsyn/Watsyn.cpp | 5 +- plugins/zynaddsubfx/ZynAddSubFx.cpp | 7 +- plugins/zynaddsubfx/zynaddsubfx | 2 +- src/3rdparty/CMakeLists.txt | 2 +- src/CMakeLists.txt | 2 +- src/core/AutomatableModel.cpp | 14 +- src/core/AutomationPattern.cpp | 10 + src/core/CMakeLists.txt | 2 + src/core/ConfigManager.cpp | 3 +- src/core/ControllerConnection.cpp | 4 +- src/core/DrumSynth.cpp | 5 +- src/core/Effect.cpp | 5 +- src/core/Engine.cpp | 28 + src/core/EnvelopeAndLfoParameters.cpp | 26 +- src/core/FxMixer.cpp | 31 +- src/core/Instrument.cpp | 27 +- src/core/LadspaControl.cpp | 3 +- src/core/LadspaManager.cpp | 2 +- src/core/LfoController.cpp | 6 +- src/core/MeterModel.cpp | 4 +- src/core/MixHelpers.cpp | 5 + src/core/Mixer.cpp | 50 +- src/core/ModelVisitor.cpp | 44 + src/core/NotePlayHandle.cpp | 41 +- src/core/PeakController.cpp | 6 +- src/core/Plugin.cpp | 165 +- src/core/PluginFactory.cpp | 109 +- src/core/PluginIssue.cpp | 72 + src/core/PresetPreviewPlayHandle.cpp | 4 +- src/core/ProjectJournal.cpp | 2 + src/core/SampleBuffer.cpp | 15 +- src/core/SamplePlayHandle.cpp | 2 +- src/core/Song.cpp | 21 +- src/core/TempoSyncKnobModel.cpp | 6 +- src/core/Track.cpp | 95 +- src/core/audio/AudioAlsa.cpp | 6 +- src/core/audio/AudioFileMP3.cpp | 1 + src/core/audio/AudioJack.cpp | 9 +- src/core/audio/AudioOss.cpp | 6 +- src/core/audio/AudioPortAudio.cpp | 7 +- src/core/audio/AudioPulseAudio.cpp | 6 +- src/core/audio/AudioSndio.cpp | 10 +- src/core/audio/AudioSoundIo.cpp | 8 +- src/core/midi/MidiAlsaSeq.cpp | 2 +- src/core/midi/MidiJack.cpp | 1 + src/core/midi/MidiPort.cpp | 9 +- src/gui/CMakeLists.txt | 1 + src/gui/EffectSelectDialog.cpp | 134 +- src/gui/FileBrowser.cpp | 51 +- src/gui/FxMixerView.cpp | 25 +- src/gui/InstrumentView.cpp | 3 +- src/gui/MainWindow.cpp | 3 +- src/gui/PianoView.cpp | 2 +- src/gui/PluginBrowser.cpp | 162 +- src/gui/SetupDialog.cpp | 37 +- src/gui/TimeLineWidget.cpp | 2 + src/gui/TrackContainerView.cpp | 8 +- src/gui/dialogs/VersionedSaveDialog.cpp | 28 +- src/gui/editors/AutomationEditor.cpp | 13 +- src/gui/editors/Editor.cpp | 18 +- src/gui/editors/PianoRoll.cpp | 103 +- src/gui/editors/SongEditor.cpp | 4 +- src/gui/widgets/ComboBox.cpp | 5 +- src/gui/widgets/FadeButton.cpp | 124 +- src/gui/widgets/FxLineLcdSpinBox.cpp | 66 + src/gui/widgets/Graph.cpp | 5 +- src/gui/widgets/TabWidget.cpp | 47 +- src/gui/widgets/TrackLabelButton.cpp | 8 +- src/tracks/BBTrack.cpp | 3 +- src/tracks/InstrumentTrack.cpp | 142 +- src/tracks/SampleTrack.cpp | 456 +- tests/CMakeLists.txt | 1 + tests/src/core/AutomatableModelTest.cpp | 55 + 190 files changed, 19587 insertions(+), 47781 deletions(-) create mode 100644 .editorconfig create mode 100644 cmake/apple/dmg_branding@2x.png create mode 100644 cmake/modules/CheckWineGcc.cmake delete mode 100644 debian/calf-ladspa.install rename include/{templates.h => FxLineLcdSpinBox.h} (54%) create mode 100644 include/ModelVisitor.h create mode 100644 include/PluginIssue.h create mode 100644 src/core/ModelVisitor.cpp create mode 100644 src/core/PluginIssue.cpp create mode 100644 src/gui/widgets/FxLineLcdSpinBox.cpp create mode 100644 tests/src/core/AutomatableModelTest.cpp diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000000..2d4a9f97563 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,5 @@ +root = true + +[*] +indent_style = tab +tab_width = 4 diff --git a/.travis.yml b/.travis.yml index 091e2cb45a9..b3cb8aa7c8e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ dist: trusty sudo: required cache: directories: - - apt_mingw_cache + - $HOME/apt_mingw_cache - $HOME/.ccache - $HOME/pbuilder-bases matrix: @@ -14,11 +14,20 @@ matrix: - env: TARGET_OS=win32 - env: TARGET_OS=win64 - env: TARGET_OS=debian-sid TARGET_DEPLOY=True + git: + depth: false - env: TARGET_OS=debian-sid TARGET_ARCH=i386 + git: + depth: false - compiler: clang env: TARGET_OS=debian-sid + git: + depth: false - os: osx osx_image: xcode8.3 +before_install: + # appdmg doesn't work with old Node.js + - if [ "$TRAVIS_OS_NAME" = osx ]; then nvm install 10; fi install: ${TRAVIS_BUILD_DIR}/.travis/install.sh script: ${TRAVIS_BUILD_DIR}/.travis/script.sh after_script: ${TRAVIS_BUILD_DIR}/.travis/after_script.sh diff --git a/.travis/debian_pkgs.sha256 b/.travis/debian_pkgs.sha256 index 96a4bd8aa99..ed4e1173789 100644 --- a/.travis/debian_pkgs.sha256 +++ b/.travis/debian_pkgs.sha256 @@ -1,2 +1,3 @@ 314ef4af137903dfb13e8c3ef1e6ea56cfdb23808d52ec4f5f50e288c73610c5 pbuilder_0.229.1_all.deb fa82aa8ed3055c6f6330104deedf080b26778295e589426d4c4dd0f2c2a5defa debootstrap_1.0.95_all.deb +2ef4c09f7841b72f93412803ddd142f72658536dbfabe00e449eb548f432f3f8 debian-archive-keyring_2017.7ubuntu1_all.deb diff --git a/.travis/linux..install.sh b/.travis/linux..install.sh index ab4fba26395..2f1262d071b 100755 --- a/.travis/linux..install.sh +++ b/.travis/linux..install.sh @@ -23,4 +23,4 @@ sudo apt-get install -y $PACKAGES sudo add-apt-repository -y ppa:kxstudio-debian/libs sudo add-apt-repository -y ppa:kxstudio-debian/apps sudo apt-get update -sudo apt-get install -y carla-git +sudo apt-get install -y carla diff --git a/.travis/linux.debian-sid.install.sh b/.travis/linux.debian-sid.install.sh index ecdcf6d91fc..ef836882232 100755 --- a/.travis/linux.debian-sid.install.sh +++ b/.travis/linux.debian-sid.install.sh @@ -2,15 +2,16 @@ set -e sudo apt-get install -y \ - debian-archive-keyring \ dpkg \ pbuilder # work around a pbuilder bug which breaks ccache # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=666525 +# and also missing signing keys in Trusty's debian-archive-keyring cd /tmp wget http://archive.ubuntu.com/ubuntu/pool/main/p/pbuilder/pbuilder_0.229.1_all.deb wget http://archive.ubuntu.com/ubuntu/pool/main/d/debootstrap/debootstrap_1.0.95_all.deb +wget http://archive.ubuntu.com/ubuntu/pool/universe/d/debian-archive-keyring/debian-archive-keyring_2017.7ubuntu1_all.deb sha256sum -c "$TRAVIS_BUILD_DIR/.travis/debian_pkgs.sha256" -sudo dpkg -i pbuilder_0.229.1_all.deb debootstrap_1.0.95_all.deb +sudo dpkg -i pbuilder_0.229.1_all.deb debootstrap_1.0.95_all.deb debian-archive-keyring_2017.7ubuntu1_all.deb cd "$OLDPWD" diff --git a/.travis/linux.debian-sid.script.sh b/.travis/linux.debian-sid.script.sh index a75a9f8442c..9b8db416c4d 100755 --- a/.travis/linux.debian-sid.script.sh +++ b/.travis/linux.debian-sid.script.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash set -e : "${TARGET_ARCH:=amd64}" @@ -21,19 +21,50 @@ fi if [ ! -e "$BASETGZ.stamp" ] then mkdir -p "$HOME/pbuilder-bases" - # debootstrap fails to resolve dependencies which are virtual packages - # e.g. perl-openssl-abi-1.1 provided by perl-openssl-defaults, needed for building SWH - # See also: https://bugs.launchpad.net/ubuntu/+source/debootstrap/+bug/86536 sudo pbuilder --create --basetgz "$BASETGZ" --mirror $MIRROR \ --distribution sid --architecture $TARGET_ARCH \ --debootstrapopts --variant=buildd \ --debootstrapopts --keyring=$KEYRING \ - --debootstrapopts --include=perl,libxml2-utils,libxml-perl,liblist-moreutils-perl,perl-openssl-defaults + --debootstrapopts --include=perl touch "$BASETGZ.stamp" else sudo pbuilder --update --basetgz "$BASETGZ" fi +sync_version() { + local VERSION + local MMR + local STAGE + local EXTRA + + VERSION=$(git describe --tags --match v[0-9].[0-9].[0-9]*) + VERSION=${VERSION#v} + MMR=${VERSION%%-*} + case $VERSION in + *-*-*-*) + VERSION=${VERSION%-*} + STAGE=${VERSION#*-} + STAGE=${STAGE%-*} + EXTRA=${VERSION##*-} + VERSION=$MMR~$STAGE.$EXTRA + ;; + *-*-*) + VERSION=${VERSION%-*} + EXTRA=${VERSION##*-} + VERSION=$MMR.$EXTRA + ;; + *-*) + STAGE=${VERSION#*-} + VERSION=$MMR~$STAGE + ;; + esac + + sed "1 s/@VERSION@/$VERSION/" -i debian/changelog + echo "Set Debian version to $VERSION" +} + +sync_version + DIR="$PWD" cd .. dpkg-source -b "$DIR" diff --git a/.travis/linux.win.download.sh b/.travis/linux.win.download.sh index 215d4eb93f4..2f914f94ee7 100755 --- a/.travis/linux.win.download.sh +++ b/.travis/linux.win.download.sh @@ -2,7 +2,7 @@ set -e -CACHE_DIR=$TRAVIS_BUILD_DIR/apt_mingw_cache/$1 +CACHE_DIR=$HOME/apt_mingw_cache/$1 mkdir -p "$CACHE_DIR" pushd "$CACHE_DIR" diff --git a/.travis/osx..install.sh b/.travis/osx..install.sh index e9968e65b2a..e3dd670bfb2 100755 --- a/.travis/osx..install.sh +++ b/.travis/osx..install.sh @@ -19,4 +19,4 @@ brew install $PACKAGES # fftw tries to install gcc which conflicts with travis brew install fftw --ignore-dependencies -sudo npm install -g appdmg +npm install -g appdmg diff --git a/CMakeLists.txt b/CMakeLists.txt index 77724526852..bd9d376e286 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,7 +33,7 @@ SET(PROJECT_COPYRIGHT "2008-${PROJECT_YEAR} ${PROJECT_AUTHOR}") SET(VERSION_MAJOR "1") SET(VERSION_MINOR "2") SET(VERSION_RELEASE "0") -SET(VERSION_STAGE "rc8") +SET(VERSION_STAGE "") SET(VERSION_BUILD "0") SET(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_RELEASE}") IF(VERSION_STAGE) @@ -67,7 +67,8 @@ OPTION(WANT_STK "Include Stk (Synthesis Toolkit) support" ON) OPTION(WANT_SWH "Include Steve Harris's LADSPA plugins" ON) OPTION(WANT_TAP "Include Tom's Audio Processing LADSPA plugins" ON) OPTION(WANT_VST "Include VST support" ON) -OPTION(WANT_VST_NOWINE "Include partial VST support (without wine)" OFF) +OPTION(WANT_VST_32 "Include 32-bit VST support" ON) +OPTION(WANT_VST_64 "Include 64-bit VST support" ON) OPTION(WANT_WINMM "Include WinMM MIDI support" OFF) OPTION(WANT_DEBUG_FPE "Debug floating point exceptions" OFF) @@ -75,6 +76,7 @@ OPTION(WANT_DEBUG_FPE "Debug floating point exceptions" OFF) IF(LMMS_BUILD_APPLE) # Fix linking on 10.14+. See issue #4762 on github LINK_DIRECTORIES(/usr/local/lib) + SET(WANT_SOUNDIO OFF) SET(WANT_ALSA OFF) SET(WANT_PULSEAUDIO OFF) SET(WANT_VST OFF) @@ -155,7 +157,7 @@ SET(QT_LIBRARIES Qt5::Xml ) -IF(LMMS_BUILD_LINUX) +IF(LMMS_BUILD_LINUX AND WANT_VST) FIND_PACKAGE(Qt5 COMPONENTS X11Extras REQUIRED) LIST(APPEND QT_LIBRARIES Qt5::X11Extras) ENDIF() diff --git a/cmake/apple/dmg_branding.png b/cmake/apple/dmg_branding.png index c1469720775a5c39e1211a2413316da69500a18a..2c6481ecb71c888b6bba30412892d2c1bc23a21b 100644 GIT binary patch literal 50759 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 literal 18099 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 NMR`@ZA{hg}{|iOySpfh5 diff --git a/cmake/apple/dmg_branding@2x.png b/cmake/apple/dmg_branding@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7af39fecd471847c6d7bb272050eed151003f150 GIT binary patch literal 115793 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

&vY2oq4mDp~DO~sE{$uAiQAS7R+u3nQ{<8ynz=Z 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

" + tr("Name") + ": " + QString::fromUtf8(descriptor.displayName) + "

"; - labelText += "

" + tr("Description") + ": " + qApp->translate( "pluginBrowser", descriptor.description ) + "

"; - labelText += "

" + tr("Author") + ": " + QString::fromUtf8(descriptor.author) + "

"; - - label->setText(labelText); - textWidgetLayout->addWidget(label); - } - - ui->scrollArea->setWidget( m_descriptionWidget ); + QHBoxLayout *hbox = new QHBoxLayout( m_descriptionWidget ); + + Plugin::Descriptor const & descriptor = *( m_currentSelection.desc ); + + const PixmapLoader* pixLoa = m_currentSelection.logo(); + if (pixLoa) + { + QLabel *logoLabel = new QLabel( m_descriptionWidget ); + logoLabel->setPixmap(pixLoa->pixmap()); + logoLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + + hbox->addWidget( logoLabel ); + hbox->setAlignment( logoLabel, Qt::AlignTop); + } + + QWidget *textualInfoWidget = new QWidget( m_descriptionWidget ); + + hbox->addWidget(textualInfoWidget); + + QVBoxLayout * textWidgetLayout = new QVBoxLayout( textualInfoWidget); + textWidgetLayout->setMargin( 4 ); + textWidgetLayout->setSpacing( 0 ); + + if ( m_currentSelection.desc->subPluginFeatures ) + { + QWidget *subWidget = new QWidget(textualInfoWidget); + QVBoxLayout * subLayout = new QVBoxLayout( subWidget ); + subLayout->setMargin( 4 ); + subLayout->setSpacing( 0 ); + m_currentSelection.desc->subPluginFeatures-> + fillDescriptionWidget( subWidget, &m_currentSelection ); + for( QWidget * w : subWidget->findChildren() ) + { + if( w->parent() == subWidget ) + { + subLayout->addWidget( w ); + } + } + + textWidgetLayout->addWidget(subWidget); + } + else + { + QLabel *label = new QLabel(m_descriptionWidget); + QString labelText = "

" + tr("Name") + ": " + QString::fromUtf8(descriptor.displayName) + "

"; + labelText += "

" + tr("Description") + ": " + qApp->translate( "pluginBrowser", descriptor.description ) + "

"; + labelText += "

" + tr("Author") + ": " + QString::fromUtf8(descriptor.author) + "

"; + + label->setText(labelText); + textWidgetLayout->addWidget(label); + } + + ui->scrollArea->setWidget( m_descriptionWidget ); m_descriptionWidget->show(); } } diff --git a/src/gui/FileBrowser.cpp b/src/gui/FileBrowser.cpp index 05727d33295..7eeb87ed29c 100644 --- a/src/gui/FileBrowser.cpp +++ b/src/gui/FileBrowser.cpp @@ -163,6 +163,7 @@ bool FileBrowser::filterItems( const QString & filter, QTreeWidgetItem * item ) void FileBrowser::reloadTree( void ) { + QList expandedDirs = m_fileBrowserTreeWidget->expandedDirs(); const QString text = m_filterEdit->text(); m_filterEdit->clear(); m_fileBrowserTreeWidget->clear(); @@ -171,17 +172,17 @@ void FileBrowser::reloadTree( void ) { addItems( *it ); } - expandItems(); + expandItems(NULL, expandedDirs); m_filterEdit->setText( text ); filterItems( text ); } -void FileBrowser::expandItems( QTreeWidgetItem * item ) +void FileBrowser::expandItems( QTreeWidgetItem * item, QList expandedDirs ) { - int numChildren = item ? item->childCount() : m_fileBrowserTreeWidget->topLevelItemCount(); - for( int i = 0; i < numChildren; ++i ) + int numChildren = item ? item->childCount() : m_fileBrowserTreeWidget->topLevelItemCount(); + for (int i = 0; i < numChildren; ++i) { QTreeWidgetItem * it = item ? item->child( i ) : m_fileBrowserTreeWidget->topLevelItem(i); if ( m_recurse ) @@ -189,14 +190,15 @@ void FileBrowser::expandItems( QTreeWidgetItem * item ) it->setExpanded( true ); } Directory *d = dynamic_cast ( it ); - if( d ) + if (d) { d->update(); - d->setExpanded( false ); + bool expand = expandedDirs.contains( d->fullName() ); + d->setExpanded( expand ); } - if( m_recurse && it->childCount() ) + if (m_recurse && it->childCount()) { - expandItems(it); + expandItems(it, expandedDirs); } } } @@ -241,7 +243,7 @@ void FileBrowser::addItems(const QString & path ) Directory *dd = new Directory( cur_file, path, m_filter ); m_fileBrowserTreeWidget->insertTopLevelItem( i,dd ); - dd->update(); + dd->update(); // add files to the directory orphan = false; break; } @@ -326,6 +328,30 @@ FileBrowserTreeWidget::FileBrowserTreeWidget(QWidget * parent ) : } +QList FileBrowserTreeWidget::expandedDirs( QTreeWidgetItem * item ) const +{ + int numChildren = item ? item->childCount() : topLevelItemCount(); + QList dirs; + for (int i = 0; i < numChildren; ++i) + { + QTreeWidgetItem * it = item ? item->child(i) : topLevelItem(i); + + // Add expanded top level directories. + if (it->isExpanded() && (it->type() == TypeDirectoryItem)) + { + Directory *d = static_cast ( it ); + dirs.append( d->fullName() ); + } + + // Add expanded child directories (recurse). + if (it->childCount()) + { + dirs.append( expandedDirs( it ) ); + } + } + return dirs; +} + void FileBrowserTreeWidget::contextMenuEvent(QContextMenuEvent * e ) { FileItem * f = dynamic_cast( itemAt( e->pos() ) ); @@ -406,7 +432,7 @@ void FileBrowserTreeWidget::mousePressEvent(QMouseEvent * me ) delete tf; } else if( ( f->extension ()== "xiz" || f->extension() == "sf2" || f->extension() == "sf3" || f->extension() == "gig" || f->extension() == "pat" ) && - ! pluginFactory->pluginSupportingExtension(f->extension()).isNull() ) + ! pluginFactory->pluginSupportingExtension(f->extension()).info.isNull() ) { m_previewPlayHandle = new PresetPreviewPlayHandle( f->fullName(), f->handling() == FileItem::LoadByPlugin ); } @@ -549,8 +575,9 @@ void FileBrowserTreeWidget::handleFile(FileItem * f, InstrumentTrack * it ) if( i == NULL || !i->descriptor()->supportsFileType( e ) ) { - i = it->loadInstrument( - pluginFactory->pluginSupportingExtension(e).name() ); + PluginFactory::PluginInfoAndKey piakn = + pluginFactory->pluginSupportingExtension(e); + i = it->loadInstrument(piakn.info.name(), &piakn.key); } i->loadFile( f->fullName() ); break; diff --git a/src/gui/FxMixerView.cpp b/src/gui/FxMixerView.cpp index 440e37d1077..4ae2a630ae3 100644 --- a/src/gui/FxMixerView.cpp +++ b/src/gui/FxMixerView.cpp @@ -47,6 +47,7 @@ #include "Mixer.h" #include "gui_templates.h" #include "InstrumentTrack.h" +#include "SampleTrack.h" #include "Song.h" #include "BBTrackContainer.h" @@ -251,6 +252,12 @@ void FxMixerView::updateMaxChannelSelector() inst->effectChannelModel()->setRange(0, m_fxChannelViews.size()-1,1); } + else if( trackList[i]->type() == Track::SampleTrack ) + { + SampleTrack * strk = (SampleTrack *) trackList[i]; + strk->effectChannelModel()->setRange(0, + m_fxChannelViews.size()-1,1); + } } } } @@ -306,7 +313,7 @@ FxMixerView::FxChannelView::FxChannelView(QWidget * _parent, FxMixerView * _mv, m_soloBtn->setCheckable( true ); m_soloBtn->move( 9, m_fader->y()-21); connect(&fxChannel->m_soloModel, SIGNAL( dataChanged() ), - _mv, SLOT ( toggledSolo() ) ); + _mv, SLOT ( toggledSolo() ), Qt::DirectConnection ); ToolTip::add( m_soloBtn, tr( "Solo FX channel" ) ); // Create EffectRack for the channel @@ -592,23 +599,25 @@ void FxMixerView::updateFaders() { const float opl = m_fxChannelViews[i]->m_fader->getPeak_L(); const float opr = m_fxChannelViews[i]->m_fader->getPeak_R(); - const float fallOff = 1.07; - if( m->effectChannel(i)->m_peakLeft > opl ) + const float fallOff = 1.25; + if( m->effectChannel(i)->m_peakLeft >= opl/fallOff ) { m_fxChannelViews[i]->m_fader->setPeak_L( m->effectChannel(i)->m_peakLeft ); - m->effectChannel(i)->m_peakLeft = 0; + // Set to -1 so later we'll know if this value has been refreshed yet. + m->effectChannel(i)->m_peakLeft = -1; } - else + else if( m->effectChannel(i)->m_peakLeft != -1 ) { m_fxChannelViews[i]->m_fader->setPeak_L( opl/fallOff ); } - if( m->effectChannel(i)->m_peakRight > opr ) + if( m->effectChannel(i)->m_peakRight >= opr/fallOff ) { m_fxChannelViews[i]->m_fader->setPeak_R( m->effectChannel(i)->m_peakRight ); - m->effectChannel(i)->m_peakRight = 0; + // Set to -1 so later we'll know if this value has been refreshed yet. + m->effectChannel(i)->m_peakRight = -1; } - else + else if( m->effectChannel(i)->m_peakRight != -1 ) { m_fxChannelViews[i]->m_fader->setPeak_R( opr/fallOff ); } diff --git a/src/gui/InstrumentView.cpp b/src/gui/InstrumentView.cpp index 9e8fc58c132..cf19bbbe1a5 100644 --- a/src/gui/InstrumentView.cpp +++ b/src/gui/InstrumentView.cpp @@ -34,7 +34,6 @@ InstrumentView::InstrumentView( Instrument * _Instrument, QWidget * _parent ) : PluginView( _Instrument, _parent ) { setModel( _Instrument ); - setFixedSize( 250, 250 ); setAttribute( Qt::WA_DeleteOnClose, true ); } @@ -57,7 +56,7 @@ void InstrumentView::setModel( Model * _model, bool ) if( dynamic_cast( _model ) != NULL ) { ModelView::setModel( _model ); - instrumentTrackWindow()->setWindowIcon( model()->descriptor()->logo->pixmap() ); + instrumentTrackWindow()->setWindowIcon( model()->logo()->pixmap() ); connect( model(), SIGNAL( destroyed( QObject * ) ), this, SLOT( close() ) ); } } diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 424c23d26e6..5d1dbf66673 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -922,7 +922,8 @@ bool MainWindow::saveProject() bool MainWindow::saveProjectAs() { - VersionedSaveDialog sfd( this, tr( "Save Project" ), "", + auto optionsWidget = new SaveOptionsWidget(Engine::getSong()->getSaveOptions()); + VersionedSaveDialog sfd( this, optionsWidget, tr( "Save Project" ), "", tr( "LMMS Project" ) + " (*.mmpz *.mmp);;" + tr( "LMMS Project Template" ) + " (*.mpt)" ); QString f = Engine::getSong()->projectFileName(); diff --git a/src/gui/PianoView.cpp b/src/gui/PianoView.cpp index 6e8464dd4d0..c1be922c656 100644 --- a/src/gui/PianoView.cpp +++ b/src/gui/PianoView.cpp @@ -355,7 +355,7 @@ int PianoView::getKeyFromMouse( const QPoint & _p ) const } // some range-checking-stuff - return tLimit( key_num, 0, NumKeys - 1 ); + return qBound( 0, key_num, NumKeys - 1 ); } diff --git a/src/gui/PluginBrowser.cpp b/src/gui/PluginBrowser.cpp index dc0fc35e091..671b58381ea 100644 --- a/src/gui/PluginBrowser.cpp +++ b/src/gui/PluginBrowser.cpp @@ -24,14 +24,16 @@ #include "PluginBrowser.h" +#include #include -#include +#include #include -#include +#include #include +#include #include "embed.h" -#include "templates.h" +#include "Engine.h" #include "gui_templates.h" #include "StringPairDrag.h" #include "PluginFactory.h" @@ -59,23 +61,91 @@ PluginBrowser::PluginBrowser( QWidget * _parent ) : m_view ); hint->setWordWrap( true ); - QScrollArea* scrollarea = new QScrollArea( m_view ); - PluginDescList* descList = new PluginDescList( m_view ); - scrollarea->setWidget(descList); - scrollarea->setWidgetResizable(true); + QLineEdit * searchBar = new QLineEdit( m_view ); + searchBar->setPlaceholderText( "Search" ); + searchBar->setMaxLength( 64 ); + searchBar->setClearButtonEnabled( true ); + + m_descTree = new QTreeWidget( m_view ); + m_descTree->setColumnCount( 1 ); + m_descTree->header()->setVisible( false ); + m_descTree->setIndentation( 10 ); + m_descTree->setSelectionMode( QAbstractItemView::NoSelection ); + + connect( searchBar, SIGNAL( textEdited( const QString & ) ), + this, SLOT( onFilterChanged( const QString & ) ) ); + + view_layout->addWidget( hint ); + view_layout->addWidget( searchBar ); + view_layout->addWidget( m_descTree ); - view_layout->addWidget(hint); - view_layout->addWidget(scrollarea); + // Add LMMS root to the tree + m_lmmsRoot = new QTreeWidgetItem(); + m_lmmsRoot->setText( 0, "LMMS" ); + m_descTree->insertTopLevelItem( 0, m_lmmsRoot ); + m_lmmsRoot->setExpanded( true ); + + // Add LV2 root to the tree + m_lv2Root = new QTreeWidgetItem(); + m_lv2Root->setText( 0, "LV2" ); + m_descTree->insertTopLevelItem( 1, m_lv2Root ); + + // Add plugins to the tree roots + addPlugins(); + + // Resize + m_descTree->header()->setSectionResizeMode( QHeaderView::ResizeToContents ); + + // Hide empty roots + updateRootVisibilities(); } +void PluginBrowser::updateRootVisibility( int rootIndex ) +{ + QTreeWidgetItem * root = m_descTree->topLevelItem( rootIndex ); + root->setHidden( !root->childCount() ); +} -PluginDescList::PluginDescList(QWidget *parent) : - QWidget(parent) +void PluginBrowser::updateRootVisibilities() { - QVBoxLayout* layout = new QVBoxLayout(this); + int rootCount = m_descTree->topLevelItemCount(); + for (int rootIndex = 0; rootIndex < rootCount; ++rootIndex) + { + updateRootVisibility( rootIndex ); + } +} + +void PluginBrowser::onFilterChanged( const QString & filter ) +{ + int rootCount = m_descTree->topLevelItemCount(); + for (int rootIndex = 0; rootIndex < rootCount; ++rootIndex) + { + QTreeWidgetItem * root = m_descTree->topLevelItem( rootIndex ); + + int itemCount = root->childCount(); + for (int itemIndex = 0; itemIndex < itemCount; ++itemIndex) + { + QTreeWidgetItem * item = root->child( itemIndex ); + PluginDescWidget * descWidget = static_cast + (m_descTree->itemWidget( item, 0)); + if (descWidget->name().contains(filter, Qt::CaseInsensitive)) + { + item->setHidden( false ); + } + else + { + item->setHidden( true ); + } + } + } +} + + +void PluginBrowser::addPlugins() +{ QList descs = pluginFactory->descriptors(Plugin::Instrument); std::sort( descs.begin(), @@ -85,37 +155,71 @@ PluginDescList::PluginDescList(QWidget *parent) : return qstricmp( d1->displayName, d2->displayName ) < 0 ? true : false; } ); - for (const Plugin::Descriptor* desc : descs) + + typedef Plugin::Descriptor::SubPluginFeatures::KeyList PluginKeyList; + typedef Plugin::Descriptor::SubPluginFeatures::Key PluginKey; + PluginKeyList subPluginKeys, pluginKeys; + + for (const Plugin::Descriptor* desc: descs) { - PluginDescWidget* p = new PluginDescWidget( *desc, this ); - p->show(); - layout->addWidget(p); + if ( desc->subPluginFeatures ) + { + desc->subPluginFeatures->listSubPluginKeys( + desc, + subPluginKeys ); + } + else + { + pluginKeys << PluginKey( desc, desc->name ); + } } - setLayout(layout); - layout->addStretch(); + pluginKeys += subPluginKeys; + + for (const PluginKey& key : pluginKeys) + { + QTreeWidgetItem * item = new QTreeWidgetItem(); + if ( key.desc->name == QStringLiteral("lv2instrument") ) + { + m_lv2Root->addChild( item ); + } + else + { + m_lmmsRoot->addChild( item ); + } + PluginDescWidget* p = new PluginDescWidget( key, m_descTree ); + m_descTree->setItemWidget( item, 0, p ); + } } -PluginDescWidget::PluginDescWidget( const Plugin::Descriptor & _pd, +PluginDescWidget::PluginDescWidget(const PluginKey &_pk, QWidget * _parent ) : QWidget( _parent ), - m_pluginDescriptor( _pd ), - m_logo( _pd.logo->pixmap() ), + m_pluginKey( _pk ), + m_logo( _pk.logo()->pixmap() ), m_mouseOver( false ) { setFixedHeight( DEFAULT_HEIGHT ); setMouseTracking( true ); setCursor( Qt::PointingHandCursor ); - setToolTip(_pd.description); + setToolTip(_pk.description()); +} + + + + +QString PluginDescWidget::name() const +{ + return m_pluginKey.displayName(); } -void PluginDescWidget::paintEvent( QPaintEvent * e ) +void PluginDescWidget::paintEvent( QPaintEvent * ) { QPainter p( this ); @@ -126,7 +230,7 @@ void PluginDescWidget::paintEvent( QPaintEvent * e ) style()->drawPrimitive( QStyle::PE_Widget, &o, &p, this ); // Draw the rest - const int s = 16 + ( 32 * ( tLimit( height(), 24, 60 ) - 24 ) ) / + const int s = 16 + ( 32 * ( qBound( 24, height(), 60 ) - 24 ) ) / ( 60 - 24 ); const QSize logo_size( s, s ); QPixmap logo = m_logo.scaled( logo_size, Qt::KeepAspectRatio, @@ -140,8 +244,7 @@ void PluginDescWidget::paintEvent( QPaintEvent * e ) } p.setFont( f ); - p.drawText( 10 + logo_size.width(), 15, - m_pluginDescriptor.displayName ); + p.drawText( 10 + logo_size.width(), 15, m_pluginKey.displayName()); } @@ -169,10 +272,11 @@ void PluginDescWidget::leaveEvent( QEvent * _e ) void PluginDescWidget::mousePressEvent( QMouseEvent * _me ) { - if( _me->button() == Qt::LeftButton ) + if ( _me->button() == Qt::LeftButton ) { - new StringPairDrag( "instrument", m_pluginDescriptor.name, - m_logo, this ); + Engine::setDndPluginKey(&m_pluginKey); + new StringPairDrag("instrument", + QString::fromUtf8(m_pluginKey.desc->name), m_logo, this); leaveEvent( _me ); } } diff --git a/src/gui/SetupDialog.cpp b/src/gui/SetupDialog.cpp index 38db2287c02..5ab9630b2e1 100644 --- a/src/gui/SetupDialog.cpp +++ b/src/gui/SetupDialog.cpp @@ -139,7 +139,9 @@ SetupDialog::SetupDialog( ConfigTabs _tab_to_open ) : "displaywaveform").toInt() ), m_disableAutoQuit(ConfigManager::inst()->value( "ui", "disableautoquit", "1" ).toInt() ), - m_vstEmbedMethod( ConfigManager::inst()->vstEmbedMethod() ) + m_vstEmbedMethod( ConfigManager::inst()->vstEmbedMethod() ), + m_vstAlwaysOnTop( ConfigManager::inst()->value( "ui", + "vstalwaysontop" ).toInt() ) { setWindowIcon( embed::getIconPixmap( "setup_general" ) ); setWindowTitle( tr( "Setup LMMS" ) ); @@ -259,7 +261,7 @@ SetupDialog::SetupDialog( ConfigTabs _tab_to_open ) : } TabWidget* embed_tw = new TabWidget( tr( "PLUGIN EMBEDDING" ), general); - embed_tw->setFixedHeight( 48 ); + embed_tw->setFixedHeight( 66 ); m_vstEmbedComboBox = new QComboBox( embed_tw ); m_vstEmbedComboBox->move( XDelta, YDelta ); @@ -278,6 +280,17 @@ SetupDialog::SetupDialog( ConfigTabs _tab_to_open ) : m_vstEmbedComboBox->addItem( tr( "Embed using XEmbed protocol" ), "xembed" ); } m_vstEmbedComboBox->setCurrentIndex( m_vstEmbedComboBox->findData( m_vstEmbedMethod ) ); + connect( m_vstEmbedComboBox, SIGNAL( currentIndexChanged( int ) ), + this, SLOT( vstEmbedMethodChanged() ) ); + + m_vstAlwaysOnTopCheckBox = new LedCheckBox( + tr( "Keep plugin windows on top when not embedded" ), + embed_tw ); + m_vstAlwaysOnTopCheckBox->move( 20, 44 ); + m_vstAlwaysOnTopCheckBox->setChecked( m_vstAlwaysOnTop ); + m_vstAlwaysOnTopCheckBox->setVisible( m_vstEmbedMethod == "none" ); + connect( m_vstAlwaysOnTopCheckBox, SIGNAL( toggled( bool ) ), + this, SLOT( toggleVSTAlwaysOnTop( bool ) ) ); TabWidget * lang_tw = new TabWidget( tr( "LANGUAGE" ), general ); lang_tw->setFixedHeight( 48 ); @@ -427,7 +440,7 @@ SetupDialog::SetupDialog( ConfigTabs _tab_to_open ) : #endif addPathEntry("Themes directory", m_artworkDir, SLOT(setArtworkDir(const QString &)), - SLOT(openArtwortDir()), + SLOT(openArtworkDir()), m_adLineEdit, pathSelectors); pathSelectorLayout->addStretch(); addPathEntry("Background artwork", m_backgroundArtwork, @@ -854,7 +867,9 @@ void SetupDialog::accept() QString::number( m_disableAutoQuit ) ); ConfigManager::inst()->setValue( "app", "language", m_lang ); ConfigManager::inst()->setValue( "ui", "vstembedmethod", - m_vstEmbedComboBox->currentData().toString() ); + m_vstEmbedMethod ); + ConfigManager::inst()->setValue( "ui", "vstalwaysontop", + QString::number( m_vstAlwaysOnTop ) ); ConfigManager::inst()->setWorkingDir(QDir::fromNativeSeparators(m_workingDir)); @@ -1057,6 +1072,20 @@ void SetupDialog::toggleOneInstrumentTrackWindow( bool _enabled ) m_oneInstrumentTrackWindow = _enabled; } + +void SetupDialog::vstEmbedMethodChanged() +{ + m_vstEmbedMethod = m_vstEmbedComboBox->currentData().toString(); + m_vstAlwaysOnTopCheckBox->setVisible( m_vstEmbedMethod == "none" ); +} + + +void SetupDialog::toggleVSTAlwaysOnTop( bool en ) +{ + m_vstAlwaysOnTop = en; +} + + void SetupDialog::setLanguage( int lang ) { m_lang = m_languages[lang]; diff --git a/src/gui/TimeLineWidget.cpp b/src/gui/TimeLineWidget.cpp index 9c2f3855997..7c7f48c4ef3 100644 --- a/src/gui/TimeLineWidget.cpp +++ b/src/gui/TimeLineWidget.cpp @@ -84,6 +84,7 @@ TimeLineWidget::TimeLineWidget( const int xoff, const int yoff, const float ppt, m_xOffset -= s_posMarkerPixmap->width() / 2; + setMouseTracking(true); m_pos.m_timeLine = this; QTimer * updateTimer = new QTimer( this ); @@ -351,6 +352,7 @@ void TimeLineWidget::mousePressEvent( QMouseEvent* event ) void TimeLineWidget::mouseMoveEvent( QMouseEvent* event ) { + parentWidget()->update(); // essential for widgets that this timeline had taken their mouse move event from. const MidiTime t = m_begin + static_cast( qMax( event->x() - m_xOffset - m_moveXOff, 0 ) * MidiTime::ticksPerTact() / m_ppt ); switch( m_action ) diff --git a/src/gui/TrackContainerView.cpp b/src/gui/TrackContainerView.cpp index 2772ef104d0..7c69d5eb824 100644 --- a/src/gui/TrackContainerView.cpp +++ b/src/gui/TrackContainerView.cpp @@ -384,8 +384,9 @@ void TrackContainerView::dropEvent( QDropEvent * _de ) InstrumentTrack * it = dynamic_cast( Track::create( Track::InstrumentTrack, m_tc ) ); - Instrument * i = it->loadInstrument( - pluginFactory->pluginSupportingExtension(FileItem::extension(value)).name()); + PluginFactory::PluginInfoAndKey piakn = + pluginFactory->pluginSupportingExtension(FileItem::extension(value)); + Instrument * i = it->loadInstrument(piakn.info.name(), &piakn.key); i->loadFile( value ); //it->toggledInstrumentTrackButton( true ); _de->accept(); @@ -529,7 +530,8 @@ InstrumentLoaderThread::InstrumentLoaderThread( QObject *parent, InstrumentTrack void InstrumentLoaderThread::run() { - Instrument *i = m_it->loadInstrument( m_name ); + Instrument *i = m_it->loadInstrument(m_name, nullptr, + true /*always DnD*/); QObject *parent = i->parent(); i->setParent( 0 ); i->moveToThread( m_containerThread ); diff --git a/src/gui/dialogs/VersionedSaveDialog.cpp b/src/gui/dialogs/VersionedSaveDialog.cpp index e2acff590c4..18993c23bf4 100644 --- a/src/gui/dialogs/VersionedSaveDialog.cpp +++ b/src/gui/dialogs/VersionedSaveDialog.cpp @@ -28,13 +28,15 @@ #include #include #include +#include +#include #include "VersionedSaveDialog.h" - - +#include "LedCheckbox.h" VersionedSaveDialog::VersionedSaveDialog( QWidget *parent, + QWidget *saveOptionsWidget, const QString &caption, const QString &directory, const QString &filter ) : @@ -63,6 +65,17 @@ VersionedSaveDialog::VersionedSaveDialog( QWidget *parent, hLayout->addWidget( minusButton ); layout->addLayout( hLayout, 2, 1 ); + if (saveOptionsWidget) { + auto groupBox = new QGroupBox(tr("Save Options")); + auto optionsLayout = new QGridLayout; + + optionsLayout->addWidget(saveOptionsWidget, 0, 0, Qt::AlignLeft); + + groupBox->setLayout(optionsLayout); + + layout->addWidget(groupBox, layout->rowCount() + 1, 0, 1, -1); + } + // Connect + and - buttons connect( plusButton, SIGNAL( clicked() ), this, SLOT( incrementVersion() )); connect( minusButton, SIGNAL( clicked() ), this, SLOT( decrementVersion() )); @@ -160,3 +173,14 @@ bool VersionedSaveDialog::fileExistsQuery( QString FileName, QString WindowTitle } return fileExists; } + +SaveOptionsWidget::SaveOptionsWidget(Song::SaveOptions &saveOptions) { + auto *layout = new QVBoxLayout(); + + m_discardMIDIConnectionsCheckbox = new LedCheckBox(nullptr); + m_discardMIDIConnectionsCheckbox->setText(tr("Discard MIDI connections")); + m_discardMIDIConnectionsCheckbox->setModel(&saveOptions.discardMIDIConnections); + layout->addWidget(m_discardMIDIConnectionsCheckbox); + + setLayout(layout); +} diff --git a/src/gui/editors/AutomationEditor.cpp b/src/gui/editors/AutomationEditor.cpp index e00c107d1dc..94e9d5cc86a 100644 --- a/src/gui/editors/AutomationEditor.cpp +++ b/src/gui/editors/AutomationEditor.cpp @@ -405,6 +405,7 @@ void AutomationEditor::keyPressEvent(QKeyEvent * ke ) } break; + case Qt::Key_Backspace: case Qt::Key_Delete: deleteSelectedValues(); ke->accept(); @@ -430,8 +431,8 @@ void AutomationEditor::leaveEvent(QEvent * e ) { QApplication::restoreOverrideCursor(); } - QWidget::leaveEvent( e ); + update(); } @@ -1510,8 +1511,11 @@ void AutomationEditor::paintEvent(QPaintEvent * pe ) case SELECT: cursor = s_toolSelect; break; case MOVE: cursor = s_toolMove; break; } - p.drawPixmap( mapFromGlobal( QCursor::pos() ) + QPoint( 8, 8 ), - *cursor ); + QPoint mousePosition = mapFromGlobal( QCursor::pos() ); + if( cursor != NULL && mousePosition.y() > TOP_MARGIN + SCROLLBAR_SIZE) + { + p.drawPixmap( mousePosition + QPoint( 8, 8 ), *cursor ); + } } @@ -2487,6 +2491,9 @@ void AutomationEditorWindow::dropEvent( QDropEvent *_de ) void AutomationEditorWindow::dragEnterEvent( QDragEnterEvent *_dee ) { + if (! m_editor->validPattern() ) { + return; + } StringPairDrag::processDragEnterEvent( _dee, "automatable_model" ); } diff --git a/src/gui/editors/Editor.cpp b/src/gui/editors/Editor.cpp index b82453acf03..c27eda4c06c 100644 --- a/src/gui/editors/Editor.cpp +++ b/src/gui/editors/Editor.cpp @@ -32,6 +32,7 @@ #include #include #include +#include void Editor::setPauseIcon(bool displayPauseIcon) @@ -128,8 +129,18 @@ QAction *Editor::playAction() const return m_playAction; } - - +void Editor::closeEvent( QCloseEvent * _ce ) +{ + if( parentWidget() ) + { + parentWidget()->hide(); + } + else + { + hide(); + } + _ce->ignore(); + } DropToolBar::DropToolBar(QWidget* parent) : QToolBar(parent) { @@ -145,3 +156,6 @@ void DropToolBar::dropEvent(QDropEvent* event) { dropped(event); } + + + diff --git a/src/gui/editors/PianoRoll.cpp b/src/gui/editors/PianoRoll.cpp index bf65444f290..5edc5d47c84 100644 --- a/src/gui/editors/PianoRoll.cpp +++ b/src/gui/editors/PianoRoll.cpp @@ -709,7 +709,7 @@ void PianoRoll::setCurrentPattern( Pattern* newPattern ) { central_key = central_key / total_notes - ( KeysPerOctave * NumOctaves - m_totalKeysToScroll ) / 2; - m_startKey = tLimit( central_key, 0, NumOctaves * KeysPerOctave ); + m_startKey = qBound( 0, central_key, NumOctaves * KeysPerOctave ); } // resizeEvent() does the rest for us (scrolling, range-checking @@ -1007,6 +1007,9 @@ void PianoRoll::drawDetuningInfo( QPainter & _p, const Note * _n, int _x, { int middle_y = _y + KEY_LINE_HEIGHT / 2; _p.setPen( noteColor() ); + _p.setClipRect(WHITE_KEY_WIDTH, PR_TOP_MARGIN, + width() - WHITE_KEY_WIDTH, + keyAreaBottom() - PR_TOP_MARGIN); int old_x = 0; int old_y = 0; @@ -1188,9 +1191,11 @@ void PianoRoll::keyPressEvent(QKeyEvent* ke) { const int key_num = PianoView::getKeyFromKeyEvent( ke ) + ( DefaultOctave - 1 ) * KeysPerOctave; - if(! ke->isAutoRepeat() && key_num > -1) + if (!ke->isAutoRepeat() && key_num > -1) { - m_pattern->instrumentTrack()->pianoModel()->handleKeyPress( key_num ); + m_pattern->instrumentTrack()->pianoModel()->handleKeyPress(key_num); + // if a chord is set, play all chord notes (simulate click on all): + playChordNotes(key_num); ke->accept(); } } @@ -1319,6 +1324,7 @@ void PianoRoll::keyPressEvent(QKeyEvent* ke) clearSelectedNotes(); break; + case Qt::Key_Backspace: case Qt::Key_Delete: deleteSelectedNotes(); ke->accept(); @@ -1387,10 +1393,11 @@ void PianoRoll::keyReleaseEvent(QKeyEvent* ke ) if( hasValidPattern() && ke->modifiers() == Qt::NoModifier ) { const int key_num = PianoView::getKeyFromKeyEvent( ke ) + ( DefaultOctave - 1 ) * KeysPerOctave; - - if( ! ke->isAutoRepeat() && key_num > -1 ) + if (!ke->isAutoRepeat() && key_num > -1) { - m_pattern->instrumentTrack()->pianoModel()->handleKeyRelease( key_num ); + m_pattern->instrumentTrack()->pianoModel()->handleKeyRelease(key_num); + // if a chord is set, simulate click release on all chord notes + pauseChordNotes(key_num); ke->accept(); } } @@ -1428,6 +1435,7 @@ void PianoRoll::leaveEvent(QEvent * e ) QWidget::leaveEvent( e ); s_textFloat->hide(); + update(); // cleaning inner mouse-related graphics } @@ -1835,7 +1843,9 @@ void PianoRoll::mousePressEvent(QMouseEvent * me ) { // left click - play the note int v = ( (float) x ) / ( (float) WHITE_KEY_WIDTH ) * MidiDefaultVelocity; - m_pattern->instrumentTrack()->pianoModel()->handleKeyPress( key_num, v ); + m_pattern->instrumentTrack()->pianoModel()->handleKeyPress(key_num, v); + // if a chord is set, play the chords notes as well: + playChordNotes(key_num, v); } } else @@ -1938,7 +1948,10 @@ void PianoRoll::testPlayNote( Note * n ) const int baseVelocity = m_pattern->instrumentTrack()->midiPort()->baseVelocity(); - m_pattern->instrumentTrack()->pianoModel()->handleKeyPress( n->key(), n->midiVelocity( baseVelocity ) ); + m_pattern->instrumentTrack()->pianoModel()->handleKeyPress(n->key(), n->midiVelocity(baseVelocity)); + + // if a chord is set, play the chords notes as well: + playChordNotes(n->key(), n->midiVelocity(baseVelocity)); MidiEvent event( MidiMetaEvent, -1, n->key(), panningToMidi( n->getPanning() ) ); @@ -1961,6 +1974,9 @@ void PianoRoll::pauseTestNotes( bool pause ) { // stop note m_pattern->instrumentTrack()->pianoModel()->handleKeyRelease( note->key() ); + + // if a chord was set, stop the chords notes as well: + pauseChordNotes(note->key()); } else { @@ -1972,19 +1988,56 @@ void PianoRoll::pauseTestNotes( bool pause ) } } +void PianoRoll::playChordNotes(int key, int velocity) +{ + // if a chord is set, play the chords notes beside the base note. + Piano *pianoModel = m_pattern->instrumentTrack()->pianoModel(); + const InstrumentFunctionNoteStacking::Chord & chord = + InstrumentFunctionNoteStacking::ChordTable::getInstance().getChordByName( + m_chordModel.currentText()); + if (!chord.isEmpty()) + { + for (int i = 1; i < chord.size(); ++i) + { + pianoModel->handleKeyPress(key + chord[i], velocity); + } + } +} + +void PianoRoll::pauseChordNotes(int key) +{ + // if a chord was set, stop the chords notes beside the base note. + Piano *pianoModel = m_pattern->instrumentTrack()->pianoModel(); + const InstrumentFunctionNoteStacking::Chord & chord = + InstrumentFunctionNoteStacking::ChordTable::getInstance().getChordByName( + m_chordModel.currentText()); + if (!chord.isEmpty()) + { + for (int i = 1; i < chord.size(); ++i) + { + pianoModel->handleKeyRelease(key + chord[i]); + } + } +} + void PianoRoll::testPlayKey( int key, int velocity, int pan ) { + Piano *pianoModel = m_pattern->instrumentTrack()->pianoModel(); // turn off old key - m_pattern->instrumentTrack()->pianoModel()->handleKeyRelease( m_lastKey ); + pianoModel->handleKeyRelease( m_lastKey ); + // if a chord was set, stop the chords notes as well + pauseChordNotes(m_lastKey); // remember which one we're playing m_lastKey = key; // play new key - m_pattern->instrumentTrack()->pianoModel()->handleKeyPress( key, velocity ); + pianoModel->handleKeyPress( key, velocity ); + // and if a chord is set, play chord notes: + playChordNotes(key, velocity); } @@ -2114,6 +2167,7 @@ void PianoRoll::mouseReleaseEvent( QMouseEvent * me ) { m_pattern->instrumentTrack()->pianoModel()-> handleKeyRelease( note->key() ); + pauseChordNotes(note->key()); note->setIsPlaying( false ); } } @@ -2121,6 +2175,7 @@ void PianoRoll::mouseReleaseEvent( QMouseEvent * me ) // stop playing keys that we let go of m_pattern->instrumentTrack()->pianoModel()-> handleKeyRelease( m_lastKey ); + pauseChordNotes(m_lastKey); } m_currentNote = NULL; @@ -2160,9 +2215,9 @@ void PianoRoll::mouseMoveEvent( QMouseEvent * me ) else if( m_action == ActionResizeNoteEditArea ) { // change m_notesEditHeight and then repaint - m_notesEditHeight = tLimit( - m_oldNotesEditHeight - ( me->y() - m_moveStartY ), + m_notesEditHeight = qBound( NOTE_EDIT_MIN_HEIGHT, + m_oldNotesEditHeight - ( me->y() - m_moveStartY ), height() - PR_TOP_MARGIN - NOTE_EDIT_RESIZE_BAR - PR_BOTTOM_MARGIN - KEY_AREA_MIN_HEIGHT ); @@ -2244,16 +2299,18 @@ void PianoRoll::mouseMoveEvent( QMouseEvent * me ) if( me->buttons() & Qt::LeftButton ) { - vol = tLimit( MinVolume + + vol = qBound( MinVolume, + MinVolume + ( ( (float)noteEditBottom() ) - ( (float)me->y() ) ) / ( (float)( noteEditBottom() - noteEditTop() ) ) * ( MaxVolume - MinVolume ), - MinVolume, MaxVolume ); - pan = tLimit( PanningLeft + + MaxVolume ); + pan = qBound( PanningLeft, + PanningLeft + ( (float)( noteEditBottom() - me->y() ) ) / ( (float)( noteEditBottom() - noteEditTop() ) ) * ( (float)( PanningRight - PanningLeft ) ), - PanningLeft, PanningRight); + PanningRight); } if( m_noteEditMode == NoteEditVolume ) @@ -2308,6 +2365,7 @@ void PianoRoll::mouseMoveEvent( QMouseEvent * me ) { // mouse not over this note, stop playing it. m_pattern->instrumentTrack()->pianoModel()->handleKeyRelease( n->key() ); + pauseChordNotes(n->key()); n->setIsPlaying( false ); } @@ -3254,6 +3312,9 @@ void PianoRoll::paintEvent(QPaintEvent * pe ) drawDetuningInfo( p, note, x + WHITE_KEY_WIDTH, y_base - key * KEY_LINE_HEIGHT ); + p.setClipRect(WHITE_KEY_WIDTH, PR_TOP_MARGIN, + width() - WHITE_KEY_WIDTH, + height() - PR_TOP_MARGIN); } } @@ -3375,10 +3436,10 @@ void PianoRoll::paintEvent(QPaintEvent * pe ) case ModeSelect: cursor = s_toolSelect; break; case ModeEditDetuning: cursor = s_toolOpen; break; } - if( cursor != NULL ) + QPoint mousePosition = mapFromGlobal( QCursor::pos() ); + if( cursor != NULL && mousePosition.y() > keyAreaTop() && mousePosition.x() > noteEditLeft()) { - p.drawPixmap( mapFromGlobal( QCursor::pos() ) + QPoint( 8, 8 ), - *cursor ); + p.drawPixmap( mousePosition + QPoint( 8, 8 ), *cursor ); } } @@ -3454,7 +3515,7 @@ void PianoRoll::wheelEvent(QWheelEvent * we ) { for ( Note * n : nv ) { - volume_t vol = tLimit( n->getVolume() + step, MinVolume, MaxVolume ); + volume_t vol = qBound( MinVolume, n->getVolume() + step, MaxVolume ); n->setVolume( vol ); } bool allVolumesEqual = std::all_of( nv.begin(), nv.end(), @@ -3473,7 +3534,7 @@ void PianoRoll::wheelEvent(QWheelEvent * we ) { for ( Note * n : nv ) { - panning_t pan = tLimit( n->getPanning() + step, PanningLeft, PanningRight ); + panning_t pan = qBound( PanningLeft, n->getPanning() + step, PanningRight ); n->setPanning( pan ); } bool allPansEqual = std::all_of( nv.begin(), nv.end(), diff --git a/src/gui/editors/SongEditor.cpp b/src/gui/editors/SongEditor.cpp index 3e57ba026e1..b397434b102 100644 --- a/src/gui/editors/SongEditor.cpp +++ b/src/gui/editors/SongEditor.cpp @@ -304,12 +304,12 @@ void SongEditor::setEditModeSelect() void SongEditor::keyPressEvent( QKeyEvent * ke ) { if( ke->modifiers() & Qt::ShiftModifier && - ke->key() == Qt::Key_Insert ) + ( ke->key() == Qt::Key_Insert || ke->key() == Qt::Key_Enter || ke->key() == Qt::Key_Return ) ) { m_song->insertBar(); } else if( ke->modifiers() & Qt::ShiftModifier && - ke->key() == Qt::Key_Delete ) + ( ke->key() == Qt::Key_Delete || ke->key() == Qt::Key_Backspace ) ) { m_song->removeBar(); } diff --git a/src/gui/widgets/ComboBox.cpp b/src/gui/widgets/ComboBox.cpp index 0673ee32d4b..c796bfa74c8 100644 --- a/src/gui/widgets/ComboBox.cpp +++ b/src/gui/widgets/ComboBox.cpp @@ -42,7 +42,7 @@ QPixmap * ComboBox::s_background = NULL; QPixmap * ComboBox::s_arrow = NULL; QPixmap * ComboBox::s_arrowSelected = NULL; -const int CB_ARROW_BTN_WIDTH = 20; +const int CB_ARROW_BTN_WIDTH = 18; ComboBox::ComboBox( QWidget * _parent, const QString & _name ) : @@ -198,7 +198,7 @@ void ComboBox::paintEvent( QPaintEvent * _pe ) QPixmap * arrow = m_pressed ? s_arrowSelected : s_arrow; - p.drawPixmap( width() - CB_ARROW_BTN_WIDTH + 5, 4, *arrow ); + p.drawPixmap( width() - CB_ARROW_BTN_WIDTH + 3, 4, *arrow ); if( model() && model()->size() > 0 ) { @@ -251,4 +251,3 @@ void ComboBox::setItem( QAction* item ) - diff --git a/src/gui/widgets/FadeButton.cpp b/src/gui/widgets/FadeButton.cpp index d4244701ab1..b633286b18b 100644 --- a/src/gui/widgets/FadeButton.cpp +++ b/src/gui/widgets/FadeButton.cpp @@ -35,16 +35,21 @@ const float FadeDuration = 300; -FadeButton::FadeButton( const QColor & _normal_color, - const QColor & _activated_color, QWidget * _parent ) : +FadeButton::FadeButton(const QColor & _normal_color, + const QColor & _activated_color, + const QColor & holdColor, + QWidget * _parent) : QAbstractButton( _parent ), m_stateTimer(), + m_releaseTimer(), m_normalColor( _normal_color ), - m_activatedColor( _activated_color ) + m_activatedColor( _activated_color ), + m_holdColor( holdColor ) { - setAttribute( Qt::WA_OpaquePaintEvent, true ); - setCursor( QCursor( embed::getIconPixmap( "hand" ), 3, 3 ) ); - setFocusPolicy( Qt::NoFocus ); + setAttribute(Qt::WA_OpaquePaintEvent, true); + setCursor(QCursor(embed::getIconPixmap("hand"), 3, 3)); + setFocusPolicy(Qt::NoFocus); + activeNotes = 0; } @@ -54,7 +59,7 @@ FadeButton::~FadeButton() { } -void FadeButton::setActiveColor( const QColor & activated_color ) +void FadeButton::setActiveColor(const QColor & activated_color) { m_activatedColor = activated_color; } @@ -65,63 +70,104 @@ void FadeButton::setActiveColor( const QColor & activated_color ) void FadeButton::activate() { m_stateTimer.restart(); + activeNotes++; signalUpdate(); } -void FadeButton::customEvent( QEvent * ) +void FadeButton::noteEnd() { - update(); + if (activeNotes <= 0) + { + qWarning("noteEnd() triggered without a corresponding activate()!"); + activeNotes = 0; + } + else + { + activeNotes--; + } + + if (activeNotes == 0) + { + m_releaseTimer.restart(); + } + + signalUpdate(); } -void FadeButton::paintEvent( QPaintEvent * _pe ) +void FadeButton::customEvent(QEvent *) +{ + update(); +} + + + +void FadeButton::paintEvent(QPaintEvent * _pe) { QColor col = m_normalColor; - if( ! m_stateTimer.isNull() && m_stateTimer.elapsed() < FadeDuration ) + + if(!m_stateTimer.isNull() && m_stateTimer.elapsed() < FadeDuration) + { + // The first part of the fade, when a note is triggered. + col = fadeToColor(m_activatedColor, m_holdColor, m_stateTimer, FadeDuration); + QTimer::singleShot(20, this, SLOT(update())); + } + else if (!m_stateTimer.isNull() + && m_stateTimer.elapsed() >= FadeDuration + && activeNotes > 0) + { + // The fade is done, but at least one note is still held. + col = m_holdColor; + } + else if (!m_releaseTimer.isNull() && m_releaseTimer.elapsed() < FadeDuration) + { + // Last note just ended. Fade to default color. + col = fadeToColor(m_holdColor, m_normalColor, m_releaseTimer, FadeDuration); + QTimer::singleShot(20, this, SLOT(update())); + } + else { - const float state = 1 - m_stateTimer.elapsed() / FadeDuration; - const int r = (int)( m_normalColor.red() * - ( 1.0f - state ) + - m_activatedColor.red() * state ); - const int g = (int)( m_normalColor.green() * - ( 1.0f - state ) + - m_activatedColor.green() * state ); - const int b = (int)( m_normalColor.blue() * - ( 1.0f - state ) + - m_activatedColor.blue() * state ); - col.setRgb( r, g, b ); - QTimer::singleShot( 20, this, SLOT( update() ) ); + // No fade, no notes. Set to default color. + col = m_normalColor; } - QPainter p( this ); - p.fillRect( rect(), col ); + QPainter p(this); + p.fillRect(rect(), col); int w = rect().right(); int h = rect().bottom(); - p.setPen( m_normalColor.darker(130) ); - p.drawLine( w, 1, w, h ); - p.drawLine( 1, h, w, h ); - p.setPen( m_normalColor.lighter(130) ); - p.drawLine( 0, 0, 0, h-1 ); - p.drawLine( 0, 0, w, 0 ); + p.setPen(m_normalColor.darker(130)); + p.drawLine(w, 1, w, h); + p.drawLine(1, h, w, h); + p.setPen(m_normalColor.lighter(130)); + p.drawLine(0, 0, 0, h-1); + p.drawLine(0, 0, w, 0); } +QColor FadeButton::fadeToColor(QColor startCol, QColor endCol, QTime timer, float duration) +{ + QColor col; + + const float state = 1 - timer.elapsed() / duration; + const int r = (int)(endCol.red() * (1.0f - state) + + startCol.red() * state); + const int g = (int)(endCol.green() * (1.0f - state) + + startCol.green() * state); + const int b = (int)(endCol.blue() * (1.0f - state) + + startCol.blue() * state); + col.setRgb(r, g, b); + + return col; +} void FadeButton::signalUpdate() { - QApplication::postEvent( this, new updateEvent() ); + QApplication::postEvent(this, new updateEvent()); } - - - - - - - diff --git a/src/gui/widgets/FxLineLcdSpinBox.cpp b/src/gui/widgets/FxLineLcdSpinBox.cpp new file mode 100644 index 00000000000..bfe4a9637f9 --- /dev/null +++ b/src/gui/widgets/FxLineLcdSpinBox.cpp @@ -0,0 +1,66 @@ +/* + * FxLineLcdSpinBox.cpp - a specialization of LcdSpnBox for setting FX channels + * + * Copyright (c) 2004-2014 Tobias Doerffel + * + * This file is part of LMMS - https://lmms.io + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program (see COPYING); if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + */ + +#include "FxLineLcdSpinBox.h" + +#include "CaptionMenu.h" +#include "FxMixerView.h" +#include "GuiApplication.h" +#include "Track.h" + +void FxLineLcdSpinBox::setTrackView(TrackView * tv) +{ + m_tv = tv; +} + +void FxLineLcdSpinBox::mouseDoubleClickEvent(QMouseEvent* event) +{ + gui->fxMixerView()->setCurrentFxLine(model()->value()); + + gui->fxMixerView()->parentWidget()->show(); + gui->fxMixerView()->show();// show fxMixer window + gui->fxMixerView()->setFocus();// set focus to fxMixer window + //engine::getFxMixerView()->raise(); +} + +void FxLineLcdSpinBox::contextMenuEvent(QContextMenuEvent* event) +{ + // for the case, the user clicked right while pressing left mouse- + // button, the context-menu appears while mouse-cursor is still hidden + // and it isn't shown again until user does something which causes + // an QApplication::restoreOverrideCursor()-call... + mouseReleaseEvent(nullptr); + + QPointer contextMenu = new CaptionMenu(model()->displayName(), this); + + if (QMenu *fxMenu = m_tv->createFxMenu( + tr("Assign to:"), tr("New FX Channel"))) + { + contextMenu->addMenu(fxMenu); + + contextMenu->addSeparator(); + } + addDefaultActions(contextMenu); + contextMenu->exec(QCursor::pos()); +} diff --git a/src/gui/widgets/Graph.cpp b/src/gui/widgets/Graph.cpp index f93ed523c98..4710089dd1a 100644 --- a/src/gui/widgets/Graph.cpp +++ b/src/gui/widgets/Graph.cpp @@ -635,13 +635,14 @@ void graphModel::smoothNonCyclic() emit samplesChanged(0, length()-1); } -//makes a cyclic convolution. -void graphModel::convolve(const float *convolution, const int convolutionLength, const int centerOffset) +void graphModel::convolve(const float *convolution, + const int convolutionLength, const int centerOffset) { // store values in temporary array QVector temp = m_samples; const int graphLength = length(); float sum; + // make a cyclic convolution for ( int i = 0; i < graphLength; i++ ) { sum = 0; diff --git a/src/gui/widgets/TabWidget.cpp b/src/gui/widgets/TabWidget.cpp index f06710098e3..9bdbec2e0be 100644 --- a/src/gui/widgets/TabWidget.cpp +++ b/src/gui/widgets/TabWidget.cpp @@ -34,8 +34,10 @@ #include "gui_templates.h" #include "embed.h" -TabWidget::TabWidget( const QString & caption, QWidget * parent, bool usePixmap ) : +TabWidget::TabWidget(const QString & caption, QWidget * parent, bool usePixmap, + bool resizable) : QWidget( parent ), + m_resizable( resizable ), m_activeTab( 0 ), m_caption( caption ), m_usePixmap( usePixmap ), @@ -81,7 +83,10 @@ void TabWidget::addTab( QWidget * w, const QString & name, const char *pixmap, i m_widgets[idx] = d; // Position tab's window - w->setFixedSize( width() - 4, height() - m_tabbarHeight ); + if (!m_resizable) + { + w->setFixedSize( width() - 4, height() - m_tabbarHeight ); + } w->move( 2, m_tabbarHeight - 1 ); w->hide(); @@ -189,17 +194,19 @@ void TabWidget::mousePressEvent( QMouseEvent * me ) void TabWidget::resizeEvent( QResizeEvent * ) { - for( widgetStack::iterator it = m_widgets.begin(); - it != m_widgets.end(); ++it ) + if (!m_resizable) { - ( *it ).w->setFixedSize( width() - 4, height() - m_tabbarHeight ); + for ( widgetStack::iterator it = m_widgets.begin(); + it != m_widgets.end(); ++it ) + { + ( *it ).w->setFixedSize( width() - 4, height() - m_tabbarHeight ); + } } } - void TabWidget::paintEvent( QPaintEvent * pe ) { QPainter p( this ); @@ -284,7 +291,7 @@ void TabWidget::wheelEvent( QWheelEvent * we ) if( we->y() > m_tabheight ) { return; - } + } we->accept(); int dir = ( we->delta() < 0 ) ? 1 : -1; @@ -300,6 +307,32 @@ void TabWidget::wheelEvent( QWheelEvent * we ) setActiveTab( tab ); } + + + +// Let parent widgets know how much space this tab widget needs +QSize TabWidget::minimumSizeHint() const +{ + if (m_resizable) + { + int maxWidth = 0, maxHeight = 0; + for ( widgetStack::const_iterator it = m_widgets.begin(); + it != m_widgets.end(); ++it ) + { + maxWidth = std::max(maxWidth, it->w->width()); + maxHeight = std::max(maxHeight, it->w->height()); + } + // "-1" : + // in "addTab", under "Position tab's window", the widget is + // moved up by 1 pixel + return QSize(maxWidth + 4, maxHeight + m_tabbarHeight - 1); + } + else { return QWidget::minimumSizeHint(); } +} + + + + // Return the color to be used to draw a TabWidget's title text (if any) QColor TabWidget::tabTitleText() const { diff --git a/src/gui/widgets/TrackLabelButton.cpp b/src/gui/widgets/TrackLabelButton.cpp index db310a05ec6..361db740e63 100644 --- a/src/gui/widgets/TrackLabelButton.cpp +++ b/src/gui/widgets/TrackLabelButton.cpp @@ -195,9 +195,15 @@ void TrackLabelButton::paintEvent( QPaintEvent * _pe ) InstrumentTrack * it = dynamic_cast( m_trackView->getTrack() ); const PixmapLoader * pl; + auto get_logo = [](InstrumentTrack* it) -> const PixmapLoader* + { + return it->instrument()->key().isValid() + ? it->instrument()->key().logo() + : it->instrument()->descriptor()->logo; + }; if( it && it->instrument() && it->instrument()->descriptor() && - ( pl = it->instrument()->descriptor()->logo ) ) + ( pl = get_logo(it) ) ) { if( pl->pixmapName() != m_iconName ) { diff --git a/src/tracks/BBTrack.cpp b/src/tracks/BBTrack.cpp index c37c1466fcf..205a22087f8 100644 --- a/src/tracks/BBTrack.cpp +++ b/src/tracks/BBTrack.cpp @@ -635,5 +635,6 @@ bool BBTrackView::close() void BBTrackView::clickedTrackLabel() { Engine::getBBTrackContainer()->setCurrentBB( m_bbTrack->index() ); - gui->getBBEditor()->show(); + gui->getBBEditor()->parentWidget()->show(); + gui->getBBEditor()->setFocus( Qt::ActiveWindowFocusReason ); } diff --git a/src/tracks/InstrumentTrack.cpp b/src/tracks/InstrumentTrack.cpp index a927e8aadf1..607131be015 100644 --- a/src/tracks/InstrumentTrack.cpp +++ b/src/tracks/InstrumentTrack.cpp @@ -47,6 +47,7 @@ #include "EffectRackView.h" #include "embed.h" #include "FileBrowser.h" +#include "FxLineLcdSpinBox.h" #include "FxMixer.h" #include "FxMixerView.h" #include "GuiApplication.h" @@ -421,6 +422,7 @@ void InstrumentTrack::processOutEvent( const MidiEvent& event, const MidiTime& t m_instrument->handleMidiEvent( MidiEvent( MidiNoteOff, midiPort()->realOutputChannel(), key, 0 ), time, offset ); } m_midiNotesMutex.unlock(); + emit endNote(); break; default: @@ -591,7 +593,7 @@ int InstrumentTrack::masterKey( int _midi_key ) const { int key = baseNote(); - return tLimit( _midi_key - ( key - DefaultKey ), 0, NumKeys ); + return qBound( 0, _midi_key - ( key - DefaultKey ), NumKeys ); } @@ -739,13 +741,23 @@ void InstrumentTrack::saveTrackSpecificSettings( QDomDocument& doc, QDomElement { QDomElement i = doc.createElement( "instrument" ); i.setAttribute( "name", m_instrument->descriptor()->name ); - m_instrument->saveState( doc, i ); + QDomElement ins = m_instrument->saveState( doc, i ); + if(m_instrument->key().isValid()) { + ins.appendChild( m_instrument->key().saveXML( doc ) ); + } thisElement.appendChild( i ); } m_soundShaping.saveState( doc, thisElement ); m_noteStacking.saveState( doc, thisElement ); m_arpeggio.saveState( doc, thisElement ); - m_midiPort.saveState( doc, thisElement ); + + // Don't save midi port info if the user chose to. + if (Engine::getSong()->isSavingProject() + && !Engine::getSong()->getSaveOptions().discardMIDIConnections.value()) + { + m_midiPort.saveState( doc, thisElement ); + } + m_audioPort.effects()->saveState( doc, thisElement ); } @@ -800,9 +812,13 @@ void InstrumentTrack::loadTrackSpecificSettings( const QDomElement & thisElement } else if( node.nodeName() == "instrument" ) { + typedef Plugin::Descriptor::SubPluginFeatures::Key PluginKey; + PluginKey key( node.toElement().elementsByTagName( "key" ).item( 0 ).toElement() ); + delete m_instrument; m_instrument = NULL; - m_instrument = Instrument::instantiate( node.toElement().attribute( "name" ), this ); + m_instrument = Instrument::instantiate( + node.toElement().attribute( "name" ), this, &key); m_instrument->restoreState( node.firstChildElement() ); emit instrumentChanged(); @@ -816,7 +832,8 @@ void InstrumentTrack::loadTrackSpecificSettings( const QDomElement & thisElement { delete m_instrument; m_instrument = NULL; - m_instrument = Instrument::instantiate( node.nodeName(), this ); + m_instrument = Instrument::instantiate( + node.nodeName(), this, nullptr, true); if( m_instrument->nodeName() == node.nodeName() ) { m_instrument->restoreState( node.toElement() ); @@ -841,15 +858,20 @@ void InstrumentTrack::setPreviewMode( const bool value ) -Instrument * InstrumentTrack::loadInstrument( const QString & _plugin_name ) +Instrument * InstrumentTrack::loadInstrument(const QString & _plugin_name, + const Plugin::Descriptor::SubPluginFeatures::Key *key, bool keyFromDnd) { + if(keyFromDnd) + Q_ASSERT(!key); + silenceAllNotes( true ); lock(); delete m_instrument; - m_instrument = Instrument::instantiate( _plugin_name, this ); + m_instrument = Instrument::instantiate(_plugin_name, this, + key, keyFromDnd); unlock(); - setName( m_instrument->displayName() ); + setName(m_instrument->displayName()); emit instrumentChanged(); @@ -955,6 +977,8 @@ InstrumentTrackView::InstrumentTrackView( InstrumentTrack * _it, TrackContainerV QPalette::Background), QApplication::palette().color( QPalette::Active, QPalette::BrightText ), + QApplication::palette().color( QPalette::Active, + QPalette::BrightText).darker(), getTrackSettingsWidget() ); m_activityIndicator->setGeometry( widgetWidth-2*24-11, 2, 8, 28 ); @@ -965,6 +989,8 @@ InstrumentTrackView::InstrumentTrackView( InstrumentTrack * _it, TrackContainerV this, SLOT( activityIndicatorReleased() ) ); connect( _it, SIGNAL( newNote() ), m_activityIndicator, SLOT( activate() ) ); + connect( _it, SIGNAL( endNote() ), + m_activityIndicator, SLOT( noteEnd() ) ); connect( &_it->m_mutedModel, SIGNAL( dataChanged() ), this, SLOT( muteChanged() ) ); setModel( _it ); @@ -1249,52 +1275,6 @@ QMenu * InstrumentTrackView::createFxMenu(QString title, QString newFxLabel) -class fxLineLcdSpinBox : public LcdSpinBox -{ - Q_OBJECT - public: - fxLineLcdSpinBox( int _num_digits, QWidget * _parent, - const QString & _name ) : - LcdSpinBox( _num_digits, _parent, _name ) {} - - protected: - virtual void mouseDoubleClickEvent ( QMouseEvent * _me ) - { - gui->fxMixerView()->setCurrentFxLine( model()->value() ); - - gui->fxMixerView()->parentWidget()->show(); - gui->fxMixerView()->show();// show fxMixer window - gui->fxMixerView()->setFocus();// set focus to fxMixer window - //engine::getFxMixerView()->raise(); - } - - virtual void contextMenuEvent( QContextMenuEvent* event ) - { - // for the case, the user clicked right while pressing left mouse- - // button, the context-menu appears while mouse-cursor is still hidden - // and it isn't shown again until user does something which causes - // an QApplication::restoreOverrideCursor()-call... - mouseReleaseEvent( NULL ); - - QPointer contextMenu = new CaptionMenu( model()->displayName(), this ); - - // This condition is here just as a safety check, fxLineLcdSpinBox is aways - // created inside a TabWidget inside an InstrumentTrackWindow - if ( InstrumentTrackWindow* window = dynamic_cast( (QWidget *)this->parent()->parent() ) ) - { - QMenu *fxMenu = window->instrumentTrackView()->createFxMenu( tr( "Assign to:" ), tr( "New FX channel" ) ); - contextMenu->addMenu( fxMenu ); - - contextMenu->addSeparator(); - } - addDefaultActions( contextMenu ); - contextMenu->exec( QCursor::pos() ); - } - -}; - - - // #### ITW: InstrumentTrackWindow::InstrumentTrackWindow( InstrumentTrackView * _itv ) : QWidget(), @@ -1330,7 +1310,7 @@ InstrumentTrackWindow::InstrumentTrackWindow( InstrumentTrackView * _itv ) : this, SLOT( textChanged( const QString & ) ) ); m_nameLineEdit->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred)); - nameAndChangeTrackLayout->addWidget(m_nameLineEdit); + nameAndChangeTrackLayout->addWidget(m_nameLineEdit, 1); // set up left/right arrows for changing instrument @@ -1415,7 +1395,7 @@ InstrumentTrackWindow::InstrumentTrackWindow( InstrumentTrackView * _itv ) : // setup spinbox for selecting FX-channel - m_effectChannelNumber = new fxLineLcdSpinBox( 2, NULL, tr( "FX channel" ) ); + m_effectChannelNumber = new FxLineLcdSpinBox( 2, NULL, tr( "FX channel" ), m_itv ); basicControlsLayout->addWidget( m_effectChannelNumber, 0, 6 ); basicControlsLayout->setAlignment( m_effectChannelNumber, widgetAlignment ); @@ -1442,8 +1422,11 @@ InstrumentTrackWindow::InstrumentTrackWindow( InstrumentTrackView * _itv ) : generalSettingsLayout->addLayout( basicControlsLayout ); - m_tabWidget = new TabWidget( "", this, true ); - m_tabWidget->setFixedHeight( INSTRUMENT_HEIGHT + GRAPHIC_TAB_HEIGHT - 4 ); + m_tabWidget = new TabWidget( "", this, true, true ); + // "-1" : + // in "TabWidget::addTab", under "Position tab's window", the widget is + // moved up by 1 pixel + m_tabWidget->setMinimumHeight( INSTRUMENT_HEIGHT + GRAPHIC_TAB_HEIGHT - 4 - 1 ); // create tab-widgets @@ -1475,24 +1458,27 @@ InstrumentTrackWindow::InstrumentTrackWindow( InstrumentTrackView * _itv ) : m_tabWidget->addTab( m_effectView, tr( "Effects" ), "fx_tab", 3 ); m_tabWidget->addTab( m_midiView, tr( "MIDI" ), "midi_tab", 4 ); m_tabWidget->addTab( m_miscView, tr( "Miscellaneous" ), "misc_tab", 5 ); + adjustTabSize(m_ssView); + adjustTabSize(instrumentFunctions); + adjustTabSize(m_effectView); + adjustTabSize(m_midiView); + adjustTabSize(m_miscView); // setup piano-widget m_pianoView = new PianoView( this ); - m_pianoView->setFixedSize( INSTRUMENT_WIDTH, PIANO_HEIGHT ); + m_pianoView->setMinimumHeight( PIANO_HEIGHT ); + m_pianoView->setMaximumHeight( PIANO_HEIGHT ); vlayout->addWidget( generalSettingsWidget ); - vlayout->addWidget( m_tabWidget ); + vlayout->addWidget( m_tabWidget, 1 ); vlayout->addWidget( m_pianoView ); - - setModel( _itv->model() ); updateInstrumentView(); - setFixedWidth( INSTRUMENT_WIDTH ); resize( sizeHint() ); - QMdiSubWindow * subWin = gui->mainWindow()->addWindowedWidget( this ); + QMdiSubWindow* subWin = gui->mainWindow()->addWindowedWidget( this ); Qt::WindowFlags flags = subWin->windowFlags(); flags |= Qt::MSWindowsFixedSizeDialogHint; flags &= ~Qt::WindowMaximizeButtonHint; @@ -1505,7 +1491,7 @@ InstrumentTrackWindow::InstrumentTrackWindow( InstrumentTrackView * _itv ) : systemMenu->actions().at( 4 )->setVisible( false ); // Maximize subWin->setWindowIcon( embed::getIconPixmap( "instrument_track" ) ); - subWin->setFixedSize( subWin->size() ); + subWin->setMinimumSize( subWin->size() ); subWin->hide(); } @@ -1536,6 +1522,7 @@ void InstrumentTrackWindow::setInstrumentTrackView( InstrumentTrackView* view ) } m_itv = view; + m_effectChannelNumber->setTrackView(m_itv); } @@ -1654,6 +1641,9 @@ void InstrumentTrackWindow::updateInstrumentView() modelChanged(); // Get the instrument window to refresh m_track->dataChanged(); // Get the text on the trackButton to change + + adjustTabSize(m_instrumentView); + m_pianoView->setVisible(m_track->m_instrument->hasNoteInput()); } } @@ -1708,7 +1698,9 @@ void InstrumentTrackWindow::closeEvent( QCloseEvent* event ) void InstrumentTrackWindow::focusInEvent( QFocusEvent* ) { - m_pianoView->setFocus(); + if(m_pianoView->isVisible()) { + m_pianoView->setFocus(); + } } @@ -1737,7 +1729,7 @@ void InstrumentTrackWindow::dropEvent( QDropEvent* event ) if( type == "instrument" ) { - m_track->loadInstrument( value ); + m_track->loadInstrument( value, nullptr, true /* DnD */ ); Engine::getSong()->setModified(); @@ -1763,7 +1755,9 @@ void InstrumentTrackWindow::dropEvent( QDropEvent* event ) if( !i->descriptor()->supportsFileType( ext ) ) { - i = m_track->loadInstrument( pluginFactory->pluginSupportingExtension(ext).name() ); + PluginFactory::PluginInfoAndKey piakn = + pluginFactory->pluginSupportingExtension(ext); + i = m_track->loadInstrument(piakn.info.name(), &piakn.key); } i->loadFile( value ); @@ -1840,7 +1834,11 @@ void InstrumentTrackWindow::viewInstrumentInDirection(int d) // scroll the SongEditor/BB-editor to make sure the new trackview label is visible bringToFront->trackContainerView()->scrollToTrackView(bringToFront); + + // get the instrument window to refresh + modelChanged(); } + Q_ASSERT(bringToFront); bringToFront->getInstrumentTrackWindow()->setFocus(); } @@ -1853,4 +1851,12 @@ void InstrumentTrackWindow::viewPrevInstrument() viewInstrumentInDirection(-1); } +void InstrumentTrackWindow::adjustTabSize(QWidget *w) +{ + // "-1" : + // in "TabWidget::addTab", under "Position tab's window", the widget is + // moved up by 1 pixel + w->setMinimumSize(INSTRUMENT_WIDTH - 4, INSTRUMENT_HEIGHT - 4 - 1); +} + #include "InstrumentTrack.moc" diff --git a/src/tracks/SampleTrack.cpp b/src/tracks/SampleTrack.cpp index 8fa6fd50fdd..ea3c5360249 100644 --- a/src/tracks/SampleTrack.cpp +++ b/src/tracks/SampleTrack.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -48,6 +49,8 @@ #include "MainWindow.h" #include "Mixer.h" #include "EffectRackView.h" +#include "FxMixerView.h" +#include "TabWidget.h" #include "TrackLabelButton.h" SampleTCO::SampleTCO( Track * _track ) : @@ -62,7 +65,7 @@ SampleTCO::SampleTCO( Track * _track ) : // we need to receive bpm-change-events, because then we have to // change length of this TCO connect( Engine::getSong(), SIGNAL( tempoChanged( bpm_t ) ), - this, SLOT( updateLength() ) ); + this, SLOT( updateLength() ), Qt::DirectConnection ); connect( Engine::getSong(), SIGNAL( timeSignatureChanged( int,int ) ), this, SLOT( updateLength() ) ); @@ -107,11 +110,13 @@ SampleTCO::SampleTCO( Track * _track ) : SampleTCO::~SampleTCO() { SampleTrack * sampletrack = dynamic_cast( getTrack() ); - if( sampletrack) + if ( sampletrack ) { sampletrack->updateTcos(); } + Engine::mixer()->requestChangeInModel(); sharedObject::unref( m_sampleBuffer ); + Engine::mixer()->doneChangeInModel(); } @@ -119,10 +124,7 @@ SampleTCO::~SampleTCO() void SampleTCO::changeLength( const MidiTime & _length ) { - float nom = Engine::getSong()->getTimeSigModel().getNumerator(); - float den = Engine::getSong()->getTimeSigModel().getDenominator(); - int ticksPerTact = DefaultTicksPerTact * ( nom / den ); - TrackContentObject::changeLength( qMax( static_cast( _length ), ticksPerTact ) ); + TrackContentObject::changeLength( qMax( static_cast( _length ), 1 ) ); } @@ -137,7 +139,9 @@ const QString & SampleTCO::sampleFile() const void SampleTCO::setSampleBuffer( SampleBuffer* sb ) { + Engine::mixer()->requestChangeInModel(); sharedObject::unref( m_sampleBuffer ); + Engine::mixer()->doneChangeInModel(); m_sampleBuffer = sb; updateLength(); @@ -148,9 +152,21 @@ void SampleTCO::setSampleBuffer( SampleBuffer* sb ) void SampleTCO::setSampleFile( const QString & _sf ) { - m_sampleBuffer->setAudioFile( _sf ); + int length; + if ( _sf.isEmpty() ) + { //When creating an empty sample pattern make it a bar long + float nom = Engine::getSong()->getTimeSigModel().getNumerator(); + float den = Engine::getSong()->getTimeSigModel().getDenominator(); + length = DefaultTicksPerTact * ( nom / den ); + } + else + { //Otherwise set it to the sample's length + m_sampleBuffer->setAudioFile( _sf ); + length = sampleLength(); + } + changeLength(length); + setStartTimeOffset( 0 ); - changeLength( (int) ( m_sampleBuffer->frames() / Engine::framesPerTick() ) ); emit sampleChanged(); emit playbackPositionChanged(); @@ -257,6 +273,8 @@ void SampleTCO::saveSettings( QDomDocument & _doc, QDomElement & _this ) QString s; _this.setAttribute( "data", m_sampleBuffer->toBase64( s ) ); } + + _this.setAttribute ("sample_rate", m_sampleBuffer->sampleRate()); // TODO: start- and end-frame } @@ -277,6 +295,10 @@ void SampleTCO::loadSettings( const QDomElement & _this ) changeLength( _this.attribute( "len" ).toInt() ); setMuted( _this.attribute( "muted" ).toInt() ); setStartTimeOffset( _this.attribute( "off" ).toInt() ); + + if (_this.hasAttribute("sample_rate")) { + m_sampleBuffer->setSampleRate(_this.attribute("sample_rate").toInt()); + } } @@ -437,8 +459,15 @@ void SampleTCOView::mouseReleaseEvent(QMouseEvent *_me) void SampleTCOView::mouseDoubleClickEvent( QMouseEvent * ) { QString af = m_tco->m_sampleBuffer->openAudioFile(); - if( af != "" && af != m_tco->m_sampleBuffer->audioFile() ) - { + + if ( af.isEmpty() ) {} //Don't do anything if no file is loaded + else if ( af == m_tco->m_sampleBuffer->audioFile() ) + { //Instead of reloading the existing file, just reset the size + int length = (int) ( m_tco->m_sampleBuffer->frames() / Engine::framesPerTick() ); + m_tco->changeLength(length); + } + else + { //Otherwise load the new file as ususal m_tco->setSampleFile( af ); Engine::getSong()->setModified(); } @@ -471,7 +500,7 @@ void SampleTCOView::paintEvent( QPaintEvent * pe ) bool muted = m_tco->getTrack()->isMuted() || m_tco->isMuted(); // state: selected, muted, normal - c = isSelected() ? selectedColor() : ( muted ? mutedBackgroundColor() + c = isSelected() ? selectedColor() : ( muted ? mutedBackgroundColor() : painter.background().color() ); lingrad.setColorAt( 1, c.darker( 300 ) ); @@ -515,7 +544,7 @@ void SampleTCOView::paintEvent( QPaintEvent * pe ) // inner border p.setPen( c.lighter( 160 ) ); - p.drawRect( 1, 1, rect().right() - TCO_BORDER_WIDTH, + p.drawRect( 1, 1, rect().right() - TCO_BORDER_WIDTH, rect().bottom() - TCO_BORDER_WIDTH ); // outer border @@ -531,7 +560,7 @@ void SampleTCOView::paintEvent( QPaintEvent * pe ) embed::getIconPixmap( "muted", size, size ) ); } - // recording sample tracks is not possible at the moment + // recording sample tracks is not possible at the moment /* if( m_tco->isRecord() ) { @@ -562,10 +591,14 @@ SampleTrack::SampleTrack( TrackContainer* tc ) : tr( "Volume" ) ), m_panningModel( DefaultPanning, PanningLeft, PanningRight, 0.1f, this, tr( "Panning" ) ), + m_effectChannelModel( 0, 0, 0, this, tr( "FX channel" ) ), m_audioPort( tr( "Sample track" ), true, &m_volumeModel, &m_panningModel, &m_mutedModel ) { setName( tr( "Sample track" ) ); m_panningModel.setCenterValue( DefaultPanning ); + m_effectChannelModel.setRange( 0, Engine::fxMixer()->numChannels()-1, 1); + + connect( &m_effectChannelModel, SIGNAL( dataChanged() ), this, SLOT( updateEffectChannel() ) ); } @@ -605,13 +638,14 @@ bool SampleTrack::play( const MidiTime & _start, const fpp_t _frames, { TrackContentObject * tco = getTCO( i ); SampleTCO * sTco = dynamic_cast( tco ); - float framesPerTick = Engine::framesPerTick(); + if( _start >= sTco->startPosition() && _start < sTco->endPosition() ) { if( sTco->isPlaying() == false && _start > sTco->startPosition() + sTco->startTimeOffset() ) { - f_cnt_t sampleStart = framesPerTick * ( _start - sTco->startPosition() - sTco->startTimeOffset() ); - f_cnt_t tcoFrameLength = framesPerTick * ( sTco->endPosition() - sTco->startPosition() - sTco->startTimeOffset() ); + auto bufferFramesPerTick = Engine::framesPerTick (sTco->sampleBuffer ()->sampleRate ()); + f_cnt_t sampleStart = bufferFramesPerTick * ( _start - sTco->startPosition() - sTco->startTimeOffset() ); + f_cnt_t tcoFrameLength = bufferFramesPerTick * ( sTco->endPosition() - sTco->startPosition() - sTco->startTimeOffset() ); f_cnt_t sampleBufferLength = sTco->sampleBuffer()->frames(); //if the Tco smaller than the sample length we play only until Tco end //else we play the sample to the end but nothing more @@ -676,9 +710,11 @@ TrackView * SampleTrack::createView( TrackContainerView* tcv ) -TrackContentObject * SampleTrack::createTCO( const MidiTime & ) +TrackContentObject * SampleTrack::createTCO(const MidiTime & pos) { - return new SampleTCO( this ); + SampleTCO * sTco = new SampleTCO(this); + sTco->movePosition(pos); + return sTco; } @@ -693,6 +729,7 @@ void SampleTrack::saveTrackSpecificSettings( QDomDocument & _doc, #endif m_volumeModel.saveSettings( _doc, _this, "vol" ); m_panningModel.saveSettings( _doc, _this, "pan" ); + m_effectChannelModel.saveSettings( _doc, _this, "fxch" ); } @@ -715,6 +752,8 @@ void SampleTrack::loadTrackSpecificSettings( const QDomElement & _this ) } m_volumeModel.loadSettings( _this, "vol" ); m_panningModel.loadSettings( _this, "pan" ); + m_effectChannelModel.setRange( 0, Engine::fxMixer()->numChannels() - 1 ); + m_effectChannelModel.loadSettings( _this, "fxch" ); } @@ -742,6 +781,14 @@ void SampleTrack::setPlayingTcos( bool isPlaying ) +void SampleTrack::updateEffectChannel() +{ + m_audioPort.setNextFxChannel( m_effectChannelModel.value() ); +} + + + + SampleTrackView::SampleTrackView( SampleTrack * _t, TrackContainerView* tcv ) : @@ -749,13 +796,13 @@ SampleTrackView::SampleTrackView( SampleTrack * _t, TrackContainerView* tcv ) : { setFixedHeight( 32 ); - TrackLabelButton * tlb = new TrackLabelButton( this, - getTrackSettingsWidget() ); - connect( tlb, SIGNAL( clicked( bool ) ), - this, SLOT( showEffects() ) ); - tlb->setIcon( embed::getIconPixmap( "sample_track" ) ); - tlb->move( 3, 1 ); - tlb->show(); + m_tlb = new TrackLabelButton(this, getTrackSettingsWidget()); + m_tlb->setCheckable(true); + connect(m_tlb, SIGNAL(clicked( bool )), + this, SLOT(showEffects())); + m_tlb->setIcon(embed::getIconPixmap("sample_track")); + m_tlb->move(3, 1); + m_tlb->show(); m_volumeKnob = new Knob( knobSmall_17, getTrackSettingsWidget(), tr( "Track volume" ) ); @@ -779,16 +826,10 @@ SampleTrackView::SampleTrackView( SampleTrack * _t, TrackContainerView* tcv ) : m_panningKnob->setLabel( tr( "PAN" ) ); m_panningKnob->show(); - m_effectRack = new EffectRackView( _t->audioPort()->effects() ); - m_effectRack->setFixedSize( 240, 242 ); - - m_effWindow = gui->mainWindow()->addWindowedWidget( m_effectRack ); - m_effWindow->setAttribute( Qt::WA_DeleteOnClose, false ); - m_effWindow->layout()->setSizeConstraint( QLayout::SetFixedSize ); - m_effWindow->setWindowTitle( _t->name() ); - m_effWindow->hide(); - setModel( _t ); + + m_window = new SampleTrackWindow(this); + m_window->toggleVisibility(false); } @@ -796,24 +837,58 @@ SampleTrackView::SampleTrackView( SampleTrack * _t, TrackContainerView* tcv ) : SampleTrackView::~SampleTrackView() { - m_effWindow->deleteLater(); + if(m_window != NULL) + { + m_window->setSampleTrackView(NULL); + m_window->parentWidget()->hide(); + } + m_window = NULL; } - -void SampleTrackView::showEffects() +QMenu * SampleTrackView::createFxMenu(QString title, QString newFxLabel) { - if( m_effWindow->isHidden() ) + int channelIndex = model()->effectChannelModel()->value(); + + FxChannel *fxChannel = Engine::fxMixer()->effectChannel(channelIndex); + + // If title allows interpolation, pass channel index and name + if (title.contains("%2")) { - m_effectRack->show(); - m_effWindow->show(); - m_effWindow->raise(); + title = title.arg(channelIndex).arg(fxChannel->m_name); } - else + + QMenu *fxMenu = new QMenu(title); + + QSignalMapper * fxMenuSignalMapper = new QSignalMapper(fxMenu); + + fxMenu->addAction(newFxLabel, this, SLOT(createFxLine())); + fxMenu->addSeparator(); + + for (int i = 0; i < Engine::fxMixer()->numChannels(); ++i) { - m_effWindow->hide(); + FxChannel * currentChannel = Engine::fxMixer()->effectChannel(i); + + if (currentChannel != fxChannel) + { + QString label = tr("FX %1: %2").arg(currentChannel->m_channelIndex).arg(currentChannel->m_name); + QAction * action = fxMenu->addAction(label, fxMenuSignalMapper, SLOT(map())); + fxMenuSignalMapper->setMapping(action, currentChannel->m_channelIndex); + } } + + connect(fxMenuSignalMapper, SIGNAL(mapped(int)), this, SLOT(assignFxLine(int))); + + return fxMenu; +} + + + + +void SampleTrackView::showEffects() +{ + m_window->toggleVisibility(m_window->parentWidget()->isHidden()); } @@ -821,7 +896,300 @@ void SampleTrackView::showEffects() void SampleTrackView::modelChanged() { SampleTrack * st = castModel(); - m_volumeKnob->setModel( &st->m_volumeModel ); + m_volumeKnob->setModel(&st->m_volumeModel); TrackView::modelChanged(); } + + + + +void SampleTrackView::dragEnterEvent(QDragEnterEvent *dee) +{ + StringPairDrag::processDragEnterEvent(dee, QString("samplefile")); +} + + + + +void SampleTrackView::dropEvent(QDropEvent *de) +{ + QString type = StringPairDrag::decodeKey(de); + QString value = StringPairDrag::decodeValue(de); + + if (type == "samplefile") + { + int trackHeadWidth = ConfigManager::inst()->value("ui", "compacttrackbuttons").toInt()==1 + ? DEFAULT_SETTINGS_WIDGET_WIDTH_COMPACT + TRACK_OP_WIDTH_COMPACT + : DEFAULT_SETTINGS_WIDGET_WIDTH + TRACK_OP_WIDTH; + + int xPos = de->pos().x() < trackHeadWidth + ? trackHeadWidth + : de->pos().x(); + + MidiTime tcoPos = trackContainerView()->fixedTCOs() + ? MidiTime(0) + : MidiTime(((xPos - trackHeadWidth) / trackContainerView()->pixelsPerTact() + * MidiTime::ticksPerTact()) + trackContainerView()->currentPosition() + ).toNearestTact(); + + SampleTCO * sTco = static_cast(getTrack()->createTCO(tcoPos)); + if (sTco) { sTco->setSampleFile(value); } + } + +} + + + + +SampleTrackWindow::SampleTrackWindow(SampleTrackView * tv) : + QWidget(), + ModelView(NULL, this), + m_track(tv->model()), + m_stv(tv) +{ + // init own layout + widgets + setFocusPolicy(Qt::StrongFocus); + QVBoxLayout * vlayout = new QVBoxLayout(this); + vlayout->setMargin(0); + vlayout->setSpacing(0); + + TabWidget* generalSettingsWidget = new TabWidget(tr("GENERAL SETTINGS"), this); + + QVBoxLayout* generalSettingsLayout = new QVBoxLayout(generalSettingsWidget); + + generalSettingsLayout->setContentsMargins(8, 18, 8, 8); + generalSettingsLayout->setSpacing(6); + + QWidget* nameWidget = new QWidget(generalSettingsWidget); + QHBoxLayout* nameLayout = new QHBoxLayout(nameWidget); + nameLayout->setContentsMargins(0, 0, 0, 0); + nameLayout->setSpacing(2); + + // setup line edit for changing sample track name + m_nameLineEdit = new QLineEdit; + m_nameLineEdit->setFont(pointSize<9>(m_nameLineEdit->font())); + connect(m_nameLineEdit, SIGNAL(textChanged(const QString &)), + this, SLOT(textChanged(const QString &))); + + m_nameLineEdit->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred)); + nameLayout->addWidget(m_nameLineEdit); + + + generalSettingsLayout->addWidget(nameWidget); + + + QGridLayout* basicControlsLayout = new QGridLayout; + basicControlsLayout->setHorizontalSpacing(3); + basicControlsLayout->setVerticalSpacing(0); + basicControlsLayout->setContentsMargins(0, 0, 0, 0); + + QString labelStyleSheet = "font-size: 6pt;"; + Qt::Alignment labelAlignment = Qt::AlignHCenter | Qt::AlignTop; + Qt::Alignment widgetAlignment = Qt::AlignHCenter | Qt::AlignCenter; + + // set up volume knob + m_volumeKnob = new Knob(knobBright_26, NULL, tr("Sample volume")); + m_volumeKnob->setVolumeKnob(true); + m_volumeKnob->setHintText(tr("Volume:"), "%"); + + basicControlsLayout->addWidget(m_volumeKnob, 0, 0); + basicControlsLayout->setAlignment(m_volumeKnob, widgetAlignment); + + QLabel *label = new QLabel(tr("VOL"), this); + label->setStyleSheet(labelStyleSheet); + basicControlsLayout->addWidget(label, 1, 0); + basicControlsLayout->setAlignment(label, labelAlignment); + + + // set up panning knob + m_panningKnob = new Knob(knobBright_26, NULL, tr("Panning")); + m_panningKnob->setHintText(tr("Panning:"), ""); + + basicControlsLayout->addWidget(m_panningKnob, 0, 1); + basicControlsLayout->setAlignment(m_panningKnob, widgetAlignment); + + label = new QLabel(tr("PAN"),this); + label->setStyleSheet(labelStyleSheet); + basicControlsLayout->addWidget(label, 1, 1); + basicControlsLayout->setAlignment(label, labelAlignment); + + + basicControlsLayout->setColumnStretch(2, 1); + + + // setup spinbox for selecting FX-channel + m_effectChannelNumber = new FxLineLcdSpinBox(2, NULL, tr("FX channel"), m_stv); + + basicControlsLayout->addWidget(m_effectChannelNumber, 0, 3); + basicControlsLayout->setAlignment(m_effectChannelNumber, widgetAlignment); + + label = new QLabel(tr("FX"), this); + label->setStyleSheet(labelStyleSheet); + basicControlsLayout->addWidget(label, 1, 3); + basicControlsLayout->setAlignment(label, labelAlignment); + + generalSettingsLayout->addLayout(basicControlsLayout); + + m_effectRack = new EffectRackView(tv->model()->audioPort()->effects()); + m_effectRack->setFixedSize(240, 242); + + vlayout->addWidget(generalSettingsWidget); + vlayout->addWidget(m_effectRack); + + + setModel(tv->model()); + + QMdiSubWindow * subWin = gui->mainWindow()->addWindowedWidget(this); + Qt::WindowFlags flags = subWin->windowFlags(); + flags |= Qt::MSWindowsFixedSizeDialogHint; + flags &= ~Qt::WindowMaximizeButtonHint; + subWin->setWindowFlags(flags); + + // Hide the Size and Maximize options from the system menu + // since the dialog size is fixed. + QMenu * systemMenu = subWin->systemMenu(); + systemMenu->actions().at(2)->setVisible(false); // Size + systemMenu->actions().at(4)->setVisible(false); // Maximize + + subWin->setWindowIcon(embed::getIconPixmap("sample_track")); + subWin->setFixedSize(subWin->size()); + subWin->hide(); +} + + + +SampleTrackWindow::~SampleTrackWindow() +{ +} + + + +void SampleTrackWindow::setSampleTrackView(SampleTrackView* tv) +{ + if(m_stv && tv) + { + m_stv->m_tlb->setChecked(false); + } + + m_stv = tv; +} + + + +void SampleTrackWindow::modelChanged() +{ + m_track = castModel(); + + m_nameLineEdit->setText(m_track->name()); + + m_track->disconnect(SIGNAL(nameChanged()), this); + + connect(m_track, SIGNAL(nameChanged()), + this, SLOT(updateName())); + + m_volumeKnob->setModel(&m_track->m_volumeModel); + m_panningKnob->setModel(&m_track->m_panningModel); + m_effectChannelNumber->setModel(&m_track->m_effectChannelModel); + + updateName(); +} + + + +/*! \brief Create and assign a new FX Channel for this track */ +void SampleTrackView::createFxLine() +{ + int channelIndex = gui->fxMixerView()->addNewChannel(); + + Engine::fxMixer()->effectChannel(channelIndex)->m_name = getTrack()->name(); + + assignFxLine(channelIndex); +} + + + + +/*! \brief Assign a specific FX Channel for this track */ +void SampleTrackView::assignFxLine(int channelIndex) +{ + model()->effectChannelModel()->setValue(channelIndex); + + gui->fxMixerView()->setCurrentFxLine(channelIndex); +} + + + +void SampleTrackWindow::updateName() +{ + setWindowTitle(m_track->name().length() > 25 ? (m_track->name().left(24) + "...") : m_track->name()); + + if(m_nameLineEdit->text() != m_track->name()) + { + m_nameLineEdit->setText(m_track->name()); + } +} + + + +void SampleTrackWindow::textChanged(const QString& new_name) +{ + m_track->setName(new_name); + Engine::getSong()->setModified(); +} + + + +void SampleTrackWindow::toggleVisibility(bool on) +{ + if(on) + { + show(); + parentWidget()->show(); + parentWidget()->raise(); + } + else + { + parentWidget()->hide(); + } +} + + + + +void SampleTrackWindow::closeEvent(QCloseEvent* ce) +{ + ce->ignore(); + + if(gui->mainWindow()->workspace()) + { + parentWidget()->hide(); + } + else + { + hide(); + } + + m_stv->m_tlb->setFocus(); + m_stv->m_tlb->setChecked(false); +} + + + +void SampleTrackWindow::saveSettings(QDomDocument& doc, QDomElement & element) +{ + MainWindow::saveWidgetState(this, element); + Q_UNUSED(element) +} + + + +void SampleTrackWindow::loadSettings(const QDomElement& element) +{ + MainWindow::restoreWidgetState(this, element); + if(isVisible()) + { + m_stv->m_tlb->setChecked(true); + } +} + diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index c39f8e56ed9..ddebe116c6e 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -14,6 +14,7 @@ ADD_EXECUTABLE(tests QTestSuite $ + src/core/AutomatableModelTest.cpp src/core/ProjectVersionTest.cpp src/core/RelativePathsTest.cpp diff --git a/tests/src/core/AutomatableModelTest.cpp b/tests/src/core/AutomatableModelTest.cpp new file mode 100644 index 00000000000..116f95e60a0 --- /dev/null +++ b/tests/src/core/AutomatableModelTest.cpp @@ -0,0 +1,55 @@ +/* + * AutomatableModelTest.cpp + * + * Copyright (c) 2019-2019 Johannes Lorenz + * + * This file is part of LMMS - https://lmms.io + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program (see COPYING); if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + */ + +#include "QTestSuite.h" + +#include "AutomatableModel.h" +#include "ComboBoxModel.h" + +class AutomatableModelTest : QTestSuite +{ + Q_OBJECT + +private slots: + //! Test that upcast and exact casts work, + //! but no downcast or any other casts + void CastTests() + { + ComboBoxModel comboModel; + AutomatableModel* amPtr = &comboModel; + QVERIFY(nullptr == amPtr->dynamicCast()); // not a parent class + QCOMPARE(&comboModel, amPtr->dynamicCast()); // parent class + QCOMPARE(&comboModel, amPtr->dynamicCast()); // parent class + QCOMPARE(&comboModel, amPtr->dynamicCast()); // same class + + IntModel intModel; + IntModel* imPtr = &intModel; + QVERIFY(nullptr == imPtr->dynamicCast()); // not a parent class + QCOMPARE(&intModel, imPtr->dynamicCast()); // parent class + QCOMPARE(&intModel, imPtr->dynamicCast()); // same class + QVERIFY(nullptr == imPtr->dynamicCast()); // child class + } +} AutomatableModelTests; + +#include "AutomatableModelTest.moc"

oZW{L2p~d#8up@w6$u#D(eAx%DfT3~g3SnEx?$GakFz6={&MQS z7{`hz=&PNn3VL!?dwum=tW)`bT7yDwW-2}?v?xO+;=>CGr|*{>j-B`6l)lVz8f=mM z*tqyZKYvslMJ0vzHMn=rzt6T`OP#312u~}rgZi~&!hp_{HG0N7s9=O%WppAK(5KUN z%)tUKTpG9aAHOYoan-S3w3ufdS0curR+S|aF)%eX))6=(<6b)`%uv6ULXDR=qVN7) z&5-TjSM7gB{A!uD6`Xs_25sw3AsxqP0^%fXIN`W^uc%`rn-j=-KN4toEo=lknut2D zaM;xUZekVfHtfr+1@3x13X^v|PTSY38Prr@I0aj(XO{Hb2Vw49s378~T6ae4F%JP0640pg!=iwB*!e%6(91y5Kl8yA zzolcvxt;s(#I6I? z2yJwpKNtg^BW{dzxoQE>tDEyRvz1@bPHhv*lT4Gl2Se=)Y)v$-}!7pAu?DO(!H9RvX39>c( z>tovFBh%)GBtoy!1-|`KoiD%{K?5KAiGvTHPmn@Kws5Ft9eZO!H-quwk$4Fzy`(at zz0ZTvBu_2%LXa&ecnS&O8NrK+>UQYeoz+KYZ>rFh+U1I7DiWIj3rqjV!r_*<|7=!s z!rS*WX@h~RoRp@>_KM`S(=>T+mZmO4;$Td#Z-~G)Zf1$5mO$;;Zelto-w!$01p0sH z=`uGL2h@?X@IJ_%WB%mWts~qLQLUL7{xw#r&%5#Gwqe|BI`46p@Tyk|hdIdMX92uh z`Z-t>uE@jG`13%-*gYcES14YUq6)FM5cjX%i}?0K4Gt47USD1i@>1waFtXUU+j|%7 z>5%y91&8}WGUfWf%{@YMy&#t5>ZHK;+4yR5=4qtAAKvpatifDB;>Tc^<$#^u!yk;Qr!QFErZfhO% zxMiN*b9)!g$4tmyfo(aom|TCL4sx|Y%*Xtg*K?Ad^G7UMMD5R#w@i!Q7LN(vVguS*=lrNiRyg*FW2a`-Q$9!*{$o48`hkSGq{ z_4fP#%To$;^_kk$Z)BvF4`e^f5S3Ssm%wkBbIhPdsk$haA{jMbncSJZNDgdsZ={qA1tNSY0cbTDx~si;5LP2PJ#p zkPUF$ef)bMxWdm-dBHPiAOpz(xA;Xy12rQVdc;=s{Z;ewfsfY#1sayGrlwFhozHJ& znU&E$o|5jp)i7R|=Nwlkk)_Q1e5xe@)5ytlMDNv=7%Fih|KocR$NNuYurIes{;6^z zF3W$4^3XQy#cMe$26_NhoWG;|kD}vOm)AoRy*S7X&Y-HMndc=B5hTd)#H4V#&vQFc57p`Y7;9tzC;|w5QVp{f3m&YHJ>nQh)L^ zqctwX7EamzaN)WwS;m$j+)`8{fLE3d)Cr-5#0Y zPrxP6Mv4%#6d-*1)GU*Jc+)a)d5vQwegwBQblj&9Ai@7456lknwm!d!i520tQwrh!SOi2-jewg z#ELa^E}R$6Q+~JuwJonycjU2MQj!qiM9+Ezm)vDVx*OJiEMsdXg$AIIg}hKzFIEg| z`)f0h7MC8VD^;TN^F{0kQN9QfJBKT#o`8osp(sTY*emV09rFzAk(l~khiBtXOEntv za-MubR0qlt>yy$~|Ey|P15Fy~)Q{avHS#7N335)EkW$@;L7`_&f>=>ts^&cVD9$m- z^M>91UfhDHS&_D~sTysh0#Qd@ucYosH@sjA$(eiykLn?p;QahQOrr;bhZ>py+L-h^ zr{5dYOKr9v3n4Zt2NAW9N2pu0eeLwey#St{uHpelEt>T7Q%>>$`dbcKF@+Lkm+1)f zXHfU+5@HI)Za#nI5T@-L+DhG^-Fer%;k&g7OT<%*{qM&~L_~CSG2HeH3*9a<6SDAK;4GOKxvVh1Z(hVdhB-J9AQjC&b zlY<at8ko-)z-@zv=Qs1d z%2TG53H;X!+Y`Y&Z*nn;QurPJx*_>TCgS!cXcweZHVf{WHE;=7=lSw|bM9YqTQh@D z0Pb%XTW(H_#zB$seq~;0JHWeU`I5+>Y)c0ZEf^HcJU@r!?SZ&cMKmpCGMkc*x$<$Q zO8d;$Us+~IB%A+f*8{&(J!4)sCvYTXY+6Dd{$)lY0Qx%-F>C1AR_$X+Yr7ax@2U-2 zOuN{iXxS`^|J&{CQ`aTX)!}iD9q%sA@23_qM~Q(oC&PR|E-cZqT-IiL8Q<5-br)FR z3BHAmM8|_e3G5vsmN`VRfc193Clnm{Kok^Zk3htLO zw;Ot-=8E$2I2c?HVmXpHeca>2vmcc(cdN3$&MN15@#qfKuBZo{fU>N;hmU{@DLg64$!VZgE3){|M+6Fcqdq~DiahnO zRyJbm{l}lqD9wftIgWv9+pt+@VVdg{bY}a@oCn8%7uE5r%2%%9&fkwbe(HMR^IdIX zdGF3L7srg$oSi(=>Xi(f(71i_IZ4mzIdN1nks(s=ETB>@nZ%0xT<(N37AK(T*TC2+ z8GRN@qY}CWTYkic@am8V{3FN#1EvI!=iwe_m7{^wL0c${>h3tJJv3&iZ@sK|XeTTG`A`Wy715oKLdLCxr^ecd zs9Rm%7Jf7=#ZtcY&$~;S!o7_@dptA_iKMASrPY?jAJTQ^E|9P4nEsK0yn#$9C1pTC z<10x^bqr^Gm@ltDzW%L&Ioa#@77ahkZ~K-iw=?RK&tU;_9swbnGW%7zUBzNjwAD zZ98;WA-7rgP2$S<`2Q<+eu4=+Lz1s^&yoW-*p!*d&xgIVHD&+ubY-$FQs)J`pboX z`=;{z)Kg#0RcWq*E;=xtnVpiS)i>23c)9Oa-b1V*nWC`zz@c%OnIQ4nd6iqGG&5;! z1@nbbku~C7BmHKZ{{YXas}I#Ol=v7oJ_~hey=g6)eNIA1ck`d)jF422xBOe0*Bm-( ztA&&k0DmLWK=Nlka9wCRWxJ4Kihpb3&gs-YSjjEVi8JxhwL$85551Il`CV};N;QBt zN?h%tV>SCHp?8(GG$dDI#|H@XM3tMc>ta{LQerca7ZW;&gE5SUb)zbLV<+?*4)x{; zE}2HAJ$U%3)L)nF2}jb}P2-2Uz!9>0p`S7ZuEeI^$ry|3GC63LJO+hyrPH$I53(B@ zPBqbjvrz+Qz;amklHzf75;0M^;K$-^&LCE{O&w^F*vfKl-She%7XWJZk^UPii9}X) z2_M}BZi7d}dmk549ux1avk^GVT0EEuvO&(v+|gN6nJkR8$1exypG9exnMpseIvm$_ z{l%9Mre5g_t<(|d@Wy3oMIN5#;`l8;A$-?my7C9zHvila>~ygf{Fooy`-Oz1JCIt{ zhT97L@W|vu#z!vXhGA=qvBAc73lp>6w}7R=p;KY!PrvnSyjaq+R(HNhn6A`5_asO| zWmCQ2(V1>;Y;+C9sOy!b9(nNpX6V68Kt>rh!DuL?cH~;r_e#bUzG;~}Y9}?-SD>b@ zr_Y6t`WR*$Q@EJPC4TH@Nt>l8YJ2$3^8(I5)<0?14l-{`V+v1o`+onfO&*wRNto{b zQR~<3>snQI$3(U{q!(+8(dEBx1q~7&VS=7U;>d0SK>?QFvH`$>S*<+~ktL1-dn+JH zI0QyinROpItaXxsN%-fu>O)!i_R~AA~ zPoMRxr6YH90wcAE);KqClg{r8=X(Owo`<&($1%bC_lg1vXQg73@j%_7w`>fT-#&m? z9Cb#L`3y?!@*pwt>lm-(aL7|)mOkr21VTN3CW?7`mXJGBH8>mK{r<|aqtKNIW2(GQ zOZBBi3!svm9FTbzu1DoQowoG96az+jXYFBFgQ6YZeaWXlR7cMEfQXS#=ZxtIxOkP8LPS*3aot})6Q-fZI__=mjGD|M+aPaf20q!L12+qg zbHpZG0s_(ZSH6IB88SU*R_gsZV(0G~4_=xZGmQWGv=rg=S91OFc7{=*;ox_(^7)k5 z-X881t7QchWo4#jNrg#s5D!ymn&7oHXHq%nWxC$}HIJ;LnLks~%Z@{x_uXh8TjV1I z6HO`qki4m5^GoF9TQ)x}dc~KShZYcsG7Ua|Kfit^5JRt!$?uxhdN0e?cf<ZFgp;rfQu1?qSwVAjCXoj_G)mR}=zTCss+%V=X_lJ*s=b1c2mAvV>Nz zar>NLZ`ZcF#dg3CTeEW#f6BexJfJdy+NA}puW z*-Eod$hqe+n@d1V-qS=Gy%g3es=h$)*QE9y`)$``1iNQWP<~nLlfmkz;FX*s%UzcXxNr< z%UaFmMe)$Iwn?26ek-Dip&x!|oB02^zgYzOU7*+QsGLBsk;lAKvWnF8dw;ZSeJc`s zmnK~5D~_3v`5#R4|H!IF=m>goUyU{*8jHdMEg!zVg61~7c7lF~3__F@&3LB-4|W^z zO^^@G9yGR993c6{=Ubp9l>YqSZ4M9(>p(hf;?507<4bbff7-Lx+#sP_3LCwMFCif$ z7JS#yH>x=f3PYxwKeW|W!E&vl`M@6MYVUzkLdjk_{2-G^t#bXU>4f|!kr-K|mFjUT zjJAl8cuIQiLAe8g3+xA!m6c_576k3VPpS3e4Gwa*&0hpD9~U0b`}5*J`4@0=6Ptfu zv>yARCP@jqFw2{&M$F&h2rZd!L=~E-zsf0kMC97L;D1<3FjKSFOOGfG%*TZSH*2tuDIGF1i&O8VVh~H8smxfv1RvQo?%-3`PxWVO zlGfDD{ar?|4Sr4qwlpD0z$7Or;-^|ywY`4?Xm}2QZJRyx0c4>MfIqaiDgLEDX{{#b z=dj|6kFQ5$%pEoD^@!m}Y>``ESq^&Q|7;a?Kz+GRl(9y$d}V$Kdoj^42_}qZZN{Q5 zgZo5w_CFOu?_R%}O9C?hjo#{;mm`A1r(|=h?4AK7b^}wUFOJqqJH!BcSaLeSj`{J$ zAKG|&<~^e|*p`$#0H33uxvaQl(YoVP~Piu37D~$I?jIe>7)%Kjpzh+^uJa_CTFQ%&cv6#uh z%!!;`Q!nDbjS;v^0@zql6TJWBLq8%;g3^R6K2IWf3C?t$`%6giFrFTCw+5=e*y{XA zTW%Z}b=`0D`vYcc;S_4`Pm@M#Vm@>_*D#wl941O^l@{P=1|~#RgHQ4Loz=PZ6rVNg zIQ4HWlW9g%TvtPyf`YGdtJW+PGg8C?yO9w#pJfd3u~o>>EdAa_41$ABw~K2`zBs^g zbrdvXW9df-$sWe-YfVpjGSuBacp1I)2oY&%eb{DO7(16c6Z+!IYjt-!{yc@MG`4Lb zXY<=4tO|2$$ch9Q-l0K$Qd5l~yc^KA0I@Gx{#N~CUwx%Xr6!Ww+%3i*xhwZKY6B^@ zNQ##}d;NjpkkYMA!7V2vGRrpFL4HWoT-Vua@^Z&}oCtxhL?6U+S6$t}d^ zs`zp~l4e82@4h!i`;vF0t!c|*)(7(d=!f|J(7_CR_nFJ33bIaNHql@L7X>p?-8jfMaZ^I=5v_J@E#e$Tum>Qz87} z&rz@a;+{-&Z7sgx>kzS#iv{#E>I4`g6TzlslI9;oY1Qf?Q$0=m5g1-w%lbuFdN^Spr+|5Ts`R z^4W)TF%y38{vj!^CBHlXgp_wJa*(Gew|(ZlD62Cp!}vty%1A4XeTM_#RV-TM#CDd; zr!p_2%r($A46}j1OrOCE1(7DQURB`sQj51Kht7^k3t%VvPk;D5Ax-T_3sPKl0_| zWXyWRBIVmM3LKZv%7GIY`e2^FSKuU;vgpX`Ob#Mgj+m3zd*!=UosJEX>|_)MjJg-F z+$%iGV(<80()(X(zEz#C5lIgE%qNp?ls&IF|5r(<57*WEQd&<7?cJG${X9`Bc4L#g zmEPL%G!@D3+W7VYZPN*w+i@uiJf(fOArkyeug|`*sQ)J5hgg2!}P_CdFj)u6~ypkG+6O&Zy89d?_0m=o(d&28jscin5zKKBxa zVy4}E60WB%fM5uyK#z#C(CimPWbVqgXB(tJ_N6f_AH0vy2bC$t_JkNI`QG#L-9CwKUTjOq$BKU!Y50$qe*zPyBRrFtpo_M9F>ZGKu1P(wG^awU(rm?4F z2dnI=rV`K=?jsbU2o_WT&`NN_{ot=jA;9r3ZyyeY$JIjoN+(jYJ|(|Cxh=!2b;)%7 z$5mPLb>2t~n6`Yr(1xQV z<)rvutM}POldJQgV?QUK_!oMy%nhszs_pqdI1&T~e7v4mUC0hc{QOouWp=2h+9p@* z@7UQOPfPv5?3mm3nR`RqrIKCT69Z0 zr&uiWw1jh)As)HXhszl(k@fr70FFkkBfYlVU>&y%qT@5o--bl#DuAp+`dXTR;xjaZ#cm$%ZG5o_q$ckM&hel6lOv{odz!%u-&f}EgQVHJ6Zj)beD8*#eY$7S_5Y+Bdk5`8HjxWfhGG*bo^lvTb6NIi z9}XSw<8{;ne>gv{2$H-r&tjW$r8CcR+(v3evLxI>k9a#7oO%Q|>pEhQQxwI~4U$f9 zCh!4MXonkwaywG?OjYHzC6!*%DuT^OX|fqSIaDjg2X-wjcXd+#1)@D_6ceR?L{&Ha zHM=z`^aknZ)y|HNjw$UNbQw{e;t~4{!PdA|)Bb>RIhg{l6W}aYEEPMJ1B&BQ($iLR zAP$iL`6W};=Fn_T^YztV@ja?eqnFa$x|9}z--^%-WJw2a1;*%y_kTs zHpMF&M8G7$fg(sGBD2LJD^;TB$gi#9zCP$Stf}7Az(gGA!*v+*G`pA+^L5xjoc#T^ zw`F&VE$EPyl%~FcMBxGh(~)BixlWrA=5fS5eg~xh+S`?Nw+WivkH4|vP>|**eFAfa zgMq=~PD(QmY6&6?L4zmE@h+2|2H0DFim-U>$4Zb#+a&^9DAl??h>u+>^_Sa-S@RkK zVK?5n-v9}oFS?HheJMX`0!t@G?hD6}=*3)YC)e71sE9VHS{dy1#7%O=dFI9%z)wWc$Lj-{3^MKsaNhEQo2wx3vQm=` zksxaCUp_UPGzn&0L{eABLt{i@)|3W;9+E(KbN~O+VB5|1JC~&~6WAWi#0!d{mS$k6i#KBV2HnW;7 zk2>a3+;8t5hV;I2FC*~x?fff}leCs09GViY-v5@%ioJ7rV>2i}&xtOP=ANN6cas#s zyOvTF?149wGVlNHj$*!YDDe2SOaSiX*BMaQ(%j@>Nq~`u=U)k5P}6xlSl)aUy#eaO zmkJ$IJKF_sgy}>WCVagVQ#-WjSA5EdRU&n-MQ$R|Z|9q)7Mpr~;+liUrfjbUOlP4I zZX+2;QeY@fB-FlKD_flwWT=!4L=(JgD0c%U;Yz{;^+7_Vb0;)<=({k)Pt!sS64<;tm#Jdj(GTiDj%cFPSgI7kWRQC!s%bOHKO2+?6 zhTzhnS#a8#Bu7XDSgI?}ylHu#n^!M$lkc$xql!<4l%~2+ZsRfxwW58-5 zG?5OrUB+sZ5l!QB#6rgZa8WBA|GF^JK*Cy+8Nm7gIIQ`{QGL}jyvNm*Dutl-hrj~2 zb!2+on!Pz4kCm7=LNXsIc$O1#6)KcZGx8}DpS>9N7-1B{``#zS1UQ-~dbju16p~?c zk)$|tUX*r@zipD?jFboWy-mM!TRGnb=9C=u75izq@LhBXtW!e2Wx=1g@KS8Oi|NwV z2vz6n>jDE_=eFK*RprgDr?{ILkspLjXU%AK=V3dOc~W2BD9#r>1aeSHgJ3E7Qd=So zaNnTA`VgdVllc@$BDEahnJ`0oU25HKbq(R4Df|fa*{U(>Wo)85t9oH&>Is>YqCA^O z7BNWKCkL$$P1jvRv`j{tOsSN0h*gP(Z76BW@qM$=>%9!y$g{s}zT!t~ZN_O8j~Gq3 z(k%qorS3(RfR*HmBfyQDr7+pnBL>-dX$9{Th|U4U&H+}sfp5U}JZOchyb!*W2Jj^nWCU(%ILfaTV-+$3_?~TCglx3J^7a_QgU*n24j%%V{aQD z^sN0;WnSAe43>TrNMi2*_%|(u%z`(~ocUzTErUZ_YwRK09y9^EIB{W{&X+gMIaif8 z>`n4}xpE5q*`I3XKG-5JD!k-TX1ez3*SuV_MW6pUDkyWdbj*{U_12~ezo}A=e-BY>`P!HDX6Vw6RBepsbt9D*y2X z?%dsa4JH2h`v?j{6tQW<0~V9< zD3lVog}G#>j$yeR&Ay`EQbOVu_P1ncx%h zh{zl^LrZu&=ncQ}kZA8+4O-uY129-qCw; zx>4?R$V}DTl|zGBA0&$bq?s$tp9$S26JG}M!O2WR|8$}fKwV+l1A_R&vnr1LRsUE~ z1cFMLV#@P#M0}xw&O7Q)aT4$3l{oP4i)2_3gX3h}pOjdGxMHz%{~fX4lYrzmoW;nF2#{bZ@=Lh|LnQp1lH9FL_JJq;0SxXGZYCg!honJsu-c zE{%wX?j0nIa4_>Qcz=A#uRzc&F6MROcE+VP!9EK-g`|TajEd5S8R!4WpWK*TE5Gns z$C5`!o9R$0%_#+FX}qPtQ7nx=0~mY|ko}{>h++phhvol3<|qcO4+51ews7pk(v^j85&=bd{oymYVrcGh((#qr z9V9reTmUos)a%YE6F{=?ya-`v-pddOfc>kpj9^^m@0$C-L}84ZPncS{Jg$5 zG`@3rB>&_bA-PvAS;3p9=+&5{p0jTM;qdyET$%XgNT{819QIVBEjWH^K#hVHv=~71Aabb=g_SKD~%E7Xio2aD(n`aXF z-hEt4RZhbeW8E6Zs8Rg)21aF6KyQsdoFgVEa~6PDed2kB-^O?hXGl(TpFnEuZ_zN` zB`m}51XQKb@5K%a-_UFMAI55`$AcYy#r&IEU7;bos#RKV2g?FVWd9eBEn9CF;RGj7 zefFp6c>`9Tr@ z>28n{?jjAwHnAp{-JcE^M*o5I!5?sLlh-~v4ir33p10OWvmY|XR%z!1Ju}a2lw(fr z1+4WJq6#D|hZG;4Mj)iarV)Mml?yZ~7ig~o%xH)dd*-gks@;)!Hi6g{Axa;2xkj|$ zPI(otdo|*~s&kCKnV%NoKY962)3qxkbVkxG9o+@YMmo$aTgO?zw+b zsBjm-Mu917gHh*5cK088}@E1`0uF7e$I0FD-Fi%Xma~BfYxcv{BOltG<5G9W>IMIP2_v5Q$MP zQ?}gS!+WKzx#JUYGqH0?s){&c^ ztg_RNJ4kx=v8bxa10SJ&`b|@=Ymk zF`z=H<6&O>TffwAtI2OD=H7tUQ7{nS&2~IzT}vPCb0d!!A;F`w5*)?eT9uO zAjU_F(tBg{cbI(b1At!T4l$+P3kFrdm%#-@1+WcXX9PJp1-N=On*Q9fgVS$cY{Cm@ zPh?YS$%Kbg*?Cig)>q4%Bg9%xawO%7Uf!TmO`4-`a(T*st_b_g1@@42+!LZL>r+UY zJ%xj(YN{#bVXHPqxq!3gF)@gm<|O@z;&sPwHat^m1nae7dB?aXP4-NCplbwl#)m1U z(RL)SBC(5Wkmmg375~s);GxKX(2y}E;yT0+*P>CwnCa8cL^|kEY}aA{=%AW7Wt~66 z7;*hN30-GoXZ7o zI6b)$c{74UDO8Mb5P%CG7jDo?%U8=_cWTGSTGSyhUc=gUUwZ%_^cumKi?SWj+@`&6 z$y<1KmsiSymVU4xp0ux|--|jbPr?b5oJw^bS_oF)mCh>=@fHg%iVGnf3+vX*>({tc zlUSy5a*~*6+(m=dL z)*Mw>%eYZN8JnXx!x!iY({~iVi$|d5^2xOEIX8%;>asdr8}g<`Oi1fIydcZ)5$RO> zs&95&zTZ}OJ^u(10TW!dh9|1>dk}2)IY||a>r?4|oyYNNWJD&6Xd;|;b@z3y_k!_F z0C=qfehG;)Z#-7WVP11R0=HW-Av;E|ElAsv|J*BPT>AR0T5}cRsfoIeF`}RQY8EQ) zN$Z*mw3N<+JX`vN$SU#;GnjZKN4Vw%r_^Z*Q-sw^OU)31rJ%sgR3{;q+L_E#d^p|}#` z#l8DxDqXqsjl%gD8kbE&39aFt7I+fRo{iQ9)Fso3-X6cN>>M>)q>L?aIcAWUIhwM9 zEgDy}J6f4?(~GoS=eD|0)!nux+eY+O+$VY-x>>zd%Oc*<28$*PDQEflTgrs1)WI-S%?Ct~yl}xmregOc?B%5<84$VDdvk8u^znkzBpr#-(kXXoha5Ul(qE%hO{0`~38ThH!C2;%;-;_-If={e{yv9fO#=yzI zI|$Lp_3N`n7GH{kT`%?F`1q=Ob)Qcs0v{`DTJ=Oju9)?XWiEJ}dB&*^R5x+f*qG%g zxm!KJ=nwuBTEyg##*s+}Q2Zav-BKoEzepTEX^5S?`c6FU?;CQJ5I)N>)rAR2-NpT0 zI{AWuLxm6uEmXp-uDw$05RkQXetMF)CJHj6S z$Lt1BtH@-&j+i7}#-mMbLP?)L&V^No&fMxY&apZ=P$pj!`aQK<0A{se!%>kNvn|=X z+K@~3fu&WQKKUB+k=5r^FRsbuKMZ$$^R#izgVfq`TjFaOr<}*4rgPP7*-W8m$7T8yc=Ls!&hwZ0)4%!!3{e z{>ST3g_`6&nu0fq(Q`NNiqahkEZYx(=`}oCfg;AiA?^CLj_K3p=hW`F!H_%{17nvc z$|BQ|EjqX6G;K>3{ovC-sRQ8KrEg$8M0u=gk#dVl(JIw1=L9%P^ae}fA#)`t%R0*Y ztOh8(YrbkI{iNW&lc6;B^ZG5ujn{X^y|?X!@!K<8{}b$DsN(ez({)~#C>oFdLDeM{ zOKr0&H(z+Pu5o;M7<1oags7AH*RTPc?>H@~DRw@Yv8PX>$qZ?3UxcRV@*T@nWuaf9 zb0Klg_bs}tgHNqG1YmpKmHA_FO#3VI%S~)PwXHob4R{FFxGf6=HtMY3v<@-0Ls7 zLot`*&@d20hgDrA5}&>?%zs+*L(#ee|11WK{lspHMCc8!h!i#RcN7Pl);zrS$;f$4 z`m`M~1D5v$GX8RR8BI;~Y+3W@pgGdfd0uK8)b8ZMad{PH9OY<~qayq-4DP)gl+kXz zMsC&92Tu)nam~3LNDX|`oBQ1pOlRdJ%f8$rW<5=Wval%BQn^aCu?nB{9Zr0Mg2N?X zs}`9z&Q(zKvC-uhw6WTvk{}xEX?sUZX9)<0W{QSAujzZ1_(t*kx8DPIX|j+O=tA59 z-x8zDB_bHy?B@9tTLX#1{{g9%ABYZ`841wfy(R!uRG!QZ%aer*@7lUnoOpK|6IBsr*0c{;5ljjr0P)hR=W9t^>&cRQkqmu7(6V_zd3*K8A3D`SGgV$ zmPMTCZj+;Zr7xX2{+ZCRW*o0xKH!+;WuW82C2%kG3kD%_SygsPfmdu2M~t4>NFHG- zAoQ;|_4}?iP9M|Oa3*@aM z&pnRbkD2zf5cK|{`n8OkPW2MD_xWW+Cie4%lUs_7Yi41l>-dvZ@(~whvIHU`+`G;V zke-VnkPN*&BR*&SnR1fyQO4*l#ihxr`8T5HXalrBH7xJ5#{i)q#9--W6(scFuw&0D=gmkhfg-G2Z6S^Woc0)0 z=|J?s0^$T8rBvGflWDgplSHDkw$3euq=192^E-cxBrPV9et3zNEhlLOmN6vl-t8Q; zmbyob-|pkxP#Tus{J-Pi!Ai16_TdL7O&n-5{k_B_8&z-lHu~Y z_siTqRq6A4PE#OvpQO|ZyA863{|tKlB5&ycxS-M5BzAC)f+SyD+FF}IAoLS$f>Mu4 zvf-@7)ZG?iUfJ`Ue^=gLHaJBOLsPs{dN(*4f0l;4;eJ8%6;LtJa*k6>IStnR2t-hT zYgFOPo!rt{Ib1cL>+z3aXS+y* z`r3qFtrt%8qACh02y)xJ!~IJs?p)QyM@sN%^MFULH` z57C!78n9m*_l_#On4sGna!Pc`4-6;*uWa4XL<&l!Y$7f%B<~Gdq3rv@uU^}Krx@SE zqSwE}#bkAKiQZjruY_q*p3BU*^b>?}dF@Ec(utV!C-8?W`3jEot6lQ`1Tt&XTR@gK3;46KvDqj-hSPyo|Zs@Z~cT$3T)(Cl3$lR?ynFJI1UB;jYg- z3~xzz-N^uBkSpJq^{!3}$WD*{E)+0}Dnub;Vxy1S-n7qsJuiPA^dX?qUZ4zOEn*;L zfC+IvrBCUhELGFisY)t8YB6K>?b52S-N`hPf*#t ziN$src3AL6CQ%h;%pklSeoP_H&ffU%2NJn)8XXguE*uSdOF6smCf{`fn5I z6pHBjT~K|8be$uHH|nV*n-qfW{mM|pCf7Vi3E3e=V(aO?$@Z#@@b{J*89A-g92WtE zfM{$9Mp9$2OjmRXn#z6z%$|BD?D=-XcDjDis|}LP%Xjq}E(Ex8OWxCn z&U2R$yhjoV4Ft6}r`4lyY&(ZawJrkDhUIxW5)$4g&Oz^K!BpXTyYqG*Kgv604#)H0 zcX)`{?hzI{ZZs(bD_b3V` zC61oXx^&Y*lFdCZ0&T*2?UXm}U37SMWMR)}>54*Rno*}0zAwXq4OtyahE5;;fO@2lPR5K5igf&@0(?T#E z0{Zis1BFwbwP4T%c|H0>%TM_k7&|Y7k}sIiH-~X7V%j2_<AWaAK4DwDYmcMtDmq7m+PD;_x}JI?&uTEI+ZUDpAN%x2z9LHzbs6A?>4uk zoZ4vIdAs2ETC2R`Q8=}h5i+XK(I2HukAbOH!A6XKaW?BYJ>@PTDM z=h9p+4W-Cpm$yV8i>E8J(5Qr5{}ltej*0txsFQ;+>8k9p_IkNSQi>M53Jnx7Izik! zWx#p@VT#WrZw3F&Mb8F#Owg){g_={@ZT9LL#A6pQHHGtrXmyy85wByYgp^VTmdb>M zIOXp}j4?!ti1sddp7}}>39~qWEeCDL2LD!T!Um8^g9T7}7auXTBIn*5ZFY=1TvVdCEEHYUt`>*z>cQg|a1 zA>Ki4{)GKA-^nMD+M!}CMM%E473&}v; zhR)`G+x?V^^nbh|%XlJnLCoI?u*ki(&=VGO1YfJ!VA_jCJFYVHWB*u(zn{CgA$Xo!l)gL%o7qum`d^_hYI!J%eu(Z z;%+u*U2k3~(8zyPBo6Jxy@+GFA7cwf`tVj^AX)iGi||YYn~alb@v@N)>@|O#aK+pH zWQ1FM;qNztjIX*zo@b_k2Lo`tyE4L`J^E_Yphe%0h3>)AH`(tc<4;TcmbKuxcs&M$z{Ken}Jk0tAyly*E>spu^HE_KDh=^Lo@fV8bWQldHqxu`Ul|LZdYPZ{EN$KI*UQ3%uNGVWvJN+ZOKUf* zdH=mX`doMRHrtqWeC~DLf@x(wsiwX1YAPxn*As$>k#}BV@#cY`GMzyYU zV%OGYSiXuf<+k)Frsu2K^VSDCaq(_b#Be4AcbIea6JO-@HYg% zOTkBWo7!xDAj7h24zw$Jq6LCfxpW|2Tt|%E;Ka+U!)Kmt(~rA$whKqJ#YCTpw{G=N z+}w~5VyO_kchjzGOR@4`gyh;e2=tT|)z`rArWD=HmIUw*eiU8!#*9_nV55F2#T3jj z9vvS<&nCT)q!5zeHTb8?3rCqq@R+C|@AkwH`v0&sDVg|^OOrwUO3L*Y$42*KZTP1fYw@TctzLm zN|j&&+eA`Od6E&``pvwd{|$F|{s+?_&s1*?7Ch7|ekJ*s&7O>Kn2tnA3m+_S!wvi& zckLF8E5a2ITw5p$>psg;!Bx^?W4V9g;8pdwLOxpIP&iDfix|wTCp;cHjUSLWQ8FfD zQ*&iysyTt(q4Vx#FcPSgde!L>$0~vDTb;op0ZwZC`P1hNS}X5^Po9x|P}zC-Y2Hf- zY)|f5{jUd-Qe9rB(VM&RVI=4oj_T>&>i~3%)0!foX-GoX?`00k&=UZ>*W2eg>t@bJ zltf9uIW8TbM(wD0vE5b=sPrS8CR*oOvV=qBj^GO(=4VN^zi@^q0-E-T9C1|2M9hr& zS=80}U=CYNWPHEP>yES>Q7AkL(od;E8lxzc8Xr`a!ZA^7EQH#>f%D1^ugoXsG^ZA1 zbXvtMi>|LnD1Gxk2u~2ISW60p3nGYci))wHJc*a?zcK*GeOVh@x0_0VQFKqx&NVU;)Wa1+Jhc6(r_ik)gMTJ*p<|6Hy7=awiEqxGprxKW zWnw)$DN@0IPlH8c>OSgFkg0mg2}9P}bjd88UrJRkUm3G}?oE93rY3Gxl1-mWndxTP z2hHXXf$Hnc;ZWn%%MmIKQlQLx-qqywkL~2Ryzo`;y}FhXUM+KpuZxa;`aSyj!u^vG z#L9&-=h?-#2K@JwMLKHBOEC1{r(Em5BY1L(R|s`er8-A6H zwAdRyTBaBYLw&BBXHh(01J>!=xva26Dg1V1toXq}LI^!=w*B1s-;P?(rjFkD3MQr3 zW}gEkjdsJ@=F=X;Eg#-{-#?DazjUC!S=N{!Oa+I#V<)2qW$Cw~Bn3}wZ@ZnhpqB`6 zCA&pvhc1H~9dk*CYNK(U)~_L5%GYOFT$`6`SvtJsUF5Y5LdPC<_g9%}20V|df%Szp zCO{f4W|7-}`)rpFQ-&b?Tj#+GT^~y{tvV_;W&Z2JO(_UHDD1X;C#LLb=V3wusJ=!4T%y*d^Z`PL$Lc++``)C`HSzlt^s$AjkE5Ui_2G0 zj=ei>JC`|_{DzA1uJtr1F~6nh^&a=u@!vU5)``zdrwWEj z>|>kPU8usEC__X5k_ytr;>*B~I%-1p_(3p1Eh94?!7&mld4721?U4OcdFNO$}TE5xovvPK+RixC4sGkNb=RVyS=?- zKTdYhYPi!wh=E@N))D2`QoAo@;>TP@jyu{;y&sbqE6Akn$7{PQz1Ugy-@e4loSTyd zJO3ofFINBZYJkU_qDZ9wnP=Xb|6fnn{ttD&#+A!bb{&nCkxLPSCT$qQnicIzBSVv= zylU2Eh(wDrgJx2s>=@%d$;8ajv^FKzwX4kRBDov4T9?M8Lc)$HjBz>7oIS7e{Rh6E z@Arr2^E~h8eYw3`9kvqKBz8{3j`^Y=KPVcfN1;!o^Pj;DRuA(4tyBvnWw7s%v;4kn zv=Vy;t|aC>Pv!k#!TfA)YSFQfv~?nM$R9B|8Z)Naef5r1|~>)&i?dttwwt&L?fz;?!y^e`lN4F4iD4cm1|_J|PZ zGrj5suumgZQ!zCPXsv^MO%$Bs%?tiABEZjV-Ps77ti&a04cC~T-+#a;)=Z|9uX(T6 z+~0fd@HzXjXxcWPeeUv)0ZzFAoh9gZ6*$UHx3>@5RAPtuuRba^CZZKQ-pcu%n$WxU zlJ^Tti)S*0V0Y>?fxf>6cNZHocCYpa&4jQhcM;g z*G`c^^N=MC*#~6^(7U-EdDg&l*!Sz!k^K#&44u!-z zR(;Yts^g|}V^7P6+?=Pgp4KS#jS?n(lY1!1qVojfjmkhZ#?`Rv_sORgEBELCRex|_HCHVO##+VlX zIz#%kzI?EnIVwVh%zD(R%{hZgRw~ci3ybRDwLYUwdhJ<DE2yt5owthqdSI2<VbPK6iKzYVGlbudSlnREpE3>8ioj;hjni`%U4{2q+|! zbn_I7Z$2Roz``OI5*v`4>9?1+aJ;AXz-l%~Pl$Q`Nk+3D7=ZZePv61^0*GOusr-E+ z7Zl9kK$xPE{#`~4q^mCeiW33B4P^99(eZ;w8w${&uvU|xVc6;jkLDaoC1S;D(5M=CW(h&uf2 zyw8=Cl+6_x0j#sSgFHd)@ttn2n;Yw#E+Z2}Ji62MGS}*O+fY>-&+x{UjFTtQc!J5J zUXVZ@icAesLO!{Ak0)T8A>;~X*5ZlmiLx^FDp?-Di`zNgu~Dhaxpp=I!i2|W zC!FF)*kyftZciA%Ejia=xkh@>7}F*90zwV-MbrJKEBcapNs@*7E2n?Px0_l+;O;1) zT8q`$tqzmPltPGuALV?6Z)I*$3Inxa9iQkHp=iTG2Ta%FKZPNrIIQ)0^n}dmH-rgB|%kSA(?g*KR-{HfafW*z)6gWJ(m?o>eWRSnQ~9VZ2?^W6sDkkgzst4YOMMkW25U9 zAwoquM}=C3OH;F|XvAkr@qk1{^%@;Ii_XkP;TQV8=@-+swS&9OuGVWzx+3K?OvZXF zgE5sSMZ>>W)s7^$28|TP4G+E5b#Yd~z3X z2DE@+@-gF8O>$kwYIkX6dqiMkfxBi<0ee)CyyUl=JbHVz(sCGPxuXCEUcZ3#mkkOt zvov1zoal9Cm_cLU7_-Z!POY=LZTXvR&19_QYFc-xq@}wQx6{|aVcQdhd2_kc^CZit z3giM_3B_1ngE}z@n&?r-QR>t6g5!mZ_pk0EY9&p+939YVDWFP5M_-%}5vSHMUVJC4 z8;_io7Bqr6UX*D(q1SoU+!xDzrn_&nE?eV_i&|8+_MrpeKPubQ-N0~kL{nAEuKw(- zDlLDHjyu<^$mAJZNTgw>t9(W70>7>~dVaiX5sX^fh78PQEQ1Ag39=+zTFdb!bNc3s zFlVy!h}v@|SEw_?o8|A0Ux%OdKU#2ai$cKp5W<|+lFp!2C?(W8Y$bT`ZeHI#Ivkk% EALL?rr2qf` literal 0 HcmV?d00001 diff --git a/cmake/apple/lmms.plist.in b/cmake/apple/lmms.plist.in index 10ff7a9967b..88fe0b0bf06 100644 --- a/cmake/apple/lmms.plist.in +++ b/cmake/apple/lmms.plist.in @@ -147,5 +147,7 @@ NSApplication NSHighResolutionCapable True + NSRequiresAquaSystemAppearance + False diff --git a/cmake/apple/package_apple.json.in b/cmake/apple/package_apple.json.in index 76c48759994..1d1147cbf21 100644 --- a/cmake/apple/package_apple.json.in +++ b/cmake/apple/package_apple.json.in @@ -1,9 +1,9 @@ { "title": "@MACOSX_BUNDLE_BUNDLE_NAME@ @MACOSX_BUNDLE_LONG_VERSION_STRING@", "background": "@CMAKE_SOURCE_DIR@/cmake/apple/dmg_branding.png", - "icon-size": 72, + "icon-size": 128, "contents": [ - { "x": 460, "y": 260, "type": "link", "path": "/Applications" }, - { "x": 220, "y": 260, "type": "file", "path": "@CMAKE_BINARY_DIR@/@MACOSX_BUNDLE_BUNDLE_NAME@.app" } + { "x": 139, "y": 200, "type": "file", "path": "@CMAKE_BINARY_DIR@/@MACOSX_BUNDLE_BUNDLE_NAME@.app" }, + { "x": 568, "y": 200, "type": "link", "path": "/Applications" } ] } diff --git a/cmake/linux/package_linux.sh.in b/cmake/linux/package_linux.sh.in index 2cefe73c6ea..0dec715f480 100644 --- a/cmake/linux/package_linux.sh.in +++ b/cmake/linux/package_linux.sh.in @@ -74,8 +74,10 @@ else success "Downloaded $LINUXDEPLOYQT" # Extract AppImage and replace LINUXDEPLOYQT variable with extracted binary # to support systems without fuse + # Also, we need to set LD_LIBRARY_PATH, but linuxdepoyqt's AppRun unsets it + # See https://github.com/probonopd/linuxdeployqt/pull/370/ "$LINUXDEPLOYQT" --appimage-extract > /dev/null 2>&1 - LINUXDEPLOYQT="squashfs-root/AppRun" + LINUXDEPLOYQT="squashfs-root/usr/bin/linuxdeployqt" success "Extracted $APPIMAGETOOL" fi @@ -101,6 +103,7 @@ mv "${APPDIR}usr/bin/lmms" "${APPDIR}usr/bin/lmms.real" cat >"${APPDIR}usr/bin/lmms" < /dev/null 2>&1; then CARLAPATH="\$(which carla)" CARLAPREFIX="\${CARLAPATH%/bin*}" @@ -134,15 +137,15 @@ export LD_LIBRARY_PATH="${APPDIR}usr/lib/lmms/":$LD_LIBRARY_PATH # Handle wine linking if [ -d "@WINE_32_LIBRARY_DIR@" ]; then - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$LD_LIBRARY_PATH/wine/:@WINE_32_LIBRARY_DIR@:@WINE_32_LIBRARY_DIR@wine/ + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:@WINE_32_LIBRARY_DIRS@ fi if [ -d "@WINE_64_LIBRARY_DIR@" ]; then - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$LD_LIBRARY_PATH/wine/:@WINE_64_LIBRARY_DIR@:@WINE_64_LIBRARY_DIR@wine/ + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:@WINE_64_LIBRARY_DIRS@ fi # Move executables so linuxdeployqt can find them ZYNLIB="${APPDIR}usr/lib/lmms/RemoteZynAddSubFx" -VSTLIB32="${APPDIR}usr/lib/lmms/RemoteVstPlugin32.exe.so" +VSTLIB32="${APPDIR}usr/lib/lmms/32/RemoteVstPlugin32.exe.so" VSTLIB64="${APPDIR}usr/lib/lmms/RemoteVstPlugin64.exe.so" ZYNBIN="${APPDIR}usr/bin/RemoteZynAddSubFx" @@ -172,8 +175,10 @@ executables="${executables} -executable=${APPDIR}usr/lib/lmms/ladspa/pitch_scale # Bundle both qt and non-qt dependencies into appimage format echo -e "\nBundling and relinking system dependencies..." echo -e ">>>>> linuxdeployqt" > "$LOGFILE" +# FIXME: -unsupported-allow-new-glibc may result in an AppImage which is unusable on old systems. + # shellcheck disable=SC2086 -"$LINUXDEPLOYQT" "$DESKTOPFILE" $executables -bundle-non-qt-libs -verbose=$VERBOSITY $STRIP >> "$LOGFILE" 2>&1 +"$LINUXDEPLOYQT" "$DESKTOPFILE" $executables -unsupported-allow-new-glibc -bundle-non-qt-libs -verbose=$VERBOSITY $STRIP >> "$LOGFILE" 2>&1 success "Bundled and relinked dependencies" # Link to original location so lmms can find them diff --git a/cmake/modules/CheckWineGcc.cmake b/cmake/modules/CheckWineGcc.cmake new file mode 100644 index 00000000000..2956198d894 --- /dev/null +++ b/cmake/modules/CheckWineGcc.cmake @@ -0,0 +1,27 @@ +INCLUDE(CheckCXXSourceCompiles) + +FUNCTION(CheckWineGcc BITNESS WINEGCC_EXECUTABLE RESULT) + FILE(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/winegcc_test.cxx" " + #include + #define USE_WS_PREFIX + #include + int main(int argc, const char* argv[]) { + return 0; + } + ") + EXECUTE_PROCESS(COMMAND ${WINEGCC_EXECUTABLE} "-m${BITNESS}" + "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/winegcc_test.cxx" + "-o" "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/winegcc_test" + OUTPUT_QUIET ERROR_QUIET + RESULT_VARIABLE WINEGCC_RESULT + ) + FILE(REMOVE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/winegcc_test.cxx" + "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/winegcc_test" + "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/winegcc_test.exe.so" + ) + IF(WINEGCC_RESULT EQUAL 0) + SET(${RESULT} True PARENT_SCOPE) + ELSE() + SET(${RESULT} False PARENT_SCOPE) + ENDIF() +ENDFUNCTION() diff --git a/cmake/modules/FindWine.cmake b/cmake/modules/FindWine.cmake index 225d6a824ba..50bf54edbc6 100644 --- a/cmake/modules/FindWine.cmake +++ b/cmake/modules/FindWine.cmake @@ -7,46 +7,89 @@ # WINE_DEFINITIONS - Compiler switches required for using wine # -LIST(APPEND CMAKE_PREFIX_PATH /opt/wine-stable /opt/wine-devel /opt/wine-staging /usr/lib/wine/) +MACRO(_findwine_find_flags output expression result) + STRING(REPLACE " " ";" WINEBUILD_FLAGS "${output}") + FOREACH(FLAG ${WINEBUILD_FLAGS}) + IF("${FLAG}" MATCHES "${expression}") + SET(${result} "${FLAG}") + ENDIF() + ENDFOREACH() +ENDMACRO() +LIST(APPEND CMAKE_PREFIX_PATH /opt/wine-stable /opt/wine-devel /opt/wine-staging /usr/lib/wine/) -FIND_PATH(WINE_INCLUDE_DIR wine/exception.h PATH_SUFFIXES wine) FIND_PROGRAM(WINE_CXX NAMES wineg++ winegcc winegcc64 winegcc32 winegcc-stable - PATHS /usr/lib/wine) + PATHS /usr/lib/wine +) FIND_PROGRAM(WINE_BUILD NAMES winebuild) +# Detect wine paths and handle linking problems +IF(WINE_CXX) + EXEC_PROGRAM(${WINE_CXX} ARGS "-m32 -v /dev/zero" OUTPUT_VARIABLE WINEBUILD_OUTPUT_32) + EXEC_PROGRAM(${WINE_CXX} ARGS "-m64 -v /dev/zero" OUTPUT_VARIABLE WINEBUILD_OUTPUT_64) + _findwine_find_flags("${WINEBUILD_OUTPUT_32}" "^-isystem/usr/include$" BUGGED_WINEGCC) + _findwine_find_flags("${WINEBUILD_OUTPUT_32}" "^-isystem" WINEGCC_INCLUDE_DIR) + _findwine_find_flags("${WINEBUILD_OUTPUT_32}" "libwinecrt0\\.a.*" WINECRT_32) + _findwine_find_flags("${WINEBUILD_OUTPUT_64}" "libwinecrt0\\.a.*" WINECRT_64) + STRING(REGEX REPLACE "^-isystem" "" WINE_INCLUDE_HINT "${WINEGCC_INCLUDE_DIR}") + STRING(REGEX REPLACE "/wine/windows$" "" WINE_INCLUDE_HINT "${WINE_INCLUDE_HINT}") + STRING(REGEX REPLACE "libwinecrt0\\.a.*" "" WINE_32_LIBRARY_DIR "${WINECRT_32}") + STRING(REGEX REPLACE "libwinecrt0\\.a.*" "" WINE_64_LIBRARY_DIR "${WINECRT_64}") + + IF(BUGGED_WINEGCC) + MESSAGE(WARNING "Your winegcc is unusable due to https://bugs.winehq.org/show_bug.cgi?id=46293,\n + Consider either upgrading or downgrading wine.") + RETURN() + ENDIF() + IF(WINE_32_LIBRARY_DIR STREQUAL WINE_64_LIBRARY_DIR) + MESSAGE(STATUS "Old winegcc detected, trying to use workaround linking") + # Fix library search directory according to the target bitness + IF(WINE_32_LIBRARY_DIR MATCHES "/lib/(x86_64|i386)-") + # Debian systems + STRING(REPLACE "/lib/x86_64-" "/lib/i386-" WINE_32_LIBRARY_DIR "${WINE_32_LIBRARY_DIR}") + STRING(REPLACE "/lib/i386-" "/lib/x86_64-" WINE_64_LIBRARY_DIR "${WINE_64_LIBRARY_DIR}") + ELSEIF(WINE_32_LIBRARY_DIR MATCHES "/(lib|lib64)/wine/$") + # WineHQ (/opt/wine-stable, /opt/wine-devel, /opt/wine-staging) + STRING(REGEX REPLACE "/lib64/wine/$" "/lib/wine/" WINE_32_LIBRARY_DIR "${WINE_32_LIBRARY_DIR}") + STRING(REGEX REPLACE "/lib/wine/$" "/lib64/wine/" WINE_64_LIBRARY_DIR "${WINE_64_LIBRARY_DIR}") + ELSEIF(WINE_32_LIBRARY_DIR MATCHES "/lib32/.*/wine/") + # Systems with old multilib layout + STRING(REPLACE "/lib32/" "/lib/" WINE_64_LIBRARY_DIR "${WINE_32_LIBRARY_DIR}") + ELSEIF(WINE_32_LIBRARY_DIR MATCHES "/lib64/.*/wine/") + # We need to test if the corresponding 64bit library directory is lib or lib32 + STRING(REPLACE "/lib64/" "/lib32/" WINE_32_LIBRARY_DIR "${WINE_64_LIBRARY_DIR}") + IF(NOT EXISTS "${WINE_32_LIBRARY_DIR}") + STRING(REPLACE "/lib64/" "/lib/" WINE_32_LIBRARY_DIR "${WINE_64_LIBRARY_DIR}") + ENDIF() + ELSEIF(WINE_32_LIBRARY_DIR MATCHES "/lib/.*/wine/") + # Test if this directory is for 32bit or 64bit + STRING(REPLACE "/lib/" "/lib32/" WINE_32_LIBRARY_DIR "${WINE_64_LIBRARY_DIR}") + IF(NOT EXISTS "${WINE_32_LIBRARY_DIR}") + SET(WINE_32_LIBRARY_DIR "${WINE_64_LIBRARY_DIR}") + STRING(REPLACE "/lib/" "/lib64/" WINE_64_LIBRARY_DIR "${WINE_64_LIBRARY_DIR}") + ENDIF() + ELSE() + MESSAGE(WARNING "Can't detect wine installation layout. You may get some build errors.") + ENDIF() + SET(WINE_LIBRARY_FIX "${WINE_32_LIBRARY_DIR} and ${WINE_64_LIBRARY_DIR}") + ENDIF() +ENDIF() + +FIND_PATH(WINE_INCLUDE_DIR wine/exception.h + HINTS "${WINE_INCLUDE_HINT}" +) SET(_ARCHITECTURE ${CMAKE_LIBRARY_ARCHITECTURE}) -FIND_LIBRARY(WINE_LIBRARY NAMES wine PATH_SUFFIXES wine i386-linux-gnu/wine) +FIND_LIBRARY(WINE_LIBRARY NAMES wine + PATH_SUFFIXES wine i386-linux-gnu/wine + HINTS "${WINE_32_LIBRARY_DIR}" "${WINE_64_LIBRARY_DIR}" +) SET(CMAKE_LIBRARY_ARCHITECTURE ${_ARCHITECTURE}) SET(WINE_INCLUDE_DIRS ${WINE_INCLUDE_DIR} ) -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}") - -FOREACH(FLAG ${WINEBUILD_FLAGS}) - IF("${FLAG}" MATCHES "libwinecrt0.a.*") - STRING(REGEX REPLACE "/wine/libwinecrt0.a.*" "" FLAG "${FLAG}") - - SET(WINE_64_LIBRARY_DIR "${FLAG}/") - - # 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(REGEX REPLACE "/lib64$" "/lib" FLAG "${FLAG}") - - SET(WINE_32_LIBRARY_DIR "${FLAG}/") - ENDIF() -ENDFOREACH() +SET(WINE_LIBRARIES ${WINE_LIBRARY}) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Wine DEFAULT_MSG WINE_CXX WINE_LIBRARIES WINE_INCLUDE_DIRS) @@ -54,7 +97,23 @@ find_package_handle_standard_args(Wine DEFAULT_MSG WINE_CXX WINE_LIBRARIES WINE_ mark_as_advanced(WINE_INCLUDE_DIR WINE_LIBRARY WINE_CXX WINE_BUILD) IF(WINE_32_LIBRARY_DIR) - SET(WINE_32_FLAGS "-L${WINE_32_LIBRARY_DIR}wine/ -L${WINE_32_LIBRARY_DIR}") + IF(WINE_32_LIBRARY_DIR MATCHES "wine*/lib") + SET(WINE_32_FLAGS "-L${WINE_32_LIBRARY_DIR} -L${WINE_32_LIBRARY_DIR}../") + SET(WINE_32_LIBRARY_DIRS "${WINE_32_LIBRARY_DIR}:${WINE_32_LIBRARY_DIR}/..") + ELSE() + SET(WINE_32_FLAGS "-L${WINE_32_LIBRARY_DIR}") + SET(WINE_32_LIBRARY_DIRS "${WINE_32_LIBRARY_DIR}") + ENDIF() +ENDIF() + +IF(WINE_64_LIBRARY_DIR) + IF(WINE_64_LIBRARY_DIR MATCHES "wine*/lib") + SET(WINE_64_FLAGS "-L${WINE_64_LIBRARY_DIR} -L${WINE_64_LIBRARY_DIR}../") + SET(WINE_64_LIBRARY_DIRS "${WINE_64_LIBRARY_DIR}:${WINE_64_LIBRARY_DIR}/..") + ELSE() + SET(WINE_64_FLAGS "-L${WINE_64_LIBRARY_DIR}") + SET(WINE_64_LIBRARY_DIRS "${WINE_64_LIBRARY_DIR}") + ENDIF() ENDIF() # Create winegcc wrapper diff --git a/cmake/modules/winegcc_wrapper.in b/cmake/modules/winegcc_wrapper.in index d7d680be239..d32aec66432 100755 --- a/cmake/modules/winegcc_wrapper.in +++ b/cmake/modules/winegcc_wrapper.in @@ -22,6 +22,9 @@ while [ $# -gt 0 ]; do -m32) win32=true ;; + -m64) + win64=true + ;; *) ;; @@ -42,11 +45,19 @@ fi # by FindWine.cmake extra_args="-I@WINE_INCLUDE_DIR@ -I@WINE_INCLUDE_DIR@/wine/windows" +# Apply manually specified flags +extra_args="$extra_args @WINE_CXX_FLAGS@" + # Apply -m32 library fix if necessary if [ "$win32" = true ] && [ "$no_link" != true ]; then extra_args="$extra_args @WINE_32_FLAGS@" fi +# Apply -m64 library fix if necessary +if [ "$win64" = true ] && [ "$no_link" != true ]; then + extra_args="$extra_args @WINE_64_FLAGS@" +fi + # Run winegcc export WINEBUILD=@WINE_BUILD@ @WINE_CXX@ $extra_args $args diff --git a/data/locale/cs.ts b/data/locale/cs.ts index a82f6596c5d..ffb3b8a0964 100644 --- a/data/locale/cs.ts +++ b/data/locale/cs.ts @@ -1,64 +1,6 @@ - - - AboutDialog - - About LMMS - O LMMS - - - Version %1 (%2/%3, Qt %4, %5) - Verze %1 (%2/%3, Qt %4, %5) - - - About - O LMMS - - - LMMS - easy music production for everyone - LMMS – snadné vytváření hudby pro každého - - - Authors - Autoři - - - Translation - Překlad - - - 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! - Michal Janošík - <m164/zavináč/seznam/tečka/cz> - -Chcete-li vylepšit stávající překlad, Vaše pomoc bude vítána! Stačí jen kontaktovat vývojáře! - - - License - Licence - - - LMMS - LMMS - - - Involved - Spolupracovníci - - - Contributors ordered by number of commits: - Přispěvovatelé řazeni podle počtu příspěvků: - - - Copyright © %1 - 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> - <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 @@ -113,94 +55,47 @@ Chcete-li vylepšit stávající překlad, Vaše pomoc bude vítána! Stačí je Zesílení vpravo - - AudioAlsaSetupWidget - - DEVICE - ZAŘÍZENÍ - - - CHANNELS - KANÁLY - - AudioFileProcessorView - - Open other sample - Otevřít jiný sampl - - - 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. - Klepnutím sem můžete otevřít jiný audio soubor. Zobrazí se dialog, pomocí kterého si soubor můžete vybrat. Nastavení smyčky, počátečního a koncového bodu, zesílení apod. zůstanou nezměněná, takže to nemusí znít jako původní sampl. - Reverse sample Přehrávat pozpátku - - If you enable this button, the whole sample is reversed. This is useful for cool effects, e.g. a reversed crash. - Zapnete-li toto tlačítko, celý sampl bude přehráván pozpátku. Tato volba je užitečná pro zajímavé efekty jako např. pozpátku přehraná srážka. - Amplify: Zesílení: - - 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!) - Tímto otočným ovladačem můžete nastavit poměr zesílení. Pokud nastavíte hodnotu 100%, sampl se nezmění. Jinak se zesílí nebo ztiší (váš stávající soubor samplu tím nebude nijak ovlivněn!) - - - Startpoint: - Začátek samplu: - - - Endpoint: - Konec samplu: - Continue sample playback across notes Pokračovat v přehrávání samplu při změně noty - - 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) - Povolení této možnosti způsobí, že se sampl bude přehrávat přes různé tóny – když změníte výšku tónu nebo když tón skončí před koncem samplu, bude další přehrávaný tón pokračovat tam, kde přestal. Pro obnovení přehrávání od začátku samplu vložte tón do spodní části klávesnice (< 20 Hz) - Disable loop Vypnout smyčku - - This button disables looping. The sample plays only once from start to end. - Toto tlačítko vypne smyčku. Sampl bude přehrán jen jednou od začátku do konce. - Enable loop Zapnout smyčku - This button enables forwards-looping. The sample loops between the end point and the loop point. - Toto tlačítko zapne smyčku směrem dopředu. Vzorek se bude vracet z koncového bodu na začátek. - - - This button enables ping-pong-looping. The sample loops backwards and forwards between the end point and the loop point. - Toto tlačítko zapne smyčku typu ping-pong. Vzorek bude přehráván dopředu a zpět mezi koncovým bodem a začátkem smyčky. + Loopback point: + Začátek smyčky: - With this knob you can set the point where AudioFileProcessor should begin playing your sample. - Tímto otočným ovladačem můžete nastavit bod, od kterého bude AudioFileProcessor přehrávat váš sampl. + Open sample + - With this knob you can set the point where AudioFileProcessor should stop playing your sample. - Tímto otočným ovladačem můžete nastavit bod, ve kterém AudioFileProcessor zastaví přehrávání vašeho samplu. + Enable ping-pong loop + - Loopback point: - Začátek smyčky: + Start point: + - With this knob you can set the point where the loop starts. - Tímto otočným ovladačem můžete nastavit bod, kterým začíná smyčka. + End point: + @@ -211,9151 +106,4170 @@ Chcete-li vylepšit stávající překlad, Vaše pomoc bude vítána! Stačí je - AudioJack - - JACK client restarted - Klient JACK je restartován - - - 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. - LMMS bylo z nějakého důvodu shozeno JACKem. Proto byl ovladač JACK v LMMS restartován. Musíte znovu provést ruční připojení. - + BassBoosterControlDialog - JACK server down - JACK server byl zastaven + FREQ + FREKV - 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. - Vypnutí a nové spuštění serveru JACK se nezdařilo. LMMS proto nemůže pokračovat. Uložte svůj projekt a restartujte JACK i LMMS. + Frequency: + Frekvence: - CLIENT-NAME - JMÉNO-KLIENTA + GAIN + ZES - CHANNELS - KANÁLY + Gain: + Zesílení: - - - AudioOss::setupWidget - DEVICE - ZAŘÍZENÍ + RATIO + POMĚR - CHANNELS - KANÁLY + Ratio: + Poměr: - AudioPortAudio::setupWidget - - BACKEND - OVLADAČ - + BassBoosterControls - DEVICE - ZAŘÍZENÍ + Frequency + Frekvence - - - AudioPulseAudio::setupWidget - DEVICE - ZAŘÍZENÍ + Gain + Zesílení - CHANNELS - KANÁLY + Ratio + Poměr - AudioSdl::setupWidget + BitcrushControlDialog - DEVICE - ZAŘÍZENÍ + IN + IN - - - AudioSndio::setupWidget - DEVICE - ZAŘÍZENÍ + OUT + OUT - CHANNELS - KANÁLY + GAIN + ZISK - - - AudioSoundIo::setupWidget - BACKEND - OVLADAČ + CLIP + OŘÍZ - DEVICE - ZAŘÍZENÍ + Sample rate: + Vzorkovací frekvence: - - - AutomatableModel - &Reset (%1%2) - &Resetovat hodnoty (%1%2) + Stereo difference: + Stereo rozdíl: - &Copy value (%1%2) - &Kopírovat hodnoty (%1%2) + Levels: + Úrovně: - &Paste value (%1%2) - &Vložit hodnoty (%1%2) + NOISE + ŠUM - Edit song-global automation - Upravit automatizaci pro celou skladbu + FREQ + FREKV - Connected to %1 - Připojeno k %1 + STEREO + STEREO - Connected to controller - Připojeno ke kontroléru + QUANT + KVANT - Edit connection... - Upravit připojení... + Input gain: + Zesílení vstupu: - Remove connection - Odebrat připojení + Input noise: + - Connect to controller... - Připojit ke kontroléru... + Output gain: + Zesílení výstupu: - Remove song-global automation - Odebrat obecnou automatizaci + Output clip: + - Remove all linked controls - Odebrat všechny propojené ovládací prvky + Rate enabled + - - - AutomationEditor - Please open an automation pattern with the context menu of a control! - Otevřete prosím automatizační pattern pomocí kontextové nabídky ovládání! + Enable sample-rate crushing + - Values copied - Hodnoty zkopírovány + Depth enabled + - All selected values were copied to the clipboard. - Všechny označené hodnoty byly zkopírovány do schránky. + Enable bit-depth crushing + - AutomationEditorWindow - - Play/pause current pattern (Space) - Přehrát/Pozastavit přehrávání aktuálního patternu (mezerník) - - - 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. - Klepněte sem, pokud chcete přehrát aktuální pattern. To je šikovné při editaci, neboť pattern je automaticky přehráván ve smyčce. - - - Stop playing of current pattern (Space) - Zastavit přehrávání aktuálního patternu (mezerník) - - - Click here if you want to stop playing of the current pattern. - Klepněte sem, pokud chcete zastavit přehrávání aktuálního patternu. - + BitcrushControls - Draw mode (Shift+D) - Režim kreslení (Shift+D) + Input gain + Zesílení vstupu - Erase mode (Shift+E) - Režim mazání (Shift+E) + Input noise + - Flip vertically - Převrátit vertikálně + Output gain + Zesílení výstupu - Flip horizontally - Převrátit horizontálně + Output clip + - Click here and the pattern will be inverted.The points are flipped in the y direction. - Klepněte sem, pokud chcete převrátit pattern. Body budou převráceny v ose y. + Sample rate + - Click here and the pattern will be reversed. The points are flipped in the x direction. - Klepněte sem, pokud chcete převrátit pattern. Body budou převráceny v ose x. + Stereo difference + - 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. - Klepněte sem, pokud chcete aktivovat režim kreslení. V tomto výchozím a nejčastěji užívaném režimu lze přidávat a přesunovat jednotlivé hodnoty. Pro aktivaci můžete využít též klávesové zkratky "Shift+D". + Levels + - 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. - Klepněte sem, pokud chcete aktivovat režim mazání. V tomto režimu lze mazat jednotlivé hodnoty. Pro aktivaci můžete využít též klávesové zkratky "Shift+E". + Rate enabled + - Discrete progression - Terasovitý průběh + Depth enabled + + + + CarlaInstrumentView - Linear progression - Lineární průběh + Show GUI + Ukázar grafické rozhraní + + + CrossoverEQControlDialog - Cubic Hermite progression - Křivkovitý průběh + Band 1/2 crossover: + - Tension value for spline - Hodnota napětí pro křivku + Band 2/3 crossover: + - 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. - Vyšší hodnota napětí vytvoří hladší křivku, ale více se vzdálí od zadaných hodnot. Nižší hodnota napětí upřednostní výchozí sklon křivky v každém kontrolním bodě. + Band 3/4 crossover: + - 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. - Klepnutím sem vyberete terasovitý vývoj pro tento automatizační pattern. Hodnota připojeného objektu zůstane konstantní mezi ovládacími body a okamžitě nastavena na novou hodnotu, když se dosáhne dalšího ovládacího bodu. + Band 1 gain + - 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. - Klepnutím sem vyberete lineární vývoj pro tento automatizační pattern. Hodnota připojeného objektu bude mezi ovládacími body měněna přímočaře, aby postupně došlo k dosažení dalšího kontrolního bodu. + Band 1 gain: + - 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. - Klepnutím sem vyberte vývoj typu cubic hermite pro tento automatizační pattern. Hodnota připojeného objektu se změní po plynulé křivce a lehce přejde do vrchních a spodních bodů. + Band 2 gain + - Cut selected values (%1+X) - Vyjmout označené hodnoty (%1+X) + Band 2 gain: + - Copy selected values (%1+C) - Kopírovat označené hodnoty (%1+C) + Band 3 gain + - Paste values from clipboard (%1+V) - Vložit hodnoty ze schránky (%1+V) + Band 3 gain: + - 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. - Klepněte sem, pokud chcete označené hodnoty vyjmout a uložit do schránky. Vložit je pak můžete kdekoliv v libovolném patternu pomocí tlačítka Vložit. + Band 4 gain + - 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. - Klepněte sem, pokud chcete označené hodnoty zkopírovat do schránky. Vložit je pak můžete kdekoliv v libovolného patternu pomocí tlačítka Vložit. + Band 4 gain: + - Click here and the values from the clipboard will be pasted at the first visible measure. - Klepnete-li sem, budou hodnoty ze schránky vloženy do prvního viditelného taktu. + Band 1 mute + - Tension: - Napětí: + Mute band 1 + - Automation Editor - no pattern - Editor automatizace – žádný pattern + Band 2 mute + - Automation Editor - %1 - Editor automatizace – %1 + Mute band 2 + - Edit actions - Akce úprav + Band 3 mute + - Interpolation controls - Ovládání interpolace + Mute band 3 + - Timeline controls - Ovládání časové osy + Band 4 mute + - Zoom controls - Ovládání zvětšení + Mute band 4 + + + + DelayControls - Quantization controls - Ovládání kvantizace + Feedback + Zpětná vazba - Model is already connected to this pattern. - Model je již k tomuto patternu připojen. + Output gain + Zesílení výstupu - Quantization - Kvantizace + Delay samples + - 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. - Kvantizace. Nastaví nejmenší velikost kroku pro body automatizace. Ve výchozím stavu také nastaví délku a vymazává další body v rozsahu. Stisknutím <Ctrl> zrušíte toto chování. + LFO frequency + - - - AutomationPattern - Drag a control while pressing <%1> - Ovládací prvek táhni při stisknutém <%1> + LFO amount + - AutomationPatternView + DelayControlsDialog - Open in Automation editor - Otevřít v Editoru automatizace + Gain + Zesílení - Clear - Vyčistit + DELAY + ZPOŽ - Reset name - Obnovit výchozí jméno + FDBK + FDBK - Change name - Změnit jméno + RATE + RYCH - %1 Connections - %1 Připojení + AMNT + MNOŽ - Disconnect "%1" - Odpojit "%1" + Delay time + - Set/clear record - Zapnout/Vypnout záznam + Feedback amount + - Flip Vertically (Visible) - Převrátit vertikálně (viditelné) + LFO frequency + - Flip Horizontally (Visible) - Převrátit horizontálně (viditelné) + LFO amount + - Model is already connected to this pattern. - Model je již k tomuto patternu připojen. + Out gain + - AutomationTrack + DualFilterControlDialog - Automation track - Stopa automatizace + Filter 1 enabled + Filtr 1 zapnutý - - - BBEditor - Beat+Bassline Editor - Editor bicích/basů + Filter 2 enabled + Filtr 2 zapnutý - Play/pause current beat/bassline (Space) - Přehrát/Pozastavit přehrávání aktuálního patternu bicích/basů (mezerník) + FREQ + FREKV - Stop playback of current beat/bassline (Space) - Zastavit přehrávání aktuálního patternu bicích/basů (mezerník) + Cutoff frequency + Frekvence oříznutí - Click here to play the current beat/bassline. The beat/bassline is automatically looped when its end is reached. - Klepněte sem, pokud chcete přehrát aktuální pattern bicích/basů. Bicí/basy jsou automaticky přehrávány ve smyčce. + RESO + REZON - Click here to stop playing of current beat/bassline. - Klepněte sem, pokud chcete zastavit přehrávání aktuálního patternu bicích/basů. + Resonance + Rezonance - Add beat/bassline - Přidat bicí/basy + GAIN + ZESIL - Add automation-track - Přidat stopu automatizace + Gain + Zesílení - Remove steps - Odstranit kroky + MIX + POMĚR - Add steps - Přidat kroky + Mix + Poměr - Beat selector - Výběr rytmu + Enable/disable filter 1 + - Track and step actions - Akce stopy a kroků + Enable/disable filter 2 + + + + DualFilterControls - Clone Steps - Klonovat kroky + Filter 1 enabled + Filtr 1 zapnutý - Add sample-track - Přidat stopu automatizace + Filter 1 type + Typ filtru 1 - - - BBTCOView - Open in Beat+Bassline-Editor - Otevřít v editoru bicích/basů + Q/Resonance 1 + Q/rezonance 1 - Reset name - Resetovat jméno + Gain 1 + Zesílení 1 - Change name - Změnit jméno + Mix + Mix - Change color - Změnit barvu + Filter 2 enabled + Filtr 1 zapnutý - Reset color to default - Obnovit výchozí barvy + Filter 2 type + Typ filtru 2 - - - BBTrack - Beat/Bassline %1 - Bicí/basy %1 + Q/Resonance 2 + Q/rezonance 2 - Clone of %1 - Klon z %1 + Gain 2 + Zesílení 2 - - - BassBoosterControlDialog - FREQ - FREKV + Notch + Pásmová zádrž - Frequency: - Frekvence: + Moog + Moogův filtr - GAIN - ZES + 2x Moog + 2x Moogův filtr - Gain: - Zesílení: + SV Notch + SV pásmová zádrž - RATIO - POMĚR + Fast Formant + Rychlý formantový filtr - Ratio: - Poměr: + Tripole + Třípólový filtr - - - BassBoosterControls - Frequency - Frekvence + Cutoff frequency 1 + - Gain - Zesílení + Cutoff frequency 2 + - Ratio - Poměr + Low-pass + - - - BitcrushControlDialog - IN - IN + Hi-pass + - OUT - OUT + Band-pass csg + - GAIN - ZISK + Band-pass czpg + - Input Gain: - Zesílení vstupu: + All-pass + - Input Noise: - Vstup šumu: + 2x Low-pass + - Output Gain: - Zesílení výstupu: + RC Low-pass 12 dB/oct + - CLIP - OŘÍZ + RC Band-pass 12 dB/oct + - Output Clip: - Oříznutí výstupu: + RC High-pass 12 dB/oct + - Rate Enabled - Frekvence zapnuta + RC Low-pass 24 dB/oct + - Enable samplerate-crushing - Zapnout drtič vzorkovací frekvence + RC Band-pass 24 dB/oct + - Depth Enabled - Hloubka zapnuta + RC High-pass 24 dB/oct + - Enable bitdepth-crushing - Zapnout drtič bitové hloubky + Vocal Formant + - Sample rate: - Vzorkovací frekvence: + SV Low-pass + - Stereo difference: - Stereo rozdíl: - - - Levels: - Úrovně: - - - NOISE - ŠUM - - - FREQ - FREKV - - - STEREO - STEREO + SV Band-pass + - QUANT - KVANT + SV High-pass + - CaptionMenu - - &Help - &Nápověda - + EqControls - Help (not available) - Nápověda (nedostupná) + Input gain + Zesílení vstupu - - - CarlaInstrumentView - Show GUI - Ukázar grafické rozhraní + Output gain + Zesílení výstupu - Click here to show or hide the graphical user interface (GUI) of Carla. - Klepněte sem pro zobrazení nebo skrytí grafického uživatelského rozhraní (GUI) Carla. + Peak 1 gain + Zesílení špičky 1 - - - Controller - Controller %1 - Kontrolér %1 + Peak 2 gain + Zesílení špičky 2 - - - ControllerConnectionDialog - Connection Settings - Nastavení připojení + Peak 3 gain + Zesílení špičky 3 - MIDI CONTROLLER - MIDI KONTROLÉR + Peak 4 gain + Zesílení špičky 4 - Input channel - Vstupní kanál + HP res + Rezonance horní propusti - CHANNEL - KANÁL + Peak 1 BW + Šířka pásma špičky 1 - Input controller - Vstupní kontrolér + Peak 2 BW + Šířka pásma špičky 2 - CONTROLLER - KONTROLÉR + Peak 3 BW + Šířka pásma špičky 3 - Auto Detect - Autodetekce + Peak 4 BW + Šířka pásma špičky 4 - MIDI-devices to receive MIDI-events from - MIDI zařízení k přijmu MIDI události + LP res + Rezonance dolní propusti - USER CONTROLLER - UŽIVATELSKÝ KONTROLÉR + HP freq + Frekvence horní propusti - MAPPING FUNCTION - MAPOVACÍ FUNKCE + Peak 1 freq + Frekvence špičky 1 - OK - OK + Peak 2 freq + Frekvence špičky 2 - Cancel - Zrušit + Peak 3 freq + Frekvence špičky 3 - LMMS - LMMS + Peak 4 freq + Frekvence špičky 3 - Cycle Detected. - Zjištěno zacyklení. + LP freq + Frekvence dolní propusti - - - ControllerRackView - Controller Rack - Kontroléry + HP active + Horní propust aktivní - Add - Přidat + Peak 1 active + Špička 1 aktivní - Confirm Delete - Potvrdit smazání + Peak 2 active + Špička 2 aktivní - Confirm delete? There are existing connection(s) associated with this controller. There is no way to undo. - Opravdu smazat? Je (jsou) zde propojení na tento ovladač. Nebude možné vrátit se zpět. + Peak 3 active + Špička 3 aktivní - - - ControllerView - Controls - Ovládací prvky + Peak 4 active + Špička 4 aktivní - Controllers are able to automate the value of a knob, slider, and other controls. - Kontroléry jsou schopny automatizovat nastavení otočných ovladačů, táhel a dalších řídicích prvků. + LP active + Dolní propust aktivní - Rename controller - Přejmenovat kontrolér + LP 12 + DP 12 - Enter the new name for this controller - Vložte nové jméno pro tento kontrolér + LP 24 + DP 24 - &Remove this controller - Odst&ranit tento kontrolér + LP 48 + DP 48 - Re&name this controller - Přejme&novat tento kontrolér + HP 12 + HP 12 - LFO - LFO + HP 24 + HP 24 - - - CrossoverEQControlDialog - Band 1/2 Crossover: - Přechod mezi pásmy 1/2: + HP 48 + HP 48 - Band 2/3 Crossover: - Přechod mezi pásmy 2/3: + Analyse IN + Analýza VSTUPU - Band 3/4 Crossover: - Přechod mezi pásmy 3/4: + Analyse OUT + Analýza VÝSTUPU - Band 1 Gain: - Zesílení pásma 1: + Low-shelf gain + - Band 2 Gain: - Zesílení pásma 2: + High-shelf gain + - Band 3 Gain: - Zesílení pásma 3: + Low-shelf res + - Band 4 Gain: - Zesílení pásma 4: + High-shelf res + - Band 1 Mute - Ztlumení pásma 1 + Low-shelf freq + - Mute Band 1 - Ztlumit pásmo 1 + High-shelf freq + - Band 2 Mute - Ztlumení pásma 2 + Low-shelf active + - Mute Band 2 - Ztlumit pásmo 2 + High-shelf active + - Band 3 Mute - Ztlumení pásma 3 + Low-pass type + - Mute Band 3 - Ztlumit pásmo 3 + High-pass type + + + + EqControlsDialog - Band 4 Mute - Ztlumení pásma 4 + HP + HP - Mute Band 4 - Ztlumit pásmo 4 + Peak 1 + Špička 1 - - - DelayControls - Delay Samples - Zpoždění vzorků + Peak 2 + Špička 2 - Feedback - Zpětná vazba + Peak 3 + Špička 3 - Lfo Frequency - Frekvence LFO + Peak 4 + Špička 4 - Lfo Amount - Hloubka LFO + LP + DP - Output gain - Zesílení výstupu + Gain + Zesílení - - - DelayControlsDialog - Lfo Amt - Hloubka LFO + Bandwidth: + Šířka pásma: - Delay Time - Délka zpoždění + Resonance : + Rezonance: - Feedback Amount - Hloubka zpětné vazby + Frequency: + Frekvence: - Lfo - LFO + Octave + oktávy - Out Gain - Zesílení výstupu + Low-shelf + - Gain - Zesílení + High-shelf + - DELAY - ZPOŽ + Input gain + Zesílení vstupu - FDBK - FDBK + Output gain + Zesílení výstupu - RATE - RYCH + LP group + - AMNT - MNOŽ + HP group + - DualFilterControlDialog + EqHandle - Filter 1 enabled - Filtr 1 zapnutý + Reso: + Rezon: - Filter 2 enabled - Filtr 2 zapnutý + BW: + ŠPás: - Click to enable/disable Filter 1 - Klepněte pro zapnutí/vypnutí filtru 1 + Freq: + Frekv: + + + FlangerControls - Click to enable/disable Filter 2 - Klepněte pro zapnutí/vypnutí filtru 2 + Seconds + Sekund - FREQ - FREKV + Regen + Obnov - Cutoff frequency - Frekvence oříznutí + Noise + Šum - RESO - REZON + Invert + Převrátit - Resonance - Rezonance + Delay samples + - GAIN - ZESIL + LFO frequency + + + + FlangerControlsDialog - Gain - Zesílení + DELAY + ZPOŽ - MIX + RATE POMĚR - Mix - Poměr + AMNT + MNOŽ - - - DualFilterControls - Filter 1 enabled - Filtr 1 zapnutý + Amount: + Množství: - Filter 1 type - Typ filtru 1 + FDBK + FDBK - Cutoff 1 frequency - Frekvence oříznutí 1 + NOISE + ŠUM - Q/Resonance 1 - Q/rezonance 1 + Invert + Převrátit - Gain 1 - Zesílení 1 + Period: + Perioda: - Mix - Mix + Delay time: + - Filter 2 enabled - Filtr 1 zapnutý + Feedback amount: + - Filter 2 type - Typ filtru 2 + White noise amount: + + + + FreeBoyInstrument - Cutoff 2 frequency - Frekvence oříznutí 2 + Sweep time + Trvání sweepu - Q/Resonance 2 - Q/rezonance 2 + Sweep direction + Směr sweepu - Gain 2 - Zesílení 2 + Channel 1 volume + Hlasitost kanálu 1 - LowPass - Dolní propust + Volume sweep direction + Směr hlasitosti sweepu - HiPass - Horní propust + Length of each step in sweep + Délka každého kroku ve sweepu - BandPass csg - Pásmová propust csg + Channel 2 volume + Hlasitost kanálu 2 - BandPass czpg - Pásmová propust czpg + Channel 3 volume + Hlasitost kanálu 3 - Notch - Pásmová zádrž + Channel 4 volume + Hlasitost kanálu 4 - Allpass - Všepásmový filtr + Channel 1 to SO2 (Left) + Kanál 1 do SO2 (pravý) - Moog - Moogův filtr + Channel 2 to SO2 (Left) + Kanál 2 do SO2 (pravý) - 2x LowPass - 2x dolní propust + Channel 3 to SO2 (Left) + Kanál 3 do SO2 (pravý) - RC LowPass 12dB - RC dolní propust 12dB + Channel 4 to SO2 (Left) + Kanál 4 do SO2 (pravý) - RC BandPass 12dB - RC pásmová propust 12dB + Channel 1 to SO1 (Right) + Kanál 1 do SO1 (pravý) - RC HighPass 12dB - RC horní propust 12dB + Channel 2 to SO1 (Right) + Kanál 2 do SO1 (pravý) - RC LowPass 24dB - RC dolní propust 24dB + Channel 3 to SO1 (Right) + Kanál 3 do SO1 (pravý) - RC BandPass 24dB - RC pásmová propust 24dB + Channel 4 to SO1 (Right) + Kanál 4 do SO1 (pravý) - RC HighPass 24dB - RC horní propust 24dB + Treble + Výšky - Vocal Formant Filter - Vokální formantový filtr + Bass + Basy - 2x Moog - 2x Moogův filtr + Shift Register width + Posun šířky registru - SV LowPass - SV dolní propust + Sweep rate shift amount + - SV BandPass - SV pásmová propust + Wave pattern duty cycle + - SV HighPass - SV horní propust + Right output level + - SV Notch - SV pásmová zádrž + Left output level + + + + FreeBoyInstrumentView - Fast Formant - Rychlý formantový filtr + Length of each step in sweep: + Délka každého kroku ve sweepu: - Tripole - Třípólový filtr + Length of each step in sweep + Délka každého kroku ve sweepu - - - Editor - Play (Space) - Přehrát (mezerník) + Treble: + Výšky: - Stop (Space) - Zastavit (mezerník) + Treble + Výšky - Record - Nahrávat + Bass: + Basy: - Record while playing - Nahrávat při přehrávání + Bass + Basy - Transport controls - Řízení přenosu + Sweep time: + - - - Effect - Effect enabled - Efekt aktivován + Sweep time + Trvání sweepu - Wet/Dry mix - Poměr zpracovaného/původního signálu + Sweep rate shift amount: + - Gate - Brána + Sweep rate shift amount + - Decay - Útlum + Wave pattern duty cycle: + - - - EffectChain - Effects enabled - Efekty aktivovány + Wave pattern duty cycle + - - - EffectRackView - EFFECTS CHAIN - ŘETĚZ EFEKTŮ + Square channel 1 volume: + - Add effect - Přidat efekt + Square channel 1 volume + - - - EffectSelectDialog - Add effect - Přidat efekt + Square channel 2 volume: + - Name - Název + Square channel 2 volume + - Type - Typ + Wave pattern channel volume: + - Description - Popis + Wave pattern channel volume + - Author - Autor + Noise channel volume: + + + + Noise channel volume + - - - EffectView - Toggles the effect on or off. - Zapnout nebo vypnout efekty. + SO1 volume (Right): + - On/Off - Zap/Vyp + SO1 volume (Right) + - W/D - POM + SO2 volume (Left): + - Wet Level: - Úroveň zpracovaného signálu: + SO2 volume (Left) + - The Wet/Dry knob sets the ratio between the input signal and the effect signal that forms the output. - Otočný ovladač Poměr nastavuje poměr mezi vstupním signálem a signálem efektu, který formuje výstup. + Sweep direction + Směr sweepu - DECAY - ÚTLUM + Volume sweep direction + Směr hlasitosti sweepu - Time: - Délka: + Shift register width + - 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. - Otočný ovladač Útlum nastavuje, kolik bufferů ticha musí proběhnout před tím, než plugin přestane zpracovávat. Menší hodnoty zredukují přetížení CPU, ale mohou způsobit oříznutí na konci zpožďovacích a dozvukových efektů. + Channel 1 to SO1 (Right) + Kanál 1 do SO1 (pravý) - GATE - BRÁ + Channel 2 to SO1 (Right) + Kanál 2 do SO1 (pravý) - Gate: - Brána: + Channel 3 to SO1 (Right) + Kanál 3 do SO1 (pravý) - The Gate knob controls the signal level that is considered to be 'silence' while deciding when to stop processing signals. - Otočný ovladač Brána určuje sílu signálu, který je považován za "ticho" při rozhodování, kdy skončit se zpracováním signálů. + Channel 4 to SO1 (Right) + Kanál 4 do SO1 (pravý) - Controls - Ovladače + Channel 1 to SO2 (Left) + Kanál 1 do SO2 (pravý) - 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. - -The Wet/Dry knob controls the balance between the input signal and the effected signal that is the resulting output from the effect. The input for the stage is the output from the previous stage. So, the 'dry' signal for effects lower in the chain contains all of the previous effects. - -The Decay knob controls how long the signal will continue to be processed after the notes have been released. The effect will stop processing signals when the volume has dropped below a given threshold for a given length of time. This knob sets the 'given length of time'. Longer times will require more CPU, so this number should be set low for most effects. It needs to be bumped up for effects that produce lengthy periods of silence, e.g. delays. - -The Gate knob controls the 'given threshold' for the effect's auto shutdown. The clock for the 'given length of time' will begin as soon as the processed signal level drops below the level specified with this knob. - -The Controls button opens a dialog for editing the effect's parameters. - -Right clicking will bring up a context menu where you can change the order in which the effects are processed or delete an effect altogether. - Efektové pluginy fungují jako zřetězená série efektů, kde signál bude postupně zpracováván shora dolů. - -Přepínač Zapnuto/Vypnuto vám umožní v libovolném časovém okamžiku daný plugin odpojit. - -Otočný ovladač Poměr řídí vyvážení mezi vstupním a již zpracovaným signálem ve výsledném výstupu efektu. Vstup je v této fázi shodný s výstupem předchozího efektu. Takže když je Poměr nastaven na nízkou hodnotu, obsahuje signál všechny předchozí efekty. - -Otočný ovladač Útlum určuje, jak dlouho bude zpracovávání signálu pokračovat po skončení noty. Efekt přestane zpracovávat signál, když hlasitost klesne pod hodnotu daného prahu v daném časovém úseku. Tento ovladač nastavuje právě "daný časový úsek". Delší časy vyžadují více výkonu procesoru, takže pro většinu efektů by měla být nastavena nízká hodnota. Naopak je potřeba nastavit vyšší hodnotu pro efekty, které vytvářejí delší úseky ticha, jako je např. echo (delay). -Otočný ovladač Brána určuje "daný práh" pro automatické ukončení efektu. - -Počítání délky "daného časového úseku" začíná bezprostředně poté, co úroveň zpracovávaného signálu poklesne pod úroveň určenou tímto ovladačem. - -Tlačítko Ovladače otevře dialogové okno pro úpravu parametrů efektu. - -Klepnutí pravým tlačítkem myši vyvolá kontextovou nabídku, kde můžete měnit pořadí, ve kterém budou efekty zpracovávány, nebo můžete efekt úplně odstranit. + Channel 2 to SO2 (Left) + Kanál 2 do SO2 (pravý) - Move &up - Posunout &nahoru + Channel 3 to SO2 (Left) + Kanál 3 do SO2 (pravý) - Move &down - Posunout &dolů + Channel 4 to SO2 (Left) + Kanál 4 do SO2 (pravý) - &Remove this plugin - &Odstranit tento plugin + Wave pattern graph + - EnvelopeAndLfoParameters + GigInstrument - Predelay - Předzpoždění + Bank + Banka - Attack - Náběh + Patch + Patch - Hold - Držení + Gain + Zisk + + + GigInstrumentView - Decay - Útlum + Open GIG file + Otevřít GIG soubor - Sustain - Vydržení + GIG Files (*.gig) + GIG soubory (*.gig) - Release - Uvolnění + Choose patch + + + + Gain: + + + + InstrumentTrack - Modulation - Modulace + Default preset + Výchozí předvolba + + + LadspaControlDialog - LFO Predelay - Předzpoždění LFO + Link Channels + Propojit kanály - LFO Attack - Náběh LFO + Channel + Kanál + + + LadspaEffect - LFO speed - Rychlost LFO + Unknown LADSPA plugin %1 requested. + Je požadován neznámý LADSPA plugin %1. + + + MidiImport - LFO Modulation - Modulace LFO + Setup incomplete + Nastavení není dokončeno - LFO Wave Shape - Tvar vlny LFO + 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. + Nelze zkompilovat LMMS s podporou přehrávače SoundFont2, který je použitý k přidání výchozího zvuku do importovaných MIDI souborů. Proto nebude po importování tohoto MIDI souboru přehráván žádný zvuk. - Freq x 100 - Frekvence x 100 + Track + Stopa - Modulate Env-Amount - Hloubka modulace + You have not 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. + - EnvelopeAndLfoView + MonstroInstrument - DEL - PŘED + Osc 3 Stereo phase offset + Osc 3 posun stereo fáze - Predelay: - Předzpoždění: + Selected view + Zvolený pohled - Use this knob for setting predelay of the current envelope. The bigger this value the longer the time before start of actual envelope. - Tento otočný ovladač nastavuje předzpoždění (predelay) aktuální obálky. Zvýšením hodnoty se prodlouží čas před začátkem obálky. + Sine wave + Sinusová vlna - ATT - NÁB + Bandlimited Triangle wave + Pásmově zúžená trojúhelníková vlna - Attack: - Náběh: + Bandlimited Saw wave + Pásmově zúžená pilovitá vlna - 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. - Tento otočný ovladač nastavuje náběh (attack) u aktuální obálky. Zvýšením hodnoty se prodlouží délka náběhu obálky. Zvolte nižší hodnotu pro nástroje typu piano a vyšší pro smyčce. + Bandlimited Ramp wave + Pásmově zúžená šikmá vlna - HOLD - DRŽ + Bandlimited Square wave + Pásmově zúžená pravoúhlá vlna - Hold: - Držení: + Bandlimited Moog saw wave + Pásmově zúžená pilovitá vlna typu Moog - 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. - Tento otočný ovladač nastavuje délku držení (hold) u aktuální obálky. Zvýšením hodnoty se prodlouží část obálky, která zůstává na úrovni náběhu (attack) ještě před začátkem útlumu (decay) na úroveň vydržení (sustain). + Soft square wave + Zaoblená pravoúhlá vlna - DEC - ÚTL + Absolute sine wave + Absolutní sinusová vlna - Decay: - Útlum: + Exponential wave + Exponenciální vlna - 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. - Tento otočný ovladač nastavuje délku útlumu (decay) u aktuální obálky. Zvýšením hodnoty se prodlouží část obálky, potřebná k zeslabení z úrovně náběhu (attack) na úroveň vydržení (sustain). Zvolte nižší hodnotu pro nástroje typu piano. + White noise + Bílý šum - SUST - VYD + Digital Triangle wave + Digitální trojúhelníková vlna - Sustain: - Vydržení: + Digital Saw wave + Digitální pilovitá vlna - 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. - Tento otočný ovladač nastavuje vydržení (sustain) u aktuální obálky. Zvýšením hodnoty se navýší úroveň, na které obálka zůstává před poklesem na nulu. + Digital Ramp wave + Digitální šikmá vlna - REL - UVOL + Digital Square wave + Digitální pravoúhlá vlna - Release: - Uvolnění: + Digital Moog saw wave + Digitální pilovitá vlna typu Moog - 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. - Tento otočný ovladač nastavuje délku uvolnění (release) u aktuální obálky. Zvýšením hodnoty se prodlouží část obálky, potřebná k zeslabení z úrovně vydržení (sustain) na nulovou úroveň. Zvolte vyšší hodnotu pro nástroje s měkkým zvukem, jako např. smyčce. + Triangle wave + Trojúhelníková vlna - AMT - MOD + Saw wave + Pilovitá vlna - Modulation amount: - Hloubka modulace: + Ramp wave + Šikmá vlna - 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. - Tento otočný ovladač nastavuje hloubku modulace u aktuální obálky. Zvýšení této hodnoty v závislosti na velikosti (např. hlasitosti nebo frekvence odstřihnutí) způsobí větší ovlivnění touto obálkou. + Square wave + Pravoúhlá vlna - LFO predelay: - Předzpoždění LFO: + Moog saw wave + Pilovitá vlna typu Moog - Use this knob for setting predelay-time of the current LFO. The bigger this value the the time until the LFO starts to oscillate. - Tento otočný ovladač nastavuje délku předzpoždění (predelay) aktuálního LFO. Zvýšením hodnoty se prodlouží čas před spuštěním kmitání LFO. + Abs. sine wave + Abs. sinusová vlna - LFO- attack: - Náběh LFO: + Random + Náhodná - 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. - Tento otočný ovladač nastavuje délku náběhu (attack) u aktuálního LFO. Zvýšením hodnoty se prodlouží čas potřebný pro zvýšení amplitudy LFO na maximum. + Random smooth + Vyhlazená náhodná - SPD - RYCH + Osc 1 volume + - LFO speed: - Rychlost LFO: + Osc 1 panning + - 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. - Tento otočný ovladač nastavuje rychlost u aktuálního LFO. Zvýšením hodnoty se zrychlí kmitání LFO a průběh vašeho efektu. + Osc 1 coarse detune + - 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. - Tento otočný ovladač nastavuje hloubku modulace u aktuálního LFO. Zvýšení hodnoty v závislosti na velikosti (např. hlasitosti nebo frekvence odstřihnutí) způsobí větší ovlivnění tímto LFO. + Osc 1 fine detune left + - Click here for a sine-wave. - Klepněte sem pro sinusovou vlnu. + Osc 1 fine detune right + - Click here for a triangle-wave. - Klepněte sem pro trojúhelníkovou vlnu. + Osc 1 stereo phase offset + - Click here for a saw-wave for current. - Klepněte sem pro pilovitou vlnu. + Osc 1 pulse width + - Click here for a square-wave. - Klepněte sem pro pravoúhlou vlnu. + Osc 1 sync send on rise + - Click here for a user-defined wave. Afterwards, drag an according sample-file onto the LFO graph. - Klepněte sem pro vlastní vlnu. Poté přetáhněte zvolený soubor samplu do grafického okna LFO. + Osc 1 sync send on fall + - FREQ x 100 - FREKVENCE x 100 + Osc 2 volume + - Click here if the frequency of this LFO should be multiplied by 100. - Klepněte sem, pokud má být frekvence LFO vynásobena x100. + Osc 2 panning + - multiply LFO-frequency by 100 - vynásobit frekvenci LFO x100 + Osc 2 coarse detune + - MODULATE ENV-AMOUNT - MODULOVAT OBÁLKU + Osc 2 fine detune left + - Click here to make the envelope-amount controlled by this LFO. - Klepněte sem, pokud má být množství obálky řízeno tímto LFO. + Osc 2 fine detune right + - control envelope-amount by this LFO - řízení množství obálky tímto LFO + Osc 2 stereo phase offset + - ms/LFO: - ms/LFO: + Osc 2 waveform + - Hint - Rada + Osc 2 sync hard + - Drag a sample from somewhere and drop it in this window. - Sampl odněkud přetáhněte a pusťte jej v tomto okně. + Osc 2 sync reverse + - Click here for random wave. - Klepněte sem pro náhodnou vlnu. + Osc 3 volume + - - - EqControls - Input gain - Zesílení vstupu + Osc 3 panning + - Output gain - Zesílení výstupu + Osc 3 coarse detune + - Low shelf gain - Zesílení dolního šelfu + Osc 3 sub-oscillator mix + - Peak 1 gain - Zesílení špičky 1 + Osc 3 waveform 1 + - Peak 2 gain - Zesílení špičky 2 + Osc 3 waveform 2 + - Peak 3 gain - Zesílení špičky 3 + Osc 3 sync hard + - Peak 4 gain - Zesílení špičky 4 + Osc 3 Sync reverse + - High Shelf gain - Zesílení horního šelfu + LFO 1 waveform + - HP res - Rezonance horní propusti + LFO 1 attack + - Low Shelf res - Rezonance dolního šelfu + LFO 1 rate + - Peak 1 BW - Šířka pásma špičky 1 + LFO 1 phase + - Peak 2 BW - Šířka pásma špičky 2 + LFO 2 waveform + - Peak 3 BW - Šířka pásma špičky 3 + LFO 2 attack + - Peak 4 BW - Šířka pásma špičky 4 + LFO 2 rate + - High Shelf res - Rezonance horního šelfu + LFO 2 phase + - LP res - Rezonance dolní propusti + Env 1 pre-delay + - HP freq - Frekvence horní propusti + Env 1 attack + - Low Shelf freq - Frekvence dolního šelfu + Env 1 hold + - Peak 1 freq - Frekvence špičky 1 + Env 1 decay + - Peak 2 freq - Frekvence špičky 2 + Env 1 sustain + - Peak 3 freq - Frekvence špičky 3 + Env 1 release + - Peak 4 freq - Frekvence špičky 3 + Env 1 slope + - High shelf freq - Frekvence špičky 4 + Env 2 pre-delay + - LP freq - Frekvence dolní propusti + Env 2 attack + - HP active - Horní propust aktivní + Env 2 hold + - Low shelf active - Dolní šelf aktivní + Env 2 decay + - Peak 1 active - Špička 1 aktivní + Env 2 sustain + - Peak 2 active - Špička 2 aktivní + Env 2 release + - Peak 3 active - Špička 3 aktivní + Env 2 slope + - Peak 4 active - Špička 4 aktivní + Osc 2+3 modulation + - High shelf active - Horní šelf aktivní + Osc 1 - Vol env 1 + - LP active - Dolní propust aktivní + Osc 1 - Vol env 2 + - LP 12 - DP 12 + Osc 1 - Vol LFO 1 + - LP 24 - DP 24 + Osc 1 - Vol LFO 2 + - LP 48 - DP 48 + Osc 2 - Vol env 1 + - HP 12 - HP 12 + Osc 2 - Vol env 2 + - HP 24 - HP 24 + Osc 2 - Vol LFO 1 + - HP 48 - HP 48 + Osc 2 - Vol LFO 2 + - low pass type - typ dolní propusti + Osc 3 - Vol env 1 + - high pass type - typ horní propusti + Osc 3 - Vol env 2 + - Analyse IN - Analýza VSTUPU + Osc 3 - Vol LFO 1 + - Analyse OUT - Analýza VÝSTUPU + Osc 3 - Vol LFO 2 + - - - EqControlsDialog - HP - HP + Osc 1 - Phs env 1 + - Low Shelf - Dolní šelf + Osc 1 - Phs env 2 + - Peak 1 - Špička 1 + Osc 1 - Phs LFO 1 + - Peak 2 - Špička 2 + Osc 1 - Phs LFO 2 + - Peak 3 - Špička 3 + Osc 2 - Phs env 1 + - Peak 4 - Špička 4 + Osc 2 - Phs env 2 + - High Shelf - Horní šelf + Osc 2 - Phs LFO 1 + - LP - DP + Osc 2 - Phs LFO 2 + - In Gain - Zesílení vstupu + Osc 3 - Phs env 1 + - Gain - Zesílení + Osc 3 - Phs env 2 + - Out Gain - Zesílení výstupu + Osc 3 - Phs LFO 1 + - Bandwidth: - Šířka pásma: + Osc 3 - Phs LFO 2 + - Resonance : - Rezonance: + Osc 1 - Pit env 1 + - Frequency: - Frekvence: + Osc 1 - Pit env 2 + - lp grp - dp skup + Osc 1 - Pit LFO 1 + - hp grp - hp skup + Osc 1 - Pit LFO 2 + - Octave - oktávy + Osc 2 - Pit env 1 + - - - EqHandle - Reso: - Rezon: + Osc 2 - Pit env 2 + - BW: - ŠPás: + Osc 2 - Pit LFO 1 + - Freq: - Frekv: + Osc 2 - Pit LFO 2 + - - - ExportProjectDialog - Export project - Exportovat projekt + Osc 3 - Pit env 1 + - Output - Výstup + Osc 3 - Pit env 2 + - File format: - Formát souboru: + Osc 3 - Pit LFO 1 + - Samplerate: - Vzorkovací frekvence: + Osc 3 - Pit LFO 2 + - 44100 Hz - 44100 Hz + Osc 1 - PW env 1 + - 48000 Hz - 48000 Hz + Osc 1 - PW env 2 + - 88200 Hz - 88200 Hz + Osc 1 - PW LFO 1 + - 96000 Hz - 96000 Hz + Osc 1 - PW LFO 2 + - 192000 Hz - 192000 Hz + Osc 3 - Sub env 1 + - Bitrate: - Datový tok: + Osc 3 - Sub env 2 + - 64 KBit/s - 64 kbit/s + Osc 3 - Sub LFO 1 + - 128 KBit/s - 128 kbit/s + Osc 3 - Sub LFO 2 + + + + MonstroView - 160 KBit/s - 160 kbit/s + Operators view + Zobrazení operátorů - 192 KBit/s - 192 kbit/s + Matrix view + Zobrazení matrice - 256 KBit/s - 256 kbit/s + Volume + Hlasitost - 320 KBit/s - 320 kbit/s + Panning + Panoráma - Depth: - Hloubka: + Coarse detune + Hrubé rozladění - 16 Bit Integer - 16 bitů celočíselně + semitones + půltónů - 32 Bit Float - 32 bitů s plovoucí čárkou + cents + centů - Quality settings - Nastavení kvality + Stereo phase offset + Posun stereo fáze - Interpolation: - Interpolace: + deg + stupňů - Zero Order Hold - Zero-order hold + Pulse width + Délka pulzu - Sinc Fastest - Sinc nejrychlejší + Send sync on pulse rise + Synchronizace při nárůstu pulzu - Sinc Medium (recommended) - Sinc střední (doporučeno) + Send sync on pulse fall + Synchronizace při poklesu pulzu - Sinc Best (very slow!) - Sinc nejlepší (velmi pomalé!) + Hard sync oscillator 2 + Pevně synchronizovat oscilátor 2 - Oversampling (use with care!): - Převzorkování (používejte opatrně!): + Reverse sync oscillator 2 + Reverzně synchronizovat oscilátor 2 - 1x (None) - 1x (žádné) + Sub-osc mix + Míchání sub-osc - 2x - 2x + Hard sync oscillator 3 + Pevně synchronizovat oscilátor 3 - 4x - 4x + Reverse sync oscillator 3 + Reverzně synchronizovat oscilátor 3 - 8x - 8x + Attack + Náběh - Start - Začít + Rate + Typ - Cancel - Zrušit + Phase + Fáze - Export as loop (remove end silence) - Exportovat jako smyčku (odstranění ticha na konci) + Pre-delay + Předzpoždění - Export between loop markers - Exportovat obsah smyčky + Hold + Držení - Could not open file - Nemohu otevřít soubor + Decay + Útlum - Export project to %1 - Exportovat projekt do %1 + Sustain + Vydržení - Error - Chyba + Release + Uvolnění - Error while determining file-encoder device. Please try to choose a different output format. - Chyba při zjišťování souboru enkodéru. Zkuste prosím vybrat jiný výstupní formát. + Slope + Stoupání - Rendering: %1% - Renderuji: %1% + Modulation amount + Hloubka modulace - 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! - Nelze otevřít soubor %1 pro zápis. -Ověřte si prosím, zda máte povolen zápis do souboru a do složky, ve které je umístěn, a zkuste znovu! + Fine tune left + - 24 Bit Integer - 24 bitů celočíselně + Fine tune right + - Use variable bitrate - Použít proměnlivý datový tok + Mix osc 2 with osc 3 + - Stereo mode: - Režim stereo: + Modulate amplitude of osc 3 by osc 2 + - Stereo - Stereo + Modulate frequency of osc 3 by osc 2 + - Joint Stereo - Joint stereo + Modulate phase of osc 3 by osc 2 + + + + MultitapEchoControlDialog - Mono - Mono + Length + Délka - Compression level: - Úroveň komprese: + Step length: + Délka kroku: - (fastest) - (nejrychlejší) + Dry + Poměr - (default) - (výchozí) + Stages + Úrovně - (smallest) - (nejmenší) + Swap inputs + Přepnout vstupy - - - Expressive - Selected graph - Zvolený graf + Dry gain: + - A1 - A1 + Low-pass stages: + - A2 - A2 + Swap left and right input channels for reflections + + + + NesInstrument - A3 - A3 + Channel 2 Coarse detune + Kanál 2 hrubé rozladění - W1 smoothing - W1 vyhlazování + Channel 2 Volume + Hlasitost kanálu 2 - W2 smoothing - W2 vyhlazování + Master volume + Hlavní hlasitost - W3 smoothing - W3 vyhlazování + Vibrato + Vibráto - PAN1 - PAN1 + Channel 1 coarse detune + - PAN2 - PAN2 + Channel 1 volume + Hlasitost kanálu 1 - REL TRANS - + Channel 1 envelope length + - - - Fader - Please enter a new value between %1 and %2: - Vložte prosím novou hodnotu mezi %1 a %2: + Channel 1 duty cycle + - - - FileBrowser - Browser - Prohlížeč + Channel 1 sweep amount + - Search - Hledat + Channel 1 sweep rate + - Refresh list - Obnovit seznam + Channel 2 envelope length + - - - FileBrowserTreeWidget - Send to active instrument-track - Odeslat do aktivní stopy nástroje + Channel 2 duty cycle + - Open in new instrument-track/B+B Editor - Otevřít v nové nástrojové stopě / editoru bicich/basů + Channel 2 sweep amount + - Loading sample - Načítám vzorek + Channel 2 sweep rate + - Please wait, loading sample for preview... - Počkejte prosím, načítám vzorek pro náhled... + Channel 3 coarse detune + - --- Factory files --- - --- Tovární soubory --- + Channel 3 volume + Hlasitost kanálu 3 - Open in new instrument-track/Song Editor - Otevřít v nové nástrojové stopě / Editoru skladby + Channel 4 volume + Hlasitost kanálu 4 - Error - Chyba + Channel 4 envelope length + - does not appear to be a valid - nevypadá, že je platný + Channel 4 noise frequency + - file - soubor + Channel 4 noise frequency sweep + - FlangerControls - - Delay Samples - Zpoždění vzorků - + NesInstrumentView - Lfo Frequency - Frekvence LFO + Volume + Hlasitost - Seconds - Sekund + Coarse detune + Hrubé rozladění - Regen - Obnov + Envelope length + Délka obálky - Noise - Šum + Enable channel 1 + Zapnout kanál 1 - Invert - Převrátit + Enable envelope 1 + Zapnout obálku 1 - - - FlangerControlsDialog - Delay Time: - Délka zpoždění: + Enable envelope 1 loop + Zapnout smyčku obálky 1 - Feedback Amount: - Velikost zpětné vazby: + Enable sweep 1 + Zapnout sweep 1 - White Noise Amount: - Množství bílého šumu: + Sweep amount + Množství sweepu - DELAY - ZPOŽ + Sweep rate + Rychlost sweepu - RATE - POMĚR + 12.5% Duty cycle + 12.5% pracovního cyklu - AMNT - MNOŽ + 25% Duty cycle + 25% pracovního cyklu - Amount: - Množství: + 50% Duty cycle + 50% pracovního cyklu - FDBK - FDBK + 75% Duty cycle + 75% pracovního cyklu - NOISE - ŠUM + Enable channel 2 + Zapnout kanál 2 - Invert - Převrátit + Enable envelope 2 + Zapnout obálku 2 - Period: - Perioda: + Enable envelope 2 loop + Zapnout smyčku obálky 2 - - - FxLine - Channel send amount - Množství odeslaného kanálu + Enable sweep 2 + Zapnout sweep 2 - 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. - -In order to route the channel to another channel, select the FX channel and click on the "send" button on the channel you want to send to. The knob under the send button controls the level of signal that is sent to the channel. - -You can remove and move FX channels in the context menu, which is accessed by right-clicking the FX channel. - - Efektový (FX) kanál přijímá vstup z jedné nebo více nástrojových stop. -Ten může být následně směrován do dalších efektových kanálů. LMMS automaticky zabraňuje vzniku nekonečných smyček a nedovoluje provést propojení, které by ke vzniku smyčky mohlo vést. - -Chcete-li směrovat kanál do jiného kanálu, vyberte efektový kanál a klepněte na tlačítko "SEND" v kanálu, který chcete odeslat. Otočný ovladač pod tlačítkem "SEND" určuje množství signálu, které bude do kanálu odesláno. - -Efektové kanály můžete odstranit nebo přesunout v kontextové nabídce, která je dostupná po klepnutí pravým tlačítkem myši na efektový kanál. - + Enable channel 3 + Zapnout kanál 3 - Move &left - Přesunout do&leva + Noise Frequency + Frekvence šumu - Move &right - Přesun dop&rava + Frequency sweep + Frekvence sweepu - Rename &channel - Přejmenovat &kanál + Enable channel 4 + Zapnout kanál 4 - R&emove channel - Př&esunout kanál + Enable envelope 4 + Zapnout obálku 4 - Remove &unused channels - Odstranit nepo&užívané kanály + Enable envelope 4 loop + Zapnout smyčku obálky 4 - - - FxMixer - Master - Hlavní + Quantize noise frequency when using note frequency + Kvantizovat frekvenci šumu při použití frekvence noty - FX %1 - Efekt %1 + Use note frequency for noise + Použít frekvenci pro šum - Volume - Hlasitost + Noise mode + Typ šumu - Mute - Ztlumit + Vibrato + Vibráto - Solo - Sólo + Master volume + Hlavní hlasitost - FxMixerView + OpulenzInstrument - FX-Mixer - Efektový mixážní panel + Patch + Patch - FX Fader %1 - Efektový fader %1 + Op 1 attack + - Mute - Ztlumit + Op 1 decay + - Mute this FX channel - Ztlumit tento efektový kanál + Op 1 sustain + - Solo - Sólo + Op 1 release + - Solo FX channel - Sólovat efektový kanál + Op 1 level + - - - FxRoute - Amount to send from channel %1 to channel %2 - Množství k odeslání z kanálu %1 do kanálu %2 + Op 1 level scaling + - - - GigInstrument - Bank - Banka - - - Patch - Patch - - - Gain - Zisk + Op 1 frequency multiplier + - - - GigInstrumentView - Open other GIG file - Otevřít jiný GIG soubor + Op 1 feedback + - Click here to open another GIG file - Klepněte sem pro otevření jiného GIG souboru + Op 1 key scaling rate + - Choose the patch - Vybrat patch + Op 1 percussive envelope + - Click here to change which patch of the GIG file to use - Klepněte sem pro změnu patche GIG souboru + Op 1 tremolo + - Change which instrument of the GIG file is being played - Změnit přehrávaný nástroj GIG souboru + Op 1 vibrato + - Which GIG file is currently being used - Který GIG soubor je právě používán + Op 1 waveform + - Which patch of the GIG file is currently being used - Který patch GIG souboru je právě používán + Op 2 attack + - Gain - Zisk + Op 2 decay + - Factor to multiply samples by - Vynásobit vzorky x + Op 2 sustain + - Open GIG file - Otevřít GIG soubor + Op 2 release + - GIG Files (*.gig) - GIG soubory (*.gig) + Op 2 level + - - - GuiApplication - Working directory - Pracovní adresář + Op 2 level scaling + - The LMMS working directory %1 does not exist. Create it now? You can change the directory later via Edit -> Settings. - Pracovní adresář LMMS %1 neexistuje. Chcete jej nyní vytvořit? Změnu adresáře mžete provést později v nabídce Úpravy -> Nastavení. + Op 2 frequency multiplier + - Preparing UI - Připravuji UI + Op 2 key scaling rate + - Preparing song editor - Připravuji editor skladby + Op 2 percussive envelope + - Preparing mixer - Připravuji mixážní panel + Op 2 tremolo + - Preparing controller rack - Připravuji panel kontrolérů + Op 2 vibrato + - Preparing project notes - Připravuji poznámky k projektu + Op 2 waveform + - Preparing beat/bassline editor - Připravuji editor bicích/basů + FM + FM - Preparing piano roll - Připravuji Piano roll + Vibrato depth + - Preparing automation editor - Připravuji Editor automatizace + Tremolo depth + - InstrumentFunctionArpeggio + OpulenzInstrumentView - Arpeggio - Arpeggio + Attack + Náběh - Arpeggio type - Typ arpeggia + Decay + Útlum - Arpeggio range - Rozsah arpeggia + Release + Uvolnění - Arpeggio time - Trvání arpeggia + Frequency multiplier + Násobič frekvence + + + OscillatorObject - Arpeggio gate - Brána arpeggia + Osc %1 volume + Osc %1 hlasitost - Arpeggio direction - Směr arpeggia + Osc %1 panning + Osc %1 panoráma - Arpeggio mode - Styl arpeggia + Osc %1 coarse detuning + Osc %1 hrubé rozladění - Up - Nahoru + Osc %1 fine detuning left + Osc %1 jemné rozladění vlevo - Down - Dolů + Osc %1 fine detuning right + Osc %1 jemné rozladění vpravo - Up and down - Nahoru a dolů + Osc %1 phase-offset + Osc %1 posun fáze - Random - Náhodné + Osc %1 stereo phase-detuning + Osc %1 rozladění stereo fáze - Free - Volné + Osc %1 wave shape + Osc %1 forma vlny - Sort - Tříděné + Modulation type %1 + Typ modulace %1 - Sync - Synchronizované + Osc %1 waveform + Osc %1 vlna - Down and up - Dolů a nahoru + Osc %1 harmonic + Osc %1 harmonické + + + PatchesDialog - Skip rate - Míra vynechávání + Qsynth: Channel Preset + Qsynth: Předvolba kanálu - Miss rate - Míra míjení + Bank selector + Výběr banky - Cycle steps - Počet kroků v cyklu + Bank + Banka - - - InstrumentFunctionArpeggioView - ARPEGGIO - ARPEGGIO + Program selector + Výběr programu - 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. - Arpeggio je způsob hry (zejména na drnkací nástroje), který činí hudbu mnohem živější. Struny těchto nástrojů (např. harfy) jsou rozezněny jako v akordech. Jediným rozdílem je, že se tak stane sekvenčně, takže tóny nejsou zahrány ve stejnou dobu. Typickým arpeggiem jsou durové a mollové trojzvuky, ale možných dalších akordů, které si můžete vybrat, je spousta. + Patch + Patch - RANGE - ROZSAH + Name + Název - Arpeggio range: - Rozsah arpeggia: + OK + OK - octave(s) - oktáva(y) + Cancel + Zrušit + + + PatmanView - Use this knob for setting the arpeggio range in octaves. The selected arpeggio will be played within specified number of octaves. - Tento otočný ovladač použijte pro nastavení rozsahu arpeggia v oktávách. Vybrané arpeggio bude zahráno ve zvoleném počtu oktáv. + Loop + Smyčka - TIME - TRVÁNÍ + Loop mode + Režim smyčky - Arpeggio time: - Trvání arpeggia: + Tune + Ladění - ms - ms + Tune mode + Režim ladění - Use this knob for setting the arpeggio time in milliseconds. The arpeggio time specifies how long each arpeggio-tone should be played. - Tento otočný ovladač nastavuje trvání arpeggia v milisekundách. Trvání arpeggia udává, jak dlouho bude každý tón arpeggia přehráván. + No file selected + Není vybrán žádný soubor - GATE - BRÁNA + Open patch file + Otevřít soubor patch - Arpeggio gate: - Brána arpeggia: + Patch-Files (*.pat) + Soubor patch (*.pat) - % - % + Open patch + + + + PeakControllerEffectControlDialog - 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. - Tento otočný ovladač nastavuje bránu arpeggia. Brána arpeggia určuje procento délky jednotlivých arpeggiových tónů, které budou zahrány. Pomocí brány arpeggia můžete udělat skvělé staccatové arpeggio. + BASE + ZÁKL - Chord: - Akord: + Modulation amount: + Hloubka modulace: - Direction: - Směr: + Attack: + Náběh: - Mode: - Styl: + Release: + Uvolnění: - SKIP - VYNECH + AMNT + MNOŽ - Skip rate: - Míra vynechávání: + MULT + NÁSB - 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. - Funkce vynechávání způsobí, že arpeggiator náhodně pozastaví některý krok. Od počáteční pozice, kde nemá žádný efekt, se po směru hodinových ručiček efekt stupňuje až po maximální nastavení, kdy vynechá vše. + ATCK + NÁBH - MISS - MÍJ + DCAY + ÚTLM - Miss rate: - Míra míjení: + Treshold: + Práh: - The miss function will make the arpeggiator miss the intended note. - Funkce míjení způsobí, že arpeggiator netrefí dotyčnou notu. + TRSH + PRÁH - CYCLE - CYKL + Base: + - Cycle notes: - Počet not v cyklu: + Amount multiplicator: + - note(s) - nota(y) + Mute output + Ztlumit výstup - 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. - Skočí přes n kroků v arpeggiu a pokud přesáhne rozsah not, zacyklí se zde. Je-li je celkový rozsah not rovnoměrně dělitelný počtem kroků nad rozdah, uvíznete v kratším arpeggiu nebo dokonce na jedné notě. + Absolute value + - InstrumentFunctionNoteStacking + PeakControllerEffectControls - octave - Oktáva + Base value + Základní hodnota - Major - Dur + Modulation amount + Hloubka modulace - Majb5 - Maj5b + Mute output + Ztlumit výstup - minor - Moll + Attack + Náběh - minb5 - m5b + Release + Uvolnění - sus2 - sus2 + Treshold + Práh - sus4 - sus4 + Absolute value + - aug - aug + Amount multiplicator + + + + QWidget - augsus4 - aug sus4 + Name: + Název: - tri - tri + Maker: + Tvůrce: - 6 - 6 + Copyright: + Autorská práva: - 6sus4 - 6 sus4 + Requires Real Time: + Vyžaduje běh v reálném čase: - 6add9 - 6 add9 + Yes + Ano - m6 - m6 + No + Ne - m6add9 - m6 add9 + Real Time Capable: + Schopnost běhu v reálném čase: - 7 - 7 + In Place Broken: + Na místě poškozeného: - 7sus4 - 7 sus4 + Channels In: + Vstupní kanály: - 7#5 - 7/5# + Channels Out: + Výstupní kanály: - 7b5 - 7/5b + File: + Soubor: - 7#9 - 7/9# + File: %1 + Soubor: %1 + + + ReverbSCControlDialog - 7b9 - 7/9b + Input + Vstup - 7#5#9 - 7/5#/9# + Size + Velikost - 7#5b9 - 7/5#/9b + Size: + Velikost: - 7b5b9 - 7/5b/9b + Color + Barva - 7add11 - 7 add11 + Color: + Barva: - 7add13 - 7 add13 + Output + Výstup - 7#11 - 7/11# + Input gain: + Zesílení vstupu: - Maj7 - Maj7 + Output gain: + Zesílení výstupu: + + + ReverbSCControls - Maj7b5 - Maj7/5b + Size + Velikost - Maj7#5 - Maj7/5# + Color + Barva - Maj7#11 - Maj7/11# + Input gain + Zesílení vstupu - Maj7add13 - Maj7 add13 + Output gain + Zesílení výstupu + + + SpectrumAnalyzerControlDialog - m7 - m7 + Linear spectrum + Lineární spektrum - m7b5 - m7/5b + Linear Y axis + Lineární osa Y + + + SpectrumAnalyzerControls - m7b9 - m7/9b + Linear spectrum + Lineární spektrum - m7add11 - m7 add11 + Linear Y axis + Lineární osa Y - m7add13 - m7 add13 + Channel mode + Režim kanálu + + + TrackContainer - m-Maj7 - m-Maj7 + Cancel + Zrušit - m-Maj7add11 - m-Maj7 add11 + Please wait... + Prosím čekejte... - m-Maj7add13 - m-Maj7 add13 + Importing MIDI-file... + Importuji MIDI soubor... + + + TripleOscillatorView - 9 - 9 + Synchronize oscillator 1 with oscillator 2 + Synchronizovat oscilátor 1 oscilátorem 2 - 9sus4 - 9 sus4 + Synchronize oscillator 2 with oscillator 3 + Synchronizovat oscilátor 2 oscilátorem 3 - add9 - add9 + Osc %1 volume: + Osc %1 hlasitost: - 9#5 - 9/5# + Osc %1 panning: + Osc %1 panoráma: - 9b5 - 9/5b + Osc %1 coarse detuning: + Osc %1 hrubé rozladění: - 9#11 - 9/11# + semitones + půltónů - 9b13 - 9/13b + Osc %1 fine detuning left: + Osc %1 jemné rozladění vlevo: - Maj9 - Maj9 + cents + centů - Maj9sus4 - Maj9 sus4 + Osc %1 fine detuning right: + Osc %1 jemné rozladění vpravo: - Maj9#5 - Maj9/5# + Osc %1 phase-offset: + Osc %1 posun fáze: - Maj9#11 - Maj9/11# + degrees + stupňů - m9 - m9 + Osc %1 stereo phase-detuning: + Osc %1 rozladění stereo fáze: - madd9 - m add9 + Modulate phase of oscillator 1 by oscillator 2 + - m9b5 - m9/5b + Modulate amplitude of oscillator 1 by oscillator 2 + - m9-Maj7 - m9-Maj7 + Mix output of oscillators 1 & 2 + - 11 - 11 + Modulate frequency of oscillator 1 by oscillator 2 + - 11b9 - 11/9b + Modulate phase of oscillator 2 by oscillator 3 + - Maj11 - Maj11 + Modulate amplitude of oscillator 2 by oscillator 3 + - m11 - m11 + Mix output of oscillators 2 & 3 + - m-Maj11 - m-Maj11 + Modulate frequency of oscillator 2 by oscillator 3 + - 13 - 13 + Sine wave + Sinusová vlna - 13#9 - 13/9# + Triangle wave + Trojúhelníková vlna - 13b9 - 13/9b + Saw wave + Pilovitá vlna - 13b5b9 - 13/9b/5b + Square wave + Pravoúhlá vlna - Maj13 - Maj13 + Moog-like saw wave + - m13 - m13 + Exponential wave + Exponenciální vlna - m-Maj13 - m-Maj13 + White noise + Bílý šum - Harmonic minor - Mollová harmonická + User-defined wave + + + + VestigeInstrumentView - Melodic minor - Mollová melodická + Show/hide GUI + Zobrazit/Skrýt grafické rozhraní - Whole tone - Celotónová stupnice + Turn off all notes + Vypnout všechny noty - Diminished - Zmenšená + DLL-files (*.dll) + DLL soubory (*.dll) - Major pentatonic - Durová pentatonika + EXE-files (*.exe) + EXE soubory (*.exe) - Minor pentatonic - Mollová pentatonika + Previous (-) + Předchozí (-) - Jap in sen - Japonská (in sen) stupnice + Save preset + Uložit předvolbu - Major bebop - Durová bebopová + Next (+) + Další (+) - Dominant bebop - Dominantní bebopová + Preset + Předvolba - Blues - Bluesová stupnice + by + od - Arabic - Arabská + - VST plugin control + – ovládání VST pluginu - Enigmatic - Enigmatická + Open VST plugin + - Neopolitan - Neapolská + Control VST plugin from LMMS host + - Neopolitan minor - Mollová neapolská + Open VST plugin preset + - Hungarian minor - Mollová maďarská + No VST plugin loaded + + + + VstEffectControlDialog - Dorian - Dórská + Show/hide + Ukázat/Skrýt - Phrygolydian - Frygická + Previous (-) + Předchozí (-) - Lydian - Lydická + Next (+) + Další (+) - Mixolydian - Mixolydická + Save preset + Uložit předvolbu - Aeolian - Aiolská + Effect by: + Efekt od: - Locrian - Lokrická + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /> + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /> - Chords - Akordy + Control VST plugin from LMMS host + - Chord type - Typ akordu + Open VST plugin preset + + + + VstPlugin - Chord range - Rozsah akordu + Loading plugin + Načítám plugin - Minor - Moll + Open Preset + Otevřít předvolbu - Chromatic - Chromatická + Vst Plugin Preset (*.fxp *.fxb) + Předvolba VST pluginu (*.fxp *.fxb) - Half-Whole Diminished - Zmenšená (půltón–celý tón) + : default + : výchozí - 5 - 5 + " + " - Phrygian dominant - Frygická dominanta + ' + ' - Persian - Perská + Save Preset + Uložit předvolbu - - - InstrumentFunctionNoteStackingView - RANGE - ROZSAH + .fxp + .fxp - Chord range: - Rozsah akordu: + .FXP + .FXP - octave(s) - oktáva(y) + .FXB + .FXB - Use this knob for setting the chord range in octaves. The selected chord will be played within specified number of octaves. - Tento otočný ovladač nastavuje rozsah akordů v oktávách. Vybraný akord bude zahrán ve zvoleném počtu oktáv. + .fxb + .fxb - STACKING - VRSTVENÍ + Please wait while loading VST plugin... + Počkejte prosím, než se načte VST plugin... - Chord: - Akord: + The VST plugin %1 could not be loaded. + VST plugin %1 nelze načíst. - InstrumentMidiIOView + WatsynInstrument - ENABLE MIDI INPUT - POVOLIT MIDI VSTUP + Volume A1 + Hlasitost A1 - CHANNEL - KANÁL + Volume A2 + Hlasitost A2 - VELOCITY - DYNAM + Volume B1 + Hlasitost B1 - ENABLE MIDI OUTPUT - POVOLIT MIDI VÝSTUP + Volume B2 + Hlasitost B2 - PROGRAM - PROGRAM + Panning A1 + Panoráma A1 - MIDI devices to receive MIDI events from - MIDI zařízení pro přijímání MIDI událostí + Panning A2 + Panoráma A2 - MIDI devices to send MIDI events to - MIDI zařízení pro odesílání MIDI událostí + Panning B1 + Panoráma B1 - NOTE - NOTA + Panning B2 + Panoráma B2 - CUSTOM BASE VELOCITY - VLASTNÍ VÝCHOZÍ DYNAMIKA + Freq. multiplier A1 + Násobič frekv. A1 - Specify the velocity normalization base for MIDI-based instruments at 100% note velocity - Udává výchozí úroveň dynamiky pro MIDI nástroje při 100 % dynamiky tónu + Freq. multiplier A2 + Násobič frekv. A2 - BASE VELOCITY - VÝCHOZÍ DYNAMIKA + Freq. multiplier B1 + Násobič frekv. B1 - - - InstrumentMiscView - MASTER PITCH - HLAVNÍ LADĚNÍ + Freq. multiplier B2 + Násobič frekv. B2 - Enables the use of Master Pitch - Umožní použití hlavního ladění + Left detune A1 + Rozladění vlevo A1 - - - InstrumentSoundShaping - VOLUME - HLASITOST + Left detune A2 + Rozladění vlevo A2 - Volume - Hlasitost + Left detune B1 + Rozladění vlevo B1 - CUTOFF - SEŘÍZNUTÍ + Left detune B2 + Rozladění vlevo B2 - Cutoff frequency - Frekvence oříznutí + Right detune A1 + Rozladění vpravo A1 - RESO - REZONANCE + Right detune A2 + Rozladění vpravo A2 - Resonance - Rezonance + Right detune B1 + Rozladění vpravo B1 - Envelopes/LFOs - Obálky/LFO + Right detune B2 + Rozladění vpravo B2 - Filter type - Typ filtru + A-B Mix + Směšovač A-B - Q/Resonance - Q/rezonance + A-B Mix envelope amount + Množství obálky směšovače A-B - LowPass - Dolní propust + A-B Mix envelope attack + Náběh obálky směšovače A-B - HiPass - Horní propust + A-B Mix envelope hold + Množství držení směšovače A-B - BandPass csg - Pásmová propust csg + A-B Mix envelope decay + Útlum obálky směšovače A-B - BandPass czpg - Pásmová propust czpg + A1-B2 Crosstalk + Přeslech A1-B2 - Notch - Pásmová zádrž + A2-A1 modulation + Modulace A1-B2 - Allpass - Všepásmový filtr + B2-B1 modulation + Modulace B2-B1 - Moog - Moogův filtr + Selected graph + Zvolený graf + + + WatsynView - 2x LowPass - 2x dolní propust + Select oscillator A1 + Vybrat oscilátor A1 - RC LowPass 12dB - RC dolní propust 12dB + Select oscillator A2 + Vybrat oscilátor A2 - RC BandPass 12dB - RC pásmová propust 12dB + Select oscillator B1 + Vybrat oscilátor B1 - RC HighPass 12dB - RC horní propust 12dB + Select oscillator B2 + Vybrat oscilátor B2 - RC LowPass 24dB - RC dolní propust 24dB + Mix output of A2 to A1 + Přimíchat výstup A1 do A2 - RC BandPass 24dB - RC pásmová propust 24dB + Mix output of B2 to B1 + Přimíchat výstup B1 do B2 - RC HighPass 24dB - RC horní propust 24dB + Draw your own waveform here by dragging your mouse on this graph. + Kreslení vlastní křivky tahem myši na tomto grafu. - Vocal Formant Filter - Vokální formantový filtr + Load waveform + Načíst vlnu - 2x Moog - 2x Moogův filtr + Phase left + Fáze vlevo - SV LowPass - SV dolní propust + Phase right + Fáze vpravo - SV BandPass - SV pásmová propust + Normalize + Normalizovat - SV HighPass - SV horní propust + Invert + Převrátit - SV Notch - SV pásmová zádrž + Smooth + Uhladit - Fast Formant - Rychlý formantový filtr + Sine wave + Sinusová vlna - Tripole - Třípólový filtr + Triangle wave + Trojúhelníková vlna + + + Square wave + Pravoúhlá vlna - - - InstrumentSoundShapingView - TARGET - CÍL: + Volume + Hlasitost - 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...! - Tato stránka obsahuje obálky. Ty jsou velmi důležité pro úpravu zvuku a obvykle také i nezbytné pro rozdílovou (subtraktivní) syntézu. Pokud máte například obálku hlasitosti, můžete nastavit, kdy má mít zvuk jakou sílu. Pokud chcete vytvořit něco jako smyčce, váš zvuk by měl mít velmi měkké nasazení i ukončení tónu. Toho dosáhneme nastavením dlouhého času náběhu i uvolnění. Totéž se týká ostatních druhů obálek, jako je obálka panorámatu, frekvence odříznutí pro použití u filtrů apod. Prostě si s tím můžete vyhrát dle libosti! Můžete vytvořit opravdu úžasné zvuky třeba jen z pilovité vlny pomocí vhodných obálek...! + Panning + Panoráma - FILTER - FILTR + Freq. multiplier + Násobič frekv. - 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. - Zde si můžete vybrat z vestavěných filtrů, které chcete použít pro tuto stopu nástroje. Filtry jsou velmi důležité pro změnu charakteristiky zvuku. + Left detune + Rozladění vlevo - Hz - Hz + cents + centů - 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... - Tento otočný ovladač nastavuje frekvenci odříznutí pro vybraný filtr. Frekvence odříznutí určuje frekvenci pro odříznutí signálu filtrem. Například filtr typu dolní propust (low-pass) odstřihne všechny frekvence, které jsou vyšší než frekvence odříznutí. Filtr typu horní propust (high-pass) odstřihne všechny frekvence, které jsou nižší než frekvence odříznutí atd... + Right detune + Rozladění vpravo - RESO - REZO + A-B Mix + Směšovač A-B - Resonance: - Rezonance: + Mix envelope amount + Množství obálky směšovače - 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. - Tento otočný ovladač nastavuje Q/rezonanci pro vybraný filtr. Q/rezonance určuje, jak hodně filtr zesílí frekvence poblíž frekvence oříznutí. + Mix envelope attack + Náběh obálky směšovače - FREQ - FREKV + Mix envelope hold + Držení obálky směšovače - cutoff frequency: - Frekvence oříznutí: + Mix envelope decay + Útlum obálky směšovače - Envelopes, LFOs and filters are not supported by the current instrument. - Obálky, LFO a filtry nejsou podporovány stávajícím nástrojem. + Crosstalk + Přeslech - - - InstrumentTrack - unnamed_track - nepojmenovaná_stopa + Modulate amplitude of A1 by output of A2 + - Volume - Hlasitost + Ring modulate A1 and A2 + - Panning - Panoráma + Modulate phase of A1 by output of A2 + - Pitch - Ladění + Modulate amplitude of B1 by output of B2 + - FX channel - Efektový kanál + Ring modulate B1 and B2 + - Default preset - Výchozí předvolba + Modulate phase of B1 by output of B2 + - With this knob you can set the volume of the opened channel. - Tímto otočným ovladačem můžete nastavit hlasitost otevřeného kanálu. + Load a waveform from a sample file + - Base note - Základní nota + Shift phase by -15 degrees + - Pitch range - Výškový rozsah + Shift phase by +15 degrees + - Master Pitch - Hlavní ladění + Saw wave + Pilovitá vlna - InstrumentTrackView + Xpressive - Volume - Hlasitost + Selected graph + Zvolený graf - Volume: - Hlasitost: + A1 + A1 - VOL - HLA + A2 + A2 - Panning - Panoráma + A3 + A3 - Panning: - Panoráma: + W1 smoothing + W1 vyhlazování - PAN - PAN + W2 smoothing + W2 vyhlazování - MIDI - MIDI + W3 smoothing + W3 vyhlazování - Input - Vstup + Panning 1 + - Output - Výstup + Panning 2 + - FX %1: %2 - Efekt %1: %2 + Rel trans + - InstrumentTrackWindow + XpressiveView - GENERAL SETTINGS - HLAVNÍ NASTAVENÍ + Draw your own waveform here by dragging your mouse on this graph. + Kreslení vlastní křivky tahem myši na tomto grafu. - Instrument volume - Hlasitost nástroje + Select oscillator W1 + Vybrat oscilátor W1 - Volume: - Hlasitost: + Select oscillator W2 + Vybrat oscilátor W2 - VOL - HLA + Select oscillator W3 + Vybrat oscilátor W3 - Panning - Panoráma + Select output O1 + - Panning: - Panoráma: + Select output O2 + - PAN - PAN + Open help window + Otevřít okno nápovědy - Pitch - Ladění + Sine wave + Sinusová vlna - Pitch: - Ladění: - - - cents - centů - - - PITCH - LADĚNÍ - - - FX channel - Efektový kanál + Moog-saw wave + - FX - EFEKT + Exponential wave + Exponenciální vlna - Save preset - Uložit předvolbu + Saw wave + Pilovitá vlna - XML preset file (*.xpf) - XML soubor předvoleb (*.xpf) + User-defined wave + - Pitch range (semitones) - Rozsah výšky (v půltónech) + Triangle wave + Trojúhelníková vlna - RANGE - ROZSAH + Square wave + Pravoúhlá vlna - Save current instrument track settings in a preset file - Uložit aktuální nastavení nástrojové stopy do souboru předvoleb + White noise + Bílý šum - 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. - Klepněte sem, chcete-li uložit aktuální nastavení nástrojové stopy do souboru předvoleb. Později můžete nahrát tuto předvolbu poklepáním na prohlížeč předvoleb. + WaveInterpolate + Interpolace vlnění - Use these controls to view and edit the next/previous track in the song editor. - Použije tyto ovládací prvky pro zobrazení a editaci další/předchozí stopy v editoru skladby. + ExpressionValid + Platnost výrazu - SAVE - ULOŽIT + General purpose 1: + Celkový účel 1: - Envelope, filter & LFO - Obálka, filtr a LFO + General purpose 2: + Celkový účel 2: - Chord stacking & arpeggio - Vrstvení akordů a arpeggio + General purpose 3: + Celkový účel 3: - Effects - Efekty + O1 panning: + O1 vyvážení: - MIDI settings - MIDI nastavení + O2 panning: + O2 vyvážení: - Miscellaneous - Různé + Release transition: + Přechod mezi uvolněním: - Plugin - Plugin + Smoothness + Hladkost - Knob + ZynAddSubFxInstrument - Set linear - Lineární zobrazení + Portamento + Portamento - Set logarithmic - Logaritmické zobrazení + Bandwidth + Šířka pásma - Please enter a new value between %1 and %2: - Vložte prosím novou hodnotu mezi %1 a %2: + Filter frequency + - Please enter a new value between -96.0 dBFS and 6.0 dBFS: - Zadejte prosím novou hodnotu mezi -96.0 dBFS a 6.0 dBFS: + Filter resonance + - - - LadspaControl - Link channels - Propojit kanály + FM gain + - - - LadspaControlDialog - Link Channels - Propojit kanály + Resonance center frequency + - Channel - Kanál + Resonance bandwidth + + + + Forward MIDI control change events + - LadspaControlView + ZynAddSubFxView - Link channels - Propojit kanály + Show GUI + Ukázar grafické rozhraní - Value: - Hodnota: + Portamento: + Portamento: - Sorry, no help available. - Promiňte, nápověda není k dispozici. + PORT + PORT - - - LadspaEffect - Unknown LADSPA plugin %1 requested. - Je požadován neznámý LADSPA plugin %1. + FREQ + FREKV - - - LcdSpinBox - Please enter a new value between %1 and %2: - Vložte prosím novou hodnotu mezi %1 a %2: + RES + REZ - - - LeftRightNav - Previous - Předchozí + Bandwidth: + Šířka pásma: - Next - Další + BW + ŠP - Previous (%1) - Předchozí (%1) + FM GAIN + ZISK FM - Next (%1) - Další (%1) + Resonance center frequency: + Střední frekvence rezonance: - - - LfoController - LFO Controller - Ovladač LFO + RES CF + SF REZ - Base value - Základní hodnota + Resonance bandwidth: + Šířka pásma rezonance: - Oscillator speed - Rychlost oscilátoru + RES BW + ŠP REZ - Oscillator amount - Míra oscilátoru + Filter frequency: + - Oscillator phase - Fáze oscilátoru + Filter resonance: + - Oscillator waveform - Vlna oscilátoru + FM gain: + - Frequency Multiplier - Frekvenční multiplikátor + Forward MIDI control changes + - LfoControllerDialog + audioFileProcessor - LFO - LFO + Amplify + Zesílení - LFO Controller - Ovladač LFO + Start of sample + Začátek samplu - BASE - ZÁKL + End of sample + Konec samplu - Base amount: - Základní míra: + Reverse sample + Přehrávat pozpátku - todo - udělat + Stutter + Pokračování v přehrávání samplu při změně noty - SPD - RYCH + Loopback point + Začátek smyčky - LFO-speed: - Rychlost LFO: + Loop mode + Režim smyčky - Use this knob for setting speed of the LFO. The bigger this value the faster the LFO oscillates and the faster the effect. - Tento otočný ovladač nastavuje rychlost LFO. Zvýšením hodnoty se zrychlí kmitání LFO a průběh efektu. + Interpolation mode + Režim interpolace - Modulation amount: - Hloubka modulace: + None + Žádný - 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. - Tento otočný ovladač nastavuje množství modulace LFO. Čím vyšší bude tato hodnota, tím více budou propojené parametry (např. hlasitost nebo frekvence odříznutí) ovlivněny LFO. + Linear + Lineární - PHS - FÁZ + Sinc + Sinusový - Phase offset: - Posun fáze: + Sample not found: %1 + Vzorek nenalezen: %1 + + + bitInvader - degrees - stupňů + Sample length + + + + bitInvaderView - 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. - Tímto otočným ovladačem můžete nastavit fázový posun LFO. To znamená, že můžete posunout bod, ve kterém oscilátor začne kmitat. Například pokud máte sinusovou vlnu s fázovým posunem 180 stupňů, vlna půjde nejdříve dolů. Totéž se stane u vlny pravoúhlé. + Sine wave + Sinusová vlna - Click here for a sine-wave. - Klepněte sem pro sinusovou vlnu. + Triangle wave + Trojúhelníková vlna - Click here for a triangle-wave. - Klepněte sem pro trojúhelníkovou vlnu. + Saw wave + Pilovitá vlna - Click here for a saw-wave. - Klepněte sem pro pilovitou vlnu. + Square wave + Pravoúhlá vlna - Click here for a square-wave. - Klepněte sem pro pravoúhlou vlnu. + Interpolation + Interpolovat - Click here for an exponential wave. - Klepněte sem pro exponenciální vlnu. + Normalize + Normalizovat - Click here for white-noise. - Klepněte sem pro bílý šum. + Draw your own waveform here by dragging your mouse on this graph. + Kreslení vlastní křivky tahem myši na tomto grafu. - Click here for a user-defined shape. -Double click to pick a file. - Klepněte sem pro uživatelem definovaný tvar. -Poklepejte pro výběr souboru. + Sample length + - Click here for a moog saw-wave. - Klepněte sem pro pilovitou vlnu typu Moog. + White noise + Bílý šum - AMNT - MNOŽ + User-defined wave + + + + Smooth waveform + - LmmsCore + dynProcControlDialog - Generating wavetables - Generuji vlny + INPUT + VSTUP - Initializing data structures - Inicializuji datové struktury + Input gain: + Zesílení vstupu: - Opening audio and midi devices - Spouštím zvuková a MIDI zařízení + OUTPUT + VÝSTUP - Launching mixer threads - Spouštím vlákna mixážního panelu + Output gain: + Zesílení výstupu: - - - MainWindow - &New - &Nový + ATTACK + NÁBĚH - &Open... - &Otevřít... + Peak attack time: + Délka náběhu špičky: - &Save - &Uložit + RELEASE + UVOLNĚNÍ - Save &As... - Uložit &jako... + Peak release time: + Délka uvolnění špičky: - Import... - Importovat... + Process based on the maximum of both stereo channels + Zpracování vycházející z maxima obou stereo kanálů - E&xport... - E&xportovat... + Process based on the average of both stereo channels + Zpracování vycházející z průměru obou stereo kanálů - &Quit - &Ukončit + Process each stereo channel independently + Zpracování každého stereo kanálu zvlášť - &Edit - Úpr&avy + Reset wavegraph + - Settings - Nastavení + Smooth wavegraph + - &Tools - &Nástroje + Increase wavegraph amplitude by 1 dB + - &Help - &Nápověda + Decrease wavegraph amplitude by 1 dB + - Help - Nápověda + Stereo mode: maximum + - What's this? - Co je to? + Stereo mode: average + - About - O LMMS + Stereo mode: unlinked + + + + dynProcControls - Create new project - Vytvořit nový projekt + Input gain + Zesílení vstupu - Create new project from template - Vytvořit nový projekt ze šablony + Output gain + Zesílení výstupu - Open existing project - Otevřít existující projekt + Attack time + Doba náběhu - Recently opened projects - Naposledy otevřené projekty + Release time + Délka uvolnění - Save current project - Uložit aktuální projekt + Stereo mode + Režim sterea + + + kickerInstrument - Export current project - Exportovat aktuální projekt + Start frequency + Počáteční frekvence - Song Editor - Editor skladby + End frequency + Konečná frekvence - 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. - Stisknutím tohoto tlačítka zobrazíte nebo skryjete Editor skladby. S jeho pomocí můžete upravovat playlist skladby a určit, kdy a která stopa má být přehrána. Můžete také vložit a přesunovat vzorky (např. rapové) přímo do playlistu. + Gain + Zisk - Beat+Bassline Editor - Editor bicích/basů + Length + Délka - 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. - Stisknutím tohoto tlačítka zobrazíte nebo skryjete editor bicích/basů. Tento editor je nezbytný pro tvorbu beatů, otevírání, přidávání či odebírání kanálů a dále pro vyjímání, kopírování a vkládání beatů, bicích/basových patternů apod. + Noise + Šum - Piano Roll - Piano roll + Click + Klik - Click here to show or hide the Piano-Roll. With the help of the Piano-Roll you can edit melodies in an easy way. - Klepněte sem, pokud chcete ukázat nebo skrýt Piano roll. S pomocí Piano rollu můžete jednoduchým způsobem upravovat melodie. + Start from note + Začít od noty - Automation Editor - Editor automatizace + End to note + Skončit na notě - 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. - Klepněte sem, pokud chcete ukázat nebo skrýt Editor automatizace. S pomocí Editoru automatizace můžete jednoduchým způsobem upravovat proměnlivý průběh hodnot. + Start distortion + - FX Mixer - Efektový mixážní panel + End distortion + - 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. - Klepněte sem, pokud chcete ukázat nebo skrýt efektový (FX) mixážní panel. Efektový mixážní panel je velmi výkonný nástroj pro správu efektů ve vaší skladbě. Efekty můžete vkládat do různých efektových kanálů. + Envelope slope + - Project Notes - Poznámky k projektu + Frequency slope + + + + kickerInstrumentView - Click here to show or hide the project notes window. In this window you can put down your project notes. - Klepněte sem, pokud chcete ukázat nebo schovat okno pro poznámky. V tomto okně lze vkládat vaše poznámky k projektu. + Start frequency: + Počáteční frekvence: - Controller Rack - Panel kontrolérů + End frequency: + Konečná frekvence: - Untitled - Nepojmenovaný + Gain: + Zisk: - LMMS %1 - LMMS %1 + Click: + Klik: - Project not saved - Projekt není uložen + Noise: + Šum: - The current project was modified since last saving. Do you want to save it now? - Aktuální projekt byl od posledního uložení změněn. Chcete jej nyní uložit? + Frequency slope: + - Help not available - Nápověda není dostupná + Envelope length: + - Currently there's no help available in LMMS. -Please visit http://lmms.sf.net/wiki for documentation on LMMS. - V současnosti není v LMMS nápověda dostupná. -Navštivte prosím stránku s dokumentací k LMMS na adrese http://lmms.sf.net/wiki. + Envelope slope: + - LMMS (*.mmp *.mmpz) - LMMS (*.mmp *.mmpz) + Start distortion: + - Version %1 - Verze %1 + End distortion: + + + + ladspaBrowserView - Configuration file - Soubor nastavení + Available Effects + Dostupné efekty - Error while parsing configuration file at line %1:%2: %3 - Chyba při kontrole konfiguračního souboru na řádku %1:%2: %3 + Unavailable Effects + Nedostupné efekty - Volumes - Hlasitosti + Instruments + Nástroje - Undo - Zpět + Analysis Tools + Analyzační nástroje - Redo - Znovu + Don't know + Neznámé - My Projects - Moje projekty + Type: + Typ: + + + ladspaDescription - My Samples - Moje samply + Plugins + Pluginy - My Presets - Moje předvolby + Description + Popis + + + ladspaPortDialog - My Home - Domů + Ports + Porty - My Computer - Můj počítač + Name + Název - &File - &Soubor + Rate + Druh - &Recently Opened Projects - &Naposledy otevřené projekty + Direction + Směr - Save as New &Version - Uložit jako novou &verzi + Type + Typ - E&xport Tracks... - E&xportovat stopy... - - - Online Help - Nápověda online - - - What's This? - Co je to? - - - Open Project - Otevřít projekt - - - Save Project - Uložit projekt - - - Project recovery - Obnovení projektu - - - 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? - Je k dispozici soubor pro obnovu. Zdá se, že poslední práce nebyla správně ukončena nebo že je již spuštěna jiná instance LMMS. Chcete obnovit tuto verzi projektu? - - - Recover - Obnovit - - - Recover the file. Please don't run multiple instances of LMMS when you do this. - Obnovit soubor. Před dokončením prosím nespouštějte další instance LMMS. - - - Discard - Zrušit - - - Launch a default session and delete the restored files. This is not reversible. - Spustit LMMS do výchozího stavu a smazat obnovené soubory. Tento krok je nevratný. - - - Preparing plugin browser - Připravuji prohlížeč pluginů - - - Preparing file browsers - Připravuji prohlížeč souborů - - - Root directory - Kořenový adresář - - - Loading background artwork - Načítám grafiku prostředí - - - New from template - Nový z šablony - - - Save as default template - Uložit jako výchozí šablonu - - - &View - &Zobrazení - - - Toggle metronome - Zapnout/Vypnout metronom - - - Show/hide Song-Editor - Zobrazit/Skrýt editor skladby - - - Show/hide Beat+Bassline Editor - Zobrazit/Skrýt editor bicích/basů - - - Show/hide Piano-Roll - Zobrazit/Skrýt Piano roll - - - Show/hide Automation Editor - Zobrazit/Skrýt Editor automatizace - - - Show/hide FX Mixer - Zobrazit/Skrýt efektový mixážní panel - - - Show/hide project notes - Zobrazit/Skrýt poznámky k projektu - - - Show/hide controller rack - Zobrazit/Skrýt panel ovladačů - - - Recover session. Please save your work! - Obnovit projekt. Uložte prosím svou práci! - - - Recovered project not saved - Obnovený projekt není uložen - - - 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? - Tento projekt byl obnoven z minulého spuštění LMMS. Zatím není uložen a pokud tak neučiníte, práce bude ztracena. Chcete jej nyní uložit? - - - LMMS Project - Projekt LMMS + Min < Default < Max + Min < Výchozí < Max - LMMS Project Template - Šablona projektu LMMS + Logarithmic + Logaritmický - Overwrite default template? - Přepsat výchozí šablonu? + SR Dependent + SR závislý - This will overwrite your current default template. - Tímto se přepíše vaše nynější výchozí šablona. + Audio + Zvuk - Smooth scroll - Plynulé posouvání + Control + Ovládání - Enable note labels in piano roll - Povolit názvy tónů v Piano rollu + Input + Vstup - Save project template - Uložit šablonu projektu + Output + Výstup - Volume as dBFS - Hlasitost v dBFS + Toggled + Zapnuto - Could not open file - Nemohu otevřít soubor + Integer + Celočíselný - 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! - Nelze otevřít soubor %1 pro zápis. -Ujistěte se prosím, zda máte povolen zápis do souboru a do složky obsahující soubor a zkuste znovu! + Float + S plovoucí čárkou - Export &MIDI... - &Exportovat MIDI... + Yes + Ano - MeterDialog - - Meter Numerator - Počet dob v taktu - - - Meter Denominator - Délka doby v taktu - + lb302Synth - TIME SIG - METRUM + VCF Cutoff Frequency + VCF frekvence vypnutí - - - MeterModel - Numerator - Počet dob + VCF Resonance + VCF rezonance - Denominator - Délka doby + VCF Envelope Mod + VCF modulace obálky - - - MidiController - MIDI Controller - MIDI kontrolér + VCF Envelope Decay + VCF útlum obálky - unnamed_midi_controller - nepojmenovaný_midi_kontrolér + Distortion + Zkreslení - - - MidiImport - Setup incomplete - Nastavení není dokončeno + Waveform + Vlna - 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. - Nemáte nastaven výchozí soundfont v dialogovém okně (Edit-> Nastavení). Z tohoto důvodu nebude po importu MIDI souboru přehráván žádný zvuk. Stáhněte si nějaký General MIDI soundfont, zadejte jej v dialogovém okně nastavení a zkuste to znovu. + Slide Decay + Útlum sklouznutí - 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. - Nelze zkompilovat LMMS s podporou přehrávače SoundFont2, který je použitý k přidání výchozího zvuku do importovaných MIDI souborů. Proto nebude po importování tohoto MIDI souboru přehráván žádný zvuk. + Slide + Sklouznutí - Track - Stopa + Accent + Důraz - - - MidiJack - JACK server down - When JACK(JACK Audio Connection Kit) disconnects, it will show the following message (title) - JACK server zhavaroval + Dead + Dead - The JACK server seems to be shuted down. - When JACK(JACK Audio Connection Kit) disconnects, it will show the following message (dialog message) - Zdá se, že JACK server zhavaroval. + 24dB/oct Filter + Filtr 24dB/okt - MidiPort - - Input channel - Vstupní kanál - - - Output channel - Výstupní kanál - - - Input controller - Vstupní kontrolér - - - Output controller - Výstupní kontrolér - - - Fixed input velocity - Pevná vstupní dynamika - - - Fixed output velocity - Pevná výstupní dynamika - - - Output MIDI program - Výstupní MIDI program - + lb302SynthView - Receive MIDI-events - Přijímat MIDI události + Cutoff Freq: + Frekvence odstřihnutí: - Send MIDI-events - Posílat MIDI události + Resonance: + Rezonance: - Fixed output note - Pevná výstupní nota + Env Mod: + Modulace obálky: - Base velocity - Výchozí dynamika + Decay: + Útlum: - - - MidiSetupWidget - DEVICE - ZAŘÍZENÍ + 303-es-que, 24dB/octave, 3 pole filter + 3pólový filtr 303-es-que, 24dB/okt - - - MonstroInstrument - Osc 1 Volume - Osc 1 hlasitost + Slide Decay: + Útlum sklouznutí: - Osc 1 Panning - Osc 1 panoráma + DIST: + Zkreslení: - Osc 1 Coarse detune - Osc 1 hrubé rozladění + Saw wave + Pilovitá vlna - Osc 1 Fine detune left - Osc 1 jemné rozladění vlevo + Click here for a saw-wave. + Klepněte sem pro pilovitou vlnu. - Osc 1 Fine detune right - Osc 1 jemné rozladění vpravo + Triangle wave + Trojúhelníková vlna - Osc 1 Stereo phase offset - Osc 1 posun stereo fáze + Click here for a triangle-wave. + Klepněte sem pro trojúhelníkovou vlnu. - Osc 1 Pulse width - Osc 1 délka pulzu + Square wave + Pravoúhlá vlna - Osc 1 Sync send on rise - Osc 1 synchronizace při nárůstu + Click here for a square-wave. + Klepněte sem pro pravoúhlou vlnu. - Osc 1 Sync send on fall - Osc 1 synchronizace při poklesu + Rounded square wave + Oblá pravoúhlá vlna - Osc 2 Volume - Osc 2 hlasitost + Click here for a square-wave with a rounded end. + Klepněte sem pro pravoúhlou vlnu s oblým zakončením. - Osc 2 Panning - Osc 2 panoráma + Moog wave + Vlna typu Moog - Osc 2 Coarse detune - Osc 2 hrubé rozladění + Click here for a moog-like wave. + Klepněte sem pro vlnu typu Moog. - Osc 2 Fine detune left - Osc 2 jemné rozladění vlevo + Sine wave + Sinusová vlna - Osc 2 Fine detune right - Osc 2 jemné rozladění vpravo + Click for a sine-wave. + Klepněte sem pro sinusovou vlnu. - Osc 2 Stereo phase offset - Osc 2 posun stereo fáze + White noise wave + Bílý šum - Osc 2 Waveform - Osc 2 vlna + Click here for an exponential wave. + Klepněte sem pro exponenciální vlnu. - Osc 2 Sync Hard - Osc 2 pevná synchronizace + Click here for white-noise. + Klepněte sem pro bílý šum. - Osc 2 Sync Reverse - Osc 2 reverzní synchronizace + Bandlimited saw wave + Pásmově omezená pilovitá vlna - Osc 3 Volume - Osc 3 hlasitost + Click here for bandlimited saw wave. + Klepněte sem pro pásmově omezenou pilovitou vlnu. - Osc 3 Panning - Osc 3 panoráma + Bandlimited square wave + Pásmově zúžená pravoúhlá vlna - Osc 3 Coarse detune - Osc 3 hrubé rozladění + Click here for bandlimited square wave. + Klepněte sem pro pásmově zúženou pravoúhlou vlnu. - Osc 3 Stereo phase offset - Osc 3 posun stereo fáze + Bandlimited triangle wave + Pásmově zúžená trojúhelníková vlna - Osc 3 Sub-oscillator mix - Osc 3 smíchání se sub-oscilátorem + Click here for bandlimited triangle wave. + Klepněte sem pro pásmově zúženou trojúhelníkovou vlnu. - Osc 3 Waveform 1 - Osc 3 vlna 1 + Bandlimited moog saw wave + Pásmově zúžená pilovitá vlna typu Moog - Osc 3 Waveform 2 - Osc 3 vlna 2 + Click here for bandlimited moog saw wave. + Klepněte sem pro úzkopásmovou pilovitou vlnu typu Moog. + + + malletsInstrument - Osc 3 Sync Hard - Osc 3 pevná synchronizace + Hardness + Tvrdost - Osc 3 Sync Reverse - Osc 3 reverzní synchronizace + Position + Pozice - LFO 1 Waveform - LFO 1 vlna + Modulator + Modulátor - LFO 1 Attack - LFO 1 náběh + Crossfade + Prolínání (crossfade) - LFO 1 Rate - LFO 1 rychlost + ADSR + ADSR - LFO 1 Phase - LFO 1 fáze + Pressure + Tlak - LFO 2 Waveform - LFO 2 vlna + Motion + Pohyb - LFO 2 Attack - LFO 2 náběh + Speed + Rychlost - LFO 2 Rate - LFO 2 rychlost + Bowed + Smyčcem - LFO 2 Phase - LFO 2 fáze + Spread + Šíře - Env 1 Pre-delay - Obálka 1 předzpoždění + Marimba + Marimba - Env 1 Attack - Obálka 1 náběh + Vibraphone + Vibrafon - Env 1 Hold - Obálka 1 držení + Agogo + Agogo - Env 1 Decay - Obálka 1 útlum + Reso + Rezo - Env 1 Sustain - Obálka 1 vydržení + Beats + Údery - Env 1 Release - Obálka 1 uvolnění + Clump + Svazek - Env 1 Slope - Obálka 1 sklon + Glass + Sklo - Env 2 Pre-delay - Obálka 2 předzpoždění + Vibrato gain + - Env 2 Attack - Obálka 2 náběh + Vibrato frequency + - Env 2 Hold - Obálka 2 držení + Stick mix + - Env 2 Decay - Obálka 2 útlum + LFO speed + Rychlost LFO - Env 2 Sustain - Obálka 2 vydržení + LFO depth + - Env 2 Release - Obálka 2 uvolnění + Wood 1 + - Env 2 Slope - Obálka 2 sklon + Wood 2 + - Osc2-3 modulation - Osc 2–3 modulace + Two fixed + - Selected view - Zvolený pohled + Tubular bells + - Vol1-Env1 - Hla1-Obá1 + Uniform bar + - Vol1-Env2 - Hla1-Obá2 + Tuned bar + - Vol1-LFO1 - Hla1-LFO1 + Tibetan bowl + + + + malletsInstrumentView - Vol1-LFO2 - Hla1-LFO2 + Instrument + Nástroj - Vol2-Env1 - Hla2-Obá1 + Spread + Šíře - Vol2-Env2 - Hla2-Obá2 + Spread: + Šíře: - Vol2-LFO1 - Hla2-LFO1 + Hardness + Tvrdost - Vol2-LFO2 - Hla2-LFO2 - - - Vol3-Env1 - Hla3-Obá1 - - - Vol3-Env2 - Hla3-Obá2 - - - Vol3-LFO1 - Hla3-LFO1 - - - Vol3-LFO2 - Hla3-LFO2 - - - Phs1-Env1 - Fáz1-Obá1 - - - Phs1-Env2 - Fáz1-Obá2 - - - Phs1-LFO1 - Fáz1-LFO1 - - - Phs1-LFO2 - Fáz1-LFO2 - - - Phs2-Env1 - Fáz2-Obá1 - - - Phs2-Env2 - Fáz2-Obá2 - - - Phs2-LFO1 - Fáz2-LFO1 - - - Phs2-LFO2 - Fáz2-LFO2 - - - Phs3-Env1 - Fáz3-Obá1 - - - Phs3-Env2 - Fáz3-Obá2 - - - Phs3-LFO1 - Fáz3-LFO1 - - - Phs3-LFO2 - Fáz3-LFO2 - - - Pit1-Env1 - Výš1-Obá1 - - - Pit1-Env2 - Výš1-Obá2 - - - Pit1-LFO1 - Výš1-LFO1 - - - Pit1-LFO2 - Výš1-LFO2 - - - Pit2-Env1 - Výš2-Obá1 - - - Pit2-Env2 - Výš2-Obá2 - - - Pit2-LFO1 - Výš2-LFO1 - - - Pit2-LFO2 - Výš2-LFO2 - - - Pit3-Env1 - Výš3-Obá1 - - - Pit3-Env2 - Výš3-Obá2 - - - Pit3-LFO1 - Výš3-LFO1 - - - Pit3-LFO2 - Výš3-LFO2 - - - PW1-Env1 - Pul1-Obá1 - - - PW1-Env2 - Pul1-Obá2 - - - PW1-LFO1 - Pul1-LFO1 - - - PW1-LFO2 - Pul1-LFO2 - - - Sub3-Env1 - Sub3-Obá1 - - - Sub3-Env2 - Sub3-Obá2 - - - Sub3-LFO1 - Sub3-LFO1 - - - Sub3-LFO2 - Sub3-LFO2 - - - Sine wave - Sinusová vlna - - - Bandlimited Triangle wave - Pásmově zúžená trojúhelníková vlna - - - Bandlimited Saw wave - Pásmově zúžená pilovitá vlna - - - Bandlimited Ramp wave - Pásmově zúžená šikmá vlna - - - Bandlimited Square wave - Pásmově zúžená pravoúhlá vlna - - - Bandlimited Moog saw wave - Pásmově zúžená pilovitá vlna typu Moog - - - Soft square wave - Zaoblená pravoúhlá vlna - - - Absolute sine wave - Absolutní sinusová vlna - - - Exponential wave - Exponenciální vlna - - - White noise - Bílý šum - - - Digital Triangle wave - Digitální trojúhelníková vlna - - - Digital Saw wave - Digitální pilovitá vlna - - - Digital Ramp wave - Digitální šikmá vlna - - - Digital Square wave - Digitální pravoúhlá vlna - - - Digital Moog saw wave - Digitální pilovitá vlna typu Moog - - - Triangle wave - Trojúhelníková vlna - - - Saw wave - Pilovitá vlna - - - Ramp wave - Šikmá vlna - - - Square wave - Pravoúhlá vlna - - - Moog saw wave - Pilovitá vlna typu Moog - - - Abs. sine wave - Abs. sinusová vlna - - - Random - Náhodná - - - Random smooth - Vyhlazená náhodná - - - - MonstroView - - Operators view - Zobrazení operátorů - - - 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. - Zobrazení operátorů obsahuje všechny operátory. Toto společně zahrnuje jak přímo slyšitelné operátory (oscilátory), tak i neslyšitelné operátory nebo modulátory: generátory nízkých kmitů (LFO) a obálek. - -Otočné ovladače a další ovládací prvky v Zobrazení operátorů mají své vlastní textové popisky, takže můžete získat bližší nápovědu, co který konkrétně dělá. - - - Matrix view - Zobrazení matrice - - - 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. - -Each modulation target has 4 knobs, one for each modulator. By default the knobs are at 0, which means no modulation. Turning a knob to 1 causes that modulator to affect the modulation target as much as possible. Turning it to -1 does the same, but the modulation is inversed. - Zobrazení matrice obsahuje modulační matrici. Zde můžete nadefinovat modulační vazby mezi různými operátory: každý slyšitelný operátor (oscilátory 1–3) má 3–4 vlastnosti, které mohou být modulovány dalšími modulátory. Použití více modulací spotřebovává více výkonu procesoru. - -Okno je rozděleno na cíle modulace, seskupené podle cílových oscilátorů. Dostupné cíle jsou: hlasitost, výška, fáze, délka pulzu a poměr sub-oscilátoru. Poznámka: některé cíle jsou dostupné pouze pro určitý oscilátor. - -Každý cíl modulace má 4 otočné ovladače, jeden pro každý modulátor. Výchozí stav ovladačů je 0, tedy bez modulace. Otočení ovladače na 1 způsobí, že modulátor bude působit na cíl nejvíce, jak je možno. Otočení na -1 způsobí totéž, ale modulace bude inverzně obrácena. - - - Mix Osc2 with Osc3 - Smíchat Osc2 a Osc3 - - - Modulate amplitude of Osc3 with Osc2 - Modulovat amplitudu Osc3 pomocí Osc2 - - - Modulate frequency of Osc3 with Osc2 - Modulovat frekvenci Osc3 pomocí Osc2 - - - Modulate phase of Osc3 with Osc2 - Modulovat fázi Osc3 pomocí Osc2 - - - The CRS knob changes the tuning of oscillator 1 in semitone steps. - Otočný ovladač CRS mění ladění oscilátoru 1 v půltónových krocích. - - - The CRS knob changes the tuning of oscillator 2 in semitone steps. - Otočný ovladač CRS mění ladění oscilátoru 2 v půltónových krocích. - - - The CRS knob changes the tuning of oscillator 3 in semitone steps. - Otočný ovladač CRS mění ladění oscilátoru 3 v půltónových krocích. - - - 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. - FTL a FTR změní jemné ladění oscilátoru pro levý a pravý kanál. To přidává oscilátoru stereo rozladění, které rozšíří stereo obraz a vytvoří dojem prostoru. - - - The SPO knob modifies the difference in phase between left and right channels. Higher difference creates a wider stereo image. - Otočný ovladač SPO upravuje rozdíl ve fázi mezi levým a pravým kanálem. Větší rozdíl vytváří širší stereofonní obraz. - - - 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. - Otočný ovladač PW řídí šířku pulzu, jinak též pracovní cyklus, oscilátoru 1. Oscilátor 1 je digitální generátor pulzních vln, který nevytváří pásmově omezený výstup, což znamená, že jej sice můžete použít jako zdroj slyšitelného signálu, ale způsobuje aliasing. Můžete jej ale také využít jako neslyšitelný zdroj synchronizačního signálu, který může sloužit k synchronizaci oscilátorů 2 a 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. - Zaslání synchronizačního signálu při nárůstu: je-li zapnuto, bude synchronizační signál zasílán pokaždé, když bude stav oscilátoru 1 změněn na vyšší, např. když se amplituda změní z -1 na 1. Výška, fáze a šířka pulzu oscilátoru 1 mohou mít vliv na časování synchronizace, ale jejich množství zde nemá žádný efekt. Synchronizační signály jsou odesílány nezávisle pro levý a pravý kanál. - - - 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. - Zaslání synchronizačního signálu při poklesu: je-li zapnuto, bude synchronizační signál zasílán pokaždé, když bude stav oscilátoru 1 změněn na nižší, např. když se amplituda změní z 1 na -1. Výška, fáze a šířka pulzu oscilátoru 1 mohou mít vliv na časování synchronizace, ale jejich množství zde nemá žádný efekt. Synchronizační signály jsou odesílány nezávisle pro levý a pravý kanál. - - - Hard sync: Every time the oscillator receives a sync signal from oscillator 1, its phase is reset to 0 + whatever its phase offset is. - Pevná synchronizace: pokaždé, když oscilátor přijme synchronizační signál z oscilátoru 1, jeho fáze bude nastavena na 0, bez ohledu na jeho fázový posun. - - - Reverse sync: Every time the oscillator receives a sync signal from oscillator 1, the amplitude of the oscillator gets inverted. - Reverzní synchronizace: pokaždé, když oscilátor přijme synchronizační signál z oscilátoru 1, jeho amplituda bude převrácena. - - - Choose waveform for oscillator 2. - Vyberte vlnu pro oscilátor 2. - - - Choose waveform for oscillator 3's first sub-osc. Oscillator 3 can smoothly interpolate between two different waveforms. - Vyberte vlnu pro první suboscilátor oscilátoru 3. Oscilátor 3 může plynule interpolovat mezi dvěma různými vlnovými průběhy. - - - Choose waveform for oscillator 3's second sub-osc. Oscillator 3 can smoothly interpolate between two different waveforms. - Vyberte vlnu pro druhý suboscilátor oscilátoru 3. Oscilátor 3 může plynule interpolovat mezi dvěma různými vlnovými průběhy. - - - 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. - Otočný ovladač SUB mění poměr směšování mezi dvěma suboscilátory oscilátoru 3. Každý suboscilátor může být nastaven tak, aby vytvářel jiný vlnový průběh, a oscilátor 3 může plynule interpolovat mezi nimi. Všechny příchozí modulace oscilátoru 3 jsou shodným způsobem aplikovány na oba suboscilátory / vlnové průběhy. - - - 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. - Kromě vyhrazených modulátorů Monstro umožňuje oscilátor 3 modulovat výstupem oscilátoru 2. - -Režim směšování znamená bez modulace: výstupy oscilátorů se jednoduše smíchají. - - - 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. - Kromě vyhrazených modulátorů Monstro umožňuje oscilátor 3 modulovat výstupem oscilátoru 2. - -AM znamená amplitudovou modulaci: Amplituda (hlasitost) oscilátoru 3 je modulována oscilátorem 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. - Kromě vyhrazených modulátorů Monstro umožňuje oscilátor 3 modulovat výstupem oscilátoru 2. - -FM znamená frekvenční modulaci: frekvence (výška) oscilátoru 3 je modulována oscilátorem 2. Frekvenční modulace je implementována jako fázová modulace, která poskytuje stabilnější výslednou výšku než "čistá" frekvenční modulace. - - - 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. - Kromě vyhrazených modulátorů Monstro umožňuje oscilátor 3 modulovat výstupem oscilátoru 2. - -PM znamená fázovou modulaci: fáze oscilátoru 3 je modulována oscilátorem 2. To se liší od frekvenční modulace tím, že fázové změny nejsou kumulativní. - - - 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... - Vyberte tvar vlny pro LFO 1. -"Náhodná" a "Vyhlazená náhodná" jsou speciální vlny: produkují náhodný výstup, kde rychlost LFO řídí, jak často se mění stav LFO. Vyhlazená verze interpoluje mezi těmito stavy kosinovou interpolací. Tyto náhodné režimy mohou být použity k oživení vašich předvoleb – přidávají něco z analogové nepředvídatelnosti... - - - 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... - Vyberte tvar vlny pro LFO 2. -"Náhodná" a "Vyhlazená náhodná" jsou speciální vlny: produkují náhodný výstup, kde rychlost LFO řídí, jak často se mění stav LFO. Vyhlazená verze interpoluje mezi těmito stavy kosinovou interpolací. Tyto náhodné režimy mohou být použity k oživení vašich předvoleb – přidávají něco z analogové nepředvídatelnosti... - - - Attack causes the LFO to come on gradually from the start of the note. - Náběh způsobí, že LFO najede postupně od začátku noty. - - - Rate sets the speed of the LFO, measured in milliseconds per cycle. Can be synced to tempo. - Rate nastavuje rychlost LFO, měřenou v milisekundách za cyklus. Lze synchronizovat s tempem. - - - PHS controls the phase offset of the LFO. - PHS řídí fázový posun LFO. - - - PRE, or pre-delay, delays the start of the envelope from the start of the note. 0 means no delay. - PRE nebo předzpoždění (PRE, predelay) zpozdí začátek obálky oproti začátku noty. Hodnota 0 znamená bez zpoždění. - - - ATT, or attack, controls how fast the envelope ramps up at start, measured in milliseconds. A value of 0 means instant. - NÁB nebo náběh určuje, jak rychle vystoupá začátek obálky do špičky, měřeno v milisekundách. Hodnota 0 znamená okamžitý náběh. - - - HOLD controls how long the envelope stays at peak after the attack phase. - Držení určuje, jak dlouho obálka zůstane na špičce po fázi náběhu. - - - 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. - ÚTL nebo útlum (DEC, decoy) řídí rychlost poklesu obálky ze špičky do nulové úrovně (měřeno v milisekundách). Aktuální útlum může být kratší, pokud je použito podržení (sustain). - - - 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. - POD nebo podržení (SUS, sustain) řídí úroveň podržení v obálce. Fáze útlumu (decoy) nemůže jít pod tuto úroveň, dokud je nota držená. - - - 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. - UVO nebo uvolnění určuje, jak dlouhé bude ukončení noty, tedy jak dlouho bude trvat zeslabení ze špičky na nulu. Skutečná délka uvolnění může být kratší v závislosti na tom, ve které fázi je nota ukončena. - - - 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. - Otočný ovladač sklon řídí křivku a tvar obálky. Hodnota 0 vytváří přímý nárůst i pokles. Záporné hodnoty vytvářejí křivku, která začíná pomalu, rychle dosáhne špičky a opět pomalu klesá. Pozitivní hodnoty vytvářejí křivku, která začíná a končí rychle a udržuje se v blízkosti špičky. - - - Volume - Hlasitost - - - Panning - Panoráma - - - Coarse detune - Hrubé rozladění - - - semitones - půltónů - - - Finetune left - Jemné rozladění vlevo - - - cents - centů - - - Finetune right - Jemné rozladění vpravo - - - Stereo phase offset - Posun stereo fáze - - - deg - stupňů - - - Pulse width - Délka pulzu - - - Send sync on pulse rise - Synchronizace při nárůstu pulzu - - - Send sync on pulse fall - Synchronizace při poklesu pulzu - - - Hard sync oscillator 2 - Pevně synchronizovat oscilátor 2 - - - Reverse sync oscillator 2 - Reverzně synchronizovat oscilátor 2 - - - Sub-osc mix - Míchání sub-osc - - - Hard sync oscillator 3 - Pevně synchronizovat oscilátor 3 - - - Reverse sync oscillator 3 - Reverzně synchronizovat oscilátor 3 - - - Attack - Náběh - - - Rate - Typ - - - Phase - Fáze - - - Pre-delay - Předzpoždění - - - Hold - Držení - - - Decay - Útlum - - - Sustain - Vydržení - - - Release - Uvolnění - - - Slope - Stoupání - - - Modulation amount - Hloubka modulace - - - - MultitapEchoControlDialog - - Length - Délka - - - Step length: - Délka kroku: - - - Dry - Poměr - - - Dry Gain: - Poměr zdrojového zvuku: - - - Stages - Úrovně - - - Lowpass stages: - Počet úrovní dolní propusti: - - - Swap inputs - Přepnout vstupy - - - Swap left and right input channel for reflections - Přepnout levý a pravý vstupní kanál pro odrazy - - - - NesInstrument - - Channel 1 Coarse detune - Kanál 1 hrubé rozladění - - - Channel 1 Volume - Hlasitost kanálu 1 - - - Channel 1 Envelope length - Kanál 1 délka obálky - - - Channel 1 Duty cycle - Kanál 1 pracovní cyklus - - - Channel 1 Sweep amount - Kanál 1 množství sweepu - - - Channel 1 Sweep rate - Kanál 1rychlost sweepu - - - Channel 2 Coarse detune - Kanál 2 hrubé rozladění - - - Channel 2 Volume - Hlasitost kanálu 2 - - - Channel 2 Envelope length - Kanál 2 délka obálky - - - Channel 2 Duty cycle - Kanál 2 pracovní cyklus - - - Channel 2 Sweep amount - Kanál 2 množství sweepu - - - Channel 2 Sweep rate - Kanál 2 rychlost sweepu - - - Channel 3 Coarse detune - Kanál 3 hrubé rozladění - - - Channel 3 Volume - Hlasitost kanálu 3 - - - Channel 4 Volume - Hlasitost kanálu 4 - - - Channel 4 Envelope length - Kanál 4 délka obálky - - - Channel 4 Noise frequency - Kanál 4 frekvence šumu - - - Channel 4 Noise frequency sweep - Kanál 4 sweep frekvence šumu - - - Master volume - Hlavní hlasitost - - - Vibrato - Vibráto - - - - NesInstrumentView - - Volume - Hlasitost - - - Coarse detune - Hrubé rozladění - - - Envelope length - Délka obálky - - - Enable channel 1 - Zapnout kanál 1 - - - Enable envelope 1 - Zapnout obálku 1 - - - Enable envelope 1 loop - Zapnout smyčku obálky 1 - - - Enable sweep 1 - Zapnout sweep 1 - - - Sweep amount - Množství sweepu - - - Sweep rate - Rychlost sweepu - - - 12.5% Duty cycle - 12.5% pracovního cyklu - - - 25% Duty cycle - 25% pracovního cyklu - - - 50% Duty cycle - 50% pracovního cyklu - - - 75% Duty cycle - 75% pracovního cyklu - - - Enable channel 2 - Zapnout kanál 2 - - - Enable envelope 2 - Zapnout obálku 2 - - - Enable envelope 2 loop - Zapnout smyčku obálky 2 - - - Enable sweep 2 - Zapnout sweep 2 - - - Enable channel 3 - Zapnout kanál 3 - - - Noise Frequency - Frekvence šumu - - - Frequency sweep - Frekvence sweepu - - - Enable channel 4 - Zapnout kanál 4 - - - Enable envelope 4 - Zapnout obálku 4 - - - Enable envelope 4 loop - Zapnout smyčku obálky 4 - - - Quantize noise frequency when using note frequency - Kvantizovat frekvenci šumu při použití frekvence noty - - - Use note frequency for noise - Použít frekvenci pro šum - - - Noise mode - Typ šumu - - - Master Volume - Hlavní hlasitost - - - Vibrato - Vibráto - - - - OscillatorObject - - Osc %1 volume - Osc %1 hlasitost - - - Osc %1 panning - Osc %1 panoráma - - - Osc %1 coarse detuning - Osc %1 hrubé rozladění - - - Osc %1 fine detuning left - Osc %1 jemné rozladění vlevo - - - Osc %1 fine detuning right - Osc %1 jemné rozladění vpravo - - - Osc %1 phase-offset - Osc %1 posun fáze - - - Osc %1 stereo phase-detuning - Osc %1 rozladění stereo fáze - - - Osc %1 wave shape - Osc %1 forma vlny - - - Modulation type %1 - Typ modulace %1 - - - Osc %1 waveform - Osc %1 vlna - - - Osc %1 harmonic - Osc %1 harmonické - - - - PatchesDialog - - Qsynth: Channel Preset - Qsynth: Předvolba kanálu - - - Bank selector - Výběr banky - - - Bank - Banka - - - Program selector - Výběr programu - - - Patch - Patch - - - Name - Název - - - OK - OK - - - Cancel - Zrušit - - - - PatmanView - - Open other patch - Otevřít jiný patch - - - Click here to open another patch-file. Loop and Tune settings are not reset. - Klepněte sem, pokud chcete otevřít další patch-soubor. Nastavení smyčky a režimu ladění zůstanou zachována. - - - Loop - Smyčka - - - Loop mode - Režim smyčky - - - Here you can toggle the Loop mode. If enabled, PatMan will use the loop information available in the file. - Zde můžete přepínat režim smyčky. Je-li zapnutá, PatMan použije informace o smyčce dostupné v souboru. - - - Tune - Ladění - - - Tune mode - Režim ladění - - - Here you can toggle the Tune mode. If enabled, PatMan will tune the sample to match the note's frequency. - Zde můžete přepínat režim ladění. Je-li zapnut, PatMan naladí vzorek tak, aby odpovídal frekvenci noty. - - - No file selected - Není vybrán žádný soubor - - - Open patch file - Otevřít soubor patch - - - Patch-Files (*.pat) - Soubor patch (*.pat) - - - - PatternView - - Open in piano-roll - Otevřít v Piano rollu - - - Clear all notes - Vymazat všechny noty - - - Reset name - Resetovat jméno - - - Change name - Změnit jméno - - - Add steps - Přidat kroky - - - Remove steps - Odstranit kroky - - - Clone Steps - Klonovat kroky - - - - PeakController - - Peak Controller - Řízení špičky - - - Peak Controller Bug - Chyba řízení špičky - - - 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. - Z důvodu chyby ve starší verzi LMMS nemusí být řízení špičky správně připojeno. Ujistěte se prosím, zda je řízení špičky správně připojeno a znovu uložte tento soubor. Omlouváme se za způsobené nepříjemnosti. - - - - PeakControllerDialog - - PEAK - ŠPIČ - - - LFO Controller - Ovladač LFO - - - - PeakControllerEffectControlDialog - - BASE - ZÁKL - - - Base amount: - Základní míra: - - - Modulation amount: - Hloubka modulace: - - - Attack: - Náběh: - - - Release: - Uvolnění: - - - AMNT - MNOŽ - - - MULT - NÁSB - - - Amount Multiplicator: - Násobič množství: - - - ATCK - NÁBH - - - DCAY - ÚTLM - - - Treshold: - Práh: - - - TRSH - PRÁH - - - - PeakControllerEffectControls - - Base value - Základní hodnota - - - Modulation amount - Hloubka modulace - - - Mute output - Ztlumit výstup - - - Attack - Náběh - - - Release - Uvolnění - - - Abs Value - Abs hodnota - - - Amount Multiplicator - Násobič množství - - - Treshold - Práh - - - - PianoRoll - - Please open a pattern by double-clicking on it! - Otevřete prosím pattern poklepáním! - - - Last note - Podle poslední noty - - - Note lock - Zamknout notu - - - Note Velocity - Dynamika noty - - - Note Panning - Panoráma noty - - - Mark/unmark current semitone - Zvýraznit/Skrýt zvolený tón - - - Mark current scale - Zvýraznit zvolenou stupnici - - - Mark current chord - Zvýraznit zvolený akord - - - Unmark all - Skrýt vše - - - No scale - Žádná stupnice - - - No chord - Žádný akord - - - Velocity: %1% - Dynamika: %1% - - - Panning: %1% left - Panoráma: %1% vlevo - - - Panning: %1% right - Panoráma: %1% vpravo - - - Panning: center - Panoráma: střed - - - Please enter a new value between %1 and %2: - Vložte prosím novou hodnotu mezi %1 a %2: - - - Mark/unmark all corresponding octave semitones - Zvýraznit/Skrýt zvolený tón ve všech oktávách - - - Select all notes on this key - Vybrat všechny noty zvolené výšky - - - - PianoRollWindow - - Play/pause current pattern (Space) - Přehrát/Pozastavit přehrávání aktuálního patternu (mezerník) - - - Record notes from MIDI-device/channel-piano - Nahrávat z MIDI zařízení / virtuální klávesnice - - - Record notes from MIDI-device/channel-piano while playing song or BB track - Nahrávat z MIDI zařízení / virtuální klávesnice při přehrávání skladby nebo stopy bicích/basů - - - Stop playing of current pattern (Space) - Zastavit přehrávání aktuálního patternu (mezerník) - - - Click here to play the current pattern. This is useful while editing it. The pattern is automatically looped when its end is reached. - Klepněte sem, pokud chcete přehrát aktuální pattern. To je užitečné při editaci. Pattern je automaticky přehráván ve smyčce. - - - 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. - Klepněte sem, pokud chcete nahrávat z MIDI zařízení nebo z virtuální klávesnice příslušného kanálového okna do aktuálního patternu. Při nahrávání se zaznamenají všechny zahrané noty do tohoto patternu, a následně je můžete přehrát nebo upravit. - - - 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. - Klepněte sem, pokud chcete nahrávat z MIDI zařízení nebo z virtuální klávesnice příslušného kanálového okna do aktuálního patternu. Při nahrávání se zaznamenají všechny zahrané noty do tohoto patternu a na pozadí uslyšíte skladbu nebo BB stopu. - - - Click here to stop playback of current pattern. - Klepněte sem, pokud chcete zastavit přehrávání aktuálního patternu. - - - Draw mode (Shift+D) - Režim kreslení (Shift+D) - - - Erase mode (Shift+E) - Režim mazání (Shift+E) - - - Select mode (Shift+S) - Režim výběru (Shift+S) - - - Detune mode (Shift+T) - Režim rozladění (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. - Klepněte sem pro aktivaci režimu kreslení. V tomto režimu můžete přidávat, měnit a přesouvat noty. Toto je výchozí režim, který se používá nejčastěji. Pro aktivaci tohoto režimu můžete také stisknout "Shift+D" na klávesnici. V tomto režimu podržte %1 pro dočasné přepnutí do režimu výběru. - - - 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. - Klepněte sem pro aktivaci režimu mazání. V tomto režimu můžete vymazávat noty. Pro aktivaci tohoto režimu můžete také stisknout tlačítko "Shift+E" na klávesnici. - - - 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. - Klepněte sem pro aktivaci režimu výběru. V tomto režimu můžete vybírat noty. Alternativně můžete v režimu kreslení držet %1 pro dočasné přepnutí do režimu výběru. - - - 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. - Klepněte sem pro aktivaci režimu rozladění. V tomto režimu můžete klepnutím na notu otevřít její automatické rozladění. To můžete využít ke sklouznutí z jedné noty na jinou. Pro aktivaci tohoto režimu můžete také stisknout klávesu "Shift+T" na klávesnici. - - - Cut selected notes (%1+X) - Vyjmout označené noty (%1+X) - - - Copy selected notes (%1+C) - Kopírovat označené noty (%1+C) - - - Paste notes from clipboard (%1+V) - Vložit noty ze schránky (%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. - Klepněte sem, pokud chcete označené noty vyjmout a uložit do schránky. Vložit je pak můžete kdekoliv v libovolném patternu pomocí tlačítka Vložit. - - - 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. - Klepněte sem, pokud chcete označené noty zkopírovat do schránky. Vložit je pak můžete kdekoliv v libovolného patternu pomocí tlačítka Vložit. - - - Click here and the notes from the clipboard will be pasted at the first visible measure. - Klepnete-li sem, budou noty ze schránky vloženy do prvního viditelného taktu. - - - 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. - Tímto se ovládá zvětšení osy. To může být užitečné při volbě zvětšení pro konkrétní úkol. Při běžné úpravě by mělo být zvětšení použito na vaše nejmenší noty. - - - 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. - "Q" znamená kvantizaci, která ovládá mřížku velikosti not a kontrolní body krokování. S menšími hodnotami kvantizace můžete kreslit kratší noty v Piano rollu a přesnější kontrolní body v editoru automatizace. - - - 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 - Tímto je možno vybrat délku nových not. "Poslední nota" znamená, že LMMS použije délku naposledy upravované noty. - - - 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! - Funkce je přímo propojena s kontextovou nabídkou na virtuální klávesnici vlevo v Piano rollu. Poté, co jste v rozbalovací nabídce zvolili stupnici, můžete klepnout pravým tlačítkem na požadovanou klávesu na virtuální klávesnici, a pak zvolit "Zvýraznit zvolenou stupnici". LMMS zvýrazní všechny noty, které patří do zvolené stupnice, a to od klávesy, kterou jste vybrali! - - - 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. - Vyberte si akord, který pak LMMS může nakreslit nebo zvýraznit. V rozbalovací nabídce najdete nejčastěji používané akordy. Po výběru akordu klepněte kamkoliv pro umístění akordu, klepnutím pravým tlačítkem na virtuální klávesnici pak otevřete kontextové menu a zvýrazníte akord. Chcete-li se vrátit k práci s jednotlivými notami, musíte v rozbalovací nabídce zvolit možnost "Žádný akord". - - - Edit actions - Akce úprav - - - Copy paste controls - Ovládání kopírování a vkládání - - - Timeline controls - Ovládání časové osy - - - Zoom and note controls - Lupa a ovládání not - - - Piano-Roll - %1 - Piano roll – %1 - - - Piano-Roll - no pattern - Piano roll – žádný pattern - - - Quantize - Kvantizace - - - - PianoView - - Base note - Základní nota - - - - Plugin - - Plugin not found - Plugin nenalezen - - - The plugin "%1" wasn't found or could not be loaded! -Reason: "%2" - Plugin "%1" nebyl nalezen nebo nemůže být načten! -Důvod: "%2" - - - Error while loading plugin - Při načítání pluginu došlo k chybě - - - Failed to load plugin "%1"! - Načtení pluginu "%1" selhalo! - - - - PluginBrowser - - Instrument browser - Prohlížeč nástrojů - - - Drag an instrument into either the Song-Editor, the Beat+Bassline Editor or into an existing instrument track. - Nástroj přetáhněte do editoru skladby, editoru bicích/basů nebo do existující nástrojové stopy. - - - Instrument Plugins - Nástrojové pluginy - - - - PluginFactory - - Plugin not found. - Plugin nebyl nalezen. - - - LMMS plugin %1 does not have a plugin descriptor named %2! - U LMMS pluginu %1 chybí popisovač pluginu s názvem %2! - - - - ProjectNotes - - Edit Actions - Provedené úpravy - - - &Undo - &Zpět - - - %1+Z - %1+Z - - - &Redo - &Znovu - - - %1+Y - %1+Z - - - &Copy - &Kopírovat - - - %1+C - %1+C - - - Cu&t - &Vyjmout - - - %1+X - %1+X - - - &Paste - V&ložit - - - %1+V - %1+V - - - Format Actions - Formátování - - - &Bold - &Tučné - - - %1+B - %1+B - - - &Italic - &Kurzíva - - - %1+I - %1+I - - - &Underline - &Podtržené - - - %1+U - %1+U - - - &Left - &Vlevo - - - %1+L - %1+L - - - C&enter - &Na střed - - - %1+E - %1+E - - - &Right - V&pravo - - - %1+R - %1+R - - - &Justify - &Do bloku - - - %1+J - %1+J - - - &Color... - &Barva... - - - Project Notes - Poznámky k projektu - - - Enter project notes here - Sem zapište poznámky k projektu - - - - ProjectRenderer - - WAV-File (*.wav) - WAV soubor (*.wav) - - - Compressed OGG-File (*.ogg) - Komprimovaný OGG soubor (*.ogg) - - - FLAC-File (*.flac) - Soubor FLAC (*.flac) - - - Compressed MP3-File (*.mp3) - Komprimovaný soubor MP3 (*.mp3) - - - - QWidget - - Name: - Název: - - - Maker: - Tvůrce: - - - Copyright: - Autorská práva: - - - Requires Real Time: - Vyžaduje běh v reálném čase: - - - Yes - Ano - - - No - Ne - - - Real Time Capable: - Schopnost běhu v reálném čase: - - - In Place Broken: - Na místě poškozeného: - - - Channels In: - Vstupní kanály: - - - Channels Out: - Výstupní kanály: - - - File: - Soubor: - - - File: %1 - Soubor: %1 - - - - RenameDialog - - Rename... - Přejmenovat... - - - - ReverbSCControlDialog - - Input - Vstup - - - Input Gain: - Zesílení vstupu: - - - Size - Velikost - - - Size: - Velikost: - - - Color - Barva - - - Color: - Barva: - - - Output - Výstup - - - Output Gain: - Zesílení výstupu: - - - - ReverbSCControls - - Input Gain - Vstupní úroveň - - - Size - Velikost - - - Color - Barva - - - Output Gain - Zesílení výstupu - - - - SampleBuffer - - Open audio file - Otevřít audio soubor - - - Wave-Files (*.wav) - WAV soubory (*.wav) - - - OGG-Files (*.ogg) - OGG soubory (*.ogg) - - - DrumSynth-Files (*.ds) - DrumSynth soubory (*.ds) - - - FLAC-Files (*.flac) - FLAC soubory (*.flac) - - - SPEEX-Files (*.spx) - SPEEX soubory (*.spx) - - - VOC-Files (*.voc) - VOC soubory (*.voc) - - - AIFF-Files (*.aif *.aiff) - Soubory AIFF (*.aif *.aiff) - - - AU-Files (*.au) - AU soubory (*.au) - - - RAW-Files (*.raw) - RAW soubory (*.raw) - - - All Audio-Files (*.wav *.ogg *.ds *.flac *.spx *.voc *.aif *.aiff *.au *.raw) - Všechny audio soubory (*.wav *.ogg *.ds *.flac *.spx *.voc *.aif *.aiff *.au *.raw) - - - Fail to open file - Chyba otevírání souboru - - - Audio files are limited to %1 MB in size and %2 minutes of playing time - Audio soubory jsou omezeny na %1 MB velikosti a %2 minut délky - - - - SampleTCOView - - double-click to select sample - poklepáním vyberte sampl - - - Delete (middle mousebutton) - Smazat (prostřední tlačítko myši) - - - Cut - Vyjmout - - - Copy - Kopírovat - - - Paste - Vložit - - - Mute/unmute (<%1> + middle click) - Ztlumit/Odtlumit (<%1> + prostřední tlačítko) - - - - SampleTrack - - Sample track - Stopa samplů - - - Volume - Hlasitost - - - Panning - Panoráma - - - - SampleTrackView - - Track volume - Hlasitost stopy - - - Channel volume: - Hlasitost kanálu: - - - VOL - HLA - - - Panning - Panoráma - - - Panning: - Panoráma: - - - PAN - PAN - - - - SetupDialog - - Setup LMMS - Nastavení LMMS - - - General settings - Hlavní nastavení - - - BUFFER SIZE - VELIKOST VYR. PAMĚTI - - - Reset to default-value - Nastavit výchozí hodnoty - - - MISC - JINÉ - - - Enable tooltips - Zapnout bublinovou nápovědu - - - Show restart warning after changing settings - Zobrazit výzvu k restartu po změně nastavení - - - Compress project files per default - Komprimovat soubory s projekty - - - One instrument track window mode - Režim jedné stopy pro nástroje - - - HQ-mode for output audio-device - HQ režim pro výstup audio zařízení - - - Compact track buttons - Malá tlačítka u stop - - - Sync VST plugins to host playback - Synchronizace VST pluginů s hostujícím přehráváním - - - Enable note labels in piano roll - Povolit názvy tónů v Piano rollu - - - Enable waveform display by default - Povolit zobrazení vlny ve výchozím nastavení - - - Keep effects running even without input - Nechat efekty spuštěné i bez vstupu - - - Create backup file when saving a project - Při ukládání projektu vytvořit záložní soubor - - - LANGUAGE - Jazyk - - - Paths - Cesty - - - LMMS working directory - Pracovní adresář LMMS - - - VST-plugin directory - Adresář pro VST pluginy - - - Background artwork - Obrázek na pozadí - - - STK rawwave directory - Adresář pro STK rawwave - - - Default Soundfont File - Výchozí Soundfont soubor - - - Performance settings - Nastavení výkonu - - - UI effects vs. performance - Efekty uživatelského rozhraní vs. výkon - - - Smooth scroll in Song Editor - Plynulé posouvání v Song Editoru - - - Show playback cursor in AudioFileProcessor - Zobrazit přehrávací kurzor v AudioFileProcessoru - - - Audio settings - Audio nastavení - - - AUDIO INTERFACE - AUDIO ROZHRANÍ - - - MIDI settings - MIDI nastavení - - - MIDI INTERFACE - MIDI ROZHRANÍ - - - OK - OK - - - Cancel - Zrušit - - - Restart LMMS - Restartovat LMMS - - - Please note that most changes won't take effect until you restart LMMS! - Mnohé změny nastavení se projeví až po restartu LMMS! - - - Frames: %1 -Latency: %2 ms - Rámce: %1 -Zpoždění %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. - Zde můžete nastavit interní velikost vyrovnávací paměti, která je užívána LMMS. Nízké hodnoty vedou k menšímu zpoždění, ale také způsobují nepoužitelný zvuk nebo špatný výkon, zejména na starých počítačích či systémech s jádrem nepodporujícím real time. - - - Choose LMMS working directory - Vyberte pracovní adresář LMMS - - - Choose your VST-plugin directory - Vyberte adresář pro VST pluginy - - - Choose artwork-theme directory - Vyberte adresář s tématy - - - Choose LADSPA plugin directory - Vyberte adresář pro LADSPA pluginy - - - Choose STK rawwave directory - Vyberte adresář pro STK rawwave - - - Choose default SoundFont - Vyberte výchozí SoundFont - - - Choose background artwork - Vyberte obrázek na pozadí - - - 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. - Zde vyberte preferované audio rozhraní. V závislosti na konfiguraci Vašeho systému při kompilaci můžete volit mezi ALSA, JACK, OSS a dalšími. Níže vidíte políčko, které nabízí možnost nastavení vybraného audio rozhraní. - - - 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. - Zde vyberte preferované MIDI rozhraní. V závislosti na konfiguraci Vašeho systému při kompilaci můžete volit mezi ALSA OSS a dalšími. Níže vidíte políčko, které nabízí možnost nastavení vybraného MIDI rozhraní. - - - Reopen last project on start - Po spuštění otevřít poslední projekt - - - Directories - Adresáře - - - Themes directory - Adresář pro témata - - - GIG directory - Adresář pro GIG - - - SF2 directory - Adresář pro SF2 - - - LADSPA plugin directories - Adresář pro LADSPA pluginy - - - Auto save - Automatické ukládání - - - Choose your GIG directory - Vyberte svůj adresář pro GIG soubory - - - Choose your SF2 directory - Vyberte svůj adresář pro SF2 soubory - - - minutes - minut - - - minute - minuta - - - Display volume as dBFS - Zobrazit hlasitost v dBFS - - - Enable auto-save - Povolit automatické ukládání - - - Allow auto-save while playing - Povolit automatické ukládání během přehrávání - - - Disabled - Vypnuto - - - Auto-save interval: %1 - Interval automatického ukládání: %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. - Nastavte čas mezi automatickým zálohováním na %1. -Nezapomeňte také svůj projekt uložit ručně. Můžete si vybrat, zda nechcete během přehrávání zakázat ukládání, což je problematické pro některé starší systémy. - - - - Song - - Tempo - Tempo - - - Master volume - Hlavní hlasitost - - - Master pitch - Hlavní ladění - - - Project saved - Projekt uložen - - - The project %1 is now saved. - Projekt %1 je nyní uložen. - - - Project NOT saved. - Projekt NENÍ uložen. - - - The project %1 was not saved! - Projekt %1 nebyl uložen! - - - Import file - Importovat soubor - - - MIDI sequences - MIDI sekvence - - - Hydrogen projects - Projekty Hydrogen - - - All file types - Všechny typy souborů - - - Empty project - Prázdný projekt - - - This project is empty so exporting makes no sense. Please put some items into Song Editor first! - Tento projekt je prázdný, jeho exportování nemá smysl. Nejdříve prosím vložte nějaké položky do Editoru skladby! - - - Select directory for writing exported tracks... - Vyberte adresář pro zápis exportovaných stop... - - - untitled - nepojmenovaný - - - Select file for project-export... - Vyberte soubor pro export projektu... - - - The following errors occured while loading: - Během načítání se vyskytly tyto chyby: - - - MIDI File (*.mid) - MIDI soubor (*.mid) - - - LMMS Error report - Chybové hlášení LMMS - - - Save project - Uložit projekt - - - - SongEditor - - Could not open file - Nemohu otevřít soubor - - - Could not write file - Nemohu zapsat soubor - - - 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. - Nelze otevřít soubor %1. Pravděpodobně nemáte oprávnění číst tento soubor. - Ujistěte se prosím, že máte oprávnění alespoň číst tento soubor a zkuste to znovu. - - - Error in file - Chyba v souboru - - - The file %1 seems to contain errors and therefore can't be loaded. - Soubor %1 pravděpodobně obsahuje chyby, a proto nemohl být načten. - - - Tempo - Tempo - - - TEMPO/BPM - TEMPO/BPM - - - tempo of song - tempo skladby - - - 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). - Tempo skladby je uvedeno v úderech za minutu (BPM). Chcete-li změnit tempo skladby, změňte tuto hodnotu. Každý takt má čtyři doby (beats), takže tempo v BPM specifikuje kolik taktů / 4 bude za minutu přehráno (nebo kolik taktů bude přehráno ve čtyřech minutách). - - - High quality mode - Režim vysoké kvality - - - Master volume - Hlavní hlasitost - - - master volume - hlavní hlasitost - - - Master pitch - Hlavní ladění - - - master pitch - hlavní ladění - - - Value: %1% - Hodnota: %1% - - - Value: %1 semitones - Hodnota: %1 půltónů - - - 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. - Nelze zapisovat do souboru %1. Pravděpodobně nemáte oprávnění zapisovat do tohoto souboru. Ujistěte se prosím, že máte oprávnění zapisovat do tohoto souboru a zkuse to znovu. - - - template - šablona - - - project - projekt - - - Version difference - Rozdíl verzí - - - This %1 was created with LMMS %2. - %1 byl vytvořen v LMMS %2. - - - - SongEditorWindow - - Song-Editor - Editor skladby - - - Play song (Space) - Přehrát skladbu (mezerník) - - - Record samples from Audio-device - Nahrát samply z audio zařízení - - - Record samples from Audio-device while playing song or BB track - Nahrát samply z audio zařízení při přehrávání skladby stopy bicích/basů - - - Stop song (Space) - Zastavit přehrávání (mezerník) - - - Add beat/bassline - Přidat bicí/basy - - - Add sample-track - Přidat stopu samplů - - - Add automation-track - Přidat stopu automatizace - - - Draw mode - Režim kreslení - - - Edit mode (select and move) - Režim úprav (označit a přesunout) - - - 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. - Klepněte sem, pokud chcete přehrát celou skladbu. Přehrávání začne v místě kde se nalézá zelený označovač pozice, se kterým lze též při přehrávání pohybovat. - - - Click here, if you want to stop playing of your song. The song-position-marker will be set to the start of your song. - Klepněte sem, pokud chcete zastavit přehrávání skladby. Označovač pozice bude nastaven na začátek skladby. - - - Track actions - Akce stopy - - - Edit actions - Akce úprav - - - Timeline controls - Ovládání časové osy - - - Zoom controls - Ovládání zvětšení - - - - SpectrumAnalyzerControlDialog - - Linear spectrum - Lineární spektrum - - - Linear Y axis - Lineární osa Y - - - - SpectrumAnalyzerControls - - Linear spectrum - Lineární spektrum - - - Linear Y axis - Lineární osa Y - - - Channel mode - Režim kanálu - - - - SubWindow - - Close - Zavřít - - - Maximize - Maximalizovat - - - Restore - Obnovit - - - - TabWidget - - Settings for %1 - Nastavení rpo %1 - - - - TempoSyncKnob - - Tempo Sync - Synchronizace tempa - - - No Sync - Nesynchronizovat - - - Eight beats - Osm dob - - - Whole note - Celá nota - - - Half note - Půlová nota - - - Quarter note - Čtvrťová nota - - - 8th note - Osminová nota - - - 16th note - Šestnáctinová nota - - - 32nd note - Dvaatřicetinová nota - - - Custom... - Vlastní... - - - Custom - Vlastní - - - Synced to Eight Beats - Synchronizováno k osmi dobám - - - Synced to Whole Note - Synchronizováno k celé notě - - - Synced to Half Note - Synchronizováno k půlové notě - - - Synced to Quarter Note - Synchronizováno ke čtvrťové notě - - - Synced to 8th Note - Synchronizováno k osminové notě - - - Synced to 16th Note - Synchronizováno k šestnáctinové notě - - - Synced to 32nd Note - Synchronizováno k dvaatřicetinové notě - - - - TimeDisplayWidget - - click to change time units - klepněte pro změnu časových jednotek - - - MIN - MIN - - - SEC - S - - - MSEC - MS - - - BAR - TAKT - - - BEAT - DOBA - - - TICK - TIK - - - - TimeLineWidget - - Enable/disable auto-scrolling - Povolit/Zakázat automatický posun - - - Enable/disable loop-points - Povolit/Zakázat body přehrávání ve smyčce - - - After stopping go back to begin - Po skončení přetočit zpět na začátek - - - After stopping go back to position at which playing was started - Po skončení přetočit zpět na pozici, ze které přehrávání začalo - - - After stopping keep position - Po skončení zachovat pozici - - - Hint - Rada - - - Press <%1> to disable magnetic loop points. - Stiskněte <%1> pro vypnutí magnetických bodů smyčky. - - - Hold <Shift> to move the begin loop point; Press <%1> to disable magnetic loop points. - Držte <Shift> pro přesouvání počátečního bodu smyčky; stiskněte <%1> pro vypnutí magnetických bodů smyčky. - - - - Track - - Mute - Ztlumit - - - Solo - Sólo - - - - TrackContainer - - Couldn't import file - Nemohu importovat soubor - - - Couldn't find a filter for importing file %1. -You should convert this file into a format supported by LMMS using another software. - Nemohu najít filtr pro import souboru %1. -Měli byste tento soubor převést do formátu podporovaného LMMS pomocí jiného software. - - - Couldn't open file - Nemohu otevřít soubor - - - 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! - Nemohu otevřít soubor %1 pro čtení. -Přesvědčte se prosím, že máte právo ke čtení tohoto souboru a příslušného adresáře a zkuste to znovu! - - - Loading project... - Načítám projekt... - - - Cancel - Zrušit - - - Please wait... - Prosím čekejte... - - - Importing MIDI-file... - Importuji MIDI soubor... - - - Loading Track %1 (%2/Total %3) - Načítám Stopu %1 (%2/celkem %3) - - - - TrackContentObject - - Mute - Ztlumit - - - - TrackContentObjectView - - Current position - Aktuální pozice - - - Hint - Rada - - - Press <%1> and drag to make a copy. - K vytvoření kopie stiskněte <%1> a táhněte myší. - - - Current length - Aktuální délka - - - Press <%1> for free resizing. - Stiskněte <%1> pro volnou změnu velikosti. - - - %1:%2 (%3:%4 to %5:%6) - %1:%2 (%3:%4 do %5:%6) - - - Delete (middle mousebutton) - Smazat (prostřední tlačítko myši) - - - Cut - Vyjmout - - - Copy - Kopírovat - - - Paste - Vložit - - - Mute/unmute (<%1> + middle click) - Ztlumit/Odtlumit (<%1> + prostřední tlačítko myši) - - - - TrackOperationsWidget - - Press <%1> while clicking on move-grip to begin a new drag'n'drop-action. - Při klepnutí na úchop držte <%1> pro zkopírování přetahované stopy. - - - Actions for this track - Akce pro tuto stopu - - - Mute - Ztlumit - - - Solo - Sólo - - - Mute this track - Ztlumit tuto stopu - - - Clone this track - Klonovat tuto stopu - - - Remove this track - Odstranit tuto stopu - - - Clear this track - Klonovat tuto stopu - - - FX %1: %2 - Efekt %1: %2 - - - Turn all recording on - Spustit všechna nahrávání - - - Turn all recording off - Zastavit všechna nahrávání - - - Assign to new FX Channel - Přiřadit k novému efektovému kanálu - - - - TripleOscillatorView - - Use phase modulation for modulating oscillator 1 with oscillator 2 - Použít fázovou modulaci pro modulování oscilátoru 1 oscilátorem 2 - - - Use amplitude modulation for modulating oscillator 1 with oscillator 2 - Použít amplitudovou modulaci pro modulování oscilátoru 1 oscilátorem 2 - - - Mix output of oscillator 1 & 2 - Smíchat výstupy oscilátorů 1 a 2 - - - Synchronize oscillator 1 with oscillator 2 - Synchronizovat oscilátor 1 oscilátorem 2 - - - Use frequency modulation for modulating oscillator 1 with oscillator 2 - Použít frekvenční modulaci pro modulování oscilátoru 1 oscilátorem 2 - - - Use phase modulation for modulating oscillator 2 with oscillator 3 - Použít fázovou modulaci pro modulování oscilátoru 2 oscilátorem 3 - - - Use amplitude modulation for modulating oscillator 2 with oscillator 3 - Použít amplitudovou modulaci pro modulování oscilátoru 2 oscilátorem 3 - - - Mix output of oscillator 2 & 3 - Smíchat výstupy oscilátorů 2 a 3 - - - Synchronize oscillator 2 with oscillator 3 - Synchronizovat oscilátor 2 oscilátorem 3 - - - Use frequency modulation for modulating oscillator 2 with oscillator 3 - Použít frekvenční modulaci pro modulování oscilátoru 2 oscilátorem 3 - - - Osc %1 volume: - Osc %1 hlasitost: - - - 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. - Tímto otočným ovladačem můžete nastavit hlasitost oscilátoru %1. Když nastavíte hodnotu 0, oscilátor bude vypnutý. Jinak uslyšíte oscilátor tak hlasitě, jak si ho zde nastavíte. - - - Osc %1 panning: - Osc %1 panoráma: - - - 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. - Tímto otočným ovladačem můžete nastavit panoráma oscilátoru %1. Hodnota -100 znamená maximálně doleva, zatímco hodnota 100 přesouvá výstup oscilátoru doprava. - - - Osc %1 coarse detuning: - Osc %1 hrubé rozladění: - - - semitones - půltónů - - - 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. - Tímto otočným ovladačem můžete provést hrubé rozladění oscilátoru %1. Můžete oscilátor rozladit o 24 půltónů (2 oktávy) nahoru nebo dolů. To je dobré pro vytvoření zvuku v akordu. - - - Osc %1 fine detuning left: - Osc %1 jemné rozladění vlevo: - - - cents - centů - - - 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. - Tímto otočným ovladačem můžete provést jemné rozladění oscilátoru %1 v levém kanálu. Rozsah jemného rozladění je mezi -100 a +100 centy. To je dobré pro vytvoření "tlustého" zvuku. - - - Osc %1 fine detuning right: - Osc %1 jemné rozladění vpravo: - - - 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. - Tímto otočným ovladačem můžete provést jemné rozladění oscilátoru %1 v pravém kanálu. Rozsah jemného rozladění je mezi -100 a +100 centy. To je dobré pro vytvoření "tlustého" zvuku. - - - Osc %1 phase-offset: - Osc %1 posun fáze: - - - degrees - stupňů - - - 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. - Tímto otočným ovladačem můžete nastavit fázový posun oscilátoru %1. To znamená, že můžete posunout bod, ve kterém oscilátor začne kmitat. Například pokud máte sinusovou vlnu s fázovým posunem 180 stupňů, vlna půjde nejdříve dolů. Totéž se stane u vlny pravoúhlé. - - - Osc %1 stereo phase-detuning: - Osc %1 rozladění stereo fáze: - - - 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. - Tímto otočným ovladačem můžete nastavit rozladění fáze oscilátoru %1. Rozladění stereo fáze určuje velikost rozdílu mezi fázovým posunem levého a pravého kanálu. To je velmi dobré pro vytvoření širokého stereo zvuku. - - - Use a sine-wave for current oscillator. - Použít sinusovou vlnu pro aktuální oscilátor. - - - Use a triangle-wave for current oscillator. - Použít trojúhelníkovou vlnu pro aktuální oscilátor. - - - Use a saw-wave for current oscillator. - Použít pilovitou vlnu pro aktuální oscilátor. - - - Use a square-wave for current oscillator. - Použít pravoúhlou vlnu pro aktuální oscilátor. - - - Use a moog-like saw-wave for current oscillator. - Použít pilovitou vlnu typu Moog pro tento oscilátor. - - - Use an exponential wave for current oscillator. - Použít exponenciální vlnu pro aktuální oscilátor. - - - Use white-noise for current oscillator. - Použít bílý šum pro aktuální oscilátor. - - - Use a user-defined waveform for current oscillator. - Použít vlastní vlnu pro aktuální oscilátor. - - - - VersionedSaveDialog - - Increment version number - Zvýšit číslo verze - - - Decrement version number - Snížení čísla verze - - - already exists. Do you want to replace it? - již existuje. Přejete si jej přepsat? - - - - VestigeInstrumentView - - Open other VST-plugin - Otevřít jiný 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. - Klepněte sem, pokud chcete otevřít jiný VST plugin. Po klepnutí na toto tlačítko se objeví okno, ve kterém můžete soubor vybrat. - - - Show/hide GUI - Zobrazit/Skrýt grafické rozhraní - - - Click here to show or hide the graphical user interface (GUI) of your VST-plugin. - Klepněte sem pro zobrazení nebo skrytí grafického rozhraní (GUI) pro vaše VST pluginy. - - - Turn off all notes - Vypnout všechny noty - - - Open VST-plugin - Otevřít jiný VST plugin - - - DLL-files (*.dll) - DLL soubory (*.dll) - - - EXE-files (*.exe) - EXE soubory (*.exe) - - - No VST-plugin loaded - VST plugin není nahrán - - - Control VST-plugin from LMMS host - Ovládání VST pluginu hostitelským programem LMMS - - - Click here, if you want to control VST-plugin from host. - Klepněte sem, pokud chcete ovládat VST plugin hostitelským programem. - - - Open VST-plugin preset - Otevřít předvolbu VST pluginu - - - Click here, if you want to open another *.fxp, *.fxb VST-plugin preset. - Klepněte sem, chcete-li otevřít jinou *.fxp, *.fxb předvolbu VST pluginu. - - - Previous (-) - Předchozí (-) - - - Click here, if you want to switch to another VST-plugin preset program. - Klepněte sem, chcete-li přepnout na jiný přednastavený VST program. - - - Save preset - Uložit předvolbu - - - Click here, if you want to save current VST-plugin preset program. - Klepněte sem, chcete-li uložit aktuální předvolbu programu VST pluginu. - - - Next (+) - Další (+) - - - Click here to select presets that are currently loaded in VST. - Klepněte sem, chcete-li vybrat předvolby, které jsou aktuálně nahrány ve VST. - - - Preset - Předvolba - - - by - od - - - - VST plugin control - – ovládání VST pluginu - - - - VisualizationWidget - - click to enable/disable visualization of master-output - klepněte pro zapnutí/vypnutí vizualizace hlavního výstupu - - - Click to enable - Klepněte pro zapnutí - - - - VstEffectControlDialog - - Show/hide - Ukázat/Skrýt - - - Control VST-plugin from LMMS host - Ovládání VST pluginu hostitelským programem LMMS - - - Click here, if you want to control VST-plugin from host. - Klepněte sem, pokud chcete ovládat VST plugin hostitelským programem. - - - Open VST-plugin preset - Otevřít předvolbu VST pluginu - - - Click here, if you want to open another *.fxp, *.fxb VST-plugin preset. - Klepněte sem, chcete-li otevřít jinou *.fxp, *.fxb předvolbu VST pluginu. - - - Previous (-) - Předchozí (-) - - - Click here, if you want to switch to another VST-plugin preset program. - Klepněte sem, chcete-li přepnout na jiný přednastavený VST program. - - - Next (+) - Další (+) - - - Click here to select presets that are currently loaded in VST. - Klepněte sem, chcete-li vybrat předvolbu, která je aktuálně nahraná ve VST. - - - Save preset - Uložit předvolbu - - - Click here, if you want to save current VST-plugin preset program. - Klepněte sem, chcete-li uložit aktuální předvolbu programu VST pluginu. - - - Effect by: - Efekt od: - - - &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /> - &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /> - - - - VstPlugin - - Loading plugin - Načítám plugin - - - Open Preset - Otevřít předvolbu - - - Vst Plugin Preset (*.fxp *.fxb) - Předvolba VST pluginu (*.fxp *.fxb) - - - : default - : výchozí - - - " - " - - - ' - ' - - - Save Preset - Uložit předvolbu - - - .fxp - .fxp - - - .FXP - .FXP - - - .FXB - .FXB - - - .fxb - .fxb - - - Please wait while loading VST plugin... - Počkejte prosím, než se načte VST plugin... - - - The VST plugin %1 could not be loaded. - VST plugin %1 nelze načíst. - - - - WatsynInstrument - - Volume A1 - Hlasitost A1 - - - Volume A2 - Hlasitost A2 - - - Volume B1 - Hlasitost B1 - - - Volume B2 - Hlasitost B2 - - - Panning A1 - Panoráma A1 - - - Panning A2 - Panoráma A2 - - - Panning B1 - Panoráma B1 - - - Panning B2 - Panoráma B2 - - - Freq. multiplier A1 - Násobič frekv. A1 - - - Freq. multiplier A2 - Násobič frekv. A2 - - - Freq. multiplier B1 - Násobič frekv. B1 - - - Freq. multiplier B2 - Násobič frekv. B2 - - - Left detune A1 - Rozladění vlevo A1 - - - Left detune A2 - Rozladění vlevo A2 - - - Left detune B1 - Rozladění vlevo B1 - - - Left detune B2 - Rozladění vlevo B2 - - - Right detune A1 - Rozladění vpravo A1 - - - Right detune A2 - Rozladění vpravo A2 - - - Right detune B1 - Rozladění vpravo B1 - - - Right detune B2 - Rozladění vpravo B2 - - - A-B Mix - Směšovač A-B - - - A-B Mix envelope amount - Množství obálky směšovače A-B - - - A-B Mix envelope attack - Náběh obálky směšovače A-B - - - A-B Mix envelope hold - Množství držení směšovače A-B - - - A-B Mix envelope decay - Útlum obálky směšovače A-B - - - A1-B2 Crosstalk - Přeslech A1-B2 - - - A2-A1 modulation - Modulace A1-B2 - - - B2-B1 modulation - Modulace B2-B1 - - - Selected graph - Zvolený graf - - - - WatsynView - - Select oscillator A1 - Vybrat oscilátor A1 - - - Select oscillator A2 - Vybrat oscilátor A2 - - - Select oscillator B1 - Vybrat oscilátor B1 - - - Select oscillator B2 - Vybrat oscilátor B2 - - - Mix output of A2 to A1 - Přimíchat výstup A1 do A2 - - - Modulate amplitude of A1 with output of A2 - Modulovat amplitudu A1 výstupem A2 - - - Ring-modulate A1 and A2 - Kruhově modulovat A1 a A2 - - - Modulate phase of A1 with output of A2 - Modulovat fázi A1 výstupem A2 - - - Mix output of B2 to B1 - Přimíchat výstup B1 do B2 - - - Modulate amplitude of B1 with output of B2 - Modulovat amplitudu B1 výstupem B2 - - - Ring-modulate B1 and B2 - Kruhově modulovat B1 a B2 - - - Modulate phase of B1 with output of B2 - Modulovat fázi B1 výstupem B2 - - - Draw your own waveform here by dragging your mouse on this graph. - Kreslení vlastní křivky tahem myši na tomto grafu. - - - Load waveform - Načíst vlnu - - - Click to load a waveform from a sample file - Klepněte pro načtení vlny ze souboru samplů - - - Phase left - Fáze vlevo - - - Click to shift phase by -15 degrees - Klepněte pro posun fáze o -15 stupňů - - - Phase right - Fáze vpravo - - - Click to shift phase by +15 degrees - Klepněte pro posun fáze o +15 stupňů - - - Normalize - Normalizovat - - - Click to normalize - Klepněte pro normalizaci - - - Invert - Převrátit - - - Click to invert - Klepněte pro převrácení - - - Smooth - Uhladit - - - Click to smooth - Klepněte pro vyhlazení - - - Sine wave - Sinusová vlna - - - Click for sine wave - Klepněte pro sinusovou vlnu - - - Triangle wave - Trojúhelníková vlna - - - Click for triangle wave - Klepněte pro trojúhelníkovou vlnu - - - Click for saw wave - Klepněte pro pilovitou vlnu - - - Square wave - Pravoúhlá vlna - - - Click for square wave - Klepněte pro pravoúhlou vlnu - - - Volume - Hlasitost - - - Panning - Panoráma - - - Freq. multiplier - Násobič frekv. - - - Left detune - Rozladění vlevo - - - cents - centů - - - Right detune - Rozladění vpravo - - - A-B Mix - Směšovač A-B - - - Mix envelope amount - Množství obálky směšovače - - - Mix envelope attack - Náběh obálky směšovače - - - Mix envelope hold - Držení obálky směšovače - - - Mix envelope decay - Útlum obálky směšovače - - - Crosstalk - Přeslech - - - - ZynAddSubFxInstrument - - Portamento - Portamento - - - Filter Frequency - Frekvence filtru - - - Filter Resonance - Rezonance filtru - - - Bandwidth - Šířka pásma - - - FM Gain - Zesílení FM - - - Resonance Center Frequency - Střední frekvence rezonance - - - Resonance Bandwidth - Šířka pásma rezonance - - - Forward MIDI Control Change Events - Odesílat události MIDI Control Change - - - - ZynAddSubFxView - - Show GUI - Ukázar grafické rozhraní - - - Click here to show or hide the graphical user interface (GUI) of ZynAddSubFX. - Klepněte sem pro zobrazení nebo skrytí grafického uživatelského rozhraní (GUI) ZynAddSubFX. - - - Portamento: - Portamento: - - - PORT - PORT - - - Filter Frequency: - Frekvence filtru: - - - FREQ - FREKV - - - Filter Resonance: - Rezonance filtru: - - - RES - REZ - - - Bandwidth: - Šířka pásma: - - - BW - ŠP - - - FM Gain: - Zesílení FM: - - - FM GAIN - ZISK FM - - - Resonance center frequency: - Střední frekvence rezonance: - - - RES CF - SF REZ - - - Resonance bandwidth: - Šířka pásma rezonance: - - - RES BW - ŠP REZ - - - Forward MIDI Control Changes - Odesílat MIDI Control Change - - - - audioFileProcessor - - Amplify - Zesílení - - - Start of sample - Začátek samplu - - - End of sample - Konec samplu - - - Reverse sample - Přehrávat pozpátku - - - Stutter - Pokračování v přehrávání samplu při změně noty - - - Loopback point - Začátek smyčky - - - Loop mode - Režim smyčky - - - Interpolation mode - Režim interpolace - - - None - Žádný - - - Linear - Lineární - - - Sinc - Sinusový - - - Sample not found: %1 - Vzorek nenalezen: %1 - - - - bitInvader - - Samplelength - Délka samplu - - - - bitInvaderView - - Sample Length - Délka samplu - - - Sine wave - Sinusová vlna - - - Triangle wave - Trojúhelníková vlna - - - Saw wave - Pilovitá vlna - - - Square wave - Pravoúhlá vlna - - - White noise wave - Bílý šum - - - User defined wave - Vlna definovaná uživatelem - - - Smooth - Uhladit - - - Click here to smooth waveform. - Klepněte sem pro vyhlazení vlny. - - - Interpolation - Interpolovat - - - Normalize - Normalizovat - - - Draw your own waveform here by dragging your mouse on this graph. - Kreslení vlastní křivky tahem myši na tomto grafu. - - - Click for a sine-wave. - Klepněte sem pro sinusovou vlnu. - - - Click here for a triangle-wave. - Klepněte sem pro trojúhelníkovou vlnu. - - - Click here for a saw-wave. - Klepněte sem pro pilovitou vlnu. - - - Click here for a square-wave. - Klepněte sem pro pravoúhlou vlnu. - - - Click here for white-noise. - Klepněte sem pro bílý šum. - - - Click here for a user-defined shape. - Klepněte sem pro uživatelem definovaný tvar. - - - - dynProcControlDialog - - INPUT - VSTUP - - - Input gain: - Zesílení vstupu: - - - OUTPUT - VÝSTUP - - - Output gain: - Zesílení výstupu: - - - ATTACK - NÁBĚH - - - Peak attack time: - Délka náběhu špičky: - - - RELEASE - UVOLNĚNÍ - - - Peak release time: - Délka uvolnění špičky: - - - Reset waveform - Obnovení vlny - - - Click here to reset the wavegraph back to default - Klepněte sem pro obnovení křivky zpět do výchozího stavu - - - Smooth waveform - Vyhlazení vlny - - - Click here to apply smoothing to wavegraph - Klepněte sem pro vyhlazení křivky - - - Increase wavegraph amplitude by 1dB - Zvýšení amplitudy křivky o 1 dB - - - Click here to increase wavegraph amplitude by 1dB - Klepněte sem pro zvýšení amplitudy křivky o 1 dB - - - Decrease wavegraph amplitude by 1dB - Snížení amplitudy křivky o 1 dB - - - Click here to decrease wavegraph amplitude by 1dB - Klepněte sem pro snížení amplitudy křivky o 1 dB - - - Stereomode Maximum - Režim maximálního sterea - - - Process based on the maximum of both stereo channels - Zpracování vycházející z maxima obou stereo kanálů - - - Stereomode Average - Režim průměru sterea - - - Process based on the average of both stereo channels - Zpracování vycházející z průměru obou stereo kanálů - - - Stereomode Unlinked - Režim nepropojeného sterea - - - Process each stereo channel independently - Zpracování každého stereo kanálu zvlášť - - - - dynProcControls - - Input gain - Zesílení vstupu - - - Output gain - Zesílení výstupu - - - Attack time - Doba náběhu - - - Release time - Délka uvolnění - - - Stereo mode - Režim sterea - - - - expressiveView - - Select oscillator W1 - Vybrat oscilátor W1 - - - Select oscillator W2 - Vybrat oscilátor W2 - - - Select oscillator W3 - Vybrat oscilátor W3 - - - Select OUTPUT 1 - Vybrat VÝSTUP 1 - - - Select OUTPUT 2 - Vybrat VÝSTUP 2 - - - Open help window - Otevřít okno nápovědy - - - Sine wave - Sinusová vlna - - - Click for a sine-wave. - Klepněte sem pro sinusovou vlnu. - - - Moog-Saw wave - Pilovitá vlna typu Moog - - - Click for a Moog-Saw-wave. - Klepněte pro pilovitou vlnu typu Moog. - - - Exponential wave - Exponenciální vlna - - - Click for an exponential wave. - Klepněte pro exponenciální vlnu. - - - Saw wave - Pilovitá vlna - - - Click here for a saw-wave. - Klepněte sem pro pilovitou vlnu. - - - User defined wave - Vlna definovaná uživatelem - - - Click here for a user-defined shape. - Klepněte sem pro uživatelem definovaný tvar. - - - Triangle wave - Trojúhelníková vlna - - - Click here for a triangle-wave. - Klepněte sem pro trojúhelníkovou vlnu. - - - Square wave - Pravoúhlá vlna - - - Click here for a square-wave. - Klepněte sem pro pravoúhlou vlnu. - - - White noise wave - Bílý šum - - - Click here for white-noise. - Klepněte sem pro bílý šum. - - - WaveInterpolate - Interpolace vlnění - - - ExpressionValid - Platnost výrazu - - - General purpose 1: - Celkový účel 1: - - - General purpose 2: - Celkový účel 2: - - - General purpose 3: - Celkový účel 3: - - - O1 panning: - O1 vyvážení: - - - O2 panning: - O2 vyvážení: - - - Release transition: - Přechod mezi uvolněním: - - - Smoothness - Hladkost - - - - fxLineLcdSpinBox - - Assign to: - Přiřadit k: - - - New FX Channel - Nový efektový kanál - - - - graphModel - - Graph - Graf - - - - kickerInstrument - - Start frequency - Počáteční frekvence - - - End frequency - Konečná frekvence - - - Gain - Zisk - - - Length - Délka - - - Distortion Start - Začátek zkreslení - - - Distortion End - Konec zkreslení - - - Envelope Slope - Sklon frekvence - - - Noise - Šum - - - Click - Klik - - - Frequency Slope - Sklon frekvence - - - Start from note - Začít od noty - - - End to note - Skončit na notě - - - - kickerInstrumentView - - Start frequency: - Počáteční frekvence: - - - End frequency: - Konečná frekvence: - - - Gain: - Zisk: - - - Frequency Slope: - Sklon frekvence: - - - Envelope Length: - Délka obálky: - - - Envelope Slope: - Sklon obálky: - - - Click: - Klik: - - - Noise: - Šum: - - - Distortion Start: - Začátek zkreslení: - - - Distortion End: - Konec zkreslení: - - - - ladspaBrowserView - - Available Effects - Dostupné efekty - - - Unavailable Effects - Nedostupné efekty - - - Instruments - Nástroje - - - Analysis Tools - Analyzační nástroje - - - Don't know - Neznámé - - - 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. - -Unavailable Effects are those that were identified as effects, but either didn't have the same number of input and output channels or weren't real time capable. - -Instruments are plugins for which only output channels were identified. - -Analysis Tools are plugins for which only input channels were identified. - -Don't Knows are plugins for which no input or output channels were identified. - -Double clicking any of the plugins will bring up information on the ports. - Toto dialogové okno zobrazuje informace o všech LADSPA pluginech, které bylo LMMS schopno nalézt. Zásuvné moduly jsou rozděleny do pěti kategorií podle portů a názvů. - - -K dispozici jsou ty efekty, které mohou být použity v LMMS. Aby v LMMS bylo možné užít efektu, musí se o efekt skutečně jednat, to znamená, že musí mít oba vstupní a výstupní kanály. LMMS identifikuje vstupní kanál jako audio podle "n" v názvu. Výstupní kanály jsou identifikovány pole označení písmeny "out". Kromě toho efekt musí mít stejný počet vstupů a výstupů a být real time kompatibilní. - -Nedostupné efekty jsou ty, které byly identifikovány jako efekty, ale buď nemají stejný počet vstupních a výstupních kanálů nebo nejsou real time kompatibilní. - -Nástroje jsou pluginy u kterých byly identifikovány pouze výstupní kanály. - -Analyzační nástroje jsou pluginy u kterých byly identifikovány pouze vstupní kanály. - -Neznámé jsou pluginy, pro které nebyly identifikovány žádné vstupní nebo výstupní kanály. - -Poklepáním na kterýkoliv modul se zobrazí informace o portech. - - - Type: - Typ: - - - - ladspaDescription - - Plugins - Pluginy - - - Description - Popis - - - - ladspaPortDialog - - Ports - Porty - - - Name - Název - - - Rate - Druh - - - Direction - Směr - - - Type - Typ - - - Min < Default < Max - Min < Výchozí < Max - - - Logarithmic - Logaritmický - - - SR Dependent - SR závislý - - - Audio - Zvuk - - - Control - Ovládání - - - Input - Vstup - - - Output - Výstup - - - Toggled - Zapnuto - - - Integer - Celočíselný - - - Float - S plovoucí čárkou - - - Yes - Ano - - - - lb302Synth - - VCF Cutoff Frequency - VCF frekvence vypnutí - - - VCF Resonance - VCF rezonance - - - VCF Envelope Mod - VCF modulace obálky - - - VCF Envelope Decay - VCF útlum obálky - - - Distortion - Zkreslení - - - Waveform - Vlna - - - Slide Decay - Útlum sklouznutí - - - Slide - Sklouznutí - - - Accent - Důraz - - - Dead - Dead - - - 24dB/oct Filter - Filtr 24dB/okt - - - - lb302SynthView - - Cutoff Freq: - Frekvence odstřihnutí: - - - Resonance: - Rezonance: - - - Env Mod: - Modulace obálky: - - - Decay: - Útlum: - - - 303-es-que, 24dB/octave, 3 pole filter - 3pólový filtr 303-es-que, 24dB/okt - - - Slide Decay: - Útlum sklouznutí: - - - DIST: - Zkreslení: - - - Saw wave - Pilovitá vlna - - - Click here for a saw-wave. - Klepněte sem pro pilovitou vlnu. - - - Triangle wave - Trojúhelníková vlna - - - Click here for a triangle-wave. - Klepněte sem pro trojúhelníkovou vlnu. - - - Square wave - Pravoúhlá vlna - - - Click here for a square-wave. - Klepněte sem pro pravoúhlou vlnu. - - - Rounded square wave - Oblá pravoúhlá vlna - - - Click here for a square-wave with a rounded end. - Klepněte sem pro pravoúhlou vlnu s oblým zakončením. - - - Moog wave - Vlna typu Moog - - - Click here for a moog-like wave. - Klepněte sem pro vlnu typu Moog. - - - Sine wave - Sinusová vlna - - - Click for a sine-wave. - Klepněte sem pro sinusovou vlnu. - - - White noise wave - Bílý šum - - - Click here for an exponential wave. - Klepněte sem pro exponenciální vlnu. - - - Click here for white-noise. - Klepněte sem pro bílý šum. - - - Bandlimited saw wave - Pásmově omezená pilovitá vlna - - - Click here for bandlimited saw wave. - Klepněte sem pro pásmově omezenou pilovitou vlnu. - - - Bandlimited square wave - Pásmově zúžená pravoúhlá vlna - - - Click here for bandlimited square wave. - Klepněte sem pro pásmově zúženou pravoúhlou vlnu. - - - Bandlimited triangle wave - Pásmově zúžená trojúhelníková vlna - - - Click here for bandlimited triangle wave. - Klepněte sem pro pásmově zúženou trojúhelníkovou vlnu. - - - Bandlimited moog saw wave - Pásmově zúžená pilovitá vlna typu Moog - - - Click here for bandlimited moog saw wave. - Klepněte sem pro úzkopásmovou pilovitou vlnu typu Moog. - - - - malletsInstrument - - Hardness - Tvrdost - - - Position - Pozice - - - Vibrato Gain - Zisk vibráta - - - Vibrato Freq - Frekvence vibráta - - - Stick Mix - Mix paliček - - - Modulator - Modulátor - - - Crossfade - Prolínání (crossfade) - - - LFO Speed - LFO Rychlost - - - LFO Depth - LFO Hloubka - - - ADSR - ADSR - - - Pressure - Tlak - - - Motion - Pohyb - - - Speed - Rychlost - - - Bowed - Smyčcem - - - Spread - Šíře - - - Marimba - Marimba - - - Vibraphone - Vibrafon - - - Agogo - Agogo - - - Wood1 - Dřevo1 - - - Reso - Rezo - - - Wood2 - Dřevo2 - - - Beats - Údery - - - Two Fixed - Dvě pevné - - - Clump - Svazek - - - Tubular Bells - Trubicové zvony - - - Uniform Bar - Obyčejná tyč - - - Tuned Bar - Laděná tyč - - - Glass - Sklo - - - Tibetan Bowl - Tibetská zpívající mísa - - - - malletsInstrumentView - - Instrument - Nástroj - - - Spread - Šíře - - - Spread: - Šíře: - - - Hardness - Tvrdost - - - Hardness: - Tvrdost: - - - Position - Pozice - - - Position: - Pozice: - - - Vib Gain - Vib zisk - - - Vib Gain: - Vib zisk: - - - Vib Freq - Vib frekv - - - Vib Freq: - Vib frekv: - - - Stick Mix - Mix paliček - - - Stick Mix: - Mix paliček: - - - Modulator - Modulátor - - - Modulator: - Modulátor: - - - Crossfade - Prolínání (crossfade) - - - Crossfade: - Prolínání (crossfade): - - - LFO Speed - LFO Rychlost - - - LFO Speed: - LFO Rychlost: - - - LFO Depth - LFO Hloubka - - - LFO Depth: - LFO Hloubka: - - - ADSR - ADSR - - - ADSR: - ADSR: - - - Pressure - Tlak - - - Pressure: - Tlak: - - - Speed - Rychlost - - - Speed: - Rychlost: - - - Missing files - Chybějící soubory - - - Your Stk-installation seems to be incomplete. Please make sure the full Stk-package is installed! - Zdá se, že instalace Stk není kompletní. Ujistěte se prosím, že je nainstalován celý balík Stk! - - - - manageVSTEffectView - - - VST parameter control - - řízení parametrů VST - - - VST Sync - VST synch - - - Click here if you want to synchronize all parameters with VST plugin. - Klepněte sem, chcete-li synchronizovat všechny parametry s VST pluginem. - - - Automated - Automaticky - - - Click here if you want to display automated parameters only. - Klepněte sem, pokud chcete pouze zobrazit parametry automatizace. - - - Close - Zavřít - - - Close VST effect knob-controller window. - Zavřít okno otočných ovladačů VST efektu. - - - - manageVestigeInstrumentView - - - VST plugin control - - ovládání VST pluginu - - - VST Sync - VST synch - - - Click here if you want to synchronize all parameters with VST plugin. - Klepněte sem, chcete-li synchronizovat všechny parametry s VST pluginem. - - - Automated - Automaticky - - - Click here if you want to display automated parameters only. - Klepněte sem, pokud chcete pouze zobrazit parametry automatizace. - - - Close - Zavřít - - - Close VST plugin knob-controller window. - Zavřít okno otočných ovladačů VST pluginu. - - - - opl2instrument - - Patch - Patch - - - Op 1 Attack - Op 1 náběh - - - Op 1 Decay - Op 1 útlum - - - Op 1 Sustain - Op 1 vydržení - - - Op 1 Release - Op 1 uvolnění - - - Op 1 Level - Op 1 úroveň - - - Op 1 Level Scaling - Op 1 škálování úrovně - - - Op 1 Frequency Multiple - Op 1 násobení frekvence - - - Op 1 Feedback - Op 1 zpětná vazba - - - Op 1 Key Scaling Rate - Op 1 rychlost podle výšky klávesy - - - Op 1 Percussive Envelope - Op 1 perkusivní obálka - - - Op 1 Tremolo - Op 1 tremolo - - - Op 1 Vibrato - Op 1 vibrato - - - Op 1 Waveform - Op 1 vlna - - - Op 2 Attack - Op 2 náběh - - - Op 2 Decay - Op 2 útlum - - - Op 2 Sustain - Op 2 vydržení - - - Op 2 Release - Op 2 uvolnění - - - Op 2 Level - Op 2 úroveň - - - Op 2 Level Scaling - Op 2 škálování úrovně - - - Op 2 Frequency Multiple - Op 2 násobení frekvence - - - Op 2 Key Scaling Rate - Op 2 rychlost podle výšky klávesy - - - Op 2 Percussive Envelope - Op 2 perkusivní obálka - - - Op 2 Tremolo - Op 2 tremolo - - - Op 2 Vibrato - Op 2 vibrato - - - Op 2 Waveform - Op 2 tvar vlny - - - FM - FM - - - Vibrato Depth - Hloubka vibráta - - - Tremolo Depth - Hloubka tremola - - - - opl2instrumentView - - Attack - Náběh - - - Decay - Útlum - - - Release - Uvolnění - - - Frequency multiplier - Násobič frekvence - - - - organicInstrument - - Distortion - Zkreslení - - - Volume - Hlasitost - - - - organicInstrumentView - - Distortion: - Zkreslení: - - - Volume: - Hlasitost: - - - Randomise - Nastavit náhodně - - - Osc %1 waveform: - Osc %1 vlna: - - - Osc %1 volume: - Osc %1 hlasitost: - - - Osc %1 panning: - Osc %1 panoráma: - - - cents - centů - - - The distortion knob adds distortion to the output of the instrument. - Otočný ovladač zkreslení přidá zkreslení k výstupu nástroje. - - - The volume knob controls the volume of the output of the instrument. It is cumulative with the instrument window's volume control. - Otočný ovladač hlasitosti ovládá hlasitost výstupu nástroje. Sčítá se s ovládáním hlasitosti okna nástroje. - - - The randomize button randomizes all knobs except the harmonics,main volume and distortion knobs. - Tlačítko Randomize náhodně nastaví všechny ovladače kromě ovladače harmonických, hlavní hlasitosti a zkreslení. - - - Osc %1 stereo detuning - Osc %1 rozladění sterea - - - Osc %1 harmonic: - Osc %1 harmonické: - - - - FreeBoyInstrument - - Sweep time - Trvání sweepu - - - Sweep direction - Směr sweepu - - - Sweep RtShift amount - Úroveň pro změnu frekvence sweepu - - - Wave Pattern Duty - Pracovní cyklus vlnového patternu - - - Channel 1 volume - Hlasitost kanálu 1 - - - Volume sweep direction - Směr hlasitosti sweepu - - - Length of each step in sweep - Délka každého kroku ve sweepu - - - Channel 2 volume - Hlasitost kanálu 2 - - - Channel 3 volume - Hlasitost kanálu 3 - - - Channel 4 volume - Hlasitost kanálu 4 - - - Right Output level - Úroveň pravého výstupu - - - Left Output level - Úroveň levého výstupu - - - Channel 1 to SO2 (Left) - Kanál 1 do SO2 (pravý) - - - Channel 2 to SO2 (Left) - Kanál 2 do SO2 (pravý) - - - Channel 3 to SO2 (Left) - Kanál 3 do SO2 (pravý) - - - Channel 4 to SO2 (Left) - Kanál 4 do SO2 (pravý) - - - Channel 1 to SO1 (Right) - Kanál 1 do SO1 (pravý) - - - Channel 2 to SO1 (Right) - Kanál 2 do SO1 (pravý) - - - Channel 3 to SO1 (Right) - Kanál 3 do SO1 (pravý) - - - Channel 4 to SO1 (Right) - Kanál 4 do SO1 (pravý) - - - Treble - Výšky - - - Bass - Basy + Hardness: + Tvrdost: - Shift Register width - Posun šířky registru + Position + Pozice - - - FreeBoyInstrumentView - Sweep Time: - Trvání sweepu: + Position: + Pozice: - Sweep Time - Trvání sweepu + Modulator + Modulátor - Sweep RtShift amount: - Úroveň pro změnu frekvence sweepu: + Modulator: + Modulátor: - Sweep RtShift amount - Úroveň pro změnu frekvence sweepu + Crossfade + Prolínání (crossfade) - Wave pattern duty: - Pracovní cyklus vlnového patternu: + Crossfade: + Prolínání (crossfade): - Wave Pattern Duty - Pracovní cyklus vlnového patternu + ADSR + ADSR - Square Channel 1 Volume: - Hlasitost pulzního kanálu 1: + ADSR: + ADSR: - Length of each step in sweep: - Délka každého kroku ve sweepu: + Pressure + Tlak - Length of each step in sweep - Délka každého kroku ve sweepu + Pressure: + Tlak: - Wave pattern duty - Pracovní cyklus vlnového patternu + Speed + Rychlost - Square Channel 2 Volume: - Hlasitost pulzního kanálu 2: + Speed: + Rychlost: - Square Channel 2 Volume - Hlasitost pulzního kanálu 2 + Missing files + Chybějící soubory - Wave Channel Volume: - Hlasitost vlnového kanálu: + Your Stk-installation seems to be incomplete. Please make sure the full Stk-package is installed! + Zdá se, že instalace Stk není kompletní. Ujistěte se prosím, že je nainstalován celý balík Stk! - Wave Channel Volume - Hlasitost vlnového kanálu + Vibrato gain + - Noise Channel Volume: - Hlasitost šumového kanálu: + Vibrato gain: + - Noise Channel Volume - Hlasitost šumového kanálu + Vibrato frequency + - SO1 Volume (Right): - Hlasitost SO1 (pravý): + Vibrato frequency: + - SO1 Volume (Right) - Hlasitost SO1 (pravý) + Stick mix + - SO2 Volume (Left): - Hlasitost SO2 (levý): + Stick mix: + - SO2 Volume (Left) - Hlasitost SO2 (levý) + LFO speed + Rychlost LFO - Treble: - Výšky: + LFO speed: + Rychlost LFO: - Treble - Výšky + LFO depth + - Bass: - Basy: + LFO depth: + + + + manageVSTEffectView - Bass - Basy + - VST parameter control + - řízení parametrů VST - Sweep Direction - Směr sweepu + Automated + Automaticky - Volume Sweep Direction - Směr hlasitosti sweepu + Close + Zavřít - Shift Register Width - Posun šířky registru + VST sync + + + + manageVestigeInstrumentView - Channel1 to SO1 (Right) - Kanál 1 do SO1 (pravý) + - VST plugin control + - ovládání VST pluginu - Channel2 to SO1 (Right) - Kanál 2 do SO1 (pravý) + VST Sync + VST synch - Channel3 to SO1 (Right) - Kanál 3 do SO1 (pravý) + Automated + Automaticky - Channel4 to SO1 (Right) - Kanál 4 do SO1 (pravý) + Close + Zavřít + + + organicInstrument - Channel1 to SO2 (Left) - Kanál 1 do SO2 (levý) + Distortion + Zkreslení - Channel2 to SO2 (Left) - Kanál 2 do SO2 (levý) + Volume + Hlasitost + + + organicInstrumentView - Channel3 to SO2 (Left) - Kanál 3 do SO2 (levý) + Distortion: + Zkreslení: - Channel4 to SO2 (Left) - Kanál 4 do SO2 (levý) + Volume: + Hlasitost: - Wave Pattern - Vlnový pattern + Randomise + Nastavit náhodně - The amount of increase or decrease in frequency - Množství zvýšení nebo snížení frekvence + Osc %1 waveform: + Osc %1 vlna: - The rate at which increase or decrease in frequency occurs - Úroveň, při které dojde ke zvýšení nebo snížení frekvence + Osc %1 volume: + Osc %1 hlasitost: - The duty cycle is the ratio of the duration (time) that a signal is ON versus the total period of the signal. - Pracovní cyklus je poměr mezi dobou trvání (časem), kdy je signál zapnut, a celkovou délkou signálu. + Osc %1 panning: + Osc %1 panoráma: - Square Channel 1 Volume - Hlasitost pulzního kanálu 1 + cents + centů - The delay between step change - Zpoždění mezi změnou kroku + Osc %1 stereo detuning + Osc %1 rozladění sterea - Draw the wave here - Nakreslete vlnu zde + Osc %1 harmonic: + Osc %1 harmonické: @@ -9395,10 +4309,6 @@ Poklepáním na kterýkoliv modul se zobrazí informace o portech. pluginBrowser - - no description - bez popisu - Incomplete monophonic imitation tb303 Nekompletní monofonní imitace tb303 @@ -9601,134 +4511,110 @@ Tento čip byl používán v počítačích Commodore 64. Dozvuk - Reverb Roomsize - Velikost dozvukového prostoru + Chorus + Chorus - Reverb Damping - Útlum dozvuku + A soundfont %1 could not be loaded. + Soundfont %1 nelze načíst. - Reverb Width - Délka dozvuku + Reverb room size + - Reverb Level - Úroveň dozvuku + Reverb damping + - Chorus - Chorus + Reverb width + - Chorus Lines - Počet linií chorusu + Reverb level + - Chorus Level - Úroveň chorusu + Chorus voices + - Chorus Speed - Rychlost chorusu + Chorus level + - Chorus Depth - Hloubka chorusu + Chorus speed + - A soundfont %1 could not be loaded. - Soundfont %1 nelze načíst. + Chorus depth + sf2InstrumentView - - Open other SoundFont file - Otevřít jiný SoundFont soubor - - - Click here to open another SF2 file - Klepněte sem pro otevření jiného SF2 souboru - - - Choose the patch - Vybrat patch - - - Gain - Zisk - Apply reverb (if supported) Použít dozvuk (je-li podporován) - This button enables the reverb effect. This is useful for cool effects, but only works on files that support it. - Tímto tlačítkem zapnete efekt dozvuk (reverb). Ten lze použít pro výborné efekty, ale funguje pouze se soubory, které jej podporují. - - - Reverb Roomsize: - Velikost dozvukového prostoru: + Apply chorus (if supported) + Použít chorus (je-li podporován) - Reverb Damping: - Útlum dozvuku: + Open SoundFont file + Otevřít SoundFont soubor - Reverb Width: - Délka dozvuku: + Choose patch + - Reverb Level: - Úroveň dozvuku: + Gain: + - Apply chorus (if supported) - Použít chorus (je-li podporován) + Room size: + - This button enables the chorus effect. This is useful for cool echo effects, but only works on files that support it. - Tímto tlačítkem zapnete efekt chorus. Ten lze použít pro výborné echo efekty, ale funguje pouze se soubory, které jej podporují. + Damping: + - Chorus Lines: - Počet linií chorusu: + Width: + Šířka: - Chorus Level: - Úroveň chorusu: + Level: + - Chorus Speed: - Rychlost chorusu: + Voices: + - Chorus Depth: - Hloubka chorusu: + Speed: + Rychlost: - Open SoundFont file - Otevřít SoundFont soubor + Depth: + Hloubka: - SoundFont2 Files (*.sf2) - Soubory SoundFont2 (*.sf2) + SoundFont Files (*.sf2 *.sf3) + sfxrInstrument - Wave Form - Vlna + Wave + sidInstrument - - Cutoff - Oříznutí - Resonance Rezonance @@ -9749,6 +4635,10 @@ Tento čip byl používán v počítačích Commodore 64. Chip model Model čipu + + Cutoff frequency + Frekvence oříznutí + sidInstrumentView @@ -9764,22 +4654,6 @@ Tento čip byl používán v počítačích Commodore 64. Cutoff frequency: Frekvence oříznutí: - - High-Pass filter - Filtr typu horní propust - - - Band-Pass filter - Filtr typu pásmová propust - - - Low-Pass filter - Filtr typu dolní propust - - - Voice3 Off - Vypnout hlas 3 - MOS6581 SID MOS6581 SID @@ -9792,109 +4666,89 @@ Tento čip byl používán v počítačích Commodore 64. Attack: Náběh: - - Attack rate determines how rapidly the output of Voice %1 rises from zero to peak amplitude. - Rychlost náběhu určuje, jak rychle výstup hlasu %1 stoupne z nuly na špičkovou amplitudu. - Decay: Útlum: - - Decay rate determines how rapidly the output falls from the peak amplitude to the selected Sustain level. - Rychlost útlumu (decay) určuje, jak rychle poklesne výstup ze špičky na zvolenou úroveň vydržení (sustain). - Sustain: Vydržení: - - Output of Voice %1 will remain at the selected Sustain amplitude as long as the note is held. - Výstup hlasu %1 zůstane na zvolené úrovni Vydržení po celou dobu, kdy bude nota držena. - Release: Uvolnění: - - The output of of Voice %1 will fall from Sustain amplitude to zero amplitude at the selected Release rate. - Výstup hlasu %1 poklesne z úrovně vydržení (sustain) na nulovou amplitudu zvolenou rychlostí uvolnění (release). - Pulse Width: Délka pulzu: - - 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. - Rozlišení šířky pulsu umožňuje plynulé vyhlazení šířky, aby nebylo rozeznatelné krokování. Pulzní vlna na oscilátoru %1 musí být zvolena tak, aby měla slyšitelný efekt. - Coarse: Ladění: - The Coarse detuning allows to detune Voice %1 one octave up or down. - Hrubé rozladění umožní rozladit hlas %1 až o jednu oktávu nahoru nebo dolů. + Noise + Šum - Pulse Wave - Pulzní vlna + Sync + Synch - Triangle Wave - Trojúhelníková vlna + Filtered + Filtrování - SawTooth - Pilovitá vlna + Test + Test - Noise - Šum + High-pass filter + - Sync - Synch + Band-pass filter + - Sync synchronizes the fundamental frequency of Oscillator %1 with the fundamental frequency of Oscillator %2 producing "Hard Sync" effects. - Synchronizace synchronizuje základní frekvenci oscilátoru %1 se základní frekvencí oscilátoru %2 pomocí efektu pevné (Hard Sync) synchronizace. + Low-pass filter + - Ring-Mod - Kruhová modulace + Voice 3 off + - Ring-mod replaces the Triangle Waveform output of Oscillator %1 with a "Ring Modulated" combination of Oscillators %1 and %2. - Kruhová modulace nahradí výstup trojúhelníkové vlny na oscilátoru %1 "kruhově modulovanou" kombinací oscilátorů %1 a %2. + Pulse wave + - Filtered - Filtrování + Triangle wave + Trojúhelníková vlna - 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. - Pokud je zapnuto filtrování, hlas %1 bude zpracován filtrem. Pokud je filtrování vypnuto, hlas %1 se objeví přímo na výstupu a filtr na něj nebude mít žádný efekt. + Saw wave + Pilovitá vlna - Test - Test + Ring modulation + - Test, when set, resets and locks Oscillator %1 at zero until Test is turned off. - Test, když je nastaven, resetuje a zablokuje oscilátor %1 na nule, dokud se test nevypne. + Pulse width: + stereoEnhancerControlDialog - - WIDE - ŠÍŘKA - Width: Šířka: + + WIDTH + + stereoEnhancerControls @@ -9948,8 +4802,8 @@ Tento čip byl používán v počítačích Commodore 64. Načítám plugin - Please wait while loading VST-plugin... - Počkejte prosím, než se načte VST plugin... + Please wait while loading the VST plugin... + @@ -9971,172 +4825,60 @@ Tento čip byl používán v počítačích Commodore 64. Umístění snímače %1 - Pan %1 - Pan %1 + Impulse %1 + Impulz %1 - Detune %1 - Rozladění %1 + String %1 panning + - Fuzziness %1 - Roztřepení %1 + String %1 detune + - Length %1 - Délka %1 + String %1 fuzziness + - Impulse %1 - Impulz %1 + String %1 length + - Octave %1 - Oktáva %1 + String %1 + vibedView - - Volume: - Hlasitost: - - - The 'V' knob sets the volume of the selected string. - Otočný ovladač "V" nastavuje hlasitost vybrané struny. - String stiffness: Tvrdost struny: - - 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. - Otočný ovladač "S" nastavuje tvrdost vybrané struny. Tvrdost struny ovlivňuje délku doznívání struny. Čím nižší hodnota, tím déle bude struna znít. - Pick position: Místo drnknutí: - - 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. - Otočný ovladač "P" nastavuje místo, ve kterém se na vybrané struně drnkne. Nižší nastavení znamená drnknutí blíže ke kobylce. - Pickup position: Pozice snímače: - - 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. - Otočný ovladač "PU" nastavuje umístění snímače pro vybranou strunu. Nižší nastavení znamená snímač blíže u kobylky. - - - Pan: - Panoráma: - - - The Pan knob determines the location of the selected string in the stereo field. - Otočný ovladač "Pan" určuje pozici vybrané struny ve stereo prostoru. - - - Detune: - Rozladění: - - - 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. - Otočný ovladač "Detune" mění ladění vybrané struny. Hodnoty nižší než nula způsobí plochý zvuk, hodnoty vyšší než nula způsobí ostřejší zvuk. - - - Fuzziness: - Roztřepení: - - - 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'. - Otočný ovladač "Slap" přidává ke zvuku vybrané struny jemné roztřepení, které je nejvíce patrné při náběhu tónu, ačkoliv lze také použít pro vytvoření více "kovového" zvuku struny. - - - Length: - Délka: - - - 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. - Otočný ovladač "Lenght" nastavuje délku vybrané struny. Delší struny budou znít déle a jasněji, nicméně však spotřebují více CPU cyklů. - - - Impulse or initial state - Impulz nebo výchozí stav - - - 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. - Přepínač "IMP" určuje, zda vlna v grafu bude považována za impulz přenášený na strunu drnknutím nebo za počáteční stav struny. - Octave Oktáva - - 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. - Volič "Octave" se používá k výběru harmonického tónu, na kterém bude struna znít. Například "-2" znamená, že struna bude znít dvě oktávy pod základním tónem, "F" znamená, že zní základní tón a "6" znamená, že struna bude znít šest oktáv nad základním tónem. - Impulse Editor Editor impulzu - - 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. - -The 'S' button will smooth the waveform. - -The 'N' button will normalize the waveform. - Editor vlny poskytuje kontrolu nad výchozím stavem nebo impulzem, který je použit k rozvibrování struny. Tlačítka na pravé straně grafu inicializují vlnový průběh vybraného typu. Tlačítko "?" načte vlnu ze souboru – bude načteno pouze prvních 128 vzorků. - -Vlna může být také nakreslena v grafu. - -Tlačítko "S" vyhladí vlnu. - -Tlačítko "N" normalizuje vlnu. - - - 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. - -The 'V' knob controls the volume. The 'S' knob controls the string's stiffness. The 'P' knob controls the pick position. The 'PU' knob controls the pickup position. - -'Pan' and 'Detune' hopefully don't need explanation. The 'Slap' knob adds a bit of fuzz to the sound of the string. - -The 'Length' knob controls the length of the string. - -The LED in the lower right corner of the waveform editor determines whether the string is active in the current instrument. - Vibed simuluje až devět nezávisle vibrujících strun. Volič "String" vám umožní vybrat, kterou strunu budete upravovat. Pomocí voliče "Imp" vyberete, jestli graf představuje impulz nebo výchozí stav struny. Voličem "Octave" vyberete, na kterém harmonickém tónu má struna vibrovat. - -Graf vám umožňuje řízení výchozího stavu nebo impulzu použitého pro nastavení pohybu struny. - -Otočný ovladač "V" řídí hlasitost. Ovladač "S" nastavuje tvrdost struny. Ovladač "P" určuje pozici drnknutí. Ovladač "PU" nastavuje pozici snímače. - -"Pan" a "Detune" snad není třeba vysvětlovat. Ovladač "Slap" přidá ke zvuku struny jemné rozostření. - -Ovladač "Lenght" určuje délku struny. - -LED v pravém dolním rohu editoru vlny určuje, jestli bude struna v aktuálním nástroji aktivní. - Enable waveform Zapnout vlnu - - Click here to enable/disable waveform. - Klepněte sem pro zapnutí/vypnutí vlny. - String Struna - - 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. - Volič strun se užívá k výběru struny, které bude upravována. Nástroj Vibed může obsahovat maximálně devět nezávisle vibrujících strun. LED v pravém dolním rohu editoru tvaru vlny indikuje, zda je vybraná struna aktivní. - Sine wave Sinusová vlna @@ -10154,52 +4896,48 @@ LED v pravém dolním rohu editoru vlny určuje, jestli bude struna v aktuální Pravoúhlá vlna - White noise wave - Bílý šum - - - User defined wave - Vlna definovaná uživatelem + String volume: + - Smooth - Vyhladit + String panning: + - Click here to smooth waveform. - Klepněte sem pro vyhlazení vlny. + String detune: + - Normalize - Normalizovat + String fuzziness: + - Click here to normalize waveform. - Klepněte sem pro normalizaci vlny. + String length: + - Use a sine-wave for current oscillator. - Použít sinusovou vlnu pro aktuální oscilátor. + Impulse + - Use a triangle-wave for current oscillator. - Použít trojúhelníkovou vlnu pro aktuální oscilátor. + Enable/disable string + - Use a saw-wave for current oscillator. - Klepněte sem pro pilovitou vlnu. + White noise + Bílý šum - Use a square-wave for current oscillator. - Klepněte sem pro pravoúhlou vlnu. + User-defined wave + - Use white-noise for current oscillator. - Použít bílý šum pro aktuální oscilátor. + Smooth waveform + - Use a user-defined waveform for current oscillator. - Použít vlastní vlnu pro aktuální oscilátor. + Normalize waveform + @@ -10268,44 +5006,28 @@ LED v pravém dolním rohu editoru vlny určuje, jestli bude struna v aktuální Zesílení výstupu: - Reset waveform - Obnovit vlnu - - - Click here to reset the wavegraph back to default - Klepněte sem pro obnovení zobrazení křivky zpět do výchozího stavu - - - Smooth waveform - Vyhlazená vlna - - - Click here to apply smoothing to wavegraph - Klepněte sem pro vyhlazení křivky - - - Increase graph amplitude by 1dB - Zvýši amplitudu grafu o 1dB + Clip input + Vstup klipu - Click here to increase wavegraph amplitude by 1dB - Klepněte sem pro zvýšení amplitudy křivky o 1 dB + Reset wavegraph + - Decrease graph amplitude by 1dB - Snížit amplitudu grafu o 1dB + Smooth wavegraph + - Click here to decrease wavegraph amplitude by 1dB - Klepněte sem pro snížení amplitudy křivky o 1 dB + Increase wavegraph amplitude by 1 dB + - Clip input - Vstup klipu + Decrease wavegraph amplitude by 1 dB + - Clip input signal to 0dB - Vstupní úroveň klipu 0dB + Clip input signal to 0 dB + diff --git a/data/locale/de.ts b/data/locale/de.ts index ce57aa6c4a6..d3957edf30e 100644 --- a/data/locale/de.ts +++ b/data/locale/de.ts @@ -3978,7 +3978,11 @@ Bitte besuchen Sie http://lmms.sf.net/wiki für Dokumentationen über LMMS. E&xport Tracks... - E&xport Tracks... + Tracks e&xportieren... + + + Export &MIDI... + &MIDI exportieren... Online Help diff --git a/data/locale/en.ts b/data/locale/en.ts index 2bc3ade2318..1c9f2ee8f1e 100644 --- a/data/locale/en.ts +++ b/data/locale/en.ts @@ -1,114 +1,37 @@ - - 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:#33cc33;">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 - - - AmplifierControlDialog - VOL - Volume: - PAN - Panning: - LEFT - Left gain: - RIGHT - Right gain: @@ -116,8726 +39,2764 @@ If you're interested in translating LMMS in another language or want to imp AmplifierControls - Volume - Panning - Left gain - Right gain - - AudioAlsaSetupWidget - - - DEVICE - - - - - CHANNELS - - - AudioFileProcessorView - Open sample - Reverse sample - Disable loop - - Enable loop - Continue sample playback across notes - Amplify: - Start point: - End point: - Loopback point: + + Enable ping-pong loop + + AudioFileProcessorWaveView - Sample length: - AudioJack + BassBoosterControlDialog - - JACK client restarted + FREQ - - 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. + Frequency: - - JACK server down + GAIN - - 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. + Gain: - - CLIENT-NAME + RATIO - - CHANNELS + Ratio: - AudioOss - - - DEVICE - - + BassBoosterControls - - CHANNELS + Frequency - - - AudioPortAudio::setupWidget - - BACKEND + Gain - - DEVICE + Ratio - AudioPulseAudio + BitcrushControlDialog - - DEVICE + IN - - CHANNELS + OUT - - - AudioSdl::setupWidget - - DEVICE + GAIN - - - AudioSndio - - DEVICE + Input gain: - - CHANNELS + NOISE - - - AudioSoundIo::setupWidget - - BACKEND + Input noise: - - DEVICE + Output gain: - - - AutomatableModel - - &Reset (%1%2) + CLIP - - &Copy value (%1%2) + Output clip: - - &Paste value (%1%2) + Rate enabled - - &Paste value + Enable sample-rate crushing - - Edit song-global automation + Depth enabled - - Remove song-global automation + Enable bit-depth crushing - - Remove all linked controls + FREQ - - Connected to %1 + Sample rate: - - Connected to controller + STEREO - - Edit connection... + Stereo difference: - - Remove connection + QUANT - - Connect to controller... + Levels: - AutomationEditor + BitcrushControls - - Please open an automation pattern with the context menu of a control! + Input gain - - Values copied + Input noise - - All selected values were copied to the clipboard. + Output gain + + + + Output clip - - - AutomationEditorWindow - - Play/pause current pattern (Space) + Sample rate - - Stop playing of current pattern (Space) + Stereo difference - - Edit actions + Levels - - Draw mode (Shift+D) + Rate enabled - - Erase mode (Shift+E) + Depth enabled + + + CarlaInstrumentView - - Flip vertically + Show GUI + + + CrossoverEQControlDialog - - Flip horizontally + Band 1/2 crossover: - - Interpolation controls + Band 2/3 crossover: - - Discrete progression + Band 3/4 crossover: - - Linear progression + Band 1 gain - - Cubic Hermite progression + Band 1 gain: - - Tension value for spline + Band 2 gain - - Tension: + Band 2 gain: - - Cut selected values (%1+X) + Band 3 gain - - Copy selected values (%1+C) + Band 3 gain: - - Paste values from clipboard (%1+V) + Band 4 gain - - Zoom controls + Band 4 gain: - - Horizontal zooming + Band 1 mute - - Vertical zooming + Mute band 1 - - Quantization controls + Band 2 mute - - Quantization + Mute band 2 - - - Automation Editor - no pattern + Band 3 mute - - - Automation Editor - %1 + Mute band 3 - - Model is already connected to this pattern. + Band 4 mute - - - AutomationPattern - - Drag a control while pressing <%1> + Mute band 4 - AutomationPatternView + DelayControls - - Open in Automation editor + Delay samples - - Clear + Feedback - - Reset name + LFO frequency - - Change name + LFO amount - - Set/clear record + Output gain + + + DelayControlsDialog - - Flip Vertically (Visible) + DELAY - - Flip Horizontally (Visible) + Delay time - - %1 Connections + FDBK - - Disconnect "%1" + Feedback amount - - Model is already connected to this pattern. + RATE - - - AutomationTrack - - Automation track + LFO frequency - - - BBEditor - - Beat+Bassline Editor + AMNT - - Play/pause current beat/bassline (Space) + LFO amount - - Stop playback of current beat/bassline (Space) + Out gain - - Beat selector + Gain + + + DualFilterControlDialog - - Track and step actions + FREQ - - Add beat/bassline + Cutoff frequency - - Add sample-track + RESO - - Add automation-track + Resonance - - Remove steps + GAIN - - Add steps + Gain - - Clone Steps + MIX - - - BBTCOView - - Open in Beat+Bassline-Editor + Mix - - Reset name + Filter 1 enabled - - Change name + Filter 2 enabled - - Change color + Enable/disable filter 1 - - Reset color to default + Enable/disable filter 2 - BBTrack + DualFilterControls - - Beat/Bassline %1 + Filter 1 enabled - - Clone of %1 + Filter 1 type - - - BassBoosterControlDialog - - FREQ + Cutoff frequency 1 - - Frequency: + Q/Resonance 1 - - GAIN + Gain 1 - - Gain: + Mix - - RATIO + Filter 2 enabled - - Ratio: + Filter 2 type - - - BassBoosterControls - - Frequency + Cutoff frequency 2 - - Gain + Q/Resonance 2 - - Ratio + Gain 2 - - - BitcrushControlDialog - - IN + Low-pass - - OUT + Hi-pass - - - GAIN + Band-pass csg - - Input gain: + Band-pass czpg - - NOISE + Notch - - Input noise: + All-pass - - Output gain: + Moog - - CLIP + 2x Low-pass - - Output clip: + RC Low-pass 12 dB/oct - - Rate enabled + RC Band-pass 12 dB/oct - - Enable sample-rate crushing + RC High-pass 12 dB/oct - - Depth enabled + RC Low-pass 24 dB/oct - - Enable bit-depth crushing + RC Band-pass 24 dB/oct - - FREQ + RC High-pass 24 dB/oct - - Sample rate: + Vocal Formant - - STEREO + 2x Moog - - Stereo difference: + SV Low-pass - - QUANT + SV Band-pass - - Levels: + SV High-pass - - - BitcrushControls - - Input gain + SV Notch - - Input noise + Fast Formant - - Output gain + Tripole + + + EqControls - - Output clip + Input gain - - Sample rate + Output gain - - Stereo difference + Low-shelf gain - - Levels + Peak 1 gain - - Rate enabled + Peak 2 gain - - Depth enabled + Peak 3 gain - - - CarlaInstrumentView - - Show GUI + Peak 4 gain - - - Controller - - Controller %1 + High-shelf gain - - - ControllerConnectionDialog - - Connection Settings + HP res - - MIDI CONTROLLER + Low-shelf res - - Input channel + Peak 1 BW - - CHANNEL + Peak 2 BW - - Input controller + Peak 3 BW - - CONTROLLER + Peak 4 BW - - - Auto Detect + High-shelf res - - MIDI-devices to receive MIDI-events from + LP res - - USER CONTROLLER + HP freq - - MAPPING FUNCTION + Low-shelf freq - - OK + Peak 1 freq - - Cancel + Peak 2 freq - - LMMS + Peak 3 freq - - Cycle Detected. + Peak 4 freq - - - ControllerRackView - - Controller Rack + High-shelf freq - - Add + LP freq - - Confirm Delete + HP active - - Confirm delete? There are existing connection(s) associated with this controller. There is no way to undo. + Low-shelf active - - - ControllerView - - Controls + Peak 1 active - - Rename controller + Peak 2 active - - Enter the new name for this controller + Peak 3 active - - LFO + Peak 4 active - - &Remove this controller + High-shelf active - - Re&name this controller + LP active - - - CrossoverEQControlDialog - - Band 1/2 crossover: + LP 12 - - Band 2/3 crossover: + LP 24 - - Band 3/4 crossover: + LP 48 - - Band 1 gain + HP 12 - - Band 1 gain: + HP 24 - - Band 2 gain + HP 48 - - Band 2 gain: + Low-pass type - - Band 3 gain + High-pass type - - Band 3 gain: + Analyse IN - - Band 4 gain + Analyse OUT + + + EqControlsDialog - - Band 4 gain: + HP - - Band 1 mute + Low-shelf - - Mute band 1 + Peak 1 - - Band 2 mute + Peak 2 - - Mute band 2 + Peak 3 - - Band 3 mute + Peak 4 - - Mute band 3 + High-shelf - - Band 4 mute + LP - - Mute band 4 + Input gain - - - DelayControls - - Delay samples + Gain - - Feedback + Output gain - - LFO frequency + Bandwidth: - - LFO amount + Octave - - Output gain + Resonance : - - - DelayControlsDialog - - DELAY + Frequency: - - Delay time + LP group - - FDBK + HP group + + + EqHandle - - Feedback amount + Reso: - - RATE + BW: - - LFO frequency + Freq: + + + FlangerControls - - AMNT + Delay samples - - LFO amount + LFO frequency - - Out gain + Seconds - - Gain + Regen - - - DualFilterControlDialog - - - FREQ + Noise - - - Cutoff frequency + Invert + + + FlangerControlsDialog - - - RESO + DELAY - - - Resonance + Delay time: - - - GAIN + RATE - - - Gain + Period: - - MIX + AMNT - - Mix + Amount: - - Filter 1 enabled + FDBK - - Filter 2 enabled + Feedback amount: - - Enable/disable filter 1 + NOISE - - Enable/disable filter 2 + White noise amount: + + + + Invert - DualFilterControls + FreeBoyInstrument - - Filter 1 enabled + Sweep time - - Filter 1 type + Sweep direction - - Cutoff frequency 1 + Sweep rate shift amount - - Q/Resonance 1 + Wave pattern duty cycle - - Gain 1 + Channel 1 volume - - Mix + Volume sweep direction - - Filter 2 enabled + Length of each step in sweep - - Filter 2 type + Channel 2 volume - - Cutoff frequency 2 + Channel 3 volume - - Q/Resonance 2 + Channel 4 volume - - Gain 2 + Shift Register width - - - Low-pass + Right output level - - - Hi-pass + Left output level - - - Band-pass csg + Channel 1 to SO2 (Left) - - - Band-pass czpg + Channel 2 to SO2 (Left) - - - Notch + Channel 3 to SO2 (Left) - - - All-pass + Channel 4 to SO2 (Left) - - - Moog + Channel 1 to SO1 (Right) - - - 2x Low-pass + Channel 2 to SO1 (Right) - - - RC Low-pass 12 dB/oct + Channel 3 to SO1 (Right) - - - RC Band-pass 12 dB/oct + Channel 4 to SO1 (Right) - - - RC High-pass 12 dB/oct + Treble - - - RC Low-pass 24 dB/oct + Bass + + + FreeBoyInstrumentView - - - RC Band-pass 24 dB/oct + Sweep time: - - - RC High-pass 24 dB/oct + Sweep time - - - Vocal Formant + Sweep rate shift amount: - - - 2x Moog + Sweep rate shift amount - - - SV Low-pass + Wave pattern duty cycle: - - - SV Band-pass + Wave pattern duty cycle - - - SV High-pass + Square channel 1 volume: - - - SV Notch + Square channel 1 volume - - - Fast Formant + Length of each step in sweep: - - - Tripole + Length of each step in sweep - - - Editor - - Transport controls + Square channel 2 volume: - - Play (Space) + Square channel 2 volume - - Stop (Space) + Wave pattern channel volume: - - Record + Wave pattern channel volume - - Record while playing + Noise channel volume: - - Toggle Step Recording + Noise channel volume - - - Effect - - Effect enabled - - - - - Wet/Dry mix - - - - - Gate - - - - - Decay - - - - - EffectChain - - - Effects enabled - - - - - EffectRackView - - - EFFECTS CHAIN - - - - - Add effect - - - - - EffectSelectDialog - - - Add effect - - - - - - Name - - - - - Type - - - - - Description - - - - - Author - - - - - EffectView - - - On/Off - - - - - W/D - - - - - Wet Level: - - - - - DECAY - - - - - Time: - - - - - GATE - - - - - Gate: - - - - - Controls - - - - - Move &up - - - - - Move &down - - - - - &Remove this plugin - - - - - EnvelopeAndLfoParameters - - - Env pre-delay - - - - - Env attack - - - - - Env hold - - - - - Env decay - - - - - Env sustain - - - - - Env release - - - - - Env mod amount - - - - - LFO pre-delay - - - - - LFO attack - - - - - LFO frequency - - - - - LFO mod amount - - - - - LFO wave shape - - - - - LFO frequency x 100 - - - - - Modulate env amount - - - - - EnvelopeAndLfoView - - - - DEL - - - - - - Pre-delay: - - - - - - ATT - - - - - - Attack: - - - - - HOLD - - - - - Hold: - - - - - DEC - - - - - Decay: - - - - - SUST - - - - - Sustain: - - - - - REL - - - - - Release: - - - - - - AMT - - - - - - Modulation amount: - - - - - SPD - - - - - Frequency: - - - - - FREQ x 100 - - - - - Multiply LFO frequency by 100 - - - - - MODULATE ENV AMOUNT - - - - - Control envelope amount by this LFO - - - - - ms/LFO: - - - - - Hint - - - - - Drag and drop a sample into this window. - - - - - 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 - - - - - EqControlsDialog - - - HP - - - - - Low-shelf - - - - - Peak 1 - - - - - Peak 2 - - - - - Peak 3 - - - - - Peak 4 - - - - - High-shelf - - - - - LP - - - - - Input gain - - - - - - - Gain - - - - - Output gain - - - - - Bandwidth: - - - - - Octave - - - - - Resonance : - - - - - Frequency: - - - - - LP group - - - - - HP group - - - - - EqHandle - - - Reso: - - - - - BW: - - - - - - Freq: - - - - - ExportProjectDialog - - - Export project - - - - - Export as loop (remove extra bar) - - - - - Export between loop markers - - - - - Render Looped Section: - - - - - time(s) - - - - - File format settings - - - - - File format: - - - - - Sampling rate: - - - - - 44100 Hz - - - - - 48000 Hz - - - - - 88200 Hz - - - - - 96000 Hz - - - - - 192000 Hz - - - - - Bit depth: - - - - - 16 Bit integer - - - - - 24 Bit integer - - - - - 32 Bit float - - - - - Stereo mode: - - - - - Mono - - - - - Stereo - - - - - Joint stereo - - - - - Compression level: - - - - - 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 worst (fastest) - - - - - Sinc medium (recommended) - - - - - Sinc best (slowest) - - - - - Oversampling: - - - - - 1x (None) - - - - - 2x - - - - - 4x - - - - - 8x - - - - - Start - - - - - Cancel - - - - - 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! - - - - - Export project to %1 - - - - - ( Fastest - biggest ) - - - - - ( Slowest - smallest ) - - - - - Error - - - - - Error while determining file-encoder device. Please try to choose a different output format. - - - - - Rendering: %1% - - - - - Fader - - - - Set value - - - - - - Please enter a new value between %1 and %2: - - - - - FileBrowser - - - Browser - - - - - Search - - - - - Refresh list - - - - - FileBrowserTreeWidget - - - Send to active instrument-track - - - - - 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 - - - - - FlangerControlsDialog - - - DELAY - - - - - Delay time: - - - - - RATE - - - - - Period: - - - - - AMNT - - - - - Amount: - - - - - FDBK - - - - - Feedback amount: - - - - - NOISE - - - - - White noise amount: - - - - - Invert - - - - - FreeBoyInstrument - - - Sweep time - - - - - Sweep direction - - - - - Sweep rate shift amount - - - - - - Wave pattern duty cycle - - - - - 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 - - - - - FreeBoyInstrumentView - - - Sweep time: - - - - - Sweep time - - - - - Sweep rate shift amount: - - - - - Sweep rate shift amount - - - - - - Wave pattern duty cycle: - - - - - - Wave pattern duty cycle - - - - - Square channel 1 volume: - - - - - Square channel 1 volume - - - - - - - Length of each step in sweep: - - - - - - - Length of each step in sweep - - - - - Square channel 2 volume: - - - - - Square channel 2 volume - - - - - Wave pattern channel volume: - - - - - Wave pattern 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 - - - - - Channel 1 to SO1 (Right) - - - - - Channel 2 to SO1 (Right) - - - - - Channel 3 to SO1 (Right) - - - - - Channel 4 to SO1 (Right) - - - - - Channel 1 to SO2 (Left) - - - - - Channel 2 to SO2 (Left) - - - - - Channel 3 to SO2 (Left) - - - - - Channel 4 to SO2 (Left) - - - - - Wave pattern graph - - - - - FxLine - - - Channel send amount - - - - - Move &left - - - - - Move &right - - - - - Rename &channel - - - - - R&emove channel - - - - - Remove &unused channels - - - - - FxMixer - - - Master - - - - - - - FX %1 - - - - - Volume - - - - - Mute - - - - - Solo - - - - - FxMixerView - - - FX-Mixer - - - - - FX Fader %1 - - - - - Mute - - - - - Mute this FX channel - - - - - Solo - - - - - Solo FX channel - - - - - FxRoute - - - - Amount to send from channel %1 to channel %2 - - - - - GigInstrument - - - Bank - - - - - Patch - - - - - Gain - - - - - GigInstrumentView - - - - Open GIG file - - - - - Choose patch - - - - - Gain: - - - - - GIG Files (*.gig) - - - - - 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 - - - - - InstrumentFunctionArpeggio - - - Arpeggio - - - - - Arpeggio type - - - - - Arpeggio range - - - - - Cycle steps - - - - - Skip rate - - - - - Miss rate - - - - - Arpeggio time - - - - - Arpeggio gate - - - - - Arpeggio direction - - - - - Arpeggio mode - - - - - Up - - - - - Down - - - - - Up and down - - - - - Down and up - - - - - Random - - - - - Free - - - - - Sort - - - - - Sync - - - - - InstrumentFunctionArpeggioView - - - ARPEGGIO - - - - - RANGE - - - - - Arpeggio range: - - - - - octave(s) - - - - - CYCLE - - - - - Cycle notes: - - - - - note(s) - - - - - SKIP - - - - - Skip rate: - - - - - - - % - - - - - MISS - - - - - Miss rate: - - - - - TIME - - - - - Arpeggio time: - - - - - ms - - - - - GATE - - - - - Arpeggio gate: - - - - - 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 - - - - - Phrygian - - - - - Lydian - - - - - Mixolydian - - - - - Aeolian - - - - - Locrian - - - - - Minor - - - - - Chromatic - - - - - Half-Whole Diminished - - - - - 5 - - - - - Phrygian dominant - - - - - Persian - - - - - Chords - - - - - Chord type - - - - - Chord range - - - - - InstrumentFunctionNoteStackingView - - - STACKING - - - - - Chord: - - - - - RANGE - - - - - Chord range: - - - - - octave(s) - - - - - InstrumentMidiIOView - - - ENABLE MIDI INPUT - - - - - - CHANNEL - - - - - - VELOCITY - - - - - ENABLE MIDI OUTPUT - - - - - PROGRAM - - - - - 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 - - - - - InstrumentMiscView - - - MASTER PITCH - - - - - Enables the use of master pitch - - - - - InstrumentSoundShaping - - - VOLUME - - - - - Volume - - - - - CUTOFF - - - - - - Cutoff frequency - - - - - RESO - - - - - Resonance - - - - - Envelopes/LFOs - - - - - Filter type - - - - - Q/Resonance - - - - - Low-pass - - - - - Hi-pass - - - - - Band-pass csg - - - - - Band-pass czpg - - - - - Notch - - - - - All-pass - - - - - Moog - - - - - 2x Low-pass - - - - - RC Low-pass 12 dB/oct - - - - - RC Band-pass 12 dB/oct - - - - - RC High-pass 12 dB/oct - - - - - RC Low-pass 24 dB/oct - - - - - RC Band-pass 24 dB/oct - - - - - RC High-pass 24 dB/oct - - - - - Vocal Formant - - - - - 2x Moog - - - - - SV Low-pass - - - - - SV Band-pass - - - - - SV High-pass - - - - - SV Notch - - - - - Fast Formant - - - - - Tripole - - - - - InstrumentSoundShapingView - - - TARGET - - - - - FILTER - - - - - FREQ - - - - - Cutoff frequency: - - - - - Hz - - - - - Q/RESO - - - - - Q/Resonance: - - - - - Envelopes, LFOs and filters are not supported by the current instrument. - - - - - InstrumentTrack - - - 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 - - - - - InstrumentTrackWindow - - - GENERAL SETTINGS - - - - - 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 - - - - - SAVE - - - - - Envelope, filter & LFO - - - - - Chord stacking & arpeggio - - - - - Effects - - - - - MIDI - - - - - Miscellaneous - - - - - Save preset - - - - - XML preset file (*.xpf) - - - - - Plugin - - - - - Knob - - - Set linear - - - - - Set logarithmic - - - - - - Set value - - - - - 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 - - - - - LadspaControlDialog - - - Link Channels - - - - - Channel - - - - - LadspaControlView - - - Link channels - - - - - Value: - - - - - LadspaEffect - - - Unknown LADSPA plugin %1 requested. - - - - - LcdSpinBox - - - Set value - - - - - Please enter a new value between %1 and %2: - - - - - LeftRightNav - - - - - Previous - - - - - - - Next - - - - - Previous (%1) - - - - - Next (%1) - - - - - LfoController - - - LFO Controller - - - - - Base value - - - - - Oscillator speed - - - - - Oscillator amount - - - - - Oscillator phase - - - - - Oscillator waveform - - - - - Frequency Multiplier - - - - - LfoControllerDialog - - - LFO - - - - - BASE - - - - - Base: - - - - - FREQ - - - - - LFO frequency: - - - - - AMNT - - - - - Modulation amount: - - - - - PHS - - - - - Phase offset: - - - - - degrees - - - - - Sine wave - - - - - Triangle wave - - - - - Saw wave - - - - - Square wave - - - - - Moog saw wave - - - - - Exponential wave - - - - - White noise - - - - - User-defined shape. -Double click to pick a file. - - - - - Mutliply modulation frequency by 1 - - - - - Mutliply modulation frequency by 100 - - - - - Divide modulation frequency by 100 - - - - - LmmsCore - - - Generating wavetables - - - - - Initializing data structures - - - - - Opening audio and midi devices - - - - - Launching mixer threads - - - - - 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 - - - - - About - - - - - Create new project - - - - - Create new project from template - - - - - Open existing project - - - - - Recently opened projects - - - - - Save current project - - - - - Export current project - - - - - Metronome - - - - - - Song Editor - - - - - - Beat+Bassline Editor - - - - - - Piano Roll - - - - - - Automation Editor - - - - - - FX Mixer - - - - - Show/hide controller rack - - - - - Show/hide project notes - - - - - 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. - - - - - Controller Rack - - - - - Project Notes - - - - - Volume as dBFS - - - - - Smooth scroll - - - - - Enable note labels in piano roll - - - - - MIDI File (*.mid) - - - - - - untitled - - - - - - Select file for project-export... - - - - - Select directory for writing exported tracks... - - - - - Save project - - - - - 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 - - - - - MeterDialog - - - - Meter Numerator - - - - - Meter numerator - - - - - - Meter Denominator - - - - - Meter denominator - - - - - TIME SIG - - - - - MeterModel - - - Numerator - - - - - Denominator - - - - - MidiController - - - MIDI Controller - - - - - unnamed_midi_controller - - - - - MidiImport - - - - Setup incomplete - - - - - You have not 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 - - - - - 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) - - - - - MidiPort - - - Input channel - - - - - Output channel - - - - - Input controller - - - - - Output controller - - - - - Fixed input velocity - - - - - Fixed output velocity - - - - - Fixed output note - - - - - Output MIDI program - - - - - Base velocity - - - - - Receive MIDI-events - - - - - Send MIDI-events - - - - - MidiSetupWidget - - - DEVICE - - - - - 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 - - - - - Osc 2+3 modulation - - - - - Selected view - - - - - Osc 1 - Vol env 1 - - - - - Osc 1 - Vol env 2 - - - - - Osc 1 - Vol LFO 1 - - - - - Osc 1 - Vol LFO 2 - - - - - Osc 2 - Vol env 1 - - - - - Osc 2 - Vol env 2 - - - - - Osc 2 - Vol LFO 1 - - - - - Osc 2 - Vol LFO 2 - - - - - Osc 3 - Vol env 1 - - - - - Osc 3 - Vol env 2 - - - - - Osc 3 - Vol LFO 1 - - - - - Osc 3 - Vol LFO 2 - - - - - Osc 1 - Phs env 1 - - - - - Osc 1 - Phs env 2 - - - - - Osc 1 - Phs LFO 1 - - - - - Osc 1 - Phs LFO 2 - - - - - Osc 2 - Phs env 1 - - - - - Osc 2 - Phs env 2 - - - - - Osc 2 - Phs LFO 1 - - - - - Osc 2 - Phs LFO 2 - - - - - Osc 3 - Phs env 1 - - - - - Osc 3 - Phs env 2 - - - - - Osc 3 - Phs LFO 1 - - - - - Osc 3 - Phs LFO 2 - - - - - Osc 1 - Pit env 1 - - - - - Osc 1 - Pit env 2 - - - - - Osc 1 - Pit LFO 1 - - - - - Osc 1 - Pit LFO 2 - - - - - Osc 2 - Pit env 1 - - - - - Osc 2 - Pit env 2 - - - - - Osc 2 - Pit LFO 1 - - - - - Osc 2 - Pit LFO 2 - - - - - Osc 3 - Pit env 1 - - - - - Osc 3 - Pit env 2 - - - - - Osc 3 - Pit LFO 1 - - - - - Osc 3 - Pit LFO 2 - - - - - Osc 1 - PW env 1 - - - - - Osc 1 - PW env 2 - - - - - Osc 1 - PW LFO 1 - - - - - Osc 1 - PW LFO 2 - - - - - Osc 3 - Sub env 1 - - - - - Osc 3 - Sub env 2 - - - - - Osc 3 - Sub LFO 1 - - - - - Osc 3 - Sub LFO 2 - - - - - - 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 - - - - - MonstroView - - - Operators view - - - - - Matrix view - - - - - - - Volume - - - - - - - Panning - - - - - - - Coarse detune - - - - - - - semitones - - - - - - Fine tune left - - - - - - - - cents - - - - - - Fine tune 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 osc 2 with osc 3 - - - - - Modulate amplitude of osc 3 by osc 2 - - - - - Modulate frequency of osc 3 by osc 2 - - - - - Modulate phase of osc 3 by osc 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Modulation amount - - - - - MultitapEchoControlDialog - - - Length - - - - - Step length: - - - - - Dry - - - - - Dry gain: - - - - - Stages - - - - - Low-pass stages: - - - - - Swap inputs - - - - - Swap left and right input channels for reflections - - - - - 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 - - - - - 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 - - - - - OpulenzInstrument - - - Patch - - - - - Op 1 attack - - - - - Op 1 decay - - - - - Op 1 sustain - - - - - Op 1 release - - - - - Op 1 level - - - - - Op 1 level scaling - - - - - Op 1 frequency multiplier - - - - - Op 1 feedback - - - - - Op 1 key scaling rate + SO1 volume (Right): - - Op 1 percussive envelope + SO1 volume (Right) - - Op 1 tremolo + SO2 volume (Left): - - Op 1 vibrato + SO2 volume (Left) - - Op 1 waveform + Treble: - - Op 2 attack + Treble - - Op 2 decay + Bass: - - Op 2 sustain + Bass - - Op 2 release + Sweep direction - - Op 2 level + Volume sweep direction - - Op 2 level scaling + Shift register width - - Op 2 frequency multiplier + Channel 1 to SO1 (Right) - - Op 2 key scaling rate + Channel 2 to SO1 (Right) - - Op 2 percussive envelope + Channel 3 to SO1 (Right) - - Op 2 tremolo + Channel 4 to SO1 (Right) - - Op 2 vibrato + Channel 1 to SO2 (Left) - - Op 2 waveform + Channel 2 to SO2 (Left) - - FM + Channel 3 to SO2 (Left) - - Vibrato depth + Channel 4 to SO2 (Left) - - Tremolo depth + Wave pattern graph - OpulenzInstrumentView - - - - Attack - - + GigInstrument - - - Decay + Bank - - - Release + Patch - - - Frequency multiplier + Gain - OscillatorObject - - - 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 - - + GigInstrumentView - - Osc %1 phase-offset + Open GIG file - - Osc %1 stereo phase-detuning + Choose patch - - Osc %1 wave shape + Gain: - - Modulation type %1 + GIG Files (*.gig) - PatchesDialog - - - Qsynth: Channel Preset - - - - - Bank selector - - - - - Bank - - - - - Program selector - - - - - Patch - - - - - Name - - - - - OK - - + InstrumentTrack - - Cancel + Default preset - PatmanView - - - Open patch - - - - - Loop - - - - - Loop mode - - - - - Tune - - - - - Tune mode - - - - - No file selected - - + LadspaControlDialog - - Open patch file + Link Channels - - Patch-Files (*.pat) + Channel - PatternView - - - Open in piano-roll - - - - - Set as ghost in piano-roll - - - - - Clear all notes - - - - - Reset name - - - - - Change name - - - - - Add steps - - - - - Remove steps - - + LadspaEffect - - Clone Steps + Unknown LADSPA plugin %1 requested. - PeakController - - - Peak Controller - - + MidiImport - - Peak Controller Bug + Setup incomplete - - 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. + You have not 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. - - - PeakControllerDialog - - PEAK + 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. - - LFO Controller + Track - PeakControllerEffectControlDialog - - - BASE - - - - - Base: - - + MonstroInstrument - - AMNT + Osc 1 volume - - Modulation amount: + Osc 1 panning - - MULT + Osc 1 coarse detune - - Amount multiplicator: + Osc 1 fine detune left - - ATCK + Osc 1 fine detune right - - Attack: + Osc 1 stereo phase offset - - DCAY + Osc 1 pulse width - - Release: + Osc 1 sync send on rise - - TRSH + Osc 1 sync send on fall - - Treshold: + Osc 2 volume - - Mute output + Osc 2 panning - - Absolute value + Osc 2 coarse detune - - - PeakControllerEffectControls - - Base value + Osc 2 fine detune left - - Modulation amount + Osc 2 fine detune right - - Attack + Osc 2 stereo phase offset - - Release + Osc 2 waveform - - Treshold + Osc 2 sync hard - - Mute output + Osc 2 sync reverse - - Absolute value + Osc 3 volume - - Amount multiplicator + Osc 3 panning - - - PianoRoll - - Note Velocity + Osc 3 coarse detune - - Note Panning + Osc 3 Stereo phase offset - - Mark/unmark current semitone + Osc 3 sub-oscillator mix - - Mark/unmark all corresponding octave semitones + Osc 3 waveform 1 - - Mark current scale + Osc 3 waveform 2 - - Mark current chord + Osc 3 sync hard - - Unmark all + Osc 3 Sync reverse - - Select all notes on this key + LFO 1 waveform - - Note lock + LFO 1 attack - - Last note + LFO 1 rate - - No scale + LFO 1 phase - - No chord + LFO 2 waveform - - Velocity: %1% + LFO 2 attack - - Panning: %1% left + LFO 2 rate - - Panning: %1% right + LFO 2 phase - - Panning: center + Env 1 pre-delay - - Please open a pattern by double-clicking on it! + Env 1 attack - - - Please enter a new value between %1 and %2: + Env 1 hold - - - PianoRollWindow - - Play/pause current pattern (Space) + Env 1 decay - - Record notes from MIDI-device/channel-piano + Env 1 sustain - - Record notes from MIDI-device/channel-piano while playing song or BB track + Env 1 release - - Record notes from MIDI-device/channel-piano, one step at the time + Env 1 slope - - Stop playing of current pattern (Space) + Env 2 pre-delay - - Edit actions + Env 2 attack - - Draw mode (Shift+D) + Env 2 hold - - Erase mode (Shift+E) + Env 2 decay - - Select mode (Shift+S) + Env 2 sustain - - Pitch Bend mode (Shift+T) + Env 2 release - - Quantize + Env 2 slope - - Copy paste controls + Osc 2+3 modulation - - Cut (%1+X) + Selected view - - Copy (%1+C) + Osc 1 - Vol env 1 - - Paste (%1+V) + Osc 1 - Vol env 2 - - Timeline controls + Osc 1 - Vol LFO 1 - - Zoom and note controls + Osc 1 - Vol LFO 2 - - Horizontal zooming + Osc 2 - Vol env 1 - - Quantization + Osc 2 - Vol env 2 - - Note length + Osc 2 - Vol LFO 1 - - Scale + Osc 2 - Vol LFO 2 - - Chord + Osc 3 - Vol env 1 - - Clear ghost notes + Osc 3 - Vol env 2 - - - Piano-Roll - %1 + Osc 3 - Vol LFO 1 - - - Piano-Roll - no pattern + Osc 3 - Vol LFO 2 - - - PianoView - - Base note + Osc 1 - Phs env 1 - - - Plugin - - Plugin not found + Osc 1 - Phs env 2 - - The plugin "%1" wasn't found or could not be loaded! -Reason: "%2" + Osc 1 - Phs LFO 1 - - Error while loading plugin + Osc 1 - Phs LFO 2 - - Failed to load plugin "%1"! + Osc 2 - Phs env 1 - - - PluginBrowser - - Instrument Plugins + Osc 2 - Phs env 2 - - Instrument browser + Osc 2 - Phs LFO 1 - - Drag an instrument into either the Song-Editor, the Beat+Bassline Editor or into an existing instrument track. + Osc 2 - Phs LFO 2 - - - PluginFactory - - Plugin not found. + Osc 3 - Phs env 1 - - LMMS plugin %1 does not have a plugin descriptor named %2! + Osc 3 - Phs env 2 - - - ProjectNotes - - Project Notes + Osc 3 - Phs LFO 1 - - Enter project notes here + Osc 3 - Phs LFO 2 - - Edit Actions + Osc 1 - Pit env 1 - - &Undo + Osc 1 - Pit env 2 - - %1+Z + Osc 1 - Pit LFO 1 - - &Redo + Osc 1 - Pit LFO 2 - - %1+Y + Osc 2 - Pit env 1 - - &Copy + Osc 2 - Pit env 2 - - %1+C + Osc 2 - Pit LFO 1 - - Cu&t + Osc 2 - Pit LFO 2 - - %1+X + Osc 3 - Pit env 1 - - &Paste + Osc 3 - Pit env 2 - - %1+V + Osc 3 - Pit LFO 1 - - Format Actions + Osc 3 - Pit LFO 2 - - &Bold + Osc 1 - PW env 1 - - %1+B + Osc 1 - PW env 2 - - &Italic + Osc 1 - PW LFO 1 - - %1+I + Osc 1 - PW LFO 2 - - &Underline + Osc 3 - Sub env 1 - - %1+U + Osc 3 - Sub env 2 - - &Left + Osc 3 - Sub LFO 1 - - %1+L + Osc 3 - Sub LFO 2 - - C&enter + Sine wave - - %1+E + Bandlimited Triangle wave - - &Right + Bandlimited Saw wave - - %1+R + Bandlimited Ramp wave - - &Justify + Bandlimited Square wave - - %1+J + Bandlimited Moog saw wave - - &Color... + Soft square wave - - - ProjectRenderer - - WAV (*.wav) + Absolute sine wave - - FLAC (*.flac) + Exponential wave - - OGG (*.ogg) + White noise - - MP3 (*.mp3) + Digital Triangle wave - - - QWidget - - - - Name: + Digital Saw wave - - - Maker: + Digital Ramp wave - - - Copyright: + Digital Square wave - - - Requires Real Time: + Digital Moog saw wave - - - - - - - Yes + Triangle wave - - - - - - - No + Saw wave - - - Real Time Capable: + Ramp wave - - - In Place Broken: + Square wave - - - Channels In: + Moog saw wave - - - Channels Out: + Abs. sine wave - - File: %1 + Random - - File: + Random smooth - RenameDialog + MonstroView - - Rename... + Operators view - - - ReverbSCControlDialog - - Input + Matrix view - - Input gain: + Volume - - Size + Panning - - Size: + Coarse detune - - Color + semitones - - Color: + Fine tune left - - Output + cents - - Output gain: + Fine tune right - - - ReverbSCControls - - Input gain + Stereo phase offset - - Size + deg - - Color + Pulse width - - Output gain + Send sync on pulse rise - - - SampleBuffer - - Fail to open file + Send sync on pulse fall - - Audio files are limited to %1 MB in size and %2 minutes of playing time + Hard sync oscillator 2 - - Open audio file + Reverse sync oscillator 2 - - All Audio-Files (*.wav *.ogg *.ds *.flac *.spx *.voc *.aif *.aiff *.au *.raw) + Sub-osc mix - - Wave-Files (*.wav) + Hard sync oscillator 3 - - OGG-Files (*.ogg) + Reverse sync oscillator 3 - - DrumSynth-Files (*.ds) + Attack - - FLAC-Files (*.flac) + Rate - - SPEEX-Files (*.spx) + Phase - - VOC-Files (*.voc) + Pre-delay - - AIFF-Files (*.aif *.aiff) + Hold - - AU-Files (*.au) + Decay - - RAW-Files (*.raw) + Sustain - - - SampleTCOView - - Double-click to open sample + Release - - Delete (middle mousebutton) + Slope - - Cut + Mix osc 2 with osc 3 - - Copy + Modulate amplitude of osc 3 by osc 2 - - Paste + Modulate frequency of osc 3 by osc 2 - - Mute/unmute (<%1> + middle click) + Modulate phase of osc 3 by osc 2 - - - SampleTrack - - Volume + Modulation amount + + + MultitapEchoControlDialog - - Panning + Length - - - Sample track + Step length: - - - SampleTrackView - - Track volume + Dry - - Channel volume: + Dry gain: - - VOL + Stages - - Panning + Low-pass stages: - - Panning: + Swap inputs - - PAN + Swap left and right input channels for reflections - SetupDialog + NesInstrument - - Setup LMMS + Channel 1 coarse detune - - - General settings + Channel 1 volume - - BUFFER SIZE + Channel 1 envelope length - - - Reset to default value + Channel 1 duty cycle - - MISC + Channel 1 sweep amount - - Use built-in NaN handler + Channel 1 sweep rate - - PLUGIN EMBEDDING + Channel 2 Coarse detune - - No embedding + Channel 2 Volume - - Embed using Qt API + Channel 2 envelope length - - Embed using native Win32 API + Channel 2 duty cycle - - Embed using XEmbed protocol + Channel 2 sweep amount - - LANGUAGE + Channel 2 sweep rate - - - Paths + Channel 3 coarse detune - - Directories + Channel 3 volume - - - Performance settings + Channel 4 volume - - Auto save + Channel 4 envelope length - - Enable auto-save + Channel 4 noise frequency - - Allow auto-save while playing + Channel 4 noise frequency sweep - - UI effects vs. performance + Master volume - - Smooth scroll in Song Editor + Vibrato + + + NesInstrumentView - - Show playback cursor in AudioFileProcessor + Volume - - - Audio settings + Coarse detune - - AUDIO INTERFACE + Envelope length - - - MIDI settings + Enable channel 1 - - MIDI INTERFACE + Enable envelope 1 - - OK + Enable envelope 1 loop - - Cancel + Enable sweep 1 - - Restart LMMS + Sweep amount - - Please note that most changes won't take effect until you restart LMMS! + Sweep rate - - Frames: %1 -Latency: %2 ms + 12.5% Duty cycle - - Choose LMMS working directory + 25% Duty cycle - - Choose your GIG directory + 50% Duty cycle - - Choose your SF2 directory + 75% Duty cycle - - Choose your VST-plugin directory + Enable channel 2 - - Choose artwork-theme directory + Enable envelope 2 - - Choose LADSPA plugin directory + Enable envelope 2 loop - - Choose STK rawwave directory + Enable sweep 2 - - Choose default SoundFont + Enable channel 3 - - Choose background artwork + Noise Frequency - - minutes + Frequency sweep - - minute + Enable channel 4 - - Disabled + Enable envelope 4 - - Auto-save interval: %1 + Enable envelope 4 loop - - - Song - - Tempo + Quantize noise frequency when using note frequency - - Master volume + Use note frequency for noise - - Master pitch + Noise mode - - LMMS Error report + Master volume - - The following errors occured while loading: + Vibrato - SongEditor + OpulenzInstrument - - Could not open file + Patch - - 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. + Op 1 attack - - Could not write file + Op 1 decay - - 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. + Op 1 sustain - - Error in file + Op 1 release - - The file %1 seems to contain errors and therefore can't be loaded. + Op 1 level - - Version difference + Op 1 level scaling - - This %1 was created with LMMS %2. + Op 1 frequency multiplier - - template + Op 1 feedback - - project + Op 1 key scaling rate - - Tempo + Op 1 percussive envelope - - TEMPO + Op 1 tremolo - - Tempo in BPM + Op 1 vibrato - - High quality mode + Op 1 waveform - - - - Master volume + Op 2 attack - - - - Master pitch + Op 2 decay - - Value: %1% + Op 2 sustain - - Value: %1 semitones + Op 2 release - - - SongEditorWindow - - Song-Editor + Op 2 level - - Play song (Space) + Op 2 level scaling - - Record samples from Audio-device + Op 2 frequency multiplier - - Record samples from Audio-device while playing song or BB track + Op 2 key scaling rate - - Stop song (Space) + Op 2 percussive envelope - - Track actions + Op 2 tremolo - - Add beat/bassline + Op 2 vibrato - - Add sample-track + Op 2 waveform - - Add automation-track + FM - - Edit actions + Vibrato depth - - Draw mode + Tremolo depth + + + OpulenzInstrumentView - - Edit mode (select and move) + Attack - - Timeline controls + Decay - - Zoom controls + Release - - Horizontal zooming + Frequency multiplier - SpectrumAnalyzerControlDialog + OscillatorObject - - Linear spectrum + Osc %1 waveform - - Linear Y axis + Osc %1 harmonic - - - SpectrumAnalyzerControls - - Linear spectrum + Osc %1 volume - - Linear Y axis + Osc %1 panning - - Channel mode + Osc %1 fine detuning left - - - StepRecorderWidget - - Hint + Osc %1 coarse detuning - - Move recording curser using <Left/Right> arrows + Osc %1 fine detuning right - - - SubWindow - - Close + Osc %1 phase-offset - - Maximize + Osc %1 stereo phase-detuning - - Restore + Osc %1 wave shape - - - TabWidget - - - Settings for %1 + Modulation type %1 - TempoSyncKnob + PatchesDialog - - - Tempo Sync + Qsynth: Channel Preset - - No Sync + Bank selector - - Eight beats + Bank - - Whole note + Program selector - - Half note + Patch - - Quarter note + Name - - 8th note + OK - - 16th note + Cancel + + + PatmanView - - 32nd note + Open patch - - Custom... + Loop - - Custom + Loop mode - - Synced to Eight Beats + Tune - - Synced to Whole Note + Tune mode - - Synced to Half Note + No file selected - - Synced to Quarter Note + Open patch file - - Synced to 8th Note + Patch-Files (*.pat) + + + PeakControllerEffectControlDialog - - Synced to 16th Note + BASE - - Synced to 32nd Note + Base: - - - TimeDisplayWidget - - Time units + AMNT - - MIN + Modulation amount: - - SEC + MULT - - MSEC + Amount multiplicator: - - BAR + ATCK - - BEAT + Attack: - - TICK + DCAY - - - TimeLineWidget - - Auto scrolling + Release: - - Loop points + TRSH - - After stopping go back to begin + Treshold: - - After stopping go back to position at which playing was started + Mute output - - After stopping keep position + Absolute value + + + PeakControllerEffectControls - - - Hint + Base value - - Press <%1> to disable magnetic loop points. + Modulation amount - - Hold <Shift> to move the begin loop point; Press <%1> to disable magnetic loop points. + Attack - - - Track - - Mute + Release - - Solo + Treshold - - - TrackContainer - - Couldn't import file + Mute output - - Couldn't find a filter for importing file %1. -You should convert this file into a format supported by LMMS using another software. + Absolute value - - Couldn't open file + Amount multiplicator + + + QWidget - - 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! + Name: - - Loading project... + Maker: - - - Cancel + Copyright: - - - Please wait... + Requires Real Time: - - Loading cancelled + Yes - - Project loading was cancelled. + No - - Loading Track %1 (%2/Total %3) + Real Time Capable: - - Importing MIDI-file... + In Place Broken: - - - TrackContentObject - - Mute + Channels In: - - - TrackContentObjectView - - Current position + Channels Out: - - Current length + File: %1 - - - %1:%2 (%3:%4 to %5:%6) + File: + + + ReverbSCControlDialog - - Press <%1> and drag to make a copy. + Input - - Press <%1> for free resizing. + Input gain: - - Hint + Size - - Delete (middle mousebutton) + Size: - - Cut + Color - - Copy + Color: - - Paste + Output - - Mute/unmute (<%1> + middle click) + Output gain: - TrackOperationsWidget + ReverbSCControls + + Input gain + + - - Press <%1> while clicking on move-grip to begin a new drag'n'drop action. + Size - - Actions + Color - - - Mute + Output gain + + + SpectrumAnalyzerControlDialog - - - Solo + Linear spectrum - - Clone this track + Linear Y axis + + + SpectrumAnalyzerControls - - Remove this track + Linear spectrum - - Clear this track + Linear Y axis - - FX %1: %2 + Channel mode + + + TrackContainer - - Assign to new FX Channel + Cancel - - Turn all recording on + Please wait... - - Turn all recording off + Importing MIDI-file... TripleOscillatorView - Modulate phase of oscillator 1 by oscillator 2 - Modulate amplitude of oscillator 1 by oscillator 2 - Mix output of oscillators 1 & 2 - Synchronize oscillator 1 with oscillator 2 - Modulate frequency of oscillator 1 by oscillator 2 - Modulate phase of oscillator 2 by oscillator 3 - Modulate amplitude of oscillator 2 by oscillator 3 - Mix output of oscillators 2 & 3 - Synchronize oscillator 2 with oscillator 3 - Modulate frequency of oscillator 2 by oscillator 3 - Osc %1 volume: - Osc %1 panning: - Osc %1 coarse detuning: - semitones - Osc %1 fine detuning left: - - cents - Osc %1 fine detuning right: - Osc %1 phase-offset: - - degrees - Osc %1 stereo phase-detuning: - Sine wave - Triangle wave - Saw wave - Square wave - Moog-like saw wave - Exponential wave - White noise - User-defined wave - - VersionedSaveDialog - - - Increment version number - - - - - Decrement version number - - - - - already exists. Do you want to replace it? - - - VestigeInstrumentView - - Open VST plugin - Control VST plugin from LMMS host - Open VST plugin preset - Previous (-) - Save preset - Next (+) - Show/hide GUI - Turn off all notes - DLL-files (*.dll) - EXE-files (*.exe) - No VST plugin loaded - Preset - by - - VST plugin control - - VisualizationWidget - - - Oscilloscope - - - - - Click to enable - - - VstEffectControlDialog - Show/hide - Control VST plugin from LMMS host - Open VST plugin preset - Previous (-) - Next (+) - Save preset - - Effect by: - &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /> @@ -8843,69 +2804,54 @@ Please make sure you have read-permission to the file and the directory containi VstPlugin - - The VST plugin %1 could not be loaded. - Open Preset - - Vst Plugin Preset (*.fxp *.fxb) - : default - " - ' - Save Preset - .fxp - .FXP - .FXB - .fxb - Loading plugin - Please wait while loading VST plugin... @@ -8913,147 +2859,118 @@ Please make sure you have read-permission to the file and the directory containi 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 @@ -9061,224 +2978,154 @@ Please make sure you have read-permission to the file and the directory containi WatsynView - - - - 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 by output of A2 - Ring modulate A1 and A2 - Modulate phase of A1 by output of A2 - Mix output of B2 to B1 - Modulate amplitude of B1 by output of B2 - Ring modulate B1 and B2 - Modulate phase of B1 by output of B2 - - - - Draw your own waveform here by dragging your mouse on this graph. - Load waveform - Load a waveform from a sample file - Phase left - Shift phase by -15 degrees - Phase right - Shift phase by +15 degrees - - Normalize - - Invert - - Smooth - - Sine wave - - - Triangle wave - Saw wave - - Square wave @@ -9286,52 +3133,42 @@ Please make sure you have read-permission to the file and the directory containi Xpressive - Selected graph - A1 - A2 - A3 - W1 smoothing - W2 smoothing - W3 smoothing - Panning 1 - Panning 2 - Rel trans @@ -9339,130 +3176,98 @@ Please make sure you have read-permission to the file and the directory containi XpressiveView - Draw your own waveform here by dragging your mouse on this graph. - Select oscillator W1 - Select oscillator W2 - Select oscillator W3 - Select output O1 - Select output O2 - Open help window - - Sine wave - - Moog-saw wave - - Exponential wave - - Saw wave - - User-defined wave - - Triangle wave - - Square wave - - White noise - WaveInterpolate - ExpressionValid - General purpose 1: - General purpose 2: - General purpose 3: - O1 panning: - O2 panning: - Release transition: - Smoothness @@ -9470,42 +3275,34 @@ Please make sure you have read-permission to the file and the directory containi ZynAddSubFxInstrument - Portamento - Filter frequency - Filter resonance - Bandwidth - FM gain - Resonance center frequency - Resonance bandwidth - Forward MIDI control change events @@ -9513,82 +3310,66 @@ Please make sure you have read-permission to the file and the directory containi ZynAddSubFxView - 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 @@ -9596,62 +3377,50 @@ Please make sure you have read-permission to the file and the directory containi audioFileProcessor - Amplify - Start of sample - End of sample - Loopback point - Reverse sample - Loop mode - Stutter - Interpolation mode - None - Linear - Sinc - Sample not found: %1 @@ -9659,7 +3428,6 @@ Please make sure you have read-permission to the file and the directory containi bitInvader - Sample length @@ -9667,64 +3435,46 @@ Please make sure you have read-permission to the file and the directory containi bitInvaderView - Sample length - Draw your own waveform here by dragging your mouse on this graph. - - Sine wave - - Triangle wave - - Saw wave - - Square wave - - White noise - - User-defined wave - - Smooth waveform - Interpolation - Normalize @@ -9732,96 +3482,74 @@ Please make sure you have read-permission to the file and the directory containi dynProcControlDialog - INPUT - Input gain: - OUTPUT - Output gain: - ATTACK - Peak attack time: - RELEASE - Peak release time: - - Reset wavegraph - - Smooth wavegraph - - Increase wavegraph amplitude by 1 dB - - Decrease wavegraph amplitude by 1 dB - Stereo mode: maximum - Process based on the maximum of both stereo channels - Stereo mode: average - Process based on the average of both stereo channels - Stereo mode: unlinked - Process each stereo channel independently @@ -9829,111 +3557,73 @@ 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 - - fxLineLcdSpinBox - - - Assign to: - - - - - New FX channel - - - - - graphModel - - - Graph - - - kickerInstrument - Start frequency - End frequency - Length - Start distortion - End distortion - Gain - Envelope slope - Noise - Click - Frequency slope - Start from note - End to note @@ -9941,52 +3631,42 @@ Please make sure you have read-permission to the file and the directory containi kickerInstrumentView - Start frequency: - End frequency: - Frequency slope: - Gain: - Envelope length: - Envelope slope: - Click: - Noise: - Start distortion: - End distortion: @@ -9994,37 +3674,26 @@ 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 - Type: @@ -10032,12 +3701,10 @@ Please make sure you have read-permission to the file and the directory containi ladspaDescription - Plugins - Description @@ -10045,83 +3712,66 @@ Please make sure you have read-permission to the file and the directory containi ladspaPortDialog - Ports - Name - Rate - Direction - Type - Min < Default < Max - Logarithmic - SR Dependent - Audio - Control - Input - Output - Toggled - Integer - Float - - Yes @@ -10129,57 +3779,46 @@ Please make sure you have read-permission to the file and the directory containi lb302Synth - VCF Cutoff Frequency - VCF Resonance - VCF Envelope Mod - VCF Envelope Decay - Distortion - Waveform - Slide Decay - Slide - Accent - Dead - 24dB/oct Filter @@ -10187,153 +3826,122 @@ Please make sure you have read-permission to the file and the directory containi 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. @@ -10341,147 +3949,118 @@ Please make sure you have read-permission to the file and the directory containi malletsInstrument - Hardness - Position - Vibrato gain - Vibrato frequency - Stick mix - Modulator - Crossfade - LFO speed - LFO depth - ADSR - Pressure - Motion - Speed - Bowed - Spread - Marimba - Vibraphone - Agogo - Wood 1 - Reso - Wood 2 - Beats - Two fixed - Clump - Tubular bells - Uniform bar - Tuned bar - Glass - Tibetan bowl @@ -10489,147 +4068,118 @@ Please make sure you have read-permission to the file and the directory containi malletsInstrumentView - Instrument - Spread - Spread: - Missing files - Your Stk-installation seems to be incomplete. Please make sure the full Stk-package is installed! - Hardness - Hardness: - Position - Position: - Vibrato gain - Vibrato gain: - Vibrato frequency - Vibrato frequency: - Stick mix - Stick mix: - Modulator - Modulator: - Crossfade - Crossfade: - LFO speed - LFO speed: - LFO depth - LFO depth: - ADSR - ADSR: - Pressure - Pressure: - Speed - Speed: @@ -10637,23 +4187,18 @@ Please make sure you have read-permission to the file and the directory containi manageVSTEffectView - - VST parameter control - VST sync - - Automated - Close @@ -10661,24 +4206,18 @@ Please make sure you have read-permission to the file and the directory containi manageVestigeInstrumentView - - - VST plugin control - VST Sync - - Automated - Close @@ -10686,12 +4225,10 @@ Please make sure you have read-permission to the file and the directory containi organicInstrument - Distortion - Volume @@ -10699,48 +4236,38 @@ Please make sure you have read-permission to the file and the directory containi organicInstrumentView - Distortion: - Volume: - Randomise - - Osc %1 waveform: - Osc %1 volume: - Osc %1 panning: - Osc %1 stereo detuning - cents - Osc %1 harmonic: @@ -10748,42 +4275,34 @@ Please make sure you have read-permission to the file and the directory containi patchesDialog - Qsynth: Channel Preset - Bank selector - Bank - Program selector - Patch - Name - OK - Cancel @@ -10791,233 +4310,183 @@ Please make sure you have read-permission to the file and the directory containi pluginBrowser - - no description - - - - A native amplifier plugin - Simple sampler with various settings for using samples (e.g. drums) in an instrument-track - Boost your bass the fast and simple way - 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 - Emulation of GameBoy (TM) APU - Player for GIG files - Filter for importing Hydrogen files into LMMS - Versatile drum synthesizer - List installed LADSPA plugins - 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 - 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. - Graphical spectrum analyzer plugin - Plugin for enhancing stereo separation of a stereo input file - Plugin for freely manipulating stereo output - Tuneful things to bang on - Three powerful oscillators you can modulate in several ways - VST-host for using VST(i)-plugins within LMMS - Vibrating string modeler - plugin for using arbitrary VST effects inside LMMS. - 4-oscillator modulatable wavetable synth - plugin for waveshaping - Mathematical expression parser - Embedded ZynAddSubFX @@ -11025,72 +4494,58 @@ This chip was used in the Commodore 64 computer. sf2Instrument - Bank - Patch - Gain - Reverb - Reverb room size - Reverb damping - Reverb width - Reverb level - Chorus - Chorus voices - Chorus level - Chorus speed - Chorus depth - A soundfont %1 could not be loaded. @@ -11098,69 +4553,54 @@ This chip was used in the Commodore 64 computer. sf2InstrumentView - - Open SoundFont file - Choose patch - Gain: - Apply reverb (if supported) - Room size: - Damping: - Width: - - Level: - Apply chorus (if supported) - Voices: - Speed: - Depth: - SoundFont Files (*.sf2 *.sf3) @@ -11168,7 +4608,6 @@ This chip was used in the Commodore 64 computer. sfxrInstrument - Wave @@ -11176,32 +4615,26 @@ This chip was used in the Commodore 64 computer. sidInstrument - Cutoff frequency - Resonance - Filter type - Voice 3 off - Volume - Chip model @@ -11209,126 +4642,98 @@ This chip was used in the Commodore 64 computer. sidInstrumentView - Volume: - Resonance: - - Cutoff frequency: - High-pass filter - Band-pass filter - Low-pass filter - Voice 3 off - MOS6581 SID - MOS8580 SID - - Attack: - - Decay: - Sustain: - - Release: - Pulse Width: - Coarse: - Pulse wave - Triangle wave - Saw wave - Noise - Sync - Ring modulation - Filtered - Test - Pulse width: @@ -11336,12 +4741,10 @@ This chip was used in the Commodore 64 computer. stereoEnhancerControlDialog - WIDTH - Width: @@ -11349,7 +4752,6 @@ This chip was used in the Commodore 64 computer. stereoEnhancerControls - Width @@ -11357,22 +4759,18 @@ 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: @@ -11380,22 +4778,18 @@ This chip was used in the Commodore 64 computer. stereoMatrixControls - Left to Left - Left to Right - Right to Left - Right to Right @@ -11403,12 +4797,10 @@ This chip was used in the Commodore 64 computer. vestigeInstrument - Loading plugin - Please wait while loading the VST plugin... @@ -11416,52 +4808,42 @@ This chip was used in the Commodore 64 computer. vibed - String %1 volume - String %1 stiffness - Pick %1 position - Pickup %1 position - String %1 panning - String %1 detune - String %1 fuzziness - String %1 length - Impulse %1 - String %1 @@ -11469,120 +4851,90 @@ This chip was used in the Commodore 64 computer. vibedView - String volume: - String stiffness: - Pick position: - Pickup position: - String panning: - String detune: - String fuzziness: - String length: - Impulse - Octave - Impulse Editor - Enable waveform - Enable/disable string - String - - Sine wave - - Triangle wave - - Saw wave - - Square wave - - White noise - - User-defined wave - - Smooth waveform - - Normalize waveform @@ -11590,57 +4942,46 @@ This chip was used in the Commodore 64 computer. 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 @@ -11648,56 +4989,42 @@ This chip was used in the Commodore 64 computer. waveShaperControlDialog - INPUT - Input gain: - OUTPUT - Output gain: - - Reset wavegraph - - Smooth wavegraph - - Increase wavegraph amplitude by 1 dB - - Decrease wavegraph amplitude by 1 dB - Clip input - Clip input signal to 0 dB @@ -11705,12 +5032,10 @@ This chip was used in the Commodore 64 computer. waveShaperControls - Input gain - Output gain diff --git a/data/locale/ko.ts b/data/locale/ko.ts index 36fe2e21440..796ccb3c292 100644 --- a/data/locale/ko.ts +++ b/data/locale/ko.ts @@ -1,64 +1,6 @@ - - - AboutDialog - - About LMMS - LMMS에 대하여 - - - Version %1 (%2/%3, Qt %4, %5) - 버전 %1 (%2/%3, Qt %4, %5) - - - About - 정보 - - - LMMS - easy music production for everyone - LMMS - 누구나 쉽게 할 수 있는 음악 제작 - - - Authors - 개발자 - - - 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! - 송현진 (Hyunjin Song) <tteu.ingog@gmail.com> -방성범 (Bang Seongbeom) <bangseongbeom@gmail.com> - -LMMS를 다른 언어로 번역하고 싶다거나 기존 번역을 개선하고 싶다면 저희를 도와주세요! LMMS 관리자와의 연락을 통해 참여하실 수 있습니다. - - - License - 라이선스 - - - LMMS - LMMS - - - Involved - 기여자 - - - Contributors ordered by number of commits: - 기여자 (기여 순으로 정렬): - - - Copyright © %1 - 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> - <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 @@ -113,94 +55,47 @@ LMMS를 다른 언어로 번역하고 싶다거나 기존 번역을 개선하고 오른쪽 이득 - - AudioAlsaSetupWidget - - DEVICE - 장치 - - - CHANNELS - 채널 - - 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!) - 이 노브를 이용하여 증폭률을 설정할 수 있습니다. 값을 100%로 설정하면 샘플은 그대로 재생됩니다. 그렇지 않은 경우 샘플의 음량이 증가되거나 감소됩니다. (실제 샘플 파일에는 변화가 없습니다) - - - 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) - 이 옵션을 활성화하면 샘플이 여러 음표에 걸쳐 계속 재생됩니다 - 음표가 끝나기 전에 샘플이 끝나는 경우나 피치가 바뀌는 경우 다음 음표는 직전 음표의 재생이 끝난 곳부터 재생됩니다. 음표가 다시 처음부터 재생되게 하려면 매우 낮은 음표를 삽입하세요. (< 20Hz) - 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. - 이 버튼은 양방향 반복을 활성화합니다. 샘플은 반복 시작점과 끝점 사이에서 양방향으로 반복 재생됩니다. + Loopback point: + 루프 시작점: - With this knob you can set the point where AudioFileProcessor should begin playing your sample. - 이 노브를 이용하여 샘플 재생 시작점을 설정할 수 있습니다. + Open sample + - With this knob you can set the point where AudioFileProcessor should stop playing your sample. - 이 노브를 이용하여 샘플 재생 끝점을 설정할 수 있습니다. + Enable ping-pong loop + - Loopback point: - 루프 시작점: + Start point: + - With this knob you can set the point where the loop starts. - 이 노브를 이용하여 샘플 반복 시작점을 설정할 수 있습니다. + End point: + @@ -211,9115 +106,4181 @@ LMMS를 다른 언어로 번역하고 싶다거나 기존 번역을 개선하고 - AudioJack + BassBoosterControlDialog - JACK client restarted - JACK 클라이언트 다시 시작됨 + FREQ + 주파수 - 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. - 알 수 없는 이유로 인해 LMMS와 JACK과의 연결이 끊겼습니다. LMMS의 JACK 드라이버를 다시 시작합니다. 수동으로 연결을 시도할 수도 있습니다. + Frequency: + 주파수: - JACK server down - JACK 서버 다운됨 + GAIN + 이득 - 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. - JACK 서버가 종료된 것 같습니다. 더 이상 작업을 진행할 수 없습니다. 프로젝트를 저장한 뒤 JACK과 LMMS를 다시 시작하세요. + Gain: + 이득: - CLIENT-NAME - 클라이언트 이름 + RATIO + - CHANNELS - 채널 + Ratio: + - AudioOss::setupWidget - - DEVICE - 장치 - + BassBoosterControls - CHANNELS - 채널 + Frequency + 주파수 - - - AudioPortAudio::setupWidget - BACKEND - 드라이버 + Gain + 이득 - DEVICE - 장치 + Ratio + - AudioPulseAudio::setupWidget + BitcrushControlDialog - DEVICE - 장치 + IN + 입력 - CHANNELS - 채널 + OUT + 출력 - - - AudioSdl::setupWidget - DEVICE - 장치 + GAIN + 이득 - - - AudioSndio::setupWidget - DEVICE - 장치 + CLIP + - CHANNELS - 채널 + Sample rate: + 샘플 레이트: - - - AudioSoundIo::setupWidget - BACKEND - 드라이버 + Stereo difference: + - DEVICE - 장치 + Levels: + + + + NOISE + 잡음 - - - AutomatableModel - &Reset (%1%2) - 초기화 (%1%2)(&R) + FREQ + 주파수 - &Copy value (%1%2) - 값 복사 (%1%2)(&C) + STEREO + 스테레오 - &Paste value (%1%2) - 값 붙여넣기 (%1%2)(&P) + QUANT + - Edit song-global automation - 전역 오토메이션 편집 + Input gain: + 입력 이득: - Connected to %1 - %1에 연결됨 + Input noise: + - Connected to controller - 컨트롤러에 연결됨 + Output gain: + 출력 이득: - Edit connection... - 연결 편집... + Output clip: + - Remove connection - 연결 제거 + Rate enabled + - Connect to controller... - 컨트롤러에 연결... + Enable sample-rate crushing + - Remove song-global automation - 전역 오토메이션 제거 + Depth enabled + - Remove all linked controls - 연결 제거 + Enable bit-depth crushing + - AutomationEditor + BitcrushControls - Please open an automation pattern with the context menu of a control! - 컨트롤의 컨텍스트 메뉴에서 오토메이션 패턴을 여시기 바랍니다! + Input gain + 입력 이득 - Values copied - 값 복사됨 + Input noise + - All selected values were copied to the clipboard. - 선택한 모든 값이 클립보드에 복사되었습니다. + Output gain + 출력 이득 + + + Output clip + + + + Sample rate + + + + Stereo difference + + + + Levels + - - - AutomationEditorWindow - Play/pause current pattern (Space) - 현재 패턴 재생/일시정지 (Space) + Rate enabled + - 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. - 현재 패턴을 재생하려면 여기를 클릭하세요. 패턴의 끝에 도달하면 자동으로 반복 재생됩니다. + Depth enabled + + + + CarlaInstrumentView - Stop playing of current pattern (Space) - 현재 패턴 정지 (Space) + Show GUI + GUI 표시 + + + CrossoverEQControlDialog - Click here if you want to stop playing of the current pattern. - 현재 패턴의 재생을 정지하려면 여기를 클릭하세요. + Band 1/2 crossover: + - Draw mode (Shift+D) - 그리기 모드 (Shift+D) + Band 2/3 crossover: + - Erase mode (Shift+E) - 지우기 모드 (Shift+E) + Band 3/4 crossover: + - Flip vertically - 상하 반전 + Band 1 gain + - Flip horizontally - 좌우 반전 + Band 1 gain: + - Click here and the pattern will be inverted.The points are flipped in the y direction. - 여기를 클릭하면 패턴이 상하로 반전됩니다. + Band 2 gain + - Click here and the pattern will be reversed. The points are flipped in the x direction. - 여기를 클릭하면 패턴이 좌우로 반전됩니다. + Band 2 gain: + - 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. - 여기를 클릭하면 그리기 모드가 활성화됩니다. 그리기 모드에서는 값을 추가하거나 이동할 수 있습니다. 이 모드는 대부분의 경우에 사용되는 기본 모드입니다. 'Shift+D' 키를 눌러 이 모드를 활성화할 수도 있습니다. + Band 3 gain + - 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. - 여기를 클릭하면 지우기 모드가 활성화됩니다. 지우기 모드에서는 값을 삭제할 수 있습니다. 'Shift+E' 키를 눌러 이 모드를 활성화할 수도 있습니다. + Band 3 gain: + - Discrete progression - 이산적 진행 + Band 4 gain + - Linear progression - 선형 진행 + Band 4 gain: + - Cubic Hermite progression - 3차 에르미트 진행 + Band 1 mute + - Tension value for spline - + Mute band 1 + - 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. - + Band 2 mute + - 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. - 클릭하여 이 패턴을 이산적 진행으로 설정합니다. 각 점 사이에서 값은 상수로 유지되며 새 점에 도달하는 순간 값이 갱신됩니다. + Mute band 2 + - 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. - 클릭하여 이 패턴을 선형 진행으로 설정합니다. 각 점 사이에서 값은 일정한 비율로 변화하며 새 점에 도달하는 순간에 불연속적 값 변화가 없습니다. + Band 3 mute + - 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. - 클릭하여 이 패턴을 3차 에르미트 진행으로 설정합니다. 각 점 사이에서 값은 매끄러운 곡선의 형태로 변화합니다.Save + Mute band 3 + - Cut selected values (%1+X) - 선택된 값 잘라내기 (%1+X) + Band 4 mute + - Copy selected values (%1+C) - 선택된 값 복사 (%1+C) + Mute band 4 + + + + DelayControls - Paste values from clipboard (%1+V) - 선택된 값 붙여넣기 (%1+V) + Feedback + 피드백 - 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. - + Output gain + 출력 이득 - 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. - + Delay samples + - Click here and the values from the clipboard will be pasted at the first visible measure. - + LFO frequency + - Tension: - 장력: + LFO amount + + + + DelayControlsDialog - Automation Editor - no pattern - 오토메이션 편집기 - 패턴 없음 + Gain + 이득 - Automation Editor - %1 - 오토메이션 편집기 - %1 + DELAY + - Edit actions - 편집 동작 + FDBK + - Interpolation controls - + RATE + - Timeline controls - + AMNT + - Zoom controls - + Delay time + - Quantization controls - + Feedback amount + - Model is already connected to this pattern. - 대상이 이미 패턴에 연결되어 있습니다. + LFO frequency + - Quantization - + LFO amount + - 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. - + Out gain + - AutomationPattern + DualFilterControlDialog - Drag a control while pressing <%1> - <%1> 키를 누른 채로 드래그 + Filter 1 enabled + 필터 1 활성화됨 - - - AutomationPatternView - Open in Automation editor - 오토메이션 편집기에서 열기 + Filter 2 enabled + 필터 2 활성화됨 - Clear - 지우기 + FREQ + 주파수 - Reset name - 이름 초기화 + Cutoff frequency + 차단 주파수 - Change name - 이름 바꾸기 + RESO + 공명 - %1 Connections - %1개의 연결 + Resonance + 공명 - Disconnect "%1" - "%1" 연결 해제 + GAIN + 이득 - Set/clear record - 녹음 설정/해제 + Gain + 이득 - Flip Vertically (Visible) - 상하 반전 + MIX + - Flip Horizontally (Visible) - 좌우 반전 + Mix + - Model is already connected to this pattern. - 대상이 이미 패턴과 연결되어 있습니다. + Enable/disable filter 1 + - - - AutomationTrack - Automation track - 오토메이션 트랙 + Enable/disable filter 2 + - BBEditor + DualFilterControls - Beat+Bassline Editor - 비트/베이스 라인 편집기 + Filter 1 enabled + 필터 1 활성화됨 - Play/pause current beat/bassline (Space) - 현재 비트/베이스 라인 재생/일시정지 (Space) + Filter 1 type + 필터 1 종류 - Stop playback of current beat/bassline (Space) - 현재 비트/베이스 라인 정지 (Space) + Q/Resonance 1 + - Click here to play the current beat/bassline. The beat/bassline is automatically looped when its end is reached. - 클릭하여 비트/베이스 라인을 재생합니다. 자동으로 반복 재생됩니다. + Gain 1 + - Click here to stop playing of current beat/bassline. - 클릭하여 비트/베이스 라인 재생을 정지합니다. + Mix + - Add beat/bassline - 비트/베이스 라인 추가 + Filter 2 enabled + 필터 2 활성화됨 - Add automation-track - 오토메이션 트랙 추가 + Filter 2 type + 필터 2 종류 - Remove steps - 단계 제거 + Q/Resonance 2 + - Add steps - 단계 더하기 + Gain 2 + - Beat selector - + Notch + - Track and step actions - + Moog + - Clone Steps - + 2x Moog + - Add sample-track - 샘플 트랙 추가 + SV Notch + - - - BBTCOView - Open in Beat+Bassline-Editor - 비트/베이스 라인 편집기에서 열기 + Fast Formant + - Reset name - 이름 초기화 + Tripole + - Change name - 이름 바꾸기 + Cutoff frequency 1 + - Change color - 색상 바꾸기 + Cutoff frequency 2 + - Reset color to default - 색상을 기본값으로 되돌리기 + Low-pass + - - - BBTrack - Beat/Bassline %1 - 비트/베이스 라인 %1 + Hi-pass + - Clone of %1 - %1의 복제 + Band-pass csg + - - - BassBoosterControlDialog - FREQ - 주파수 + Band-pass czpg + - Frequency: - 주파수: + All-pass + - GAIN - 이득 + 2x Low-pass + - Gain: - 이득: + RC Low-pass 12 dB/oct + - RATIO - + RC Band-pass 12 dB/oct + - Ratio: - + RC High-pass 12 dB/oct + - - - BassBoosterControls - Frequency - 주파수 + RC Low-pass 24 dB/oct + - Gain - 이득 + RC Band-pass 24 dB/oct + - Ratio - + RC High-pass 24 dB/oct + - - - BitcrushControlDialog - IN - 입력 + Vocal Formant + - OUT - 출력 + SV Low-pass + - GAIN - 이득 + SV Band-pass + - Input Gain: - 입력 이득: + SV High-pass + + + + EqControls - Input Noise: - + Input gain + 입력 이득 - Output Gain: - 출력 이득: + Output gain + 출력 이득 - CLIP - + Peak 1 gain + - Output Clip: - + Peak 2 gain + - Rate Enabled - + Peak 3 gain + - Enable samplerate-crushing - + Peak 4 gain + - Depth Enabled - + HP res + - Enable bitdepth-crushing - + Peak 1 BW + - Sample rate: - 샘플 레이트: + Peak 2 BW + - Stereo difference: - + Peak 3 BW + - Levels: - + Peak 4 BW + - NOISE - 잡음 + LP res + - FREQ - 주파수 + HP freq + - STEREO - 스테레오 - - - QUANT - - - - - CaptionMenu - - &Help - 도움말(&H) - - - Help (not available) - 도움말 사용 불가 + Peak 1 freq + - - - CarlaInstrumentView - Show GUI - GUI 표시 + Peak 2 freq + - Click here to show or hide the graphical user interface (GUI) of Carla. - 클릭하여 Carla의 GUI를 표시하거나 숨깁니다. + Peak 3 freq + - - - Controller - Controller %1 - 컨트롤러 %1 + Peak 4 freq + - - - ControllerConnectionDialog - Connection Settings - 연결 설정 + LP freq + - MIDI CONTROLLER - MIDI 컨트롤러 + HP active + - Input channel - 입력 채널 + Peak 1 active + - CHANNEL - 채널 + Peak 2 active + - Input controller - 입력 컨트롤러 + Peak 3 active + - CONTROLLER - 컨트롤러 + Peak 4 active + - Auto Detect - 자동 감지 + LP active + - MIDI-devices to receive MIDI-events from - + LP 12 + - USER CONTROLLER - 사용자 지정 컨트롤러 + LP 24 + - MAPPING FUNCTION - + LP 48 + - OK - 확인 + HP 12 + - Cancel - 취소 + HP 24 + - LMMS - LMMS + HP 48 + - Cycle Detected. - 순환 연결이 감지되었습니다. + Analyse IN + 입력 신호 분석 - - - ControllerRackView - Controller Rack - 컨트롤러 랙 + Analyse OUT + 출력 신호 분석 - Add - 추가 + Low-shelf gain + - Confirm Delete - 삭제 확인 + High-shelf gain + - Confirm delete? There are existing connection(s) associated with this controller. There is no way to undo. - 정말 삭제하시겠습니까? 이 컨트롤러와의 연결이 존재합니다. 이 동작은 취소할 수 없습니다. + Low-shelf res + - - - ControllerView - Controls - 컨트롤 + High-shelf res + - Controllers are able to automate the value of a knob, slider, and other controls. - 컨트롤러를 통하여 노브, 슬라이더 등의 값을 자동으로 제어할 수 있습니다. + Low-shelf freq + - Rename controller - 컨트롤러 이름 바꾸기 + High-shelf freq + - Enter the new name for this controller - 컨트롤러의 새 이름을 입력하세요 + Low-shelf active + - &Remove this controller - 컨트롤러 제거(&R) + High-shelf active + - Re&name this controller - 컨트롤러 이름 바꾸기(&N) + Low-pass type + - LFO - LFO + High-pass type + - CrossoverEQControlDialog + EqControlsDialog - Band 1/2 Crossover: - + HP + - Band 2/3 Crossover: - + Peak 1 + - Band 3/4 Crossover: - + Peak 2 + - Band 1 Gain: - + Peak 3 + - Band 2 Gain: - + Peak 4 + - Band 3 Gain: - + LP + - Band 4 Gain: - + Gain + 이득 - Band 1 Mute - + Bandwidth: + - Mute Band 1 - + Resonance : + 공명: - Band 2 Mute - + Frequency: + 주파수: - Mute Band 2 - + Octave + 옥타브 - Band 3 Mute - + Low-shelf + - Mute Band 3 - + High-shelf + - Band 4 Mute - + Input gain + 입력 이득 - Mute Band 4 - + Output gain + 출력 이득 - - - DelayControls - Delay Samples - + LP group + - Feedback - 피드백 + HP group + + + + EqHandle - Lfo Frequency - LFO 주파수 + Reso: + 공명: - Lfo Amount - + BW: + 대역폭: - Output gain - 출력 이득 + Freq: + 주파수: - DelayControlsDialog + FlangerControls - Lfo Amt - + Seconds + - Delay Time - + Regen + - Feedback Amount - + Noise + 잡음 - Lfo - + Invert + 파형 반전 - Out Gain - 출력 이득 + Delay samples + - Gain - 이득 + LFO frequency + + + + FlangerControlsDialog DELAY - - - - FDBK - + RATE - + AMNT - + - - - DualFilterControlDialog - Filter 1 enabled - 필터 1 활성화됨 + Amount: + - Filter 2 enabled - 필터 2 활성화됨 + FDBK + - Click to enable/disable Filter 1 - 클릭하여 필터 1 활성화/비활성화 + NOISE + 잡음 - Click to enable/disable Filter 2 - 클릭하여 필터 2 활성화/비활성화 + Invert + 파형 반전 - FREQ - 주파수 + Period: + - Cutoff frequency - 차단 주파수 + Delay time: + - RESO - 공명 + Feedback amount: + - Resonance - 공명 + White noise amount: + + + + FreeBoyInstrument - GAIN - 이득 + Sweep time + - Gain - 이득 + Sweep direction + - MIX - + Channel 1 volume + - Mix - + Volume sweep direction + - - - DualFilterControls - Filter 1 enabled - 필터 1 활성화됨 + Length of each step in sweep + - Filter 1 type - 필터 1 종류 + Channel 2 volume + - Cutoff 1 frequency - + Channel 3 volume + - Q/Resonance 1 - + Channel 4 volume + - Gain 1 - + Channel 1 to SO2 (Left) + - Mix - + Channel 2 to SO2 (Left) + - Filter 2 enabled - 필터 2 활성화됨 + Channel 3 to SO2 (Left) + - Filter 2 type - 필터 2 종류 + Channel 4 to SO2 (Left) + - Cutoff 2 frequency - + Channel 1 to SO1 (Right) + - Q/Resonance 2 - + Channel 2 to SO1 (Right) + - Gain 2 - + Channel 3 to SO1 (Right) + - LowPass - + Channel 4 to SO1 (Right) + - HiPass - + Treble + - BandPass csg - + Bass + - BandPass czpg - + Shift Register width + - Notch - + Sweep rate shift amount + - Allpass - + Wave pattern duty cycle + - Moog - + Right output level + - 2x LowPass - + Left output level + + + + FreeBoyInstrumentView - RC LowPass 12dB - + Length of each step in sweep: + - RC BandPass 12dB - + Length of each step in sweep + - RC HighPass 12dB - + Treble: + - RC LowPass 24dB - + Treble + - RC BandPass 24dB - + Bass: + - RC HighPass 24dB - + Bass + - Vocal Formant Filter - + Sweep time: + - 2x Moog - + Sweep time + - SV LowPass - + Sweep rate shift amount: + - SV BandPass - + Sweep rate shift amount + - SV HighPass - + Wave pattern duty cycle: + - SV Notch - + Wave pattern duty cycle + - Fast Formant - + Square channel 1 volume: + - Tripole - + Square channel 1 volume + - - - Editor - Play (Space) - 재생 (Space) + Square channel 2 volume: + - Stop (Space) - 정지 (Space) + Square channel 2 volume + - Record - 녹음 + Wave pattern channel volume: + - Record while playing - + Wave pattern channel volume + - Transport controls - + Noise channel volume: + - - - Effect - Effect enabled - 효과 활성화됨 + Noise channel volume + - Wet/Dry mix - + SO1 volume (Right): + - Gate - 게이트 + SO1 volume (Right) + - Decay - + SO2 volume (Left): + - - - EffectChain - Effects enabled - 효과 활성화됨 + SO2 volume (Left) + - - - EffectRackView - EFFECTS CHAIN - 효과 체인 + Sweep direction + - Add effect - 효과 추가 + Volume sweep direction + - - - EffectSelectDialog - Add effect - 효과 추가 + Shift register width + - Name - 이름 + Channel 1 to SO1 (Right) + - Type - 형태 + Channel 2 to SO1 (Right) + - Description - 요약 + Channel 3 to SO1 (Right) + - Author - + Channel 4 to SO1 (Right) + - - - EffectView - Toggles the effect on or off. - 효과를 켜거나 끕니다. + Channel 1 to SO2 (Left) + - On/Off - 켬/끔 + Channel 2 to SO2 (Left) + - W/D - + Channel 3 to SO2 (Left) + - Wet Level: - + Channel 4 to SO2 (Left) + - The Wet/Dry knob sets the ratio between the input signal and the effect signal that forms the output. - + Wave pattern graph + + + + GigInstrument - DECAY - + Bank + 뱅크 - Time: - + Patch + 패치 - 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. - + Gain + 이득 + + + GigInstrumentView - GATE - 게이트 + Open GIG file + GIG 파일 열기 - Gate: - 게이트: + GIG Files (*.gig) + GIG 파일 (*.gig) - The Gate knob controls the signal level that is considered to be 'silence' while deciding when to stop processing signals. - + Choose patch + - Controls - 컨트롤 + Gain: + 이득: + + + InstrumentTrack - 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. - -The Wet/Dry knob controls the balance between the input signal and the effected signal that is the resulting output from the effect. The input for the stage is the output from the previous stage. So, the 'dry' signal for effects lower in the chain contains all of the previous effects. - -The Decay knob controls how long the signal will continue to be processed after the notes have been released. The effect will stop processing signals when the volume has dropped below a given threshold for a given length of time. This knob sets the 'given length of time'. Longer times will require more CPU, so this number should be set low for most effects. It needs to be bumped up for effects that produce lengthy periods of silence, e.g. delays. - -The Gate knob controls the 'given threshold' for the effect's auto shutdown. The clock for the 'given length of time' will begin as soon as the processed signal level drops below the level specified with this knob. - -The Controls button opens a dialog for editing the effect's parameters. - -Right clicking will bring up a context menu where you can change the order in which the effects are processed or delete an effect altogether. - + Default preset + 기본 프리셋 + + + LadspaControlDialog - Move &up - 위로 이동(&U) + Link Channels + 채널 링크 - Move &down - 아래로 이동(&D) + Channel + 채널 + + + LadspaEffect - &Remove this plugin - 플러그인 제거(&R) + Unknown LADSPA plugin %1 requested. + 알 수 없는 LADSPA 플러그인 %1이(가) 요청되었습니다. - EnvelopeAndLfoParameters + MidiImport - Predelay - + Setup incomplete + 설정 불완전 - Attack - + 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. + - Hold - - - - Decay - + Track + 트랙 - Sustain - + You have not 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. + + + + MonstroInstrument - Release - + Osc 3 Stereo phase offset + - Modulation - 변조 + Selected view + - LFO Predelay - + Sine wave + 사인파 - LFO Attack - + Bandlimited Triangle wave + - LFO speed - + Bandlimited Saw wave + - LFO Modulation - + Bandlimited Ramp wave + - LFO Wave Shape - LFO 파형 + Bandlimited Square wave + - Freq x 100 - + Bandlimited Moog saw wave + - Modulate Env-Amount - + Soft square wave + - - - EnvelopeAndLfoView - DEL - + Absolute sine wave + - Predelay: - + Exponential wave + - Use this knob for setting predelay of the current envelope. The bigger this value the longer the time before start of actual envelope. - + White noise + 화이트 노이즈 - ATT - + Digital Triangle wave + 삼각파 - Attack: - + Digital Saw wave + 톱니파 - 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. - + Digital Ramp wave + 역톱니파 - HOLD - + Digital Square wave + 사각파 - Hold: - + Digital Moog saw wave + - 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. - + Triangle wave + 삼각파 - DEC - 감쇄 + Saw wave + 톱니파 - Decay: - 감쇄: + Ramp wave + - 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. - + Square wave + 사각파 - SUST - + Moog saw wave + - Sustain: - + Abs. sine wave + - 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. - + Random + 무작위 - REL - + Random smooth + - Release: - + Osc 1 volume + - 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. - + Osc 1 panning + - AMT - + Osc 1 coarse detune + - Modulation amount: - + Osc 1 fine detune left + - 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. - + Osc 1 fine detune right + - LFO predelay: - + Osc 1 stereo phase offset + - Use this knob for setting predelay-time of the current LFO. The bigger this value the the time until the LFO starts to oscillate. - + Osc 1 pulse width + - LFO- attack: - + Osc 1 sync send on rise + - 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. - + Osc 1 sync send on fall + - SPD - + Osc 2 volume + - LFO speed: - LFO 속도: + Osc 2 panning + - 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. - 이 노브를 사용하여 LFO의 속도를 설정합니다. 값이 클수록 LFO 진동이 빨라지게 됩니다. + Osc 2 coarse detune + - 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. - + Osc 2 fine detune left + - Click here for a sine-wave. - 클릭하여 사인파를 선택합니다. + Osc 2 fine detune right + - Click here for a triangle-wave. - 클릭하여 삼각파를 선택합니다. + Osc 2 stereo phase offset + - Click here for a saw-wave for current. - 클릭하여 톱니파를 선택합니다. + Osc 2 waveform + - Click here for a square-wave. - 클릭하여 사각파를 선택합니다. + Osc 2 sync hard + - Click here for a user-defined wave. Afterwards, drag an according sample-file onto the LFO graph. - + Osc 2 sync reverse + - FREQ x 100 - 주파수 x 100 + Osc 3 volume + - Click here if the frequency of this LFO should be multiplied by 100. - + Osc 3 panning + - multiply LFO-frequency by 100 - + Osc 3 coarse detune + - MODULATE ENV-AMOUNT - + Osc 3 sub-oscillator mix + - Click here to make the envelope-amount controlled by this LFO. - + Osc 3 waveform 1 + - control envelope-amount by this LFO - + Osc 3 waveform 2 + - ms/LFO: - + Osc 3 sync hard + - Hint - + Osc 3 Sync reverse + - Drag a sample from somewhere and drop it in this window. - + LFO 1 waveform + - Click here for random wave. - 클릭하여 무작위 파형을 선택합니다. + LFO 1 attack + - - - EqControls - Input gain - 입력 이득 + LFO 1 rate + - Output gain - 출력 이득 + LFO 1 phase + - Low shelf gain - + LFO 2 waveform + - Peak 1 gain - + LFO 2 attack + - Peak 2 gain - + LFO 2 rate + - Peak 3 gain - + LFO 2 phase + - Peak 4 gain - + Env 1 pre-delay + - High Shelf gain - + Env 1 attack + - HP res - + Env 1 hold + - Low Shelf res - + Env 1 decay + - Peak 1 BW - + Env 1 sustain + - Peak 2 BW - + Env 1 release + - Peak 3 BW - + Env 1 slope + - Peak 4 BW - + Env 2 pre-delay + - High Shelf res - + Env 2 attack + - LP res - + Env 2 hold + - HP freq - + Env 2 decay + - Low Shelf freq - + Env 2 sustain + - Peak 1 freq - + Env 2 release + - Peak 2 freq - + Env 2 slope + - Peak 3 freq - + Osc 2+3 modulation + - Peak 4 freq - + Osc 1 - Vol env 1 + - High shelf freq - + Osc 1 - Vol env 2 + - LP freq - + Osc 1 - Vol LFO 1 + - HP active - + Osc 1 - Vol LFO 2 + - Low shelf active - + Osc 2 - Vol env 1 + - Peak 1 active - + Osc 2 - Vol env 2 + - Peak 2 active - + Osc 2 - Vol LFO 1 + - Peak 3 active - + Osc 2 - Vol LFO 2 + - Peak 4 active - + Osc 3 - Vol env 1 + - High shelf active - + Osc 3 - Vol env 2 + - LP active - + Osc 3 - Vol LFO 1 + - LP 12 - + Osc 3 - Vol LFO 2 + - LP 24 - + Osc 1 - Phs env 1 + - LP 48 - + Osc 1 - Phs env 2 + - HP 12 - + Osc 1 - Phs LFO 1 + - HP 24 - + Osc 1 - Phs LFO 2 + - HP 48 - + Osc 2 - Phs env 1 + - low pass type - + Osc 2 - Phs env 2 + - high pass type - + Osc 2 - Phs LFO 1 + - Analyse IN - 입력 신호 분석 + Osc 2 - Phs LFO 2 + - Analyse OUT - 출력 신호 분석 + Osc 3 - Phs env 1 + - - - EqControlsDialog - HP - + Osc 3 - Phs env 2 + - Low Shelf - + Osc 3 - Phs LFO 1 + - Peak 1 - + Osc 3 - Phs LFO 2 + - Peak 2 - + Osc 1 - Pit env 1 + - Peak 3 - + Osc 1 - Pit env 2 + - Peak 4 - + Osc 1 - Pit LFO 1 + - High Shelf - + Osc 1 - Pit LFO 2 + - LP - + Osc 2 - Pit env 1 + - In Gain - + Osc 2 - Pit env 2 + - Gain - 이득 + Osc 2 - Pit LFO 1 + - Out Gain - 출력 이득 + Osc 2 - Pit LFO 2 + - Bandwidth: - + Osc 3 - Pit env 1 + - Resonance : - 공명: + Osc 3 - Pit env 2 + - Frequency: - 주파수: + Osc 3 - Pit LFO 1 + - lp grp - + Osc 3 - Pit LFO 2 + - hp grp - + Osc 1 - PW env 1 + - Octave - 옥타브 + Osc 1 - PW env 2 + - - - EqHandle - Reso: - 공명: + Osc 1 - PW LFO 1 + - BW: - 대역폭: + Osc 1 - PW LFO 2 + - Freq: - 주파수: + Osc 3 - Sub env 1 + - - - ExportProjectDialog - Export project - 프로젝트 내보내기 + Osc 3 - Sub env 2 + - Output - 출력 + Osc 3 - Sub LFO 1 + - File format: - 파일 형식: + Osc 3 - Sub LFO 2 + + + + MonstroView - Samplerate: - 샘플 레이트: + Operators view + - 44100 Hz - 44100 Hz + Matrix view + - 48000 Hz - 48000 Hz + Volume + 볼륨 - 88200 Hz - 88200 Hz + Panning + 패닝 - 96000 Hz - 96000 Hz + Coarse detune + - 192000 Hz - 192000 Hz + semitones + 반음 - Bitrate: - 비트 레이트: + cents + 센트 - 64 KBit/s - 64 KBit/s + Stereo phase offset + - 128 KBit/s - 128 KBit/s + deg + - 160 KBit/s - 160 KBit/s + Pulse width + 펄스 폭 - 192 KBit/s - 192 KBit/s + Send sync on pulse rise + - 256 KBit/s - 256 KBit/s + Send sync on pulse fall + - 320 KBit/s - 320 KBit/s + Hard sync oscillator 2 + - Depth: - + Reverse sync oscillator 2 + - 16 Bit Integer - 16비트 정수 + Sub-osc mix + - 32 Bit Float - 32비트 실수 + Hard sync oscillator 3 + - Quality settings - 품질 설정 + Reverse sync oscillator 3 + - Interpolation: - 보간법: + Attack + - Zero Order Hold - + Rate + - Sinc Fastest - + Phase + 위상 - Sinc Medium (recommended) - + Pre-delay + - Sinc Best (very slow!) - + Hold + - Oversampling (use with care!): - + Decay + - 1x (None) - 1x (사용하지 않음) + Sustain + - 2x - 2x + Release + - 4x - 4x + Slope + - 8x - 8x + Modulation amount + - Start - 시작 + Fine tune left + - Cancel - 취소 + Fine tune right + - Export as loop (remove end silence) - 루프 곡처럼 내보내기 (후반부 여백 제거) + Mix osc 2 with osc 3 + - Export between loop markers - 반복 마커 사이 구간만 내보내기 + Modulate amplitude of osc 3 by osc 2 + - Could not open file - 파일을 열 수 없음 + Modulate frequency of osc 3 by osc 2 + - Export project to %1 - %1(으)로 프로젝트 내보내기 + Modulate phase of osc 3 by osc 2 + + + + MultitapEchoControlDialog - Error - 오류 + Length + 길이 - Error while determining file-encoder device. Please try to choose a different output format. - 파일 인코더를 결정하는 중 오류가 발생하였습니다. 다른 포맷을 선택하여 다시 시도해 보세요. + Step length: + - Rendering: %1% - 렌더링: %1% + Dry + - 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! - 파일 %1을(를) 쓰기 위하여 열 수 없습니다. -경로에 파일이 존재하고 파일에 쓸 수 있는 권한이 있는지 확인 후 다시 시도하시기 바랍니다! + Stages + - 24 Bit Integer - 24비트 정수 + Swap inputs + - Use variable bitrate - 가변 비트레이트 사용 + Dry gain: + - Stereo mode: - + Low-pass stages: + - Stereo - 스테레오 + Swap left and right input channels for reflections + + + + NesInstrument - Joint Stereo - + Channel 2 Coarse detune + - Mono - 모노 + Channel 2 Volume + - Compression level: - + Master volume + 마스터 볼륨 - (fastest) - + Vibrato + 비브라토 - (default) - + Channel 1 coarse detune + - (smallest) - + Channel 1 volume + - - - Expressive - Selected graph - + Channel 1 envelope length + - A1 - + Channel 1 duty cycle + - A2 - + Channel 1 sweep amount + - A3 - + Channel 1 sweep rate + - W1 smoothing - + Channel 2 envelope length + - W2 smoothing - + Channel 2 duty cycle + - W3 smoothing - + Channel 2 sweep amount + - PAN1 - + Channel 2 sweep rate + - PAN2 - + Channel 3 coarse detune + - REL TRANS - + Channel 3 volume + - - - Fader - Please enter a new value between %1 and %2: - %1부터 %2까지의 값을 입력하세요: + Channel 4 volume + - - - FileBrowser - Browser - 탐색기 + Channel 4 envelope length + - Search - + Channel 4 noise frequency + - Refresh list - + Channel 4 noise frequency sweep + - FileBrowserTreeWidget + NesInstrumentView - Send to active instrument-track - + Volume + 볼륨 - Open in new instrument-track/B+B Editor - 새로운 악기 트랙이나 비트/베이스 라인 편집기에서 열기 + Coarse detune + - Loading sample - 샘플을 로딩하는 중 + Envelope length + - Please wait, loading sample for preview... - + Enable channel 1 + 채널 1 활성화 - --- Factory files --- - + Enable envelope 1 + 엔벨로프 1 활성화 - Open in new instrument-track/Song Editor - 새로운 악기 트랙이나 노래 편집기에서 열기 + Enable envelope 1 loop + - Error - 오류 + Enable sweep 1 + - does not appear to be a valid - + Sweep amount + - file - 파일 + Sweep rate + - - - FlangerControls - Delay Samples - + 12.5% Duty cycle + - Lfo Frequency - LFO 주파수 + 25% Duty cycle + - Seconds - + 50% Duty cycle + - Regen - + 75% Duty cycle + - Noise - 잡음 + Enable channel 2 + 채널 2 활성화 - Invert - 파형 반전 + Enable envelope 2 + 엔벨로프 2 활성화 - - - FlangerControlsDialog - Delay Time: - + Enable envelope 2 loop + - Feedback Amount: - + Enable sweep 2 + - White Noise Amount: - + Enable channel 3 + 채널 3 활성화 - DELAY - + Noise Frequency + - RATE - + Frequency sweep + - AMNT - + Enable channel 4 + 채널 4 활성화 - Amount: - + Enable envelope 4 + 엔벨로프 4 활성화 - FDBK - + Enable envelope 4 loop + - NOISE - 잡음 + Quantize noise frequency when using note frequency + - Invert - 파형 반전 + Use note frequency for noise + - Period: - + Noise mode + + + + Vibrato + 비브라토 + + + Master volume + 마스터 볼륨 - FxLine + OpulenzInstrument - Channel send amount - + Patch + 패치 - 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. - -In order to route the channel to another channel, select the FX channel and click on the "send" button on the channel you want to send to. The knob under the send button controls the level of signal that is sent to the channel. - -You can remove and move FX channels in the context menu, which is accessed by right-clicking the FX channel. - - FX 채널은 한 개 이상의 악기 트랙으로부터 사운드를 입력받습니다. -한 채널에서 여러 다른 채널로 사운드를 보낼 수 있습니다. LMMS는 FX 채널 간 무한 루프를 생성하는 것을 자동으로 방지합니다. -한 채널의 출력을 다른 채널로 보내려면 출력을 내보낼 FX 채널을 선택한 뒤 대상 채널의 "send" 버튼을 선택하시기 바랍니다. "send" 버튼 아래에 있는 노브를 통하여 보내질 신호의 레벨을 조절할 수 있습니다. - -FX 채널을 오른쪽 클릭하여 나오는 컨텍스트 메뉴에서 채널을 제거하거나 이동할 수 있습니다. - + Op 1 attack + - Move &left - 왼쪽으로 이동(&L) + Op 1 decay + - Move &right - 오른쪽으로 이동(&R) + Op 1 sustain + - Rename &channel - 채널 이름 바꾸기(&C) + Op 1 release + - R&emove channel - 채널 제거(&R) + Op 1 level + - Remove &unused channels - 사용하지 않는 채널 제거(&U) + Op 1 level scaling + - - - FxMixer - Master - 마스터 + Op 1 frequency multiplier + - FX %1 - FX %1 + Op 1 feedback + - Volume - 볼륨 + Op 1 key scaling rate + - Mute - 음소거 + Op 1 percussive envelope + - Solo - 독주 + Op 1 tremolo + - - - FxMixerView - FX-Mixer - FX-믹서 + Op 1 vibrato + - FX Fader %1 - FX 페이더 %1 + Op 1 waveform + - Mute - 음소거 + Op 2 attack + - Mute this FX channel - 이 채널 음소거 + Op 2 decay + - Solo - 독주 + Op 2 sustain + - Solo FX channel - 이 채널 독주 + Op 2 release + - - - FxRoute - Amount to send from channel %1 to channel %2 - 채널 %1에서 채널 %2(으)로 보낼 양 + Op 2 level + - - - GigInstrument - Bank - 뱅크 + Op 2 level scaling + - Patch - 패치 + Op 2 frequency multiplier + - Gain - 이득 + Op 2 key scaling rate + - - - GigInstrumentView - Open other GIG file - 다른 GIG 파일 열기 + Op 2 percussive envelope + - Click here to open another GIG file - 클릭하여 다른 GIG 파일 열기 + Op 2 tremolo + - Choose the patch - 패치 선택 + Op 2 vibrato + - Click here to change which patch of the GIG file to use - + Op 2 waveform + - Change which instrument of the GIG file is being played - + FM + - Which GIG file is currently being used - + Vibrato depth + - Which patch of the GIG file is currently being used - + Tremolo depth + + + + OpulenzInstrumentView - Gain - 이득 + Attack + - Factor to multiply samples by - + Decay + - Open GIG file - GIG 파일 열기 + Release + - GIG Files (*.gig) - GIG 파일 (*.gig) + Frequency multiplier + - GuiApplication - - Working directory - 작업 경로 - + OscillatorObject - The LMMS working directory %1 does not exist. Create it now? You can change the directory later via Edit -> Settings. - LMMS 작업 경로 %1이(가) 존재하지 않습니다. 지금 만드시겠습니까? 나중에 편집 -> 설정에서 변경할 수 있습니다. + Osc %1 volume + - Preparing UI - UI 준비 + Osc %1 panning + - Preparing song editor - 노래 편집기 준비 + Osc %1 coarse detuning + - Preparing mixer - 믹서 준비 + Osc %1 fine detuning left + - Preparing controller rack - 컨트롤러 랙 준비 + Osc %1 fine detuning right + - Preparing project notes - 프로젝트 노트 준비 + Osc %1 phase-offset + - Preparing beat/bassline editor - 비트/베이스 라인 편집기 준비 + Osc %1 stereo phase-detuning + - Preparing piano roll - 피아노 롤 준비 + Osc %1 wave shape + - Preparing automation editor - 오토메이션 편집기 준비 + Modulation type %1 + - - - InstrumentFunctionArpeggio - Arpeggio - 아르페지오 + Osc %1 waveform + 오실레이터 %1 파형 - Arpeggio type - 아르페지오 형태 + Osc %1 harmonic + + + + PatchesDialog - Arpeggio range - 아르페지오 범위 + Qsynth: Channel Preset + - Arpeggio time - 아르페지오 시간 + Bank selector + - Arpeggio gate - 아르페지오 게이트 + Bank + 뱅크 - Arpeggio direction - 아르페지오 방향 + Program selector + - Arpeggio mode - 아르페지오 모드 + Patch + 패치 - Up - + Name + 이름 - Down - 아래 + OK + 확인 - Up and down - 위와 아래 + Cancel + 취소 + + + PatmanView - Random - 무작위 + Loop + 루프 - Free - + Loop mode + 루프 모드 - Sort - 정렬 + Tune + - Sync - 동기화 + Tune mode + - Down and up - + No file selected + - Skip rate - + Open patch file + 패치 파일 열기 - Miss rate - + Patch-Files (*.pat) + 패치 파일 (*.pat) - Cycle steps - + Open patch + - InstrumentFunctionArpeggioView + PeakControllerEffectControlDialog - ARPEGGIO - 아르페지오 + BASE + - 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. - + Modulation amount: + - RANGE - 범위 + Attack: + - Arpeggio range: - 아르페지오 범위: + Release: + - octave(s) - 옥타브 + AMNT + - Use this knob for setting the arpeggio range in octaves. The selected arpeggio will be played within specified number of octaves. - 이 노브를 사용하여 아르페지오 범위를 옥타브 단위로 설정합니다. 아르페지오는 설정된 옥타브 범위 내에서 재생됩니다. + MULT + - TIME - 시간 + ATCK + - Arpeggio time: - 아르페지오 시간: + DCAY + - ms - ms + Treshold: + - Use this knob for setting the arpeggio time in milliseconds. The arpeggio time specifies how long each arpeggio-tone should be played. - 이 노브를 사용하여 아르페지오 시간을 밀리초 단위로 지정합니다. 아르페지오 시간은 각각의 아르페지오 음이 재생되는 길이를 결정합니다. + TRSH + - GATE - 게이트 + Base: + - Arpeggio gate: - 아르페지오 게이트: + Amount multiplicator: + - % - % + Mute output + - 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. - + Absolute value + + + + PeakControllerEffectControls - Chord: - 코드: + Base value + - Direction: - 방향: + Modulation amount + - Mode: - 모드: + Mute output + - SKIP - + Attack + - Skip rate: - + Release + - 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. - + Treshold + - MISS - + Absolute value + - Miss rate: - + Amount multiplicator + + + + QWidget - The miss function will make the arpeggiator miss the intended note. - + Name: + 이름: - CYCLE - + Maker: + 제작자: - Cycle notes: - + Copyright: + 저작권: - note(s) - + Requires Real Time: + - 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. - + Yes + - - - InstrumentFunctionNoteStacking - octave - 옥타브 + No + 아니오 - Major - + Real Time Capable: + 실제 시간 가능: - Majb5 - + In Place Broken: + 깨진 곳에 위치: - minor - + Channels In: + 입력 채널: - minb5 - + Channels Out: + 출력 채널: - sus2 - + File: + 파일: - sus4 - + File: %1 + 파일: %1 + + + ReverbSCControlDialog - aug - + Input + 입력 - augsus4 - + Size + - tri - + Size: + - 6 - + Color + - 6sus4 - + Color: + - 6add9 - + Output + 출력 - m6 - + Input gain: + 입력 이득: - m6add9 - + Output gain: + 출력 이득: + + + ReverbSCControls - 7 - + Size + - 7sus4 - + Color + - 7#5 - + Input gain + 입력 이득 - 7b5 - + Output gain + 출력 이득 + + + SpectrumAnalyzerControlDialog - 7#9 - + Linear spectrum + 선형 스펙트럼 - 7b9 - + Linear Y axis + 선형 Y축 + + + SpectrumAnalyzerControls - 7#5#9 - + Linear spectrum + 선형 스펙트럼 - 7#5b9 - + Linear Y axis + 선형 Y축 - 7b5b9 - + Channel mode + 채널 모드 + + + TrackContainer - 7add11 - + Cancel + 취소 - 7add13 - + Please wait... + 잠시만 기다려 주세요... - 7#11 - + Importing MIDI-file... + MIDI 파일을 가져오는중... + + + TripleOscillatorView - Maj7 - + Synchronize oscillator 1 with oscillator 2 + - Maj7b5 - + Synchronize oscillator 2 with oscillator 3 + - Maj7#5 - + Osc %1 volume: + 오실레이터 %1 볼륨: - Maj7#11 - + Osc %1 panning: + - Maj7add13 - + Osc %1 coarse detuning: + - m7 - + semitones + 반음 - m7b5 - + Osc %1 fine detuning left: + - m7b9 - + cents + 센트 - m7add11 - + Osc %1 fine detuning right: + - m7add13 - + Osc %1 phase-offset: + - m-Maj7 - + degrees + - m-Maj7add11 - + Osc %1 stereo phase-detuning: + - m-Maj7add13 - + Modulate phase of oscillator 1 by oscillator 2 + - 9 - + Modulate amplitude of oscillator 1 by oscillator 2 + - 9sus4 - + Mix output of oscillators 1 & 2 + - add9 - + Modulate frequency of oscillator 1 by oscillator 2 + - 9#5 - + Modulate phase of oscillator 2 by oscillator 3 + - 9b5 - + Modulate amplitude of oscillator 2 by oscillator 3 + - 9#11 - + Mix output of oscillators 2 & 3 + - 9b13 - + Modulate frequency of oscillator 2 by oscillator 3 + - Maj9 - + Sine wave + 사인파 - Maj9sus4 - + Triangle wave + 삼각파 - Maj9#5 - + Saw wave + 톱니파 - Maj9#11 - + Square wave + 사각파 - m9 - + Moog-like saw wave + - madd9 - + Exponential wave + - m9b5 - + White noise + 화이트 노이즈 - m9-Maj7 - + User-defined wave + + + + VestigeInstrumentView - 11 - + Show/hide GUI + GUI 보이기/숨기기 - 11b9 - + Turn off all notes + 모든 음 끄기 - Maj11 - + DLL-files (*.dll) + DLL 파일 (*.dll) - m11 - + EXE-files (*.exe) + EXE 파일 (*.exe) - m-Maj11 - + Previous (-) + 이전 (-) - 13 - + Save preset + 프리셋 저장 - 13#9 - + Next (+) + 다음 (+) - 13b9 - + Preset + 프리셋 - 13b5b9 - + by + - Maj13 - + - VST plugin control + - m13 - + Open VST plugin + - m-Maj13 - + Control VST plugin from LMMS host + - Harmonic minor - 화성 단음계 + Open VST plugin preset + - Melodic minor - 가락 단음계 + No VST plugin loaded + + + + VstEffectControlDialog - Whole tone - + Show/hide + 보이기/숨기기 - Diminished - + Previous (-) + 이전 (-) - Major pentatonic - + Next (+) + 다음 (+) - Minor pentatonic - + Save preset + 프리셋 저장 - Jap in sen - + Effect by: + - Major bebop - - - - Dominant bebop - - - - Blues - + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /> + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /> - Arabic - + Control VST plugin from LMMS host + - Enigmatic - + Open VST plugin preset + + + + VstPlugin - Neopolitan - + Loading plugin + 플러그인 읽는 중 - Neopolitan minor - + Open Preset + 프리셋 열기 - Hungarian minor - + Vst Plugin Preset (*.fxp *.fxb) + VST 플러그인 프리셋 (*.fxp *.fxb) - Dorian - + : default + - Phrygolydian - + " + - Lydian - + ' + - Mixolydian - + Save Preset + 프리셋 저장 - Aeolian - + .fxp + .fxp - Locrian - + .FXP + .FXP - Chords - + .FXB + .FXB - Chord type - + .fxb + .fxb - Chord range - + Please wait while loading VST plugin... + VST 플러그인을 읽을 동안 잠시 기다려 주세요... - Minor - + The VST plugin %1 could not be loaded. + VST 플러그인 %1을 불러올 수 없습니다. + + + WatsynInstrument - Chromatic - + Volume A1 + A1 볼륨 - Half-Whole Diminished - + Volume A2 + A2 볼륨 - 5 - + Volume B1 + B1 볼륨 - Phrygian dominant - + Volume B2 + B2 볼륨 - Persian - + Panning A1 + A1 패닝 - - - InstrumentFunctionNoteStackingView - RANGE - 범위 + Panning A2 + A2 패닝 - Chord range: - 코드 범위: + Panning B1 + B1 패닝 - octave(s) - 옥타브 + Panning B2 + B2 패닝 - Use this knob for setting the chord range in octaves. The selected chord will be played within specified number of octaves. - 이 노브를 사용하여 코드 범위를 옥타브 단위로 설정합니다. 코드는 설정된 옥타브만큼 재생됩니다. + Freq. multiplier A1 + - STACKING - + Freq. multiplier A2 + - Chord: - 코드: + Freq. multiplier B1 + - - - InstrumentMidiIOView - ENABLE MIDI INPUT - MIDI 입력 활성화 + Freq. multiplier B2 + - CHANNEL - 채널 + Left detune A1 + - VELOCITY - 벨로시티 + Left detune A2 + - ENABLE MIDI OUTPUT - MIDI 출력 활성화 + Left detune B1 + - PROGRAM - 프로그램 + Left detune B2 + - MIDI devices to receive MIDI events from - + Right detune A1 + - MIDI devices to send MIDI events to - + Right detune A2 + - NOTE - + Right detune B1 + - CUSTOM BASE VELOCITY - + Right detune B2 + - Specify the velocity normalization base for MIDI-based instruments at 100% note velocity - + A-B Mix + - BASE VELOCITY - + A-B Mix envelope amount + - - - InstrumentMiscView - MASTER PITCH - 마스터 피치 + A-B Mix envelope attack + - Enables the use of Master Pitch - 마스터 피치 사용 + A-B Mix envelope hold + - - - InstrumentSoundShaping - VOLUME - 볼륨 + A-B Mix envelope decay + - Volume - 볼륨 + A1-B2 Crosstalk + - CUTOFF - 컷오프 + A2-A1 modulation + - Cutoff frequency - 차단 주파수 + B2-B1 modulation + - RESO - 공명 + Selected graph + + + + WatsynView - Resonance - 공명 + Select oscillator A1 + - Envelopes/LFOs - 엔벨로프/LFO + Select oscillator A2 + - Filter type - 필터 종류 + Select oscillator B1 + - Q/Resonance - Q/공명 + Select oscillator B2 + - LowPass - + Mix output of A2 to A1 + - HiPass - + Mix output of B2 to B1 + - BandPass csg - + Draw your own waveform here by dragging your mouse on this graph. + 드래그하여 원하는 파형을 그리세요. - BandPass czpg - + Load waveform + 파형 불러오기 - Notch - + Phase left + 왼쪽 위상 - Allpass - + Phase right + 오른쪽 위상 - Moog - + Normalize + 일반화 - 2x LowPass - + Invert + 파형 반전 - RC LowPass 12dB - + Smooth + 부드럽게 - RC BandPass 12dB - + Sine wave + 사인파 - RC HighPass 12dB - + Triangle wave + 삼각파 - RC LowPass 24dB - + Square wave + 사각파 - RC BandPass 24dB - + Volume + 볼륨 - RC HighPass 24dB - + Panning + 패닝 - Vocal Formant Filter - + Freq. multiplier + - 2x Moog - + Left detune + - SV LowPass - + cents + 센트 - SV BandPass - + Right detune + - SV HighPass - + A-B Mix + - SV Notch - + Mix envelope amount + - Fast Formant - + Mix envelope attack + - Tripole - + Mix envelope hold + - - - InstrumentSoundShapingView - TARGET - 대상 + Mix envelope decay + - 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...! - + Crosstalk + - FILTER - 필터 + Modulate amplitude of A1 by output of A2 + - 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. - + Ring modulate A1 and A2 + - Hz - Hz + Modulate phase of A1 by output of A2 + - 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... - + Modulate amplitude of B1 by output of B2 + - RESO - 공명 + Ring modulate B1 and B2 + - Resonance: - 공명: + Modulate phase of B1 by output of B2 + - 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. - + Load a waveform from a sample file + - FREQ - 주파수 + Shift phase by -15 degrees + - cutoff frequency: - 차단 주파수: + Shift phase by +15 degrees + - Envelopes, LFOs and filters are not supported by the current instrument. - 이 악기는 엔벨로프, LFO, 필터를 지원하지 않습니다. + Saw wave + 톱니파 - InstrumentTrack + Xpressive - unnamed_track - 이름 없는 트랙 + Selected graph + - Volume - 볼륨 + A1 + - Panning - 패닝 + A2 + - Pitch - 피치 + A3 + - FX channel - FX 채널 + W1 smoothing + - Default preset - 기본 프리셋 + W2 smoothing + - With this knob you can set the volume of the opened channel. - 이 노브를 이용하여 트랙의 볼륨을 조절할 수 있습니다. + W3 smoothing + - Base note - + Panning 1 + - Pitch range - 피치 범위 + Panning 2 + - Master Pitch - 마스터 피치 + Rel trans + - InstrumentTrackView + XpressiveView - Volume - 볼륨 + Draw your own waveform here by dragging your mouse on this graph. + 드래그하여 원하는 파형을 그리세요. - Volume: - 볼륨: + Select oscillator W1 + - VOL - 볼륨 + Select oscillator W2 + - Panning - 패닝 + Select oscillator W3 + - Panning: - 패닝: + Select output O1 + - PAN - 패닝 + Select output O2 + - MIDI - + Open help window + - Input - 입력 + Sine wave + 사인파 - Output - 출력 + Moog-saw wave + - FX %1: %2 - FX %1: %2 + Exponential wave + - - - InstrumentTrackWindow - GENERAL SETTINGS - 일반 설정 + Saw wave + 톱니파 - Instrument volume - 악기 볼륨 + User-defined wave + - Volume: - 볼륨: + Triangle wave + 삼각파 - VOL - 볼륨 + Square wave + 사각파 - Panning - 패닝 + White noise + 화이트 노이즈 - Panning: - 패닝: + WaveInterpolate + - PAN - 패닝 + ExpressionValid + - Pitch - 피치 + General purpose 1: + - Pitch: - 피치: + General purpose 2: + - cents - 센트 + General purpose 3: + - PITCH - 피치 + O1 panning: + - FX channel - FX 채널 + O2 panning: + - FX - FX + Release transition: + - Save preset - 프리셋 저장 + Smoothness + + + + ZynAddSubFxInstrument - XML preset file (*.xpf) - XML 프리셋 파일 (*.xpf) + Portamento + 포르타멘토 - Pitch range (semitones) - 피치 범위(반음) + Bandwidth + 대역폭 - RANGE - 범위 + Filter frequency + - Save current instrument track settings in a preset file - 프리셋 파일에 현재 악기 트랙의 설정 저장 + Filter resonance + - 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. - 클릭하여 설정을 프리셋 파일에 저장합니다. 나중에 프리셋 탐색기에서 더블클릭하여 다시 불러올 수 있습니다. + FM gain + - Use these controls to view and edit the next/previous track in the song editor. - 이 컨트롤을 이용하여 노래 편집기의 이전/다음 트랙을 보고 편집합니다. + Resonance center frequency + - SAVE - 저장 + Resonance bandwidth + - Envelope, filter & LFO - + Forward MIDI control change events + + + + ZynAddSubFxView - Chord stacking & arpeggio - + Show GUI + GUI 표시 - Effects - + Portamento: + 포르타멘토: - MIDI settings - MIDI 설정 + PORT + 포르타멘토 - Miscellaneous - + FREQ + 주파수 - Plugin - + RES + 공명 - - - Knob - Set linear - 선형으로 설정 + Bandwidth: + 대역폭: - Set logarithmic - 로그스케일로 설정 + BW + 대역폭 - Please enter a new value between %1 and %2: - %1부터 %2까지의 값을 입력하세요: + FM GAIN + FM 이득 - Please enter a new value between -96.0 dBFS and 6.0 dBFS: - -96.0 dBFS부터 6.0 dBFS까지의 값을 입력하세요: + Resonance center frequency: + - - - LadspaControl - Link channels - 채널 링크 + RES CF + - - - LadspaControlDialog - Link Channels - 채널 링크 + Resonance bandwidth: + - Channel - 채널 + RES BW + - - - LadspaControlView - Link channels - 채널 링크 + Filter frequency: + - Value: - 값: + Filter resonance: + - Sorry, no help available. - 죄송합니다. 도움말을 사용할 수 없습니다. + FM gain: + - - - LadspaEffect - Unknown LADSPA plugin %1 requested. - 알 수 없는 LADSPA 플러그인 %1이(가) 요청되었습니다. + Forward MIDI control changes + - LcdSpinBox + audioFileProcessor - Please enter a new value between %1 and %2: - %1부터 %2까지의 값을 입력하세요: + Amplify + 증폭 - - - LeftRightNav - Previous - 이전 + Start of sample + 샘플 시작 - Next - 다음 + End of sample + 샘플 끝 - Previous (%1) - 이전 (%1) + Reverse sample + 샘플 역으로 - Next (%1) - 다음 (%1) + Stutter + - - - LfoController - LFO Controller - LFO 컨트롤러 + Loopback point + - Base value - + Loop mode + 루프 모드 - Oscillator speed - + Interpolation mode + 보간법 - Oscillator amount - + None + 없음 - Oscillator phase - 오실레이터 위상 + Linear + 선형 - Oscillator waveform - 오실레이터 파형 + Sinc + - Frequency Multiplier - + Sample not found: %1 + 샘플 %1을 찾을 수 없음 - LfoControllerDialog + bitInvader - LFO - LFO + Sample length + + + + bitInvaderView - LFO Controller - LFO 컨트롤러 + Sine wave + 사인파 - BASE - + Triangle wave + 삼각파 - Base amount: - + Saw wave + 톱니파 - todo - + Square wave + 사각파 - SPD - + Interpolation + 보간 - LFO-speed: - + Normalize + 규격화 - Use this knob for setting speed of the LFO. The bigger this value the faster the LFO oscillates and the faster the effect. - 이 노브를 사용하여 LFO의 속도를 설정합니다. 값이 클수록 LFO 진동이 빨라지게 됩니다. + Draw your own waveform here by dragging your mouse on this graph. + 드래그하여 원하는 파형을 그리세요. - Modulation amount: - + Sample length + - 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. - + White noise + 화이트 노이즈 - PHS - + User-defined wave + - Phase offset: - + Smooth waveform + 파형을 부드럽게 + + + dynProcControlDialog - degrees - + INPUT + 입력 - 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. - + Input gain: + 입력 이득: - Click here for a sine-wave. - 클릭하여 사인파를 선택합니다. + OUTPUT + 출력 - Click here for a triangle-wave. - 클릭하여 삼각파를 선택합니다. + Output gain: + 출력 이득: - Click here for a saw-wave. - 클릭하여 톱니파를 선택합니다. + ATTACK + - Click here for a square-wave. - 클릭하여 사각파를 선택합니다. + Peak attack time: + - Click here for an exponential wave. - 클릭하여 지수형 파형을 선택합니다. + RELEASE + - Click here for white-noise. - 클릭하여 화이트 노이즈를 선택합니다. + Peak release time: + - Click here for a user-defined shape. -Double click to pick a file. - 클릭하여 사용자 지정 파형을 선택합니다. -더블클릭하여 파일을 선택하세요. + Process based on the maximum of both stereo channels + - Click here for a moog saw-wave. - + Process based on the average of both stereo channels + - AMNT - + Process each stereo channel independently + - - - LmmsCore - Generating wavetables - + Reset wavegraph + - Initializing data structures - 자료 구조 초기화 중 + Smooth wavegraph + - Opening audio and midi devices - 오디오 장치와 미디 장치를 여는 중 + Increase wavegraph amplitude by 1 dB + - Launching mixer threads - 믹서 스레드를 시작하는 중 + Decrease wavegraph amplitude by 1 dB + - - - MainWindow - &New - 새로 만들기(&N) + Stereo mode: maximum + - &Open... - 열기(&O)... + Stereo mode: average + - &Save - 저장(&S) + Stereo mode: unlinked + + + + dynProcControls - Save &As... - 다른 이름으로 저장(&A)... + Input gain + 입력 이득 - Import... - 가져오기... + Output gain + 출력 이득 - E&xport... - 내보내기(&X)... + Attack time + - &Quit - 끝내기(&Q) + Release time + - &Edit - 편집(&E) + Stereo mode + 스테레오 모드 + + + kickerInstrument - Settings - 설정 + Start frequency + 시작 주파수 - &Tools - 도구(&T) + End frequency + 끝 주파수 - &Help - 도움말(&H) + Gain + 이득 - Help - 도움말 + Length + 길이 - What's this? - + Noise + 잡음 - About - 정보 + Click + - Create new project - 새 프로젝트 생성 + Start from note + - Create new project from template - 템플릿에서 새 프로젝트 생성 + End to note + - Open existing project - 기존 프로젝트 열기 + Start distortion + - Recently opened projects - 최근에 사용한 프로젝트 + End distortion + - Save current project - 현재 프로젝트 저장 + Envelope slope + - Export current project - 현재 프로젝트 내보내기 + Frequency slope + + + + kickerInstrumentView - Song Editor - 노래 편집기 + Start frequency: + 시작 주파수: - 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. - + End frequency: + 끝 주파수: - Beat+Bassline Editor - 비트/베이스 라인 편집기 + Gain: + 이득: - 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. - + Click: + - Piano Roll - 피아노 롤 + Noise: + - Click here to show or hide the Piano-Roll. With the help of the Piano-Roll you can edit melodies in an easy way. - + Frequency slope: + - Automation Editor - 오토메이션 편집기 + Envelope length: + - 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. - + Envelope slope: + - FX Mixer - FX 믹서 + Start distortion: + - 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. - + End distortion: + + + + ladspaBrowserView - Project Notes - 프로젝트 노트 + Available Effects + 사용 가능한 효과 - Click here to show or hide the project notes window. In this window you can put down your project notes. - + Unavailable Effects + 사용 불가능한 효과 - Controller Rack - 컨트롤러 랙 + Instruments + 악기 - Untitled - 제목 없음 + Analysis Tools + 분석 도구 - LMMS %1 - LMMS %1 + Don't know + 알 수 없음 - Project not saved - 프로젝트 저장되지 않음 + Type: + 형태: + + + ladspaDescription - The current project was modified since last saving. Do you want to save it now? - 이 프로젝트는 마지막 저장 이후 수정되었습니다. 지금 저장하시겠습니까? + Plugins + 플러그인 - Help not available - 도움말 사용 불가 + Description + 요약 + + + ladspaPortDialog - Currently there's no help available in LMMS. -Please visit http://lmms.sf.net/wiki for documentation on LMMS. - + Ports + 포트 - LMMS (*.mmp *.mmpz) - LMMS (*.mmp *.mmpz) + Name + 이름 - Version %1 - 버전 %1 + Rate + 종류 - Configuration file - 설정 파일 + Direction + 방향 - Error while parsing configuration file at line %1:%2: %3 - 설정 파일 분석 중 오류 발생 (행 %1:%2: %3) + Type + 형태 - Volumes - 볼륨 + Min < Default < Max + 최소 < 기본 < 최대 - Undo - 실행 취소 + Logarithmic + 로그 - Redo - 다시 실행 + SR Dependent + SR 의존 - My Projects - 내 프로젝트 + Audio + 오디오 - My Samples - 내 샘플 + Control + 컨트롤 - My Presets - 내 사전 설정 + Input + 입력 - My Home - 내 홈 디렉터리 + Output + 출력 - My Computer - 내 컴퓨터 + Toggled + 토글 - &File - 파일(&F) + Integer + 정수 - &Recently Opened Projects - 최근에 사용한 프로젝트(&R) + Float + 실수 - Save as New &Version - 새로운 버전으로 저장(&V) + Yes + + + + lb302Synth - E&xport Tracks... - 트랙 내보내기(&X)... + VCF Cutoff Frequency + VCF 차단 주파수 - Online Help - 온라인 도움말 + VCF Resonance + VCF 공명 - What's This? - + VCF Envelope Mod + VCF 엔벨로프 모드 - Open Project - 프로젝트 열기 + VCF Envelope Decay + VCF 엔벨로프 감쇄 - Save Project - 프로젝트 저장 + Distortion + 디스토션 - Project recovery - 프로젝트 복구 + Waveform + 파형 - 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? - + Slide Decay + 슬라이드 감소 - Recover - 복구 + Slide + 슬라이드 - Recover the file. Please don't run multiple instances of LMMS when you do this. - + Accent + - Discard - 저장하지 않음 + Dead + - Launch a default session and delete the restored files. This is not reversible. - + 24dB/oct Filter + 24dB/oct 필터 + + + lb302SynthView - Preparing plugin browser - 플러그인 탐색기 준비 + Cutoff Freq: + 차단 주파수: - Preparing file browsers - 파일 탐색기 준비 + Resonance: + 공명: - Root directory - 최상위 디렉토리 + Env Mod: + 엔벨로프 변조: - Loading background artwork - + Decay: + 감쇄: - New from template - 템플릿에서 새 프로젝트 생성 + 303-es-que, 24dB/octave, 3 pole filter + - Save as default template - 기본 템플릿으로 저장 + Slide Decay: + 슬라이드 감쇄: - &View - 보기(&V) + DIST: + 디스토션: - Toggle metronome - 메트로놈 토글 + Saw wave + 톱니파 - Show/hide Song-Editor - 노래 편집기 보이기/숨기기 + Click here for a saw-wave. + 클릭하여 톱니파를 선택합니다. - Show/hide Beat+Bassline Editor - 비트/베이스 라인 편집기 보이기/숨기기 + Triangle wave + 삼각파 - Show/hide Piano-Roll - 피아노-롤 보이기/숨기기 + Click here for a triangle-wave. + 클릭하여 삼각파를 선택합니다. - Show/hide Automation Editor - 오토메이션 편집기 보이기/숨기기 + Square wave + 사각파 - Show/hide FX Mixer - FX 믹서 보이기/숨기기 + Click here for a square-wave. + 클릭하여 사각파를 선택합니다. - Show/hide project notes - 프로젝트 노트 보이기/숨기기 + Rounded square wave + 둥근 사각파 - Show/hide controller rack - 컨트롤러 랙 보이기/숨기기 + Click here for a square-wave with a rounded end. + 클릭하여 둥근 사각파를 선택합니다. - Recover session. Please save your work! - + Moog wave + 무그 파형 - Recovered project not saved - 복구된 프로젝트가 저장되지 않음 + Click here for a moog-like wave. + 클릭하여 무그 파형을 선택합니다. - 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? - 이 프로젝트는 이전 세션으로부터 복구되었지만 아직 저장되지 않았습니다. 저장하지 않을 경우 지금까지의 작업을 잃게 될 것입니다. 지금 저장하시겠습니까? + Sine wave + 사인파 - LMMS Project - LMMS 프로젝트 - - - LMMS Project Template - LMMS 프로젝트 템플릿 - - - Overwrite default template? - 기본 템플릿을 덮어쓰시겠습니까? - - - This will overwrite your current default template. - 이 작업은 현재의 기본 템플릿을 덮어씁니다. - - - Smooth scroll - 부드러운 스크롤 - - - Enable note labels in piano roll - - - - Save project template - 프로젝트 템플릿 저장 - - - Volume as dBFS - 볼륨을 dBFS 단위로 표시 - - - 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! - 파일 %1을(를) 쓰기 위하여 열 수 없습니다. -경로에 파일이 존재하고 파일에 쓸 수 있는 권한이 있는지 확인 후 다시 시도하시기 바랍니다! - - - Export &MIDI... - - - - - MeterDialog - - Meter Numerator - - - - Meter Denominator - - - - TIME SIG - 박자 - - - - MeterModel - - Numerator - 분자 - - - Denominator - 분모 - - - - MidiController - - MIDI Controller - MIDI 컨트롤러 - - - unnamed_midi_controller - 이름 없는 MIDI 컨트롤러 - - - - 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 - 트랙 - - - - MidiJack - - JACK server down - When JACK(JACK Audio Connection Kit) disconnects, it will show the following message (title) - JAK 서버 종료 - - - The JACK server seems to be shuted down. - When JACK(JACK Audio Connection Kit) disconnects, it will show the following message (dialog message) - JACK 서버가 종료된 것 같습니다. - - - - MidiPort - - Input channel - 입력 채널 - - - Output channel - 출력 채널 - - - Input controller - 입력 컨트롤러 - - - Output controller - 출력 컨트롤러 - - - Fixed input velocity - 입력 벨로시티 고정값 - - - Fixed output velocity - 출력 벨로시티 고정값 - - - Output MIDI program - 출력 MIDI 프로그램 - - - Receive MIDI-events - - - - Send MIDI-events - - - - Fixed output note - - - - Base velocity - - - - - MidiSetupWidget - - DEVICE - 장치 - - - - MonstroInstrument - - Osc 1 Volume - 오실레이터 1 볼륨 - - - Osc 1 Panning - 오실레이터 1 패닝 - - - Osc 1 Coarse detune - - - - Osc 1 Fine detune left - - - - Osc 1 Fine detune right - - - - Osc 1 Stereo phase offset - - - - Osc 1 Pulse width - 오실레이터 1 펄스 폭 - - - Osc 1 Sync send on rise - - - - Osc 1 Sync send on fall - - - - Osc 2 Volume - 오실레이터 2 볼륨 - - - Osc 2 Panning - 오실레이터 2 패닝 - - - Osc 2 Coarse detune - - - - Osc 2 Fine detune left - - - - Osc 2 Fine detune right - - - - Osc 2 Stereo phase offset - - - - Osc 2 Waveform - 오실레이터 2 파형 - - - Osc 2 Sync Hard - - - - Osc 2 Sync Reverse - - - - Osc 3 Volume - 오실레이터 3 볼륨 - - - Osc 3 Panning - 오실레이터 3 패닝 - - - Osc 3 Coarse detune - - - - Osc 3 Stereo phase offset - - - - Osc 3 Sub-oscillator mix - - - - Osc 3 Waveform 1 - 오실레이터 3 파형 1 - - - Osc 3 Waveform 2 - 오실레이터 3 파형 2 - - - Osc 3 Sync Hard - - - - Osc 3 Sync Reverse - - - - LFO 1 Waveform - LFO 1 파형 - - - LFO 1 Attack - - - - LFO 1 Rate - - - - LFO 1 Phase - - - - LFO 2 Waveform - LFO 2 파형 - - - 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 - - - - - 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. - -Each modulation target has 4 knobs, one for each modulator. By default the knobs are at 0, which means no modulation. Turning a knob to 1 causes that modulator to affect the modulation target as much as possible. Turning it to -1 does the same, but the modulation is inversed. - - - - Mix Osc2 with Osc3 - - - - Modulate amplitude of Osc3 with Osc2 - 오실레이터 2로 오실레이터 3의 진폭 변조 - - - Modulate frequency of Osc3 with Osc2 - 오실레이터 2로 오실레이터 3의 주파수 변조 - - - Modulate phase of Osc3 with Osc2 - 오실레이터 2로 오실레이터 3의 위상 변조 - - - 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. - 오실레이터 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 - - - - - MultitapEchoControlDialog - - Length - 길이 - - - Step length: - - - - Dry - - - - Dry Gain: - - - - Stages - - - - Lowpass stages: - - - - Swap inputs - - - - Swap left and right input channel for reflections - - - - - 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 - 비브라토 - - - - NesInstrumentView - - Volume - 볼륨 - - - Coarse detune - - - - Envelope length - - - - Enable channel 1 - 채널 1 활성화 - - - Enable envelope 1 - 엔벨로프 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 - 채널 2 활성화 - - - Enable envelope 2 - 엔벨로프 2 활성화 - - - Enable envelope 2 loop - - - - Enable sweep 2 - - - - Enable channel 3 - 채널 3 활성화 - - - Noise Frequency - - - - Frequency sweep - - - - Enable channel 4 - 채널 4 활성화 - - - Enable envelope 4 - 엔벨로프 4 활성화 - - - Enable envelope 4 loop - - - - Quantize noise frequency when using note frequency - - - - Use note frequency for noise - - - - Noise mode - - - - Master Volume - 마스터 볼륨 - - - Vibrato - 비브라토 - - - - 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 - 오실레이터 %1 파형 - - - Osc %1 harmonic - - - - - PatchesDialog - - Qsynth: Channel Preset - - - - Bank selector - - - - Bank - 뱅크 - - - Program selector - - - - Patch - 패치 - - - Name - 이름 - - - OK - 확인 - - - Cancel - 취소 - - - - 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) - 패치 파일 (*.pat) - - - - PatternView - - Open in piano-roll - 피아노-롤에서 열기 - - - Clear all notes - 전체 음표 지우기 - - - Reset name - 이름 초기화 - - - Change name - 이름 바꾸기 - - - Add steps - 단계 더하기 - - - Remove steps - 단계 제거 - - - Clone Steps - - - - - 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. - - - - - PeakControllerDialog - - PEAK - - - - LFO Controller - LFO 컨트롤러 - - - - PeakControllerEffectControlDialog - - BASE - - - - Base amount: - - - - Modulation amount: - - - - Attack: - - - - Release: - - - - AMNT - - - - MULT - - - - Amount Multiplicator: - - - - ATCK - - - - DCAY - - - - Treshold: - - - - TRSH - - - - - PeakControllerEffectControls - - Base value - - - - Modulation amount - - - - Mute output - - - - Attack - - - - Release - - - - 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% - 벨로시티: %1% - - - Panning: %1% left - 패닝: %1% 왼쪽 - - - Panning: %1% right - 패닝: %1% 오른쪽 - - - Panning: center - 패닝: 가운데 - - - Please enter a new value between %1 and %2: - %1부터 %2까지의 값을 입력하세요: - - - Mark/unmark all corresponding octave semitones - - - - Select all notes on this key - 이 음의 음표 모두 선택 - - - - PianoRollWindow - - Play/pause current pattern (Space) - 현재 패턴 재생/일시정지 (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) - 현재 패턴 정지 (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) - 그리기 모드 (Shift+D) - - - Erase mode (Shift+E) - 지우기 모드 (Shift+E) - - - Select mode (Shift+S) - 선택 모드 (Shift+S) - - - Detune mode (Shift+T) - 피치 조절 모드(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. - 여기를 클릭하면 그리기 모드가 활성화됩니다. 그리기 모드에서는 음표를 추가, 이동할 수 있으며 길이를 조절할 수도 있습니다. 이 모드는 대부분의 경우에 사용되는 기본 모드입니다. 'Shift+D' 키를 눌러 이 모드를 활성화할 수도 있습니다. 이 모드에서 %1키를 누르면 일시적으로 선택 모드로 전환됩니다. - - - 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. - 여기를 클릭하면 선택 모드가 활성화됩니다. 선택 모드에서는 음표를 선택할 수 있습니다. 그리기 모드에서 %1키를 누르면 일시적으로 선택 모드로 전환됩니다. - - - 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. - 여기를 클릭하면 피치 조절 모드가 활성화됩니다. 피치 조절 모드에서 음표를 클릭하면 해당 음표의 피치 오토메이션 편집 창을 열 수 있습니다. 이 모드를 이용하여 음표 간 피치 슬라이드를 구현할 수 있습니다. 'Shift+T' 키를 눌러 이 모드를 활성화할 수도 있습니다. - - - Cut selected notes (%1+X) - 선택된 음표 잘라내기 (%1+X) - - - Copy selected notes (%1+C) - 선택된 음표 복사 (%1+C) - - - Paste notes from clipboard (%1+V) - 선택된 음표 붙여넣기 (%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 - 편집 동작 - - - Copy paste controls - 복사/붙여넣기 컨트롤 - - - Timeline controls - - - - Zoom and note controls - - - - Piano-Roll - %1 - 피아노-롤 - %1 - - - Piano-Roll - no pattern - 피아노-롤 - 패턴 없음 - - - Quantize - - - - - PianoView - - Base note - - - - - Plugin - - Plugin not found - 플러그인을 찾을 수 없음 - - - The plugin "%1" wasn't found or could not be loaded! -Reason: "%2" - 플러그인 "%1"을(를) 찾을 수 없거나 읽어올 수 없습니다. -이유: %2 - - - Error while loading plugin - 플러그인 로딩 오류 - - - Failed to load plugin "%1"! - 플러그인 "%1"을(를) 로딩할 수 없습니다! - - - - PluginBrowser - - 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! - LMMS 플러그인 %1은(는) 이름이 %2인 플러그인 디스크립터를 가지고 있지 않습니다! - - - - ProjectNotes - - Edit Actions - - - - &Undo - 실행 취소(&U) - - - %1+Z - - - - &Redo - 다시 실행(&R) - - - %1+Y - - - - &Copy - 복사(&C) - - - %1+C - - - - Cu&t - 잘라내기(&T) - - - %1+X - - - - &Paste - 붙여넣기(&P) - - - %1+V - - - - Format Actions - - - - &Bold - 굵게(&B) - - - %1+B - - - - &Italic - - - - %1+I - - - - &Underline - 밑줄(&U) - - - %1+U - - - - &Left - 왼쪽 정렬(&L) - - - %1+L - - - - C&enter - 가운데 정렬(&E) - - - %1+E - - - - &Right - 오른쪽 정렬(&R) - - - %1+R - - - - &Justify - 양쪽 정렬(&J) - - - %1+J - - - - &Color... - 색(&C)... - - - Project Notes - 프로젝트 노트 - - - Enter project notes here - 여기에 프로젝트 노트를 입력하세요 - - - - ProjectRenderer - - WAV-File (*.wav) - Wave 파일(*.wav) - - - Compressed OGG-File (*.ogg) - 압축 OGG 파일(*.ogg) - - - FLAC-File (*.flac) - FLAC 파일(*.flac) - - - Compressed MP3-File (*.mp3) - 압축 MP3 파일(*.mp3) - - - - QWidget - - Name: - 이름: - - - Maker: - 제작자: - - - Copyright: - 저작권: - - - Requires Real Time: - - - - Yes - - - - No - 아니오 - - - Real Time Capable: - 실제 시간 가능: - - - In Place Broken: - 깨진 곳에 위치: - - - Channels In: - 입력 채널: - - - Channels Out: - 출력 채널: - - - File: - 파일: - - - File: %1 - 파일: %1 - - - - RenameDialog - - Rename... - 이름 바꾸기... - - - - ReverbSCControlDialog - - Input - 입력 - - - Input Gain: - 입력 이득: - - - Size - - - - Size: - - - - Color - - - - Color: - - - - Output - 출력 - - - Output Gain: - 출력 이득: - - - - ReverbSCControls - - Input Gain - 입력 이득 - - - Size - - - - Color - - - - Output Gain - 출력 이득 - - - - SampleBuffer - - Open audio file - 오디오 파일 열기 - - - Wave-Files (*.wav) - Wave 파일(*.wav) - - - OGG-Files (*.ogg) - OGG 파일(*.ogg) - - - DrumSynth-Files (*.ds) - DrumSynth 파일(*.ds) - - - FLAC-Files (*.flac) - FLAC 파일(*.flac) - - - SPEEX-Files (*.spx) - SPEEX 파일(*.spx) - - - VOC-Files (*.voc) - VOC 파일(*.voc) - - - AIFF-Files (*.aif *.aiff) - AIFF 파일 (*.aif *.aiff) - - - AU-Files (*.au) - - - - RAW-Files (*.raw) - - - - All Audio-Files (*.wav *.ogg *.ds *.flac *.spx *.voc *.aif *.aiff *.au *.raw) - 모든 오디오 파일 (*.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 - 오디오 파일은 %1MB보다 작고 %2분보다 짧아야 합니다 - - - - SampleTCOView - - double-click to select sample - 더블클릭하여 샘플 선택 - - - Delete (middle mousebutton) - 삭제(마우스 가운데 버튼) - - - Cut - 잘라내기 - - - Copy - 복사 - - - Paste - 붙여넣기 - - - Mute/unmute (<%1> + middle click) - 음소거/해제 (<%1> + 마우스 가운데 버튼) - - - - SampleTrack - - Sample track - 샘플 트랙 - - - Volume - 볼륨 - - - Panning - 패닝 - - - - SampleTrackView - - Track volume - 트랙 볼륨 - - - Channel volume: - 채널 볼륨: - - - VOL - 볼륨 - - - Panning - 패닝 - - - Panning: - 패닝: - - - PAN - 패닝 - - - - SetupDialog - - Setup LMMS - LMMS 설정 - - - General settings - 일반 설정 - - - BUFFER SIZE - 버퍼 크기 - - - Reset to default-value - 기본값으로 초기화 - - - MISC - 기타 - - - Enable tooltips - 툴팁 활성화 - - - Show restart warning after changing settings - 설정을 변경했을 때 다시 시작 경고 표시 - - - 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 - 저장할 때 백업 파일 생성 - - - LANGUAGE - 언어 - - - Paths - 경로 - - - LMMS working directory - LMMS 작업 경로 - - - VST-plugin directory - VST 플러그인 경로 - - - Background artwork - 배경 아트워크 - - - STK rawwave directory - - - - Default Soundfont File - 기본 사운드폰트 파일 - - - Performance settings - 성능 설정 - - - UI effects vs. performance - UI 효과 vs. 성능 - - - Smooth scroll in Song Editor - 노래 편집기에서 부드러운 스크롤 사용 - - - Show playback cursor in AudioFileProcessor - - - - Audio settings - 오디오 설정 - - - AUDIO INTERFACE - 오디오 인터페이스 - - - MIDI settings - MIDI 설정 - - - MIDI INTERFACE - MIDI 인터페이스 - - - OK - 확인 - - - Cancel - 취소 - - - Restart LMMS - LMMS 다시 시작 - - - Please note that most changes won't take effect until you restart LMMS! - - - - Frames: %1 -Latency: %2 ms - 프레임: %1 -시간 지연: %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. - 여기에서 LMMS 내부 버퍼 크기를 설정할 수 있습니다. 작은 값을 설정하면 시간 지연이 감소하지만 음질 저하나 성능 저하가 일어날 수 있습니다. 이러한 현상은 실시간 커널을 가지지 않는 오래된 시스템에서 자주 발생합니다. - - - Choose LMMS working directory - LMMS 작업 경로 선택 - - - Choose your VST-plugin directory - VST 플러그인 경로 선택 - - - Choose artwork-theme directory - 아트워크 경로 선택 - - - Choose LADSPA plugin directory - LADSPA 플러그인 경로 선택 - - - 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 - GIG 경로 - - - SF2 directory - SF2 경로 - - - LADSPA plugin directories - LADSPA 플러그인 경로 - - - Auto save - 자동 저장 - - - Choose your GIG directory - GIG 경로 선택 - - - Choose your SF2 directory - SF2 경로 선택 - - - minutes - - - - minute - - - - Display volume as dBFS - 볼륨을 dBFS 단위로 표시 - - - Enable auto-save - 자동 저장 활성화 - - - Allow auto-save while playing - 재생 중 자동 저장 허용 - - - Disabled - 비활성화됨 - - - Auto-save interval: %1 - 자동 저장 간격: %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. - 자동 백업의 시간 간격을 %1(으)로 설정합니다. -여전히 프로젝트를 수동으로 저장하는 것을 추천합니다. 재생 중 자동 저장을 비활성화할 수 있으며 일부 오래된 시스템에서는 잘 작동하지 않을 수 있습니다. - - - - Song - - Tempo - 템포 - - - Master volume - 마스터 볼륨 - - - Master pitch - 마스터 피치 - - - Project saved - 프로젝트 저장됨 - - - The project %1 is now saved. - 프로젝트 %1이 저장되었습니다. - - - Project NOT saved. - 프로젝트가 저장되지 않았습니다. - - - The project %1 was not saved! - 프로젝트 %1이 저장되지 않았습니다! - - - Import file - 파일 가져오기 - - - MIDI sequences - MIDI 시퀀스 - - - Hydrogen projects - Hydrogen 프로젝트 - - - 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) - MIDI 파일(*.mid) - - - LMMS Error report - LMMS 오류 보고 - - - Save project - 프로젝트 저장 - - - - 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. - 파일 %1을(를) 열 수 없습니다. 파일을 읽을 수 있는 권한이 없기 때문일 수 있습니다. 파일을 읽을 수 있는 권한이 있는지 확인 후 다시 시도하시기 바랍니다. - - - Error in file - 파일 오류 - - - The file %1 seems to contain errors and therefore can't be loaded. - 파일 %1에 오류가 있어 로딩에 실패하였습니다. - - - Tempo - 템포 - - - TEMPO/BPM - 템포/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). - 곡의 템포는 분당 박자 수(BPM) 단위로 설정할 수 있습니다. 이 값을 바꾸면 곡의 템포를 바꿀 수 있습니다. 한 마디가 4박자인 일반적인 경우 BPM 단위의 템포는 분당 재생되는 1 / 4 마디의 수(4분당 재생되는 마디의 수)와 같습니다. - - - High quality mode - 고음질 모드 - - - Master volume - 마스터 볼륨 - - - master volume - 마스터 볼륨 - - - Master pitch - 마스터 피치 - - - master pitch - 마스터 피치 - - - Value: %1% - 값: %1% - - - Value: %1 semitones - 값: %1반음 - - - 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. - 파일 %1을(를) 쓰기 위하여 열 수 없습니다. 파일을 쓸 수 있는 권한이 없기 때문일 수 있습니다. 파일에 쓸 수 있는 권한이 있는지 확인 후 다시 시도하시기 바랍니다. - - - template - 템플릿 - - - project - 프로젝트 - - - Version difference - 버전 차이 - - - This %1 was created with LMMS %2. - 이 %1은(는) LMMS %2에서 만들어졌습니다. - - - - SongEditorWindow - - Song-Editor - 노래 편집기 - - - Play song (Space) - 노래 재생 (Space) - - - Record samples from Audio-device - 오디오 장치로부터 샘플 녹음 - - - Record samples from Audio-device while playing song or BB track - 노래 또는 비트/베이스 라인 트랙을 재생하는 동안 오디오 장치로부터 샘플 녹음 - - - Stop song (Space) - 노래 정지 (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 - - - - Edit actions - 편집 동작 - - - Timeline controls - - - - Zoom controls - - - - - SpectrumAnalyzerControlDialog - - Linear spectrum - 선형 스펙트럼 - - - Linear Y axis - 선형 Y축 - - - - SpectrumAnalyzerControls - - Linear spectrum - 선형 스펙트럼 - - - Linear Y axis - 선형 Y축 - - - Channel mode - 채널 모드 - - - - SubWindow - - Close - 닫기 - - - Maximize - 최대화 - - - Restore - 복원 - - - - TabWidget - - Settings for %1 - %1에 대한 설정 - - - - TempoSyncKnob - - Tempo Sync - 템포 동기화 - - - No Sync - 동기화 없음 - - - Eight beats - 여덟 박자 - - - Whole note - 온음표 - - - Half note - 2분음표 - - - Quarter note - 4분음표 - - - 8th note - 8분음표 - - - 16th note - 16분음표 - - - 32nd note - 32분음표 - - - Custom... - 사용자 지정... - - - Custom - 사용자 지정 - - - Synced to Eight Beats - 여덟 박자에 동기화됨 - - - Synced to Whole Note - 온음표에 동기화됨 - - - Synced to Half Note - 2분음표에 동기화됨 - - - Synced to Quarter Note - 4분음표에 동기화됨 - - - Synced to 8th Note - 8분음표에 동기화됨 - - - Synced to 16th Note - 16분음표에 동기화됨 - - - Synced to 32nd Note - 32분음표에 동기화됨 - - - - TimeDisplayWidget - - click to change time units - 클릭하여 시간 단위 바꾸기 - - - MIN - - - - SEC - - - - MSEC - 밀리초 - - - BAR - 마디 - - - BEAT - - - - TICK - - - - - 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. - - - - - Track - - Mute - 음소거 - - - Solo - 독주 - - - - 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! - 파일 %1을(를) 읽기 열 수 없습니다. 파일을 읽을 수 있는 권한이 있는지 확인 후 다시 시도하시기 바랍니다! - - - Loading project... - 프로젝트 로딩 중... - - - Cancel - 취소 - - - Please wait... - 잠시만 기다려 주세요... - - - Importing MIDI-file... - MIDI 파일을 가져오는중... - - - Loading Track %1 (%2/Total %3) - 트랙 %1 로딩 중 (%2/총 %3) - - - - TrackContentObject - - Mute - 음소거 - - - - TrackContentObjectView - - Current position - 현재 위치 - - - Hint - - - - Press <%1> and drag to make a copy. - <%1> 키를 누른 채 드래그하여 복사합니다. - - - Current length - 현재 길이 - - - Press <%1> for free resizing. - <%1> 키를 눌러 크기를 자유롭게 조절할 수 있습니다. - - - %1:%2 (%3:%4 to %5:%6) - %1:%2 (%3:%4부터 %5:%6까지) - - - Delete (middle mousebutton) - 삭제(마우스 가운데 버튼) - - - Cut - 잘라내기 - - - Copy - 복사 - - - Paste - 붙여넣기 - - - Mute/unmute (<%1> + middle click) - 음소거/해제 (<%1> + 마우스 가운데 버튼) - - - - 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 - FX %1: %2 - - - Turn all recording on - - - - Turn all recording off - - - - Assign to new FX Channel - 새 FX 채널 할당 - - - - 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: - 오실레이터 %1 볼륨: - - - 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. - 이 노브를 사용하여 오실레이터 %1의 피치를 조절할 수 있습니다. 24반음(두 옥타브) 범위 내에서 조절이 가능합니다. 이 기능은 화음을 가지는 소리를 합성할 때 유용하게 사용될 수 있습니다. - - - 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. - 이 노브를 사용하여 오실레이터 %1의 왼쪽 채널 음정을 미세 조절할 수 있습니다. -100센트부터 +100센트까지의 범위 내에서 조절이 가능합니다. 이 기능은 풍성한 소리를 합성할 때 유용하게 사용될 수 있습니다. - - - 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. - 이 노브를 사용하여 오실레이터 %1의 오른쪽 채널 음정을 미세 조절할 수 있습니다. -100센트부터 +100센트까지의 범위 내에서 조절이 가능합니다. 이 기능은 풍성한 소리를 합성할 때 유용하게 사용될 수 있습니다. - - - 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. - 이 오실레이터에 사용자 지정 파형 사용 - - - - VersionedSaveDialog - - Increment version number - 버전 증가 - - - Decrement version number - 버전 감소 - - - already exists. Do you want to replace it? - 파일이 이미 존재합니다. 덮어쓰시겠습니까? - - - - VestigeInstrumentView - - Open other VST-plugin - 다른 VST 플러그인 열기 - - - 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 - GUI 보이기/숨기기 - - - Click here to show or hide the graphical user interface (GUI) of your VST-plugin. - - - - Turn off all notes - 모든 음 끄기 - - - Open VST-plugin - VST 플러그인 열기 - - - DLL-files (*.dll) - DLL 파일 (*.dll) - - - EXE-files (*.exe) - EXE 파일 (*.exe) - - - No VST-plugin loaded - VST 플러그인이 로딩되지 않음 - - - Control VST-plugin from LMMS host - LMMS에서 VST 플러그인 제어 - - - Click here, if you want to control VST-plugin from host. - LMMS에서 VST 플러그인을 제어하려면 여기를 클릭하세요. - - - Open VST-plugin preset - VST-플러그인 프리셋 열기 - - - 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. - - - - Preset - 프리셋 - - - by - - - - - VST plugin control - - - - - VisualizationWidget - - click to enable/disable visualization of master-output - 클릭하여 출력 파형 표시 활성화/비활성화 - - - Click to enable - 클릭하여 활성화 - - - - VstEffectControlDialog - - Show/hide - 보이기/숨기기 - - - Control VST-plugin from LMMS host - LMMS에서 VST 플러그인 제어 - - - Click here, if you want to control VST-plugin from host. - LMMS에서 VST 플러그인을 제어하려면 여기를 클릭하세요. - - - Open VST-plugin preset - VST-플러그인 프리셋 열기 - - - 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 /> - &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /> - - - - VstPlugin - - Loading plugin - 플러그인 읽는 중 - - - Open Preset - 프리셋 열기 - - - Vst Plugin Preset (*.fxp *.fxb) - VST 플러그인 프리셋 (*.fxp *.fxb) - - - : default - - - - " - - - - ' - - - - Save Preset - 프리셋 저장 - - - .fxp - .fxp - - - .FXP - .FXP - - - .FXB - .FXB - - - .fxb - .fxb - - - Please wait while loading VST plugin... - VST 플러그인을 읽을 동안 잠시 기다려 주세요... - - - The VST plugin %1 could not be loaded. - VST 플러그인 %1을 불러올 수 없습니다. - - - - WatsynInstrument - - Volume A1 - A1 볼륨 - - - Volume A2 - A2 볼륨 - - - Volume B1 - B1 볼륨 - - - Volume B2 - B2 볼륨 - - - Panning A1 - A1 패닝 - - - Panning A2 - A2 패닝 - - - Panning B1 - B1 패닝 - - - Panning B2 - 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 - - - - - 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 - 위상을 -15도만큼 바꾸기 - - - Phase right - 오른쪽 위상 - - - Click to shift phase by +15 degrees - 위상을 +15도만큼 바꾸기 - - - 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 - - - - - ZynAddSubFxInstrument - - Portamento - 포르타멘토 - - - Filter Frequency - 필터 주파수 - - - Filter Resonance - 필터 공명 - - - Bandwidth - 대역폭 - - - FM Gain - - - - Resonance Center Frequency - - - - Resonance Bandwidth - - - - Forward MIDI Control Change Events - - - - - ZynAddSubFxView - - Show GUI - GUI 표시 - - - Click here to show or hide the graphical user interface (GUI) of ZynAddSubFX. - 클릭하여 ZynAddSubFX의 GUI를 표시하거나 숨깁니다. - - - Portamento: - 포르타멘토: - - - PORT - 포르타멘토 - - - Filter Frequency: - 필터 주파수: - - - FREQ - 주파수 - - - Filter Resonance: - 필터 공명: - - - RES - 공명 - - - Bandwidth: - 대역폭: - - - BW - 대역폭 - - - FM Gain: - FM 이득: - - - FM GAIN - FM 이득 - - - Resonance center frequency: - - - - RES CF - - - - Resonance bandwidth: - - - - RES BW - - - - Forward MIDI Control Changes - MIDI 컨트롤 변화(CC) 전달 - - - - audioFileProcessor - - Amplify - 증폭 - - - Start of sample - 샘플 시작 - - - End of sample - 샘플 끝 - - - Reverse sample - 샘플 역으로 - - - Stutter - - - - Loopback point - - - - Loop mode - 루프 모드 - - - Interpolation mode - 보간법 - - - None - 없음 - - - Linear - 선형 - - - Sinc - - - - Sample not found: %1 - 샘플 %1을 찾을 수 없음 - - - - bitInvader - - Samplelength - 샘플 길이 - - - - 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. - 드래그하여 원하는 파형을 그리세요. - - - Click 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 white-noise. - 클릭하여 화이트 노이즈를 선택합니다. - - - Click here for a user-defined shape. - 클릭하여 사용자 지정 파형을 선택합니다. - - - - 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 - - - - - dynProcControls - - Input gain - 입력 이득 - - - Output gain - 출력 이득 - - - Attack time - - - - Release time - - - - Stereo mode - 스테레오 모드 - - - - expressiveView - - Select oscillator W1 - - - - Select oscillator W2 - - - - Select oscillator W3 - - - - Select OUTPUT 1 - - - - Select OUTPUT 2 - - - - Open help window - - - - Sine wave - 사인파 - - - Click for a sine-wave. - 클릭하여 사인파를 선택합니다. - - - Moog-Saw wave - - - - Click for a Moog-Saw-wave. - - - - Exponential wave - - - - Click for an exponential wave. - - - - Saw wave - 톱니파 - - - Click here for a saw-wave. - 클릭하여 톱니파를 선택합니다. - - - User defined wave - 사용자 정의 파형 - - - Click here for a user-defined shape. - 클릭하여 사용자 지정 파형을 선택합니다. - - - Triangle wave - 삼각파 - - - Click here for a triangle-wave. - 클릭하여 삼각파를 선택합니다. - - - Square wave - 사각파 - - - Click here for a square-wave. - 클릭하여 사각파를 선택합니다. - - - White noise wave - 화이트 노이즈 - - - Click here for white-noise. - 클릭하여 화이트 노이즈를 선택합니다. - - - WaveInterpolate - - - - ExpressionValid - - - - General purpose 1: - - - - General purpose 2: - - - - General purpose 3: - - - - O1 panning: - - - - O2 panning: - - - - Release transition: - - - - Smoothness - - - - - fxLineLcdSpinBox - - Assign to: - - - - New FX Channel - 새 FX 채널 - - - - graphModel - - Graph - 그래프 - - - - kickerInstrument - - Start frequency - 시작 주파수 - - - End frequency - 끝 주파수 - - - Gain - 이득 - - - Length - 길이 - - - Distortion Start - 디스토션 시작 값 - - - Distortion End - 디스토션 끝 값 - - - Envelope Slope - - - - Noise - 잡음 - - - Click - - - - Frequency Slope - - - - Start from note - - - - End to note - - - - - kickerInstrumentView - - Start frequency: - 시작 주파수: - - - End frequency: - 끝 주파수: - - - Gain: - 이득: - - - Frequency Slope: - - - - Envelope Length: - 엔벨로프 길이: - - - Envelope Slope: - - - - Click: - - - - Noise: - - - - Distortion Start: - 디스토션 시작 값: - - - Distortion End: - 디스토션 끝 값: - - - - 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. - -Unavailable Effects are those that were identified as effects, but either didn't have the same number of input and output channels or weren't real time capable. - -Instruments are plugins for which only output channels were identified. - -Analysis Tools are plugins for which only input channels were identified. - -Don't Knows are plugins for which no input or output channels were identified. - -Double clicking any of the plugins will bring up information on the ports. - - - - Type: - 형태: - - - - ladspaDescription - - Plugins - 플러그인 - - - Description - 요약 - - - - ladspaPortDialog - - Ports - 포트 - - - Name - 이름 - - - Rate - 종류 - - - Direction - 방향 - - - Type - 형태 - - - Min < Default < Max - 최소 < 기본 < 최대 - - - Logarithmic - 로그 - - - SR Dependent - SR 의존 - - - Audio - 오디오 - - - Control - 컨트롤 - - - Input - 입력 - - - Output - 출력 - - - Toggled - 토글 - - - Integer - 정수 - - - Float - 실수 - - - Yes - - - - - lb302Synth - - VCF Cutoff Frequency - VCF 차단 주파수 - - - VCF Resonance - VCF 공명 - - - VCF Envelope Mod - VCF 엔벨로프 모드 - - - VCF Envelope Decay - VCF 엔벨로프 감쇄 - - - Distortion - 디스토션 - - - Waveform - 파형 - - - Slide Decay - 슬라이드 감소 - - - Slide - 슬라이드 - - - Accent - - - - Dead - - - - 24dB/oct Filter - 24dB/oct 필터 - - - - 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. - - - - - malletsInstrument - - Hardness - - - - Position - 위치 - - - Vibrato Gain - 떨림 이득 - - - Vibrato Freq - 비브라토 주파수 - - - Stick Mix - 스틱 믹스 - - - Modulator - 모듈레이트 - - - Crossfade - 크로스페이드 - - - LFO Speed - LFO 속도 - - - LFO Depth - LFO 깊이 - - - ADSR - ADSR - - - Pressure - 압력 - - - Motion - 모션 - - - Speed - 속도 - - - Bowed - - - - Spread - - - - Marimba - 마림바 - - - Vibraphone - 비브라폰 - - - Agogo - 아고고 - - - Wood1 - - - - Reso - - - - Wood2 - + Click for a sine-wave. + 클릭하여 사인파를 선택합니다. - Beats - + White noise wave + 화이트 노이즈 - Two Fixed - + Click here for an exponential wave. + 클릭하여 지수형 파형을 선택합니다. - Clump - + Click here for white-noise. + 클릭하여 화이트 노이즈를 선택합니다. - Tubular Bells - + Bandlimited saw wave + - Uniform Bar - + Click here for bandlimited saw wave. + - Tuned Bar - + Bandlimited square wave + - Glass - + Click here for bandlimited square wave. + - Tibetan Bowl - + Bandlimited triangle wave + - - - malletsInstrumentView - Instrument - 악기 + Click here for bandlimited triangle wave. + - Spread - + Bandlimited moog saw wave + - Spread: - + Click here for bandlimited moog saw wave. + + + + malletsInstrument Hardness - - - - Hardness: - + Position 위치 - - Position: - 위치: - - - Vib Gain - - - - Vib Gain: - - - - Vib Freq - - - - Vib Freq: - - - - Stick Mix - - - - Stick Mix: - - Modulator - 모듈레이터 - - - Modulator: - + 모듈레이트 Crossfade 크로스페이드 - - Crossfade: - - - - LFO Speed - LFO 속도 - - - LFO Speed: - - - - LFO Depth - LFO 깊이 - - - LFO Depth: - - ADSR ADSR - - ADSR: - - Pressure 압력 - Pressure: - + Motion + 모션 Speed 속도 - Speed: - - - - Missing files - 없는 파일 - - - Your Stk-installation seems to be incomplete. Please make sure the full Stk-package is installed! - Stk 설치가 불완전한 것 같습니다. 완전한 Stk 패키지가 설치되었는지 확인하시기 바랍니다! - - - - 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. - - - - - 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. - - - - - 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 - - - - - opl2instrumentView - - Attack - - - - Decay - - - - Release - - - - Frequency multiplier - - - - - organicInstrument - - Distortion - 디스토션 - - - Volume - 볼륨 - - - - organicInstrumentView - - Distortion: - 디스토션: - - - Volume: - 볼륨: - - - Randomise - - - - Osc %1 waveform: - 오실레이터 %1 파형: - - - Osc %1 volume: - 오실레이터 %1 볼륨: - - - Osc %1 panning: - - - - cents - 센트 - - - The distortion knob adds distortion to the output of the instrument. - - - - The volume knob controls the volume of the output of the instrument. It is cumulative with the instrument window's volume control. - + Bowed + - The randomize button randomizes all knobs except the harmonics,main volume and distortion knobs. - + Spread + - Osc %1 stereo detuning - + Marimba + 마림바 - Osc %1 harmonic: - + Vibraphone + 비브라폰 - - - FreeBoyInstrument - Sweep time - + Agogo + 아고고 - Sweep direction - + Reso + - Sweep RtShift amount - + Beats + - Wave Pattern Duty - + Clump + - Channel 1 volume - + Glass + - Volume sweep direction - + Vibrato gain + - Length of each step in sweep - + Vibrato frequency + - Channel 2 volume - + Stick mix + - Channel 3 volume - + LFO speed + - Channel 4 volume - + LFO depth + - Right Output level - + Wood 1 + - Left Output level - + Wood 2 + - Channel 1 to SO2 (Left) - + Two fixed + - Channel 2 to SO2 (Left) - + Tubular bells + - Channel 3 to SO2 (Left) - + Uniform bar + - Channel 4 to SO2 (Left) - + Tuned bar + - Channel 1 to SO1 (Right) - + Tibetan bowl + + + + malletsInstrumentView - Channel 2 to SO1 (Right) - + Instrument + 악기 - Channel 3 to SO1 (Right) - + Spread + - Channel 4 to SO1 (Right) - + Spread: + - Treble - + Hardness + - Bass - + Hardness: + - Shift Register width - + Position + 위치 - - - FreeBoyInstrumentView - Sweep Time: - + Position: + 위치: - Sweep Time - + Modulator + 모듈레이터 - Sweep RtShift amount: - + Modulator: + - Sweep RtShift amount - + Crossfade + 크로스페이드 - Wave pattern duty: - + Crossfade: + - Wave Pattern Duty - + ADSR + ADSR - Square Channel 1 Volume: - + ADSR: + - Length of each step in sweep: - + Pressure + 압력 - Length of each step in sweep - + Pressure: + - Wave pattern duty - + Speed + 속도 - Square Channel 2 Volume: - + Speed: + - Square Channel 2 Volume - + Missing files + 없는 파일 - Wave Channel Volume: - + Your Stk-installation seems to be incomplete. Please make sure the full Stk-package is installed! + Stk 설치가 불완전한 것 같습니다. 완전한 Stk 패키지가 설치되었는지 확인하시기 바랍니다! - Wave Channel Volume - + Vibrato gain + - Noise Channel Volume: - + Vibrato gain: + - Noise Channel Volume - + Vibrato frequency + - SO1 Volume (Right): - + Vibrato frequency: + - SO1 Volume (Right) - + Stick mix + - SO2 Volume (Left): - + Stick mix: + - SO2 Volume (Left) - + LFO speed + - Treble: - + LFO speed: + LFO 속도: - Treble - + LFO depth + - Bass: - + LFO depth: + + + + manageVSTEffectView - Bass - + - VST parameter control + - Sweep Direction - + Automated + - Volume Sweep Direction - + Close + 닫기 - Shift Register Width - + VST sync + + + + manageVestigeInstrumentView - Channel1 to SO1 (Right) - + - VST plugin control + - Channel2 to SO1 (Right) - + VST Sync + - Channel3 to SO1 (Right) - + Automated + - Channel4 to SO1 (Right) - + Close + 닫기 + + + organicInstrument - Channel1 to SO2 (Left) - + Distortion + 디스토션 - Channel2 to SO2 (Left) - + Volume + 볼륨 + + + organicInstrumentView - Channel3 to SO2 (Left) - + Distortion: + 디스토션: - Channel4 to SO2 (Left) - + Volume: + 볼륨: - Wave Pattern - + Randomise + - The amount of increase or decrease in frequency - + Osc %1 waveform: + 오실레이터 %1 파형: - The rate at which increase or decrease in frequency occurs - + Osc %1 volume: + 오실레이터 %1 볼륨: - The duty cycle is the ratio of the duration (time) that a signal is ON versus the total period of the signal. - + Osc %1 panning: + - Square Channel 1 Volume - + cents + 센트 - The delay between step change - + Osc %1 stereo detuning + - Draw the wave here - + Osc %1 harmonic: + patchesDialog Qsynth: Channel Preset - + Bank selector - + Bank @@ -9327,7 +4288,7 @@ Double clicking any of the plugins will bring up information on the ports. Program selector - + Patch @@ -9348,25 +4309,21 @@ Double clicking any of the plugins will bring up information on the ports. pluginBrowser - - no description - 요약 없음 - Incomplete monophonic imitation tb303 - + Plugin for freely manipulating stereo output - + Plugin for controlling knobs with sound peaks - + Plugin for enhancing stereo separation of a stereo input file - + List installed LADSPA plugins @@ -9374,15 +4331,15 @@ Double clicking any of the plugins will bring up information on the ports. GUS-compatible patch instrument - + Additive Synthesizer for organ-like sounds - + Tuneful things to bang on - + VST-host for using VST(i)-plugins within LMMS @@ -9390,7 +4347,7 @@ Double clicking any of the plugins will bring up information on the ports. Vibrating string modeler - + plugin for using arbitrary LADSPA-effects inside LMMS. @@ -9403,7 +4360,7 @@ Double clicking any of the plugins will bring up information on the ports. Emulation of the MOS6581 and MOS8580 SID. This chip was used in the Commodore 64 computer. - + Player for SoundFont files @@ -9411,103 +4368,103 @@ This chip was used in the Commodore 64 computer. 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 - + A native delay plugin - + Player for GIG files - + A multitap echo delay plugin - + A native flanger plugin - + An oversampling bitcrusher - + A native eq plugin @@ -9515,23 +4472,23 @@ This chip was used in the Commodore 64 computer. A 4-band Crossover Equalizer - + A Dual filter plugin - + Filter for exporting MIDI-files from LMMS - + Reverb algorithm by Sean Costello - + Mathematical expression parser - + @@ -9553,134 +4510,110 @@ This chip was used in the Commodore 64 computer. 리버브 - Reverb Roomsize - 리버브 룸크기 + Chorus + 코러스 - Reverb Damping - 리버브 댐핑 + A soundfont %1 could not be loaded. + 사운드폰트 %1을 불러올 수 없습니다. - Reverb Width - 리버브 너비 + Reverb room size + - Reverb Level - 리버브 레벨 + Reverb damping + - Chorus - 코러스 + Reverb width + - Chorus Lines - 코러스 라인 + Reverb level + - Chorus Level - 코러스 레벨 + Chorus voices + - Chorus Speed - 코러스 속도 + Chorus level + - Chorus Depth - 코러스 깊이 + Chorus speed + - A soundfont %1 could not be loaded. - 사운드폰트 %1을 불러올 수 없습니다. + Chorus depth + sf2InstrumentView - - Open other SoundFont file - 다른 사운드폰트 파일 열기 - - - Click here to open another SF2 file - 클릭하여 다른 SF2 파일 열기 - - - 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: - + Apply chorus (if supported) + 코러스 적용 (지원될 경우) - Reverb Damping: - + Open SoundFont file + 사운드폰트 파일 열기 - Reverb Width: - 리버브 너비: + Choose patch + - Reverb Level: - + Gain: + 이득: - Apply chorus (if supported) - 코러스 적용 (지원될 경우) + Room size: + - This button enables the chorus effect. This is useful for cool echo effects, but only works on files that support it. - 이 버튼은 코러스 효과를 활성화합니다. 이것을 지원하는 파일에서만 작동합니다. + Damping: + - Chorus Lines: - 코러스 라인: + Width: + 너비: - Chorus Level: - 코러스 레벨: + Level: + - Chorus Speed: - 코러스 속도: + Voices: + - Chorus Depth: - 코러스 깊이: + Speed: + - Open SoundFont file - 사운드폰트 파일 열기 + Depth: + - SoundFont2 Files (*.sf2) - 음성글꼴2 파일 (*.sf2) + SoundFont Files (*.sf2 *.sf3) + sfxrInstrument - Wave Form - 파형 + Wave + sidInstrument - - Cutoff - 컷오프 - Resonance 공명 @@ -9691,7 +4624,7 @@ This chip was used in the Commodore 64 computer. Voice 3 off - + Volume @@ -9701,6 +4634,10 @@ This chip was used in the Commodore 64 computer. Chip model 칩 모델 + + Cutoff frequency + 차단 주파수 + sidInstrumentView @@ -9716,137 +4653,101 @@ This chip was used in the Commodore 64 computer. 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. - + Noise + 잡음 - Pulse Wave - 펄스파 + Sync + 동기화 - Triangle Wave - 삼각파 + Filtered + 필터 - SawTooth - 톱니파 + Test + 테스트 - Noise - 잡음 + High-pass filter + - Sync - 동기화 + Band-pass filter + - Sync synchronizes the fundamental frequency of Oscillator %1 with the fundamental frequency of Oscillator %2 producing "Hard Sync" effects. - + Low-pass filter + - Ring-Mod - 링-모듈레이션 + Voice 3 off + - Ring-mod replaces the Triangle Waveform output of Oscillator %1 with a "Ring Modulated" combination of Oscillators %1 and %2. - + Pulse wave + - Filtered - 필터 + Triangle wave + 삼각파 - 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. - + Saw wave + 톱니파 - Test - 테스트 + Ring modulation + - Test, when set, resets and locks Oscillator %1 at zero until Test is turned off. - + Pulse width: + stereoEnhancerControlDialog - - WIDE - 넓게 - Width: 너비: + + WIDTH + + stereoEnhancerControls @@ -9900,8 +4801,8 @@ This chip was used in the Commodore 64 computer. 플러그인 읽는 중 - Please wait while loading VST-plugin... - VST 플러그인을 읽을 동안 잠시 기다려 주세요... + Please wait while loading the VST plugin... + @@ -9912,166 +4813,70 @@ This chip was used in the Commodore 64 computer. String %1 stiffness - + Pick %1 position - + Pickup %1 position - + - Pan %1 - %1번 패닝 + Impulse %1 + - Detune %1 - + String %1 panning + - Fuzziness %1 - + String %1 detune + - Length %1 - %1번 길이 + String %1 fuzziness + - Impulse %1 - + String %1 length + - Octave %1 - 옥타브 %1 + String %1 + 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 Impulse 편집기 - - 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. - -The 'S' button will smooth the waveform. - -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. - -The 'V' knob controls the volume. The 'S' knob controls the string's stiffness. The 'P' knob controls the pick position. The 'PU' knob controls the pickup position. - -'Pan' and 'Detune' hopefully don't need explanation. The 'Slap' knob adds a bit of fuzz to the sound of the string. - -The 'Length' knob controls the length of the string. - -The LED in the lower right corner of the waveform editor determines whether the string is active in the current instrument. - - 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 @@ -10090,79 +4895,75 @@ The LED in the lower right corner of the waveform editor determines whether the 사각파 - White noise wave - 화이트 노이즈 - - - User defined wave - 사용자 정의 파형 + String volume: + - Smooth - 부드럽게 + String panning: + - Click here to smooth waveform. - 클릭하여 파형을 부드럽게 합니다. + String detune: + - Normalize - 규격화 + String fuzziness: + - Click here to normalize waveform. - 클릭하여 파형을 규격화합니다. + String length: + - Use a sine-wave for current oscillator. - 이 오실레이터에 사인파 사용 + Impulse + - Use a triangle-wave for current oscillator. - 이 오실레이터에 삼각파 사용 + Enable/disable string + - Use a saw-wave for current oscillator. - 이 오실레이터에 톱니파 사용 + White noise + 화이트 노이즈 - Use a square-wave for current oscillator. - 이 오실레이터에 사각파 사용 + User-defined wave + - Use white-noise for current oscillator. - + Smooth waveform + 파형을 부드럽게 - Use a user-defined waveform for current oscillator. - 이 오실레이터에 사용자 지정 파형 사용 + 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 @@ -10204,44 +5005,28 @@ The LED in the lower right corner of the waveform editor determines whether the 출력 이득: - 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 - + Clip input + - Click here to increase wavegraph amplitude by 1dB - + Reset wavegraph + - Decrease graph amplitude by 1dB - + Smooth wavegraph + - Click here to decrease wavegraph amplitude by 1dB - + Increase wavegraph amplitude by 1 dB + - Clip input - + Decrease wavegraph amplitude by 1 dB + - Clip input signal to 0dB - + Clip input signal to 0 dB + @@ -10255,4 +5040,4 @@ The LED in the lower right corner of the waveform editor determines whether the 출력 이득 - \ No newline at end of file + diff --git a/data/locale/ru.ts b/data/locale/ru.ts index 1dbba50f17c..f4c1e6a0116 100644 --- a/data/locale/ru.ts +++ b/data/locale/ru.ts @@ -1,65 +1,6 @@ - - - AboutDialog - - About LMMS - О программе LMMS - - - Version %1 (%2/%3, Qt %4, %5) - Версия %1 (%2/%3, Qt %4, %5) - - - About - Подробнее - - - LMMS - easy music production for everyone - LMMS - лёгкое создание музыки для всех - - - Authors - Авторы - - - 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! - Если Вы заинтересованы в переводе LMMS на другой язык или хотите улучшить существующий перевод, мы приветствуем любую помощь! Просто свяжитесь с разработчиками! - -Перевод выполнили: -Alexey Kouznetsov <alexey/dot/kouznetsov/at/gmail/dot/com> -Oe Ai <oeai/at/symbiants/dot/com> - - - License - Лицензия - - - LMMS - ЛММС - - - Involved - Участники - - - Contributors ordered by number of commits: - Разработчики сортированные по числу коммитов: - - - Copyright © %1 - Все права защищены © %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> - <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 @@ -114,94 +55,47 @@ Oe Ai <oeai/at/symbiants/dot/com> Право мощн - - AudioAlsaSetupWidget - - DEVICE - УСТРОЙСТВО - - - CHANNELS - КАНАЛЫ - - 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!) - Эта ручка задаёт коэффициент усиления. При значении 100% исходный звук не меняется, в противном случае ― он будет ослаблен или усилен. (Обратите внимание, что исходная запись при этом останется нетронутой.) - - - 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) - Включение этой опции продолжит воспроизведение записи по разным нотам - если изменить ускорение или длительность ноты остановится до конца записи, то со следующей ноты запись продолжится там, где остановилась, чтобы сбросить воспроизвдение на начало записи, вставьте ноту внизу у клавиш (<20 Гц) - Disable loop Отключить петлю - - This button disables looping. The sample plays only once from start to end. - Эта кнопка отключает петлю (loop-цикл). Запись проигрывается только один раз от начала до конца. - 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. - Эта кнопка включает пинг-понг петлю. Сэмпл кольцуется обратно и вперёд между конечной точкой и точкой петли. + Loopback point: + Точка возврата петли: - With this knob you can set the point where AudioFileProcessor should begin playing your sample. - Этим регулятором можно установить точку где АудиоФайлПроцессор должен начать воспроизведение сэмпла. + Open sample + - With this knob you can set the point where AudioFileProcessor should stop playing your sample. - Этот регулятор устанавливает точку в которой АудиоФайлПроцессор должен перестать воспроизвдение сэмпла. + Enable ping-pong loop + - Loopback point: - Точка возврата петли: + Start point: + - With this knob you can set the point where the loop starts. - Этот регулятор ставит точку начала петли. + End point: + @@ -212,833 +106,792 @@ Oe Ai <oeai/at/symbiants/dot/com> - AudioJack + BassBoosterControlDialog - JACK client restarted - JACK-клиент перезапущен + FREQ + ЧАСТ - 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. - LMMS не был подключен к JACK по какой-то причине, поэтому LMMS подключение к JACK было перезапущено. Вам придётся заново вручную создать соединения. + Frequency: + Частота: - JACK server down - JACK-сервер не доступен + GAIN + МОЩ - 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. - Возможно JACK-сервер был выключен и запуск нового процесса не удался, поэтому ЛММС не может продолжить работу. Вам следует сохранить проект и перезапустить JACK и LMMS. + Gain: + Мощность: - CLIENT-NAME - ИМЯ КЛИЕНТА + RATIO + ОТН - CHANNELS - КАНАЛЫ + Ratio: + Отношение: - AudioOss::setupWidget - - DEVICE - УСТРОЙСТВО - + BassBoosterControls - CHANNELS - КАНАЛЫ + Frequency + Частота - - - AudioPortAudio::setupWidget - BACKEND - УПРАВЛЕНИЕ + Gain + Мощность - DEVICE - УСТРОЙСТВО + Ratio + Отношение - AudioPulseAudio::setupWidget + BitcrushControlDialog - DEVICE - УСТРОЙСТВО + IN + IN - CHANNELS - КАНАЛЫ + OUT + OUT - - - AudioSdl::setupWidget - DEVICE - УСТРОЙСТВО + GAIN + МОЩ - - - AudioSndio::setupWidget - DEVICE - УСТРОЙСТВО + CLIP + СРЕЗ - CHANNELS - КАНАЛЫ + Sample rate: + Частота сэмплирования: - - - AudioSoundIo::setupWidget - BACKEND - БЭКЕНД + Stereo difference: + Стерео разница: - DEVICE - УСТРОЙСТВО + Levels: + Уровни: + + + NOISE + Шум - - - AutomatableModel - &Reset (%1%2) - &R Сбросить (%1%2) + FREQ + FREQ - &Copy value (%1%2) - &C Копировать значение (%1%2) + STEREO + СТЕРЕО - &Paste value (%1%2) - &P Вставить значение (%1%2) + QUANT + - Edit song-global automation - Изменить глоабльную автоматизацию композиции + Input gain: + Входная мощность: - Connected to %1 - Подсоединено к %1 + Input noise: + - Connected to controller - Подсоединено к контроллеру + Output gain: + Выходная мощность: - Edit connection... - Настроить соединение... + Output clip: + - Remove connection - Удалить соединение + Rate enabled + - Connect to controller... - Соединить с контроллером... + Enable sample-rate crushing + - Remove song-global automation - Убрать глобальную автоматизацию композиции + Depth enabled + - Remove all linked controls - Убрать всё присоединенное управление + Enable bit-depth crushing + - AutomationEditor + BitcrushControls - Please open an automation pattern with the context menu of a control! - Откройте редатор автоматизации через контекстное меню регулятора! + Input gain + Входная мощность - Values copied - Значения скопированы + Input noise + - All selected values were copied to the clipboard. - Все выбранные значения скопированы в буфер обмена. + Output gain + Выходная мощность - - - AutomationEditorWindow - Play/pause current pattern (Space) - Игра/Пауза текущей мелодии (Пробел) + Output clip + - 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. - Нажмите здесь чтобы проиграть текущую мелодию. Это может пригодиться при его редактировании. Мелодия автоматически закольцуется при достижении конца. + Sample rate + - Stop playing of current pattern (Space) - Остановить воспроизведение текущей мелодии (Пробел) + Stereo difference + - Click here if you want to stop playing of the current pattern. - Нажмите здесь, если вы хотите остановить воспроизведение текущей мелодии. + Levels + - Draw mode (Shift+D) - Режим рисования (Shift+D) + Rate enabled + - Erase mode (Shift+E) - Режим стирания (Shift-E) + Depth enabled + + + + CarlaInstrumentView - Flip vertically - Перевернуть вертикально + Show GUI + Показать интерфейс + + + CrossoverEQControlDialog - Flip horizontally - Перевернуть горизонтально + Band 1/2 crossover: + - Click here and the pattern will be inverted.The points are flipped in the y direction. - Нажмите здесь и мелодия перевернётся. Точки переворачиваются в Y направлении. + Band 2/3 crossover: + - Click here and the pattern will be reversed. The points are flipped in the x direction. - Нажмите здесь и мелодия перевернётся в направлении X. + Band 3/4 crossover: + - 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. - При нажатии на эту кнопку активируется режим рисования нот, в нём вы можете добавлять/перемещать и изменять длительность одиночных нот. Это основной режим и используется большую часть времени. -Для включения этого режима можно использовать комбинацию клавиш Shift+D. + Band 1 gain + - 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. - При нажатии на эту кнопку активируется режим стирания. В этом режиме вы можете стирать ноты по одной. -Для включения этого режима можно использовать комбинацию клавиш Shift+E. + Band 1 gain: + - Discrete progression - Дискретная прогрессия + Band 2 gain + - Linear progression - Линейная прогрессия + Band 2 gain: + - Cubic Hermite progression - Кубическая Эрмитова прогрессия + Band 3 gain + - Tension value for spline - Величина напряжения для сплайна + Band 3 gain: + - 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. - Более высокое напряжение может сделать кривую более мягкой, но перегрузит некоторые величины. Низкое напряжение сделает наклон кривой ниже в каждой контрольной точке. + Band 4 gain + - 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. - Выбор дискретной прогрессии для этого шаблона автоматизации. Кол-во подсоединенных объектов будет оставаться постоянным между управляющими точками и будет установлено на новое значение сразу по достижении каждой управляющей точки. + Band 4 gain: + - 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. - Выбор линейной прогрессии для этого шаблона автоматизации. Кол-во подсоединенных объектов будет меняться с постоянной скоростью во времени между управляющими точками для достижения точного значения в каждой управляющей точки без внезапных изменений. + Band 1 mute + - 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. - Кубическая Эрмитова прогрессия для этого шаблона автоматизации. Кол-во подсоединенных объектов изменится по сглаженной кривой и смягчится на пиках и спадах. + Mute band 1 + - Cut selected values (%1+X) - Вырезать выбранные ноты (%1+X) + Band 2 mute + - Copy selected values (%1+C) - Копировать выбранные ноты в буфер (%1+C) + Mute band 2 + - Paste values from clipboard (%1+V) - Вставить запомненные значения (%1+V) + Band 3 mute + - 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. - При нажатии на эту кнопку выделеные ноты будут вырезаны в буфер. Позже вы можете вставить их в любое место любой мелодии с помощью кнопки "Вставить". + Mute band 3 + - 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. - При нажатии на эту кнопку выделеные ноты будут скопированы в буфер. Позже вы можете вставить их в любое место любой мелодии с помощью кнопки "Вставить". + Band 4 mute + - Click here and the values from the clipboard will be pasted at the first visible measure. - При нажатии на эту кнопку ноты из буфера будут вставлены в первый видимый такт. + Mute band 4 + + + + DelayControls - Tension: - Напряжение: + Feedback + Возврат - Automation Editor - no pattern - Редактор автоматизаци — нет шаблона + Output gain + Выходная мощность - Automation Editor - %1 - Редактор автоматизации — %1 + Delay samples + - Edit actions - Правка: + LFO frequency + - Interpolation controls - Управление интерполяцией + LFO amount + + + + DelayControlsDialog - Timeline controls - Управление временем + Gain + Усиление - Zoom controls - Приблизить управление + DELAY + ЗАДЕРЖ - Quantization controls - Управление квантованием + FDBK + - Model is already connected to this pattern. - Модель уже подключена к этому шаблону. + RATE + ЧАСТ - Quantization - Квантование + AMNT + ГЛУБ - 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. - + Delay time + - - - AutomationPattern - Drag a control while pressing <%1> - Тяните контроль удерживая <%1> + Feedback amount + - - - AutomationPatternView - Open in Automation editor - Открыть в редакторе автоматизации + LFO frequency + - Clear - Очистить + LFO amount + - Reset name - Сбросить название + Out gain + + + + DualFilterControlDialog - Change name - Переименовать + Filter 1 enabled + Фильтр 1 включен - %1 Connections - Соединения %1 + Filter 2 enabled + Фильтр 2 включен - Disconnect "%1" - Отсоединить «%1» + FREQ + FREQ - Set/clear record - Установить/очистить запись + Cutoff frequency + Срез частот - Flip Vertically (Visible) - Перевернуть вертикально (Видимое) + RESO + RESO - Flip Horizontally (Visible) - Перевернуть горизонтально (Видимое) + Resonance + Резонанс - Model is already connected to this pattern. - Модель уже подключена к этому шаблону. + GAIN + МОЩ - - - AutomationTrack - Automation track - Дорожка автоматизации + Gain + УСИЛ - - - BBEditor - Beat+Bassline Editor - Ритм+Бас Редактор + MIX + - Play/pause current beat/bassline (Space) - Игра/пауза текущей линии ритма/баса (<Space>) + Mix + - Stop playback of current beat/bassline (Space) - Остановить воспроизведение текущей линии ритм-баса (ПРОБЕЛ) + Enable/disable filter 1 + - Click here to play the current beat/bassline. The beat/bassline is automatically looped when its end is reached. - Нажмите чтобы проиграть текущую линию ритм-баса. Она будет закольцована по достижении окончания. + Enable/disable filter 2 + + + + DualFilterControls - Click here to stop playing of current beat/bassline. - Остановить воспроизведение (Пробел). + Filter 1 enabled + Фильтр 1 включен - Add beat/bassline - Добавить ритм/бас + Filter 1 type + - Add automation-track - Добавить дорожку автоматизации + Q/Resonance 1 + - Remove steps - Убрать такты + Gain 1 + - Add steps - Добавить такты + Mix + - Beat selector - Выбор бита + Filter 2 enabled + Фильтр 2 включен - Track and step actions - + Filter 2 type + - Clone Steps - Клонировать такты + Q/Resonance 2 + - Add sample-track - Добавить дорожку записи + Gain 2 + - - - BBTCOView - Open in Beat+Bassline-Editor - Открыть в редакторе ритм + баса + Notch + Полосно-заграждающий - Reset name - Сбросить название + Moog + Муг - Change name - Переименовать + 2x Moog + 2x Муг - Change color - Изменить цвет + SV Notch + - Reset color to default - Установить цвет по умолчанию + Fast Formant + - - - BBTrack - Beat/Bassline %1 - Ритм-Бас Линия %1 + Tripole + - Clone of %1 - Копия %1 + Cutoff frequency 1 + - - - BassBoosterControlDialog - FREQ - ЧАСТ + Cutoff frequency 2 + - Frequency: - Частота: + Low-pass + - GAIN - МОЩ + Hi-pass + - Gain: - Мощность: + Band-pass csg + - RATIO - ОТН + Band-pass czpg + - Ratio: - Отношение: + All-pass + - - - BassBoosterControls - Frequency - Частота + 2x Low-pass + - Gain - Мощность + RC Low-pass 12 dB/oct + - Ratio - Отношение + RC Band-pass 12 dB/oct + - - - BitcrushControlDialog - IN - IN + RC High-pass 12 dB/oct + - OUT - OUT + RC Low-pass 24 dB/oct + - GAIN - МОЩ + RC Band-pass 24 dB/oct + - Input Gain: - Входная мощность: + RC High-pass 24 dB/oct + - Input Noise: - Входной шум: + Vocal Formant + - Output Gain: - Выходная мощность: + SV Low-pass + - CLIP - СРЕЗ + SV Band-pass + - Output Clip: - + SV High-pass + + + + EqControls - Rate Enabled - Частота выборки включена + Input gain + Входная мощность - Enable samplerate-crushing - + Output gain + Выходная мощность - Depth Enabled - Глубина включена + Peak 1 gain + - Enable bitdepth-crushing - + Peak 2 gain + - Sample rate: - Частота сэмплирования: + Peak 3 gain + - Stereo difference: - Стерео разница: + Peak 4 gain + - Levels: - Уровни: + HP res + - NOISE - Шум + Peak 1 BW + - FREQ - FREQ + Peak 2 BW + - STEREO - СТЕРЕО + Peak 3 BW + - QUANT - + Peak 4 BW + - - - CaptionMenu - &Help - &H Справка + LP res + - Help (not available) - Справка (не доступна) + HP freq + - - - CarlaInstrumentView - Show GUI - Показать интерфейс + Peak 1 freq + - Click here to show or hide the graphical user interface (GUI) of Carla. - Нажмите сюда, чтобы показать или скрыть графический интерфейс Карла. + Peak 2 freq + - - - Controller - Controller %1 - Контроллер %1 + Peak 3 freq + + + + Peak 4 freq + - - - ControllerConnectionDialog - Connection Settings - Параметры соединения + LP freq + - MIDI CONTROLLER - MIDI-КОНТРОЛЛЕР + HP active + - Input channel - Канал ввода + Peak 1 active + - CHANNEL - КАНАЛ + Peak 2 active + - Input controller - Контроллер ввода + Peak 3 active + - CONTROLLER - КОНТРОЛЛЕР + Peak 4 active + - Auto Detect - Автоопределение + LP active + - MIDI-devices to receive MIDI-events from - Устройства MiDi для приёма событий + LP 12 + - USER CONTROLLER - ПОЛЬЗ. КОНТРОЛЛЕР + LP 24 + - MAPPING FUNCTION - ПЕРЕОПРЕДЕЛЕНИЕ + LP 48 + - OK - ОК + HP 12 + - Cancel - Отменить + HP 24 + - LMMS - LMMS + HP 48 + - Cycle Detected. - Обнаружен цикл. + Analyse IN + - - - ControllerRackView - Controller Rack - Рэка контроллеров + Analyse OUT + - Add - Добавить + Low-shelf gain + - Confirm Delete - Подтвердить удаление + High-shelf gain + - Confirm delete? There are existing connection(s) associated with this controller. There is no way to undo. - Подтверждаете удаление? Есть возможные соединения с этим контроллером, возврата не будет. + Low-shelf res + - - - ControllerView - Controls - Управление + High-shelf res + - Controllers are able to automate the value of a knob, slider, and other controls. - Контроллеры могут автоматизировать изменения значений регуляторов, ползунков и прочего управления. + Low-shelf freq + - Rename controller - Переименовать контроллер + High-shelf freq + - Enter the new name for this controller - Введите новое название для контроллера + Low-shelf active + - &Remove this controller - Убрать этот контроллер + High-shelf active + - Re&name this controller - Переименовать этот контроллер + Low-pass type + - LFO - LFO + High-pass type + - CrossoverEQControlDialog + EqControlsDialog - Band 1/2 Crossover: - + HP + - Band 2/3 Crossover: - + Peak 1 + - Band 3/4 Crossover: - + Peak 2 + - Band 1 Gain: - + Peak 3 + - Band 2 Gain: - + Peak 4 + - Band 3 Gain: - + LP + - Band 4 Gain: - + Gain + Мощность - Band 1 Mute - + Bandwidth: + - Mute Band 1 - + Resonance : + Резонанс: - Band 2 Mute - + Frequency: + Частота: - Mute Band 2 - + Octave + Октава - Band 3 Mute - + Low-shelf + - Mute Band 3 - + High-shelf + - Band 4 Mute - + Input gain + Входная мощность - Mute Band 4 - + Output gain + Выходная мощность - - - DelayControls - Delay Samples - Задержка сэмплов + LP group + - Feedback - Возврат + HP group + + + + EqHandle - Lfo Frequency - Частота LFO + Reso: + - Lfo Amount - Объём LFO + BW: + - Output gain - Выходная мощность + Freq: + - DelayControlsDialog + FlangerControls - Lfo Amt - + Seconds + Секунды - Delay Time - Время задержки + Regen + - Feedback Amount - Объём возврата: + Noise + Шум - Lfo - Lfo + Invert + - Out Gain - Выходная мощность + Delay samples + - Gain - Усиление + LFO frequency + + + + FlangerControlsDialog DELAY - ЗАДЕРЖ - - - FDBK - + Задержка RATE @@ -1048,8332 +901,3386 @@ Oe Ai <oeai/at/symbiants/dot/com> AMNT ГЛУБ - - - DualFilterControlDialog - Filter 1 enabled - Фильтр 1 включен + Amount: + - Filter 2 enabled - Фильтр 2 включен + FDBK + - Click to enable/disable Filter 1 - Кликнуть для включения/выключения Фильтра 1 + NOISE + Шум - Click to enable/disable Filter 2 - Кликнуть для включения/выключения Фильтра 2 + Invert + - FREQ - FREQ + Period: + - Cutoff frequency - Срез частот + Delay time: + - RESO - RESO + Feedback amount: + - Resonance - Резонанс + White noise amount: + + + + FreeBoyInstrument - GAIN - МОЩ + Sweep time + Время распространения - Gain - УСИЛ + Sweep direction + Направление распространения - MIX - + Channel 1 volume + Громкость первого канала - Mix - + Volume sweep direction + Объём направления распространения - - - DualFilterControls - Filter 1 enabled - Фильтр 1 включен + Length of each step in sweep + Длина каждого такта в распространении - Filter 1 type - + Channel 2 volume + Громкость второго канала - Cutoff 1 frequency - + Channel 3 volume + Громкость третьего канала - Q/Resonance 1 - + Channel 4 volume + Громкость четвёртого канала - Gain 1 - + Channel 1 to SO2 (Left) + От первого канала к SO2 (левый канал) - Mix - + Channel 2 to SO2 (Left) + От второго канала к SO2 (левый канал) - Filter 2 enabled - Фильтр 2 включен + Channel 3 to SO2 (Left) + От третьего канала к SO2 (левый канал) - Filter 2 type - + Channel 4 to SO2 (Left) + От четвёртого канала к SO2 (левый канал) - Cutoff 2 frequency - + Channel 1 to SO1 (Right) + От первого канала к SO1 (правый канал) - Q/Resonance 2 - + Channel 2 to SO1 (Right) + От второго канала к SO1 (правый канал) - Gain 2 - + Channel 3 to SO1 (Right) + От третьего канала к SO1 (правый канал) - LowPass - Низ.ЧФ + Channel 4 to SO1 (Right) + От четвёртого канала к SO1 (правый канал) - HiPass - Выс.ЧФ + Treble + Верхние - BandPass csg - Сред.ЧФ csg + Bass + Нижние - BandPass czpg - Сред.ЧФ czpg + Shift Register width + Сдвиг ширины регистра - Notch - Полосно-заграждающий + Sweep rate shift amount + - Allpass - Все проходят + Wave pattern duty cycle + - Moog - Муг + Right output level + - 2x LowPass - 2х Низ.ЧФ + Left output level + + + + FreeBoyInstrumentView - RC LowPass 12dB - RC Низ.ЧФ 12дБ + Length of each step in sweep: + Длина каждого такта в развёртке: - RC BandPass 12dB - RC Сред.ЧФ 12 дБ + Length of each step in sweep + Длина каждого такта в распространении - RC HighPass 12dB - RC Выс.ЧФ 12дБ + Treble: + Верхние: - RC LowPass 24dB - RC Низ.ЧФ 24дБ + Treble + Верхние - RC BandPass 24dB - RC Сред.ЧФ 24дБ + Bass: + Нижние: - RC HighPass 24dB - RC Выс.ЧФ 24дБ + Bass + Нижние - Vocal Formant Filter - Фильтр Вокальной форманты + Sweep time: + - 2x Moog - 2x Муг + Sweep time + Время распространения - SV LowPass - SV Низ.ЧФ + Sweep rate shift amount: + - SV BandPass - SV Сред.ЧФ + Sweep rate shift amount + - SV HighPass - SV Выс.ЧФ + Wave pattern duty cycle: + - SV Notch - + Wave pattern duty cycle + - Fast Formant - + Square channel 1 volume: + - Tripole - + Square channel 1 volume + - - - Editor - Play (Space) - Игра (Пробел) + Square channel 2 volume: + - Stop (Space) - Стоп (Пробел) + Square channel 2 volume + - Record - Запись + Wave pattern channel volume: + - Record while playing - Запись при игре + Wave pattern channel volume + - Transport controls - Управление транспортом + Noise channel volume: + - - - Effect - Effect enabled - Эффект включён + Noise channel volume + - Wet/Dry mix - Насыщенность + SO1 volume (Right): + - Gate - Шлюз + SO1 volume (Right) + - Decay - Затихание + SO2 volume (Left): + - - - EffectChain - Effects enabled - Эффекты включёны + SO2 volume (Left) + - - - EffectRackView - EFFECTS CHAIN - ЦЕПЬ ЭФФЕКТОВ + Sweep direction + Направление распространения - Add effect - Добавить эффект + Volume sweep direction + Объём направления распространения - - - EffectSelectDialog - Add effect - Добавить эффект + Shift register width + - Name - Имя + Channel 1 to SO1 (Right) + От первого канала к SO1 (правый канал) - Type - Тип + Channel 2 to SO1 (Right) + От второго канала к SO1 (правый канал) - Description - Описание + Channel 3 to SO1 (Right) + От третьего канала к SO1 (правый канал) - Author - Автор + Channel 4 to SO1 (Right) + От четвёртого канала к SO1 (правый канал) - - - EffectView - Toggles the effect on or off. - Вкл/выкл эффект. + Channel 1 to SO2 (Left) + От первого канала к SO2 (левый канал) - On/Off - Вкл/Выкл + Channel 2 to SO2 (Left) + От второго канала к SO2 (левый канал) - W/D - НАСЫЩ + Channel 3 to SO2 (Left) + От третьего канала к SO2 (левый канал) - Wet Level: - Уровень насыщенности: + Channel 4 to SO2 (Left) + От четвёртого канала к SO2 (левый канал) - The Wet/Dry knob sets the ratio between the input signal and the effect signal that forms the output. - Регулятор насыщенности определяет долю обработанного сигнала, которая будет на выходе. + Wave pattern graph + + + + GigInstrument - DECAY - ЗАТИХ + Bank + Банк - Time: - Время: + Patch + Патч - 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. - Decay (затихание) управляет количеством буферов тишины, которые должны пройти до конца работы плагина. Меньшие величины снижают перегрузку процессора, но вознкает риск появления потрескивания или подрезания в хвосте на передержке (delay) или эхо (reverb) эффектах. + Gain + Мощность + + + GigInstrumentView - GATE - ШЛЮЗ + Open GIG file + Открыть GIG файл - Gate: - Шлюз: + GIG Files (*.gig) + GIG Файлы (*.gig) - The Gate knob controls the signal level that is considered to be 'silence' while deciding when to stop processing signals. - GATE (Шлюз) определяет уровень сигнала, который будет считаться "тишиной" при определении остановки обрабатывания сигналов. + Choose patch + - Controls - Управление + Gain: + + + + InstrumentTrack - 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. - -The Wet/Dry knob controls the balance between the input signal and the effected signal that is the resulting output from the effect. The input for the stage is the output from the previous stage. So, the 'dry' signal for effects lower in the chain contains all of the previous effects. - -The Decay knob controls how long the signal will continue to be processed after the notes have been released. The effect will stop processing signals when the volume has dropped below a given threshold for a given length of time. This knob sets the 'given length of time'. Longer times will require more CPU, so this number should be set low for most effects. It needs to be bumped up for effects that produce lengthy periods of silence, e.g. delays. - -The Gate knob controls the 'given threshold' for the effect's auto shutdown. The clock for the 'given length of time' will begin as soon as the processed signal level drops below the level specified with this knob. - -The Controls button opens a dialog for editing the effect's parameters. - -Right clicking will bring up a context menu where you can change the order in which the effects are processed or delete an effect altogether. - Сигнал проходит последовательно через все установленные фильтры (сверху вниз). - -Переключатель Вкл/Выкл позволяет в любой момент включать/выключать фильтр. - -Регулятор (wet / dry) насыщенности определяет баланс между входящим сигналом и сигналом после эффекта, который становится выходным сигналом эффекта. Входной сигнал каждого фильтра является выходом предыдущего, так что доля чистого сигнала при прохождении по цепочке постоянно падает. - -Регулятор (decay) затихания определяет время, которое будет действовать фильтр после того как ноты были отпущены. -Эффект перестанет обрабатывать сигналы, когда грмокость упадёт ниже порога для заданной длины времени. Эта ручка (Knob) устанавливает "заданную длину времени" Чем меньше значение, тем меньше требования к ЦП, поэтому лучше ставить это число низким для большинства эффектов. однако это может вызвать обрезку звука при использовании эффектов с длительными периодами тишины, типа задержки. - -Регулятор шлюза служит для указания порога сигнала для авто-отключения эффекта, отсчёт для "заданной длины времени" начнётся как только обрабатываемый сигнал упадёт ниже указанного этим регулятором уровня. - -Кнопка „Управление“ открывает окно изменения параметров эффекта. - -Контекстное меню, вызываемое щелчком правой кнопкой мыши, позволяет менять порядок следования фильтров или удалять их вместе с другими. - - - Move &up - &u Переместить выше - - - Move &down - &d Переместить ниже - - - &Remove this plugin - &R Убрать фильтр + Default preset + Основная предустановка - EnvelopeAndLfoParameters + LadspaControlDialog - Predelay - Задержка + Link Channels + Связать каналы - Attack - Вступление + Channel + Канал + + + LadspaEffect - Hold - Удерживание + Unknown LADSPA plugin %1 requested. + Запрошен неизвестный модуль LADSPA «%1». + + + MidiImport - Decay - Затихание + Setup incomplete + установка не завершена - Sustain - Выдержка + 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. + Вы не включили поддержку проигрывателя SoundFont2 при компиляции ЛММС, он используется для добавления основного звука в импортируемые Миди файлы, поэтому звука не будет после импорта этого миди файла. - Release - Убывание + Track + - Modulation - Модуляция + You have not 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. + + + + MonstroInstrument - LFO Predelay - Задержка LFO + Osc 3 Stereo phase offset + - LFO Attack - Вступление LFO + Selected view + - LFO speed - Скорость LFO + Sine wave + Синусоида - LFO Modulation - Модуляция LFO + Bandlimited Triangle wave + Ограниченная по частоте треугольная волна - LFO Wave Shape - Форма сигнала LFO + Bandlimited Saw wave + Ограниченная по частоте острая волна - Freq x 100 - ЧАСТ x 100 + Bandlimited Ramp wave + - Modulate Env-Amount - Модулировать огибающую + Bandlimited Square wave + Ограниченная по частоте квадратная волна - - - EnvelopeAndLfoView - DEL - DEL + Bandlimited Moog saw wave + Ограниченная по частоте Муг острая волна - Predelay: - Задержка: + Soft square wave + Сглаженная квадратная волна - Use this knob for setting predelay of the current envelope. The bigger this value the longer the time before start of actual envelope. - Эта ручка определяет задержку огибающей. Чем больше эта величина, тем дольше время до старта текущей огибающей. + Absolute sine wave + - ATT - ATT + Exponential wave + Экспоненциальная волна - Attack: - Вступление: + White noise + Белый шум - 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. - Эта ручка устанавливает время возрастания для текущей огибающей. Чем больше значение, тем дольше характеристика (н-р, громкость) возрастает до максимума. Для инструменов вроде пианино характерны малые времена нарастания, а для струнных - большие. + Digital Triangle wave + Цифровая треугольная волна - HOLD - HOLD + Digital Saw wave + Цифровая острая волна - Hold: - Удержание: + Digital Ramp wave + - 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. - Эта ручка устанавливает длительность огибающей. Чем больше значение, тем дольше огибающая держится на наивысшем уровне. + Digital Square wave + Цифровая квадратная волна - DEC - DEC + Digital Moog saw wave + Цифровая Муг острая волна - Decay: - Затихание: + Triangle wave + Треугольная волна - 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. - Эта ручка устанавливает время спада для текущей огибающей. Чем больше значение, тем дольше огибающая должна сокращаться от вступления до уровня выдержки. Для инструментов вроде пианино следует выбирать небольшие значения. + Saw wave + Зигзаг - SUST - SUST + Ramp wave + - Sustain: - Выдержка: + Square wave + Квадрат - 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. - Эта ручка устанавливает уровень выдержки. Чем больше эта величина, тем выше уровень на котором остаётся огибающая, прежде чем опуститься до нуля. + Moog saw wave + - REL - REL + Abs. sine wave + - Release: - Убывание: + Random + Случайно - 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. - Эта ручка устанавливает время убывания для текущей огибающей. Чем больше значение, тем дольше характеристика (н-р, громкость) уменьшается от уровня выдержки до нуля. Для струнных инструментов следует выбирать большие значения. + Random smooth + Случайное сглаживание - AMT - AMT + Osc 1 volume + - Modulation amount: - Глубина модуляции: + Osc 1 panning + - 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. - Эта ручка устанавливает глубину модуляции для текущей огибающей. Чем больше значение, тем в большей степени выбранная характеристика (н-р, громкость или частота среза) будет зависеть от этой огибающей. + Osc 1 coarse detune + - LFO predelay: - Пред. задержка LFO: + Osc 1 fine detune left + - 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 (LFO - НизкоЧастотный осциллятор (генератор)). Чем больше величина, тем больше времени до того как LFO начнёт работать. + Osc 1 fine detune right + - LFO- attack: - Вступление LFO: + Osc 1 stereo phase offset + - 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. - Используйте эту ручку для установления времени вступления этого LFO. Чем больше значение, тем дольше LFO нуждается в увеличении своей амплитуды до максимума. + Osc 1 pulse width + - SPD - SPD + Osc 1 sync send on rise + - LFO speed: - Скорость LFO: + Osc 1 sync send on fall + - 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. - Эта ручка устанавлявает скорость текущего LFO. Чем больше значение, тем быстрее LFO осциллирует и быстрее производится эффект. + Osc 2 volume + - 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. - Эта ручка устанавливает глубину модуляции для текущего LFO. Чем больше значение, тем в большей степени выбранная характеристика (н-р, громкость или частота среза) будет зависеть от этого LFO. + Osc 2 panning + - Click here for a sine-wave. - Генерировать гармонический (синусоидальный) сигнал. + Osc 2 coarse detune + - Click here for a triangle-wave. - Сгенерировать треугольный сигнал. + Osc 2 fine detune left + - Click here for a saw-wave for current. - Сгенерировать зигзагообразный сигнал. + Osc 2 fine detune right + - Click here for a square-wave. - Сгенерировать квдратный сигнал (меандр) . + Osc 2 stereo phase offset + - Click here for a user-defined wave. Afterwards, drag an according sample-file onto the LFO graph. - Задать свою форму сигнала. Впоследствии, перетащить соответствующий файл с записью в граф LFO. + Osc 2 waveform + - FREQ x 100 - ЧАСТОТА x 100 + Osc 2 sync hard + - Click here if the frequency of this LFO should be multiplied by 100. - Нажмите, чтобы умножить частоту этого LFO на 100. + Osc 2 sync reverse + - multiply LFO-frequency by 100 - Умножить частоту LFO на 100 + Osc 3 volume + - MODULATE ENV-AMOUNT - МОДУЛИР ОГИБАЮЩУЮ + Osc 3 panning + - Click here to make the envelope-amount controlled by this LFO. - Нажмите сюда, чтобы глубина модуляции огибающей задавалась этим LFO. + Osc 3 coarse detune + - control envelope-amount by this LFO - Разрешить этому LFO задавать значение огибающей + Osc 3 sub-oscillator mix + - ms/LFO: - мс/LFO: + Osc 3 waveform 1 + - Hint - Подсказка + Osc 3 waveform 2 + - Drag a sample from somewhere and drop it in this window. - Перетащите в это окно какую-нибудь запись. + Osc 3 sync hard + - Click here for random wave. - Нажмите сюда для случайной волны. + Osc 3 Sync reverse + - - - EqControls - Input gain - Входная мощность + LFO 1 waveform + - Output gain - Выходная мощность + LFO 1 attack + - Low shelf gain - + LFO 1 rate + - Peak 1 gain - + LFO 1 phase + - Peak 2 gain - + LFO 2 waveform + - Peak 3 gain - + LFO 2 attack + - Peak 4 gain - + LFO 2 rate + - High Shelf gain - + LFO 2 phase + - HP res - + Env 1 pre-delay + - Low Shelf res - + Env 1 attack + - Peak 1 BW - + Env 1 hold + - Peak 2 BW - + Env 1 decay + - Peak 3 BW - + Env 1 sustain + - Peak 4 BW - + Env 1 release + - High Shelf res - + Env 1 slope + - LP res - + Env 2 pre-delay + - HP freq - + Env 2 attack + - Low Shelf freq - + Env 2 hold + - Peak 1 freq - + Env 2 decay + - Peak 2 freq - + Env 2 sustain + - Peak 3 freq - + Env 2 release + - Peak 4 freq - + Env 2 slope + - High shelf freq - + Osc 2+3 modulation + - LP freq - + Osc 1 - Vol env 1 + - HP active - + Osc 1 - Vol env 2 + - Low shelf active - + Osc 1 - Vol LFO 1 + - Peak 1 active - + Osc 1 - Vol LFO 2 + - Peak 2 active - + Osc 2 - Vol env 1 + - Peak 3 active - + Osc 2 - Vol env 2 + - Peak 4 active - + Osc 2 - Vol LFO 1 + - High shelf active - + Osc 2 - Vol LFO 2 + - LP active - + Osc 3 - Vol env 1 + - LP 12 - + Osc 3 - Vol env 2 + - LP 24 - + Osc 3 - Vol LFO 1 + - LP 48 - + Osc 3 - Vol LFO 2 + - HP 12 - + Osc 1 - Phs env 1 + - HP 24 - + Osc 1 - Phs env 2 + - HP 48 - + Osc 1 - Phs LFO 1 + - low pass type - + Osc 1 - Phs LFO 2 + - high pass type - + Osc 2 - Phs env 1 + - Analyse IN - + Osc 2 - Phs env 2 + - Analyse OUT - + Osc 2 - Phs LFO 1 + - - - EqControlsDialog - HP - + Osc 2 - Phs LFO 2 + - Low Shelf - + Osc 3 - Phs env 1 + - Peak 1 - + Osc 3 - Phs env 2 + - Peak 2 - + Osc 3 - Phs LFO 1 + - Peak 3 - + Osc 3 - Phs LFO 2 + - Peak 4 - + Osc 1 - Pit env 1 + - High Shelf - + Osc 1 - Pit env 2 + - LP - + Osc 1 - Pit LFO 1 + - In Gain - Входная мощность + Osc 1 - Pit LFO 2 + - Gain - Мощность + Osc 2 - Pit env 1 + - Out Gain - Выходная мощность + Osc 2 - Pit env 2 + - Bandwidth: - + Osc 2 - Pit LFO 1 + - Resonance : - Резонанс: + Osc 2 - Pit LFO 2 + - Frequency: - Частота: + Osc 3 - Pit env 1 + - lp grp - + Osc 3 - Pit env 2 + - hp grp - + Osc 3 - Pit LFO 1 + - Octave - Октава + Osc 3 - Pit LFO 2 + - - - EqHandle - Reso: - + Osc 1 - PW env 1 + - BW: - + Osc 1 - PW env 2 + - Freq: - + Osc 1 - PW LFO 1 + - - - ExportProjectDialog - Export project - Экспорт проекта + Osc 1 - PW LFO 2 + - Output - Вывод + Osc 3 - Sub env 1 + - File format: - Формат файла: + Osc 3 - Sub env 2 + - Samplerate: - Частота дискретизации: + Osc 3 - Sub LFO 1 + - 44100 Hz - 44.1 КГц + Osc 3 - Sub LFO 2 + + + + MonstroView - 48000 Hz - 48 КГц + Operators view + Операторский вид - 88200 Hz - 88.2 КГц + Matrix view + Матричный вид - 96000 Hz - 96 КГц + Volume + Громкость - 192000 Hz - 192 КГц + Panning + Баланс - Bitrate: - Частота бит: + Coarse detune + - 64 KBit/s - 64 КБит/с + semitones + полутона - 128 KBit/s - 128 КБит/с + cents + - 160 KBit/s - 160 КБит/с + Stereo phase offset + Сдвиг стерео фазы - 192 KBit/s - 192 КБит/с + deg + - 256 KBit/s - 256 КБит/с + Pulse width + Длительность импульса - 320 KBit/s - 320 КБит/с + Send sync on pulse rise + - Depth: - Емкость: + Send sync on pulse fall + - 16 Bit Integer - 16 Бит целое + Hard sync oscillator 2 + - 32 Bit Float - 32 Бит плавающая + Reverse sync oscillator 2 + - Quality settings - Настройки качества + Sub-osc mix + - Interpolation: - Интерполяция: + Hard sync oscillator 3 + - Zero Order Hold - Нулевая задержка + Reverse sync oscillator 3 + - Sinc Fastest - Синхр. Быстрая + Attack + Вступление - Sinc Medium (recommended) - Синхр. Средняя (рекомендовано) + Rate + Частота выборки - Sinc Best (very slow!) - Синхр. лучшая (очень медленно!) + Phase + - Oversampling (use with care!): - Передискретизация (использовать осторожно!): + Pre-delay + - 1x (None) - 1х (Нет) + Hold + Удерживание - 2x - + Decay + Затихание - 4x - + Sustain + Выдержка - 8x - + Release + Убывание - Start - Начать + Slope + - Cancel - Отменить + Modulation amount + Глубина модуляции - Export as loop (remove end silence) - Экспортировать как петлю (убрать тишину в конце) + Fine tune left + - Export between loop markers - Экспорт между метками петли + Fine tune right + - Could not open file - Не могу открыть файл + Mix osc 2 with osc 3 + - Export project to %1 - Экспорт проекта в %1 + Modulate amplitude of osc 3 by osc 2 + - Error - Ошибка + Modulate frequency of osc 3 by osc 2 + - Error while determining file-encoder device. Please try to choose a different output format. - Ошибка при определении кодека файла. Попробуйте выбрать другой формат вывода. + Modulate phase of osc 3 by osc 2 + + + + MultitapEchoControlDialog - Rendering: %1% - Обработка: %1% + Length + Длина - 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! - Невозможно открыть файл %1 для записи. Пожалуйста, убедитесь, что у вас есть разрешение на запись в файл и содержащую его директорию, и попробуйте снова. + Step length: + - 24 Bit Integer - 24 бита целое + Dry + - Use variable bitrate - И + Stages + - Stereo mode: - + Swap inputs + - Stereo - + Dry gain: + - Joint Stereo - + Low-pass stages: + - Mono - + Swap left and right input channels for reflections + + + + NesInstrument - Compression level: - + Channel 2 Coarse detune + - (fastest) - + Channel 2 Volume + Громкость 2 канала - (default) - + Master volume + Основная громкость - (smallest) - + Vibrato + Вибрато - - - Expressive - Selected graph - + Channel 1 coarse detune + - A1 - + Channel 1 volume + Громкость первого канала - A2 - + Channel 1 envelope length + - A3 - + Channel 1 duty cycle + - W1 smoothing - + Channel 1 sweep amount + - W2 smoothing - + Channel 1 sweep rate + - W3 smoothing - + Channel 2 envelope length + - PAN1 - + Channel 2 duty cycle + - PAN2 - + Channel 2 sweep amount + - REL TRANS - + Channel 2 sweep rate + - - - Fader - Please enter a new value between %1 and %2: - Введите новое значение от %1 до %2: + Channel 3 coarse detune + - - - FileBrowser - Browser - Обозреватель файлов + Channel 3 volume + Громкость третьего канала - Search - + Channel 4 volume + Громкость четвёртого канала - Refresh list - + Channel 4 envelope length + - - - FileBrowserTreeWidget - Send to active instrument-track - Послать на активную инструментальную-дорожку + Channel 4 noise frequency + - Open in new instrument-track/B+B Editor - Открыть в новой инструментальной дорожке/Б+Б редакторе + Channel 4 noise frequency sweep + + + + NesInstrumentView - Loading sample - Загрузка записи + Volume + Громкость - Please wait, loading sample for preview... - Пж. ждите, запись загружается для просмотра... + Coarse detune + - --- Factory files --- - --- Заводские файлы --- + Envelope length + - Open in new instrument-track/Song Editor - Отркрыть в новой инструментальной дорожке/редакторе песни + Enable channel 1 + - Error - Ошибка + Enable envelope 1 + - does not appear to be a valid - Не похоже на правильное + Enable envelope 1 loop + - file - файл + Enable sweep 1 + - - - FlangerControls - Delay Samples - Задержка сэмплов + Sweep amount + - Lfo Frequency - Частота LFO + Sweep rate + - Seconds - Секунды + 12.5% Duty cycle + - Regen - + 25% Duty cycle + - Noise - Шум + 50% Duty cycle + - Invert - + 75% Duty cycle + - - - FlangerControlsDialog - Delay Time: - Время задержки: + Enable channel 2 + - Feedback Amount: - Объём возврата: + Enable envelope 2 + - White Noise Amount: - Объём белого шума: + Enable envelope 2 loop + - DELAY - Задержка + Enable sweep 2 + - RATE - ЧАСТ + Enable channel 3 + - AMNT - ГЛУБ + Noise Frequency + - Amount: - + Frequency sweep + - FDBK - + Enable channel 4 + - NOISE - Шум + Enable envelope 4 + - Invert - + Enable envelope 4 loop + - Period: - + Quantize noise frequency when using note frequency + - - - FxLine - Channel send amount - Величина отправки канала + Use note frequency for noise + - 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. - -In order to route the channel to another channel, select the FX channel and click on the "send" button on the channel you want to send to. The knob under the send button controls the level of signal that is sent to the channel. - -You can remove and move FX channels in the context menu, which is accessed by right-clicking the FX channel. - - Канал эффектов (ЭФ) получает сигнал на вход от одной или нескольких инструментальных дорожек. -В свою очередь его можно подключить к нескольким другим каналам эффектов. ЛММС автоматически предотвращает бесконечные циклы и не позволяет создавать соединения, которые приведут к бесконечному циклу. -Чтобы соединить один канал с другим, выберите канал ЭФфектов и кликните кнопку послать (Send) на канале, куда нужно послать. Регулятор под кнопкой "послать" контролирует уровень сигнала, посылаемого на канал. -Можно убирать и двигать каналы эффектов через контекстное меню, если кликнуть правой кнопкой мыши по каналу эффектов. - + Noise mode + - Move &left - Двигать влево &L + Vibrato + Вибрато - Move &right - Двигать вправо &r + Master volume + Основная громкость + + + OpulenzInstrument - Rename &channel - Переименовать канал &c + Patch + Патч - R&emove channel - Удалить канал &e + Op 1 attack + - Remove &unused channels - Удалить неиспользуемые каналы &u + Op 1 decay + - - - FxMixer - Master - Главный + Op 1 sustain + - FX %1 - Эффект %1 + Op 1 release + - Volume - Громкость + Op 1 level + - Mute - Тихо + Op 1 level scaling + - Solo - Соло + Op 1 frequency multiplier + - - - FxMixerView - FX-Mixer - Микшер Эффектов + Op 1 feedback + - FX Fader %1 - + Op 1 key scaling rate + - Mute - Тихо + Op 1 percussive envelope + - Mute this FX channel - Заглушить этот канал ЭФ + Op 1 tremolo + - Solo - Соло + Op 1 vibrato + - Solo FX channel - Соло канал ЭФ + Op 1 waveform + - - - FxRoute - Amount to send from channel %1 to channel %2 - Величина отправки с канала %1 на канал %2 + Op 2 attack + - - - GigInstrument - Bank - Банк + Op 2 decay + - Patch - Патч + Op 2 sustain + - Gain - Мощность + Op 2 release + - - - GigInstrumentView - Open other GIG file - Открыть другой GIG файл + Op 2 level + - Click here to open another GIG file - Кликните сюда, чтобы открыть другой GIG файл + Op 2 level scaling + - Choose the patch - Выбрать патч + Op 2 frequency multiplier + - Click here to change which patch of the GIG file to use - Нажмите здесь для смены используемого патча GIG файла + Op 2 key scaling rate + - Change which instrument of the GIG file is being played - Изменить инструмент, который воспроизводит GIG файл + Op 2 percussive envelope + - Which GIG file is currently being used - Какой GIG файл сейчас используется + Op 2 tremolo + - Which patch of the GIG file is currently being used - Какой патч GIG файла сейчас используется + Op 2 vibrato + - Gain - Мощность + Op 2 waveform + - Factor to multiply samples by - Фактор умножения сэмплов + FM + FM - Open GIG file - Открыть GIG файл + Vibrato depth + - GIG Files (*.gig) - GIG Файлы (*.gig) + Tremolo depth + - GuiApplication - - Working directory - Рабочий каталог - - - The LMMS working directory %1 does not exist. Create it now? You can change the directory later via Edit -> Settings. - Рабочий каталог LMMS (%1) не существует. Создать его? Позже вы сможете сменить его через Правка -> Параметры. - + OpulenzInstrumentView - Preparing UI - Подготовка UI + Attack + Вступление - Preparing song editor - Подготовка редактора песни + Decay + Затихание - Preparing mixer - Подготовка микшера + Release + Убывание - Preparing controller rack - Подготовка стойки управления + Frequency multiplier + + + + OscillatorObject - Preparing project notes - Подготовка заметок проекта + Osc %1 volume + Громкость осциллятора %1 - Preparing beat/bassline editor - Подготовка Ритм+Бас редактора + Osc %1 panning + Стереобаланс для осциллятора %1 - Preparing piano roll - Подготовка редактора нот + Osc %1 coarse detuning + Подстройка осциллятора %1 грубая - Preparing automation editor - Подготовка редактора автоматизации + Osc %1 fine detuning left + Подстройка левого канала осциллятора %1 тонкая - - - InstrumentFunctionArpeggio - Arpeggio - Арпеджио + Osc %1 fine detuning right + Подстройка правого канала осциллятора %1 тонкая - Arpeggio type - Тип арпеджио + Osc %1 phase-offset + Сдвиг фазы для осциллятора %1 - Arpeggio range - Диапазон арпеджио + Osc %1 stereo phase-detuning + Подстройка стерео-фазы осциллятора %1 - Arpeggio time - Период арпеджио + Osc %1 wave shape + Гладкость сигнала осциллятора %1 - Arpeggio gate - Шлюз арпеджио + Modulation type %1 + Тип модуляции %1 - Arpeggio direction - Направление арпеджио + Osc %1 waveform + Форма сигнала осциллятора %1 - Arpeggio mode - Режим арпеджио + Osc %1 harmonic + Осц %1 гармонический + + + PatchesDialog - Up - Вверх + Qsynth: Channel Preset + - Down - Вниз + Bank selector + - Up and down - Вверх и вниз + Bank + Банк - Random - Случайно + Program selector + Выбор программ - Free - Свободно + Patch + Патч - Sort - Упорядочить + Name + Имя - Sync - Синхронизировать + OK + ОК - Down and up - Вниз и вверх + Cancel + Отмена + + + PatmanView - Skip rate - + Loop + Повтор - Miss rate - + Loop mode + Режим повтора - Cycle steps - + Tune + Подстроить - - - InstrumentFunctionArpeggioView - ARPEGGIO - ARPEGGIO + Tune mode + Тип подстройки - 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. - Арпеджио — разновидность исполнения аккордов на фортепиано и струнных инструментах, которая оживляет звучание. Струнф таких инструментов играются перебором по аккордам, как на арфе, когда звуки аккорда следуют один за другим. Типичные арпеджио - мажорные и минорные триады, среди которых можно выбрать и другие. + No file selected + Не выбран файл - RANGE - RANGE + Open patch file + Открыть патч-файл - Arpeggio range: - Диапазон арпеджио: + Patch-Files (*.pat) + Патч-файлы (*.pat) - octave(s) - Октав[а/ы] + Open patch + + + + PeakControllerEffectControlDialog - Use this knob for setting the arpeggio range in octaves. The selected arpeggio will be played within specified number of octaves. - Используйте эту ручку, чтобы установить диапазон арпеджио (в октавах). Выбранный тип арпеджио будет охватывать указанное количество октав. + BASE + БАЗА - TIME - TIME + Modulation amount: + Глубина модуляции: - Arpeggio time: - Период арпеджио: + Attack: + Вступление: - ms - мс + Release: + Убывание: - Use this knob for setting the arpeggio time in milliseconds. The arpeggio time specifies how long each arpeggio-tone should be played. - Регулировка периода арпеджио - время (в миллисекундах), которое должен звучать каждый тон арпеджио. + AMNT + ГЛУБ - GATE - GATE + MULT + МНОЖ - Arpeggio gate: - Шлюз арпеджио: + ATCK + ВСТУП - % - % + DCAY + СПАД - 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. - Регулировка шлюза арпеджио, показывает процентную долю каждого тона арпеджио, которая будет воспроизведена. Простой способ создавать стаккато-арпеджио. + Treshold: + - Chord: - Аккорд: + TRSH + - Direction: - Направление: + Base: + - Mode: - Режим: + Amount multiplicator: + - SKIP - + Mute output + Заглушить вывод - Skip rate: - + Absolute value + + + + PeakControllerEffectControls - 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. - + Base value + Опорное значение - MISS - + Modulation amount + Глубина модуляции - Miss rate: - + Mute output + Заглушить вывод - The miss function will make the arpeggiator miss the intended note. - + Attack + Вступление - CYCLE - + Release + Убывание - Cycle notes: - + Treshold + - note(s) - нота(ы) + Absolute value + - 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. - + Amount multiplicator + - InstrumentFunctionNoteStacking + QWidget - octave - Октава + Name: + Название: - Major - Мажорный + Maker: + Создатель: - Majb5 - + Copyright: + Правообладатель: - minor - минорный + Requires Real Time: + Требуется обработка в реальном времени: - minb5 - + Yes + Да - sus2 - + No + Нет - sus4 - + Real Time Capable: + Работа в реальном времени: - aug - + In Place Broken: + Вместо сломанного: - augsus4 - + Channels In: + Каналы в: - tri - + Channels Out: + Каналы из: - 6 - + File: + Файл: - 6sus4 - + File: %1 + Файл: %1 + + + ReverbSCControlDialog - 6add9 - + Input + Ввод - m6 - + Size + Размер - m6add9 - + Size: + Размер: - 7 - + Color + Цвет - 7sus4 - + Color: + Цвет: - 7#5 - + Output + Вывод - 7b5 - + Input gain: + Входная мощность: - 7#9 - + Output gain: + Выходная мощность: + + + ReverbSCControls - 7b9 - + Size + Размер - 7#5#9 - + Color + Цвет - 7#5b9 - + Input gain + Входная мощность - 7b5b9 - + Output gain + Выходная мощность + + + SpectrumAnalyzerControlDialog - 7add11 - + Linear spectrum + Линейный спектр - 7add13 - + Linear Y axis + Линейная ось ординат (Y) + + + SpectrumAnalyzerControls - 7#11 - - + Linear spectrum + Линейный спектр + + + Linear Y axis + Линейная ось ординат (Y) + - Maj7 - + Channel mode + Режим канала + + + TrackContainer - Maj7b5 - + Cancel + Отменить - Maj7#5 - + Please wait... + Подождите, пожалуйста... - Maj7#11 - + Importing MIDI-file... + Импортирую файл MIDI... + + + TripleOscillatorView - Maj7add13 - + Synchronize oscillator 1 with oscillator 2 + Синхронизировать первый осциллятор по второму - m7 - + Synchronize oscillator 2 with oscillator 3 + Синхронизировать осциллятор 2 и 3 - m7b5 - + Osc %1 volume: + Громкость осциллятора %1: - m7b9 - + Osc %1 panning: + Баланс для осциллятора %1: - m7add11 - + Osc %1 coarse detuning: + Грубая подстройка осциллятора %1: - m7add13 - + semitones + полутон[а,ов] - m-Maj7 - + Osc %1 fine detuning left: + Точная подстройка левого канала осциллятора %1: - m-Maj7add11 - + cents + Проценты - m-Maj7add13 - + Osc %1 fine detuning right: + Точная подстройка правого канала осциллятора %1: - 9 - + Osc %1 phase-offset: + Сдвиг фазы осциллятора %1: - 9sus4 - + degrees + градусы - add9 - + Osc %1 stereo phase-detuning: + Подстройка стерео фазы осциллятора %1: - 9#5 - + Modulate phase of oscillator 1 by oscillator 2 + - 9b5 - + Modulate amplitude of oscillator 1 by oscillator 2 + - 9#11 - + Mix output of oscillators 1 & 2 + - 9b13 - + Modulate frequency of oscillator 1 by oscillator 2 + - Maj9 - + Modulate phase of oscillator 2 by oscillator 3 + - Maj9sus4 - + Modulate amplitude of oscillator 2 by oscillator 3 + - Maj9#5 - + Mix output of oscillators 2 & 3 + - Maj9#11 - + Modulate frequency of oscillator 2 by oscillator 3 + - m9 - + Sine wave + Синусоида - madd9 - + Triangle wave + - m9b5 - + Saw wave + Зигзаг - m9-Maj7 - + Square wave + - 11 - + Moog-like saw wave + - 11b9 - + Exponential wave + Экспоненциальная волна - Maj11 - + White noise + Белый шум - m11 - + User-defined wave + + + + VestigeInstrumentView - m-Maj11 - + Show/hide GUI + Показать/скрыть интерфейс - 13 - + Turn off all notes + Выключить все ноты - 13#9 - + DLL-files (*.dll) + Бибилиотеки DLL (*.dll) - 13b9 - + EXE-files (*.exe) + Программы EXE (*.exe) - 13b5b9 - + Previous (-) + Предыдущий <-> - Maj13 - + Save preset + Сохранить предустановку - m13 - + Next (+) + Следующий <+> - m-Maj13 - + Preset + Предустановка - Harmonic minor - + by + от - Melodic minor - + - VST plugin control + - управление VST плагином - Whole tone - + Open VST plugin + - Diminished - + Control VST plugin from LMMS host + - Major pentatonic - + Open VST plugin preset + - Minor pentatonic - + No VST plugin loaded + + + + VstEffectControlDialog - Jap in sen - + Show/hide + Показать/Скрыть - Major bebop - + Previous (-) + Предыдущий <-> - Dominant bebop - + Next (+) + Следующий <+> - Blues - + Save preset + Сохранить настройку - Arabic - + Effect by: + Эффекты по: - Enigmatic - + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /> + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /> - Neopolitan - + Control VST plugin from LMMS host + - Neopolitan minor - + Open VST plugin preset + + + + VstPlugin - Hungarian minor - + Loading plugin + Загрузка модуля - Dorian - + Open Preset + Открыть предустановку - Phrygolydian - + Vst Plugin Preset (*.fxp *.fxb) + Предустановка VST плагина (*.fxp *.fxb) - Lydian - + : default + : основные - Mixolydian - + " + " - Aeolian - + ' + ' - Locrian - + Save Preset + Сохранить предустановку - Chords - Аккорды + .fxp + .fxp - Chord type - Тип аккорда + .FXP + .FXP - Chord range - Диапазон аккорда + .FXB + .FXB - Minor - + .fxb + .fxb - Chromatic - + Please wait while loading VST plugin... + Пожалуйста, подождите пока грузится VST плагин... - Half-Whole Diminished - + The VST plugin %1 could not be loaded. + VST плагин %1 не может быть загружен. + + + WatsynInstrument - 5 - + Volume A1 + - Phrygian dominant - + Volume A2 + - Persian - + Volume B1 + + + + Volume B2 + - - - InstrumentFunctionNoteStackingView - RANGE - ДИАП + Panning A1 + - Chord range: - Диапазон аккорда: + Panning A2 + - octave(s) - Октав[а/ы] + Panning B1 + - Use this knob for setting the chord range in octaves. The selected chord will be played within specified number of octaves. - Эта ручка изменяет диапазон аккорда, который будет содержать указанное число октав. + Panning B2 + - STACKING - СТЫКОВКА + Freq. multiplier A1 + - Chord: - Аккорд: + Freq. multiplier A2 + - - - InstrumentMidiIOView - ENABLE MIDI INPUT - ВКЛ MIDI ВВОД + Freq. multiplier B1 + - CHANNEL - CHANNEL + Freq. multiplier B2 + - VELOCITY - VELOCITY + Left detune A1 + - ENABLE MIDI OUTPUT - ВКЛ MIDI ВЫВОД + Left detune A2 + - PROGRAM - PROGRAM + Left detune B1 + - MIDI devices to receive MIDI events from - MiDi устройства-источники событий + Left detune B2 + - MIDI devices to send MIDI events to - MiDi устройства для отправки событий на них + Right detune A1 + - NOTE - NOTE + Right detune A2 + - CUSTOM BASE VELOCITY - ПРОИЗВОЛЬНАЯ БАЗОВАЯ СКОРОСТЬ + Right detune B1 + - Specify the velocity normalization base for MIDI-based instruments at 100% note velocity - Определяет базовую скорость нормализации для MiDi инструментов при громкости ноты 100% + Right detune B2 + - BASE VELOCITY - БАЗОВАЯ СКОРОСТЬ + A-B Mix + - - - InstrumentMiscView - MASTER PITCH - + A-B Mix envelope amount + - Enables the use of Master Pitch - Включает использование основной тональности + A-B Mix envelope attack + - - - InstrumentSoundShaping - VOLUME - VOLUME + A-B Mix envelope hold + - Volume - Громкость + A-B Mix envelope decay + - CUTOFF - CUTOFF + A1-B2 Crosstalk + - Cutoff frequency - Срез частоты + A2-A1 modulation + - RESO - RESO + B2-B1 modulation + - Resonance - Резонанс + Selected graph + + + + + WatsynView + + Select oscillator A1 + - Envelopes/LFOs - Огибание/LFO + Select oscillator A2 + - Filter type - Тип фильтра + Select oscillator B1 + - Q/Resonance - + Select oscillator B2 + - LowPass - Низ.ЧФ + Mix output of A2 to A1 + - HiPass - Выс.ЧФ + Mix output of B2 to B1 + - BandPass csg - Сред.ЧФ csg + Draw your own waveform here by dragging your mouse on this graph. + Здесь вы можете рисовать собственный сигнал передвигая зажатой мышью по этому графу. - BandPass czpg - Сред.ЧФ czpg + Load waveform + - Notch - Полосно-заграждающий + Phase left + Фаза слева - Allpass - Все проходят + Phase right + Фаза справа - Moog - Муг + Normalize + Нормализовать - 2x LowPass - 2х Низ.ЧФ + Invert + - RC LowPass 12dB - RC Низ.ЧФ 12дБ + Smooth + Сгладить - RC BandPass 12dB - RC Сред.ЧФ 12 дБ + Sine wave + Синусоида - RC HighPass 12dB - RC Выс.ЧФ 12дБ + Triangle wave + Треугольная волна - RC LowPass 24dB - RC Низ.ЧФ 24дБ + Square wave + Квадрат - RC BandPass 24dB - RC Сред.ЧФ 24дБ + Volume + Громкость - RC HighPass 24dB - RC Выс.ЧФ 24дБ + Panning + Баланс - Vocal Formant Filter - Фильтр Вокальной форманты + Freq. multiplier + - 2x Moog - 2x Муг + Left detune + - SV LowPass - SV Низ.ЧФ + cents + - SV BandPass - SV Сред.ЧФ + Right detune + - SV HighPass - SV Выс.ЧФ + A-B Mix + - SV Notch - + Mix envelope amount + - Fast Formant - + Mix envelope attack + - Tripole - + Mix envelope hold + - - - InstrumentSoundShapingView - TARGET - ЦЕЛЬ + Mix envelope decay + - 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...! - Эта вкладка позволяет вам настроить огибающие. Они очень важны для настройки звучания. -Например, с помощью огибающей громкости вы можете задать зависимость громкости звучания от времени. Если вам понадобится эмулировать мягкие струнные, просто задайте больше времени нарастания и исчезновения звука. С помощью обгибающих и низкочастотного осцилятора (LFO) вы в несколько щелчков мыши сможете создать просто невероятные звуки! + Crosstalk + - FILTER - ФИЛЬТР + Modulate amplitude of A1 by output of A2 + - 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. - Здесь вы можете выбрать фильтр для дорожки этого инструмента. Фильтры могут довольно сильно менять звучание. + Ring modulate A1 and A2 + - Hz - Гц + Modulate phase of A1 by output of A2 + - 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... - Эта ручка устанавливает частоту среза для выбранного фильтра. К примеру, ФНЧ будет срезать сигнал на частотах выше частоты среза, полосно-пропускающий фильтр будет хорошо пропускать сигнал только на заданной частоте и так далее... + Modulate amplitude of B1 by output of B2 + - RESO - RESO + Ring modulate B1 and B2 + - Resonance: - Резонанс: + Modulate phase of B1 by output of B2 + - 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. - Эта ручка задаёт количество резонанса для фильтра, этим определяется насколько нужно усилить ближайшие к отрезанным частоты. + Load a waveform from a sample file + - FREQ - ЧАСТ + Shift phase by -15 degrees + - cutoff frequency: - Срез частот: + Shift phase by +15 degrees + - Envelopes, LFOs and filters are not supported by the current instrument. - Огибающие, LFO и фильтры не поддерживаются этим инструментом. + Saw wave + Зигзаг - InstrumentTrack + Xpressive - unnamed_track - безымянная_дорожка + Selected graph + - Volume - Громкость + A1 + - Panning - Стерео + A2 + - Pitch - Тональность + A3 + - FX channel - Канал ЭФ + W1 smoothing + - Default preset - Основная предустановка + W2 smoothing + - With this knob you can set the volume of the opened channel. - Регулировка громкости текущего канала. + W3 smoothing + - Base note - Опорная нота + Panning 1 + - Pitch range - Диапазон тональности + Panning 2 + - Master Pitch - + Rel trans + - InstrumentTrackView + XpressiveView - Volume - Громкость + Draw your own waveform here by dragging your mouse on this graph. + - Volume: - Громкость: + Select oscillator W1 + - VOL - ГРОМ + Select oscillator W2 + - Panning - Баланс + Select oscillator W3 + - Panning: - Баланс: + Select output O1 + - PAN - БАЛ + Select output O2 + - MIDI - MIDI + Open help window + - Input - Вход + Sine wave + Синусоида - Output - Выход + Moog-saw wave + - FX %1: %2 - ЭФ %1: %2 + Exponential wave + Экспоненциальная волна - - - InstrumentTrackWindow - GENERAL SETTINGS - ОСНОВНЫЕ НАСТРОЙКИ + Saw wave + Зигзаг - Instrument volume - Громкость инструмента + User-defined wave + - Volume: - Громкость: + Triangle wave + - VOL - ГРОМ + Square wave + - Panning - Баланс + White noise + Белый шум - Panning: - Стереобаланс: + WaveInterpolate + - PAN - БАЛ + ExpressionValid + - Pitch - Тональность + General purpose 1: + - Pitch: - Тональность: + General purpose 2: + - cents - процентов + General purpose 3: + - PITCH - ТОН + O1 panning: + - FX channel - Канал ЭФ + O2 panning: + - FX - ЭФ + Release transition: + - Save preset - Сохранить предустановку + Smoothness + + + + ZynAddSubFxInstrument - XML preset file (*.xpf) - XML файл настроек (*.xpf) + Portamento + Портаменто - Pitch range (semitones) - Диапазон тональности (полутона) + Bandwidth + Ширина полосы - RANGE - ДИАП + Filter frequency + - Save current instrument track settings in a preset file - Сохранить текущую инструментаьную дорожку в файл предустановок + Filter resonance + - 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. - Нажать здесь, чтобы сохранить настройки текущей инстр. дорожки в файл предустановок. Позже можно загрузить эту предустановку двойным кликом в браузере предустановок. + FM gain + - Use these controls to view and edit the next/previous track in the song editor. - Используйте эти регуляторы, чтобы видеть и редактировать дорожку в редакторе песни. + Resonance center frequency + - SAVE - Сохранить + Resonance bandwidth + - Envelope, filter & LFO - + Forward MIDI control change events + + + + ZynAddSubFxView - Chord stacking & arpeggio - + Show GUI + Показать интерфейс - Effects - + Portamento: + Портаменто: - MIDI settings - Параметры MIDI + PORT + PORT - Miscellaneous - + FREQ + FREQ - Plugin - + RES + RES - - - Knob - Set linear - Установить линейно + Bandwidth: + Полоса пропускания: - Set logarithmic - Установить логарифмически + BW + BW - Please enter a new value between %1 and %2: - Введите новое значение от %1 до %2: + FM GAIN + FM GAIN - Please enter a new value between -96.0 dBFS and 6.0 dBFS: - Введите новое значение от –96,0 дБВ до 6,0 дБВ: + Resonance center frequency: + Частоты центра резонанса: - - - LadspaControl - Link channels - Связать каналы + RES CF + RES CF - - - LadspaControlDialog - Link Channels - Связать каналы + Resonance bandwidth: + Ширина полосы резонанса: - Channel - Канал + RES BW + RES BW - - - LadspaControlView - Link channels - Связать каналы + Filter frequency: + - Value: - Значение: + Filter resonance: + - Sorry, no help available. - Извините, справки нет. + FM gain: + - - - LadspaEffect - Unknown LADSPA plugin %1 requested. - Запрошен неизвестный модуль LADSPA «%1». + Forward MIDI control changes + - LcdSpinBox + audioFileProcessor - Please enter a new value between %1 and %2: - Введите новое значение от %1 до %2: + Amplify + Усиление - - - LeftRightNav - Previous - Предыдущий + Start of sample + Начало записи - Next - Следующий + End of sample + Конец записи - Previous (%1) - Предыдущий (%1) + Reverse sample + Перевернуть запись - Next (%1) - Следующий (%1) + Stutter + Запинание - - - LfoController - LFO Controller - Контроллер LFO + Loopback point + Точка петли - Base value - Основное значение + Loop mode + Режим повтора - Oscillator speed - Скорость волны + Interpolation mode + Режим интерполяции - Oscillator amount - Размер волны + None + Нет - Oscillator phase - Фаза волны + Linear + - Oscillator waveform - Форма волны + Sinc + - Frequency Multiplier - Множитель частоты + Sample not found: %1 + Сэмпл не найден: %1 - LfoControllerDialog + bitInvader - LFO - LFO + Sample length + + + + bitInvaderView - LFO Controller - Контроллер LFO + Sine wave + Синусоида - BASE - БАЗА + Triangle wave + Треугольник - Base amount: - Кол-во базы: + Saw wave + Зигзаг - todo - доделать + Square wave + Квадрат (Меандр) - SPD - СКОР + Interpolation + Интерполяция - LFO-speed: - Скорость LFO: + Normalize + Нормализовать - Use this knob for setting speed of the LFO. The bigger this value the faster the LFO oscillates and the faster the effect. - Эта ручка устанавлявает скорость LFO. Чем больше значение, тем больше частота осциллятора. + Draw your own waveform here by dragging your mouse on this graph. + Здесь вы можете рисовать собственный сигнал. - Modulation amount: - Количество модуляции: + Sample length + - 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. - Эта ручка устанавливает глубину модуляции для LFO. Чем больше значение, тем в большей степени выбранная характеристика (н-р, громкость или частота среза) будет зависеть от ГНЧ(LFO). + White noise + Белый шум - PHS - ФАЗА + User-defined wave + - Phase offset: - Сдвиг фазы: + Smooth waveform + Сгладить волну + + + dynProcControlDialog - degrees - градусы + INPUT + ВХОД - 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. - Эта ручка устанавливает начальную фазу НизкоЧастотного Осциллятора (LFO), т. е. точку, с которой осциллятор начинает вырабатывать сигнал. Например, если вы задали синусоидальную форму сигнала и начальную фазу 180º, волна сначала пойдёт вниз, а не вверх, так же как и для квадратной волны. + Input gain: + Входная мощность: - Click here for a sine-wave. - Синусоида. + OUTPUT + Выход - Click here for a triangle-wave. - Треугольник. + Output gain: + Выходная мощность: - Click here for a saw-wave. - Зигзаг. + ATTACK + АТАКА - Click here for a square-wave. - Квадрат. + Peak attack time: + Время пиковой атаки: - Click here for an exponential wave. - Экспонента. + RELEASE + ОТПУСК - Click here for white-noise. - Белый шум. + Peak release time: + Время отпуска пика: - Click here for a user-defined shape. -Double click to pick a file. - Нажмите здесь для определения своей формы. -Двойное нажатие для выбора файла. + Process based on the maximum of both stereo channels + Процесс основанный на максимуме от обоих каналов - Click here for a moog saw-wave. - Нажать здесь для зигзагообразной муг волны. + Process based on the average of both stereo channels + Процесс основанный на средней обоих каналов - AMNT - ГЛУБ + Process each stereo channel independently + Обрабатывает каждый стерео канал независимо - - - LmmsCore - Generating wavetables - Генерация волн + Reset wavegraph + - Initializing data structures - Инициализация структуры данных + Smooth wavegraph + - Opening audio and midi devices - Открываем аудио и миди устройства + Increase wavegraph amplitude by 1 dB + - Launching mixer threads - Запускаем потоки микшера + Decrease wavegraph amplitude by 1 dB + - - - MainWindow - &New - &N Новый + Stereo mode: maximum + - &Open... - &Открыть... + Stereo mode: average + - &Save - &S Сохранить + Stereo mode: unlinked + + + + dynProcControls - Save &As... - &A Сохранить как... + Input gain + Входная мощность - Import... - Импорт... + Output gain + Выходная мощность - E&xport... - &X Экспорт... + Attack time + Время атаки - &Quit - &Q Выйти + Release time + Время отпуска - &Edit - &E Правка + Stereo mode + Режим стерео + + + kickerInstrument - Settings - Параметры + Start frequency + Начальная частота - &Tools - &T Сервис + End frequency + Конечная частота - &Help - &H Справка + Gain + Усиление - Help - Справка + Length + Длина - What's this? - Что это? + Noise + Шум - About - О программе + Click + - Create new project - Создать новый проект + Start from note + - Create new project from template - Создать новый проект по шаблону + End to note + - Open existing project - Открыть существующий проект + Start distortion + - Recently opened projects - Недавние проекты + End distortion + - Save current project - Сохранить текущий проект + Envelope slope + - Export current project - Экспорт проекта + Frequency slope + + + + kickerInstrumentView - Song Editor - Показать/скрыть музыкальный редактор + Start frequency: + Начальная частота: - 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. - Сим запускается или скрывается музыкальный редактор. С его помощью вы можете редактировать композицию и задавать время воспроизведения каждой дорожки. -Также вы можете вставлять и передвигать записи прямо в списке воспроизведения. + End frequency: + Конечная частота: - Beat+Bassline Editor - Показать/скрыть ритм-бас редактор + Gain: + Усиление: - 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. - Сим запускается ритм-бас редактор. Он необходим для установки ритма, открытия, добавления и удаления каналов, а также вырезания, копирования и вставки ритм-бас шаблонов, мелодий и т. п. + Click: + - Piano Roll - Показать/скрыть нотный редактор + Noise: + Шум: - Click here to show or hide the Piano-Roll. With the help of the Piano-Roll you can edit melodies in an easy way. - Запуск редатора нот. С его помощью вы можете легко редактировать мелодии. + Frequency slope: + - Automation Editor - Показать/скрыть редактор автоматизации + Envelope length: + - 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. - Показать/скрыть окно редактора автоматизации. С его помощью вы можете легко редактироватьдинамику выбранных величин. + Envelope slope: + - FX Mixer - Показать/скрыть микшер ЭФ + Start distortion: + - 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. - Скрыть/показать микшер ЭФфектов. Он является мощным инструментом для управления эффектами. Вы можете вставлять эффекты в различные каналы. + End distortion: + + + + ladspaBrowserView - Project Notes - Показать/скрыть заметки к проекту + Available Effects + Доступные эффекты - Click here to show or hide the project notes window. In this window you can put down your project notes. - Эта кнопка показывает/прячет окно с заметками. В этом окне вы можете помещать любые комментарии к своей композиции. + Unavailable Effects + Недоступные эффекты - Controller Rack - Показать/скрыть управление контроллерами + Instruments + Инструменты - Untitled - Неназванный + Analysis Tools + Анализаторы - LMMS %1 - LMMS %1 + Don't know + Неизвестные - Project not saved - Проект не сохранён + Type: + Тип: + + + ladspaDescription - The current project was modified since last saving. Do you want to save it now? - Проект был изменён. Сохранить его сейчас? + Plugins + Модули - Help not available - Справка недоступна + Description + Описание + + + ladspaPortDialog - Currently there's no help available in LMMS. -Please visit http://lmms.sf.net/wiki for documentation on LMMS. - Пока что справка для LMMS не написана. -Вероятно, Вы сможете найти нужные материалы на http://lmms.sf.net/wiki . + Ports + Порты - LMMS (*.mmp *.mmpz) - LMMS (*.mmp *.mmpz) + Name + Название - Version %1 - Версия %1 + Rate + Частота выборки - Configuration file - Файл настроек + Direction + Направление - Error while parsing configuration file at line %1:%2: %3 - Ошибка во время обработки файла настроек в строке %1:%2: %3 + Type + Тип - Volumes - Громкость 1 оциллятора - - - Undo - Откатить действие - - - Redo - Возврат действия - - - My Projects - Мои проекты - - - My Samples - Мои сэмплы - - - My Presets - Мои предустановки - - - My Home - Моя домашняя папка - - - My Computer - Мой компьютер - - - &File - &F Файл - - - &Recently Opened Projects - &R Недавние проекты - - - Save as New &Version - &V Сохранить как новую версию - - - E&xport Tracks... - &x Экспорт дорожек... - - - 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? - Остался файл для восстановления. Похоже последняя сессия не была нормально завершена или запущен ещё один процесс LMMS. -Хотите восстановить проект из этой сессии? - - - 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 - - - - Volume as dBFS - - - - 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! - Невозможно открыть файл %1 для записи. Пожалуйста, убедитесь, что у вас есть разрешение на запись в файл и содержащую его директорию, и попробуйте снова. - - - Export &MIDI... - Экспорт &MIDI... - - - - MeterDialog - - Meter Numerator - Шкала чисел - - - Meter Denominator - Шкала делений - - - TIME SIG - ПЕРИОД - - - - MeterModel - - Numerator - Числитель - - - Denominator - Знаменатель - - - - MidiController - - MIDI Controller - Контроллер MIDI - - - unnamed_midi_controller - нераспознанный миди контроллер - - - - 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. - Вы не установили SoundFont по умолчанию в параметрах (Правка->Настройки), поэтому после импорта миди файла звук воспроизводиться не будет. -Вам следует загрузить основной MiDi SoundFont, указать его в параметрах и попробовать снова. - - - 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. - Вы не включили поддержку проигрывателя SoundFont2 при компиляции ЛММС, он используется для добавления основного звука в импортируемые Миди файлы, поэтому звука не будет после импорта этого миди файла. - - - Track - - - - - MidiJack - - JACK server down - When JACK(JACK Audio Connection Kit) disconnects, it will show the following message (title) - JACK-сервер не доступен - - - The JACK server seems to be shuted down. - When JACK(JACK Audio Connection Kit) disconnects, it will show the following message (dialog message) - - - - - MidiPort - - Input channel - Вход - - - Output channel - Выход - - - Input controller - Контроллер входа - - - Output controller - Контроллер выхода - - - Fixed input velocity - Постоянная скорость ввода - - - Fixed output velocity - Постоянная скорость вывода - - - Output MIDI program - Программа для вывода MiDi - - - Receive MIDI-events - Принимать события MIDI - - - Send MIDI-events - Отправлять события MIDI - - - Fixed output note - Постоянный вывод нот - - - Base velocity - Базовая скорость - - - - MidiSetupWidget - - DEVICE - УСТРОЙСТВО - - - - 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 - Случайное сглаживание - - - - 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. - -Each modulation target has 4 knobs, one for each modulator. By default the knobs are at 0, which means no modulation. Turning a knob to 1 causes that modulator to affect the modulation target as much as possible. Turning it to -1 does the same, but the modulation is inversed. - Матричный вид содержит матрицу модуляции. Здесь можно определить модуляционное отношение между разными операторами. Каждый слышимый оператор (осцилляторы 1-3) имеют 3-4 свойства, которые можно модулировать любыми модуляторами. Используя больше модуляций увеличивается нагрузка на процессор. - -Вид делится на цели модуляции, сгруппированные на целевой осциллятор. Доступные цели : громкость, тон, фаза, ширина пульсации и отношение с подчиненным (под-) осциллятором. Отметим что некоторые цели определены только для одного осциллятора. - -Каждая цель модуляции имеет 4 регулятора, один на каждый модулятор. По умолчанию регуляторы установлены на 0, то есть без модуляции. Включая регулятор на 1 ведёт к тому, что модулятор влияет на цель модуляции на столько на сколько возможно. Включая его на -1 делает то же, но с обратной модуляцией. - - - Mix Osc2 with Osc3 - Смешать Осц2 с Осц3 - - - Modulate amplitude of Osc3 with Osc2 - Модулировать амплитуду осциллятора 3 сигналом с осц2 - - - Modulate frequency of Osc3 with Osc2 - Модулировать частоту осциллятора 3 сигналом с осц2 - - - Modulate phase of Osc3 with Osc2 - Модулировать фазу Осц3 осциллятором2 - - - The CRS knob changes the tuning of oscillator 1 in semitone steps. - Регулятор CRS меняет настройку осциллятора 1 в размере полутона. - - - The CRS knob changes the tuning of oscillator 2 in semitone steps. - Регулятор CRS меняет настройку осциллятора 2 в размере полутона. - - - The CRS knob changes the tuning of oscillator 3 in semitone steps. - Регулятор CRS меняет настройку осциллятора 3 в размере полутона. - - - 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. - FTL и FTR меняют подстройку осциллятора для левого и правого канала соответственно. Они могут добавить стерео расстраивания осциллятора, которое расширяет стерео картину и создаёт иллюзию космоса. - - - The SPO knob modifies the difference in phase between left and right channels. Higher difference creates a wider stereo image. - Регулятор SPO меняет фазовую разницу между левым и правым каналами. Высокая разница создаёт более широкую стерео картину. - - - 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. - PW регулятор контролирует ширину пульсаций, также известную как рабочий цикл осциллятора 1. Осциллятор 1 это цифровой импульсный волновой генератор, он не воспроизводит сигнал с ограниченной полосой, это значит, что его можно использовать как слышимый осциллятор, но приведёт к наложению сигналов (или сглаживанию). Его можно использовать и как не слышимый источник синхронизирующего сигнала, для использования в синхронизации осцилляторов 2 и 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. - Посылать синхронизацию при повышении: при включении, сигнал синхронизации посылается каждый раз когда состояние осциллятора 1 меняется с низкого на высокое, т.е. когда амплитуда меняется от -1 до 1. -Тон осциллятора 1, фаза и ширина пульсаций может влиять на время синхронизации, но громкость не имеет эффекта. Сигнал синхронизации посылается независимо для левого и правого каналов. - - - 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. - Посылать синхронизацию при падении: при включении, сигнал синхронизации посылается каждый раз когда состояние осциллятора 1 меняется с выского на низкое, т.е. когда амплитуда меняется от 1 до -1. -Тон осциллятора 1, фаза и ширина пульсаций может влиять на время синхронизации, но громкость не имеет эффекта. Сигнал синхронизации посылается независимо для левого и правого каналов. - - - Hard sync: Every time the oscillator receives a sync signal from oscillator 1, its phase is reset to 0 + whatever its phase offset is. - Жесткая синхр. : Каждый раз при получении осциллятором сигнала синхронизации от осциллятора 1, его фаза сбрасывается до 0 + его граница фазы, какой бы она ни была. - - - Reverse sync: Every time the oscillator receives a sync signal from oscillator 1, the amplitude of the oscillator gets inverted. - Обратная синхронизация: Каждый раз при получении сигнала синхронизации от осциллятора 1, амплитуда осцилятора переворачивается. - - - Choose waveform for oscillator 2. - Выбрать форму волны для осциллятора 2. - - - Choose waveform for oscillator 3's first sub-osc. Oscillator 3 can smoothly interpolate between two different waveforms. - Выберите форму волны для первого доп. осциллятора осциллятора 3. Осциллятор 3 может мягко переходить между двумя разными волнами. - - - Choose waveform for oscillator 3's second sub-osc. Oscillator 3 can smoothly interpolate between two different waveforms. - Выберите форму волны для второго доп. осциллятора осциллятора 3. Осциллятор 3 может мягко переходить между двумя разными волнами. - - - 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. - SUB меняет смешивание двух доп. осяцилляторов осциллятора 3. Каждый доп. осц. может быть установлен для создания разных волн и осциллятор 3 может мягко переходить между ними. Все входящие модуляции для осциллятора 3 применяются на оба доп.осц./волны одним и тем же образом. - - - 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. - В дополнение к выделенным модуляторам Монстро позволяет выходу осциллятора 2 модулировать осцллятор 3. - -Смешанный (Mix) режим значит без модуляции: выходы осцилляторов просто смешиваются друг с другом. - - - 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. - В дополнение к выделенным модуляторам Монстро позволяет выходу осциллятора 2 модулировать осцллятор 3. - -AM режим значит Амплитуда Модуляции: Осциллятор 2 модулирует амплитуду (громкость) осциллятора 3. - - - 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. - В дополнение к выделенным модуляторам Монстро позволяет выходу осциллятора 2 модулировать осцллятор 3. - -FM (ЧМ) режим значит Частотная Модуляция: Осциллятор 2 модулирует частоту (pitch, тональность) осциллятора 3. Частота модуляции происходит в фазе модуляции, которая даёт более стабильный общий тон, чем "чистая" частотная модуляция. - - - 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. - В дополнение к выделенным модуляторам Монстро позволяет выходу осциллятора 2 модулировать осцллятор 3. - -PM (ФМ) режим значит фазовая модуляция: Осциллятор 2 модулирует фазу осциллятора 3. Это отличается от частотной модуляции тем, что изменения фаз не суммируются. - - - 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... - Выберите форму волны для LFO 1 (НизкоЧастотныйГенератор). -"Random" (Случайно) и "Random-smooth" (случайное сглаживание) - это специальные волны: они создают случаный сигнал, где частота LFO контролирует как часто изменяется состояние генератора (LFO). -Сглаженная версия переходит между этими состояниями с косинусоидальной интерплояцией. Эти случайные режимы могут быть использованы, чтобы дать "жизни" вашим настройкам - добавить немного аналоговой непредсказуемости... - - - 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... - Выберите форму волны для LFO 2 (НизкоЧастотныйГенератор). -"Random" (Случайно) и "Random-smooth" (случайное сглаживание) - это специальные волны: они создают случаный сигнал, где частота LFO контролирует как часто изменяется состояние генератора (LFO). -Сглаженная версия переходит между этими состояниями с косинусоидальной интерплояцией. Эти случайные режимы могут быть использованы, чтобы дать "жизни" вашим настройкам - добавить немного аналоговой непредсказуемости... - - - Attack causes the LFO to come on gradually from the start of the note. - Атака отвечает за плавность поведения LFO от начала ноты. - - - Rate sets the speed of the LFO, measured in milliseconds per cycle. Can be synced to tempo. - Rate (Частота) устанавливает скорость LFO, измеряемую в миллисекундах за цикл. Может синхронизироваться с темпом. - - - PHS controls the phase offset of the LFO. - PHS контролирует сдвиг фазы LFO (НЧГ). - - - PRE, or pre-delay, delays the start of the envelope from the start of the note. 0 means no delay. - PRE предзадержка, задерживает старт огибающей от начала ноты. 0 значит без задержки. - - - ATT, or attack, controls how fast the envelope ramps up at start, measured in milliseconds. A value of 0 means instant. - ATT атака контролирует как быстро огибающая наращивается на старте, измеряясь в милисекундах. Значение 0 значит мгновенно. - - - HOLD controls how long the envelope stays at peak after the attack phase. - HOLD (УДЕРЖ) контролирует как долго огибающая остаётся на пике после фазы атаки. - - - 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. - DEC (decay) затухание контролирует как быстро огибающая спадает с пикового значения, измеряется в милисекундах, как долго будет идти с пика до нуля. Реальное затухание может быть короче, если используется выдержка. - - - 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. - SUS (sustain) выдержка, контролирует уровень огибающей. Затухание фазы не пойдёт ниже этого уровня пока нота удерживается. - - - 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. - REL (release) отпуск контролирует как долго нота отпускается, измеряясь в долготе падения от пика до нуля. Реальный отпуск может быть короче, в зависимости от фазы, в которой нота отпущена. - - - 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. - Регулятор наклона контролирует кривую или образ огибающей. Значение 0 создаёт прямые подъёмы и спады. Отрицательные величины создают кривые с замедленным началом, быстрым пиком и снова замедленным спадом. Позитивные значения создают кривые которые начинаются и кончаются быстро, но долбше остаются на пиках. - - - 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 - Глубина модуляции - - - - MultitapEchoControlDialog - - Length - Длина - - - Step length: - - - - Dry - - - - Dry Gain: - - - - Stages - - - - Lowpass stages: - - - - Swap inputs - - - - Swap left and right input channel for reflections - Поменять вход левого и правого канала для отзвуков - - - - NesInstrument - - Channel 1 Coarse detune - - - - Channel 1 Volume - Громкость 1 канала - - - Channel 1 Envelope length - - - - Channel 1 Duty cycle - - - - Channel 1 Sweep amount - - - - Channel 1 Sweep rate - - - - Channel 2 Coarse detune - - - - Channel 2 Volume - Громкость 2 канала - - - Channel 2 Envelope length - - - - Channel 2 Duty cycle - - - - Channel 2 Sweep amount - - - - Channel 2 Sweep rate - - - - Channel 3 Coarse detune - - - - Channel 3 Volume - Громкость 3 канала - - - Channel 4 Volume - Громкость 4 канала - - - Channel 4 Envelope length - - - - Channel 4 Noise frequency - - - - Channel 4 Noise frequency sweep - - - - Master volume - Основная громкость - - - Vibrato - Вибрато - - - - 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 - Вибрато - - - - OscillatorObject - - Osc %1 volume - Громкость осциллятора %1 - - - Osc %1 panning - Стереобаланс для осциллятора %1 - - - Osc %1 coarse detuning - Подстройка осциллятора %1 грубая - - - Osc %1 fine detuning left - Подстройка левого канала осциллятора %1 тонкая - - - Osc %1 fine detuning right - Подстройка правого канала осциллятора %1 тонкая - - - Osc %1 phase-offset - Сдвиг фазы для осциллятора %1 - - - Osc %1 stereo phase-detuning - Подстройка стерео-фазы осциллятора %1 - - - Osc %1 wave shape - Гладкость сигнала осциллятора %1 - - - Modulation type %1 - Тип модуляции %1 - - - Osc %1 waveform - Форма сигнала осциллятора %1 - - - Osc %1 harmonic - Осц %1 гармонический - - - - PatchesDialog - - Qsynth: Channel Preset - - - - Bank selector - - - - Bank - Банк - - - Program selector - Выбор программ - - - Patch - Патч - - - Name - Имя - - - OK - ОК - - - Cancel - Отмена - - - - 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. - Здесь включается/выключается режим повтора, при включёнии PatMan будет использовать информацию о повторе из файла. - - - Tune - Подстроить - - - Tune mode - Тип подстройки - - - Here you can toggle the Tune mode. If enabled, PatMan will tune the sample to match the note's frequency. - Здесь включается/выключается режим подстройки. Если он включён, то PatMan изменит запись так, чтобы она совпадала по частоте с нотой. - - - No file selected - Не выбран файл - - - Open patch file - Открыть патч-файл - - - Patch-Files (*.pat) - Патч-файлы (*.pat) - - - - PatternView - - Open in piano-roll - Открыть в редакторе нот - - - Clear all notes - Очистить все ноты - - - Reset name - Сбросить название - - - Change name - Переименовать - - - Add steps - Добавить такты - - - Remove steps - Удалить такты - - - Clone Steps - Клонировать такты - - - - 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. - Из-за ошибки в старой версии LMMS контроллеры вершин не могут правильно подключаться. Пж. убедитесь, что контроллеры вершин правильно подсоединены и пересохраните этот файл, извините, за причинённые неудобства. - - - - PeakControllerDialog - - PEAK - ПИК - - - LFO Controller - Контроллер LFO - - - - PeakControllerEffectControlDialog - - BASE - БАЗА - - - Base amount: - Базовое значение: - - - Modulation amount: - Глубина модуляции: - - - Attack: - Вступление: - - - Release: - Убывание: - - - AMNT - ГЛУБ - - - MULT - МНОЖ - - - Amount Multiplicator: - Величина множителя: - - - ATCK - ВСТУП - - - DCAY - СПАД - - - Treshold: - - - - TRSH - - - - - PeakControllerEffectControls - - Base value - Опорное значение - - - Modulation amount - Глубина модуляции - - - Mute output - Заглушить вывод - - - Attack - Вступление - - - Release - Убывание - - - 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% - Громкость %1% - - - Panning: %1% left - Баланс: %1% лево - - - Panning: %1% right - Баланс: %1% право - - - Panning: center - Баланс: центр - - - Please enter a new value between %1 and %2: - Введите новое значение от %1 до %2: - - - Mark/unmark all corresponding octave semitones - Отметить/Снять отметку со всех соответствующих октав полутонов - - - Select all notes on this key - Выбрать все ноты по этой кнопке - - - - PianoRollWindow - - Play/pause current pattern (Space) - Игра/Пауза текущей мелодии (Пробел) - - - Record notes from MIDI-device/channel-piano - Записать ноты с музыкального инструмента (MIDI)/канала - - - Record notes from MIDI-device/channel-piano while playing song or BB track - Записать ноты с цифрового музыкального инструмента (MIDI) во время воспроизведения композиции или дорожки Ритм-Баса - - - 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. - Нажмите эту кнопку, если вы хотите записать ноты с устройства MIDI или виртуального синтезатора соответствующего канала. Позже вы сможете отредактировать записанную мелодию. - - - 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. - Нажмите эту кнопку, если вы хотите записать ноты с устройства MIDI или виртуального синтезатора соответствующего канала. Во время записи все ноты записываются в эту мелодию, и вы будете слышать композицию или РБ дорожку на заднем плане. - - - Click here to stop playback of current pattern. - Нажмите здесь, если вы хотите остановить воспроизведение текущей мелодии. - - - Draw mode (Shift+D) - Режим рисования (Shift+D) - - - Erase mode (Shift+E) - Режим стирания (Shift+E) - - - Select mode (Shift+S) - Режим выбора нот (Shift+S) - - - Detune mode (Shift+T) - Режим подстраивания (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. - Режим рисования нот, в нём вы можете добавлять/перемещать и изменять длительность одиночных нот. Это режим по умолчанию и используется большую часть времени. -Для включения этого режима можно использовать комбинацию клавиш Shift+D, удерживайте %1 для временного переключения в режим выбора. - - - 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. - Режим стирания. В этом режиме вы можете стирать ноты. Для включения этого режима можно использовать комбинацию клавиш Shift+E. - - - 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. - Режим выделения. В этом режиме можно выделять ноты, можно также удерживать %1 в режиме рисования, чтобы можно было на время войти в режим выделения. - - - 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. - Режим подстройки. В этом режиме можно выбирать ноты для автоматизации их подстраивания. Можно использовать это для переходов нот от одной к другой. Для активации с клавиатуры <Shift+T>. - - - Cut selected notes (%1+X) - Переместить выделенные ноты в буфер (%1+X) - - - Copy selected notes (%1+C) - Копировать выделенные ноты в буфер (%1+X) - - - Paste notes from clipboard (%1+V) - Вставить ноты из буфера (%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. - "Q" обозначает квантизацию и контролирует размер нотной сетки и контрольные точки притяжения. С меньшей величиной квантизации, можно рисовать короткие ноты в редаторе нот и более точно контролировать точки в Редакторе Автоматизации. - - - 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 - Позволяет выбрть длину новой ноты. "Последняя Нота" значит, что LMMS будет использовать длину ноты, изменённой в последний раз - - - 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! - Функция напрямую связана с контекстным меню на виртуальной клавиатуре слева в нотном редакторе. После того, как выбран масштаб в выпадающем меню, можно кликнуть правой кнопкой в виртуальной клавиатуре и выбрать "Mark Current Scale" (Отметить текущий масштаб). LMMS подсветит все ноты лежащие в выбранном масштабе для выбранной клавиши! - - - 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. - Позволяет выбрать аккорд, который LMMS затем сможет нарисовать или подсветить. В этом меню можно найти ниболее популярные аккорды. После того, как вы выбрали аккорд, кликните в любом месте, чтобы поставить его и правым кликом по виртуальной клавиатуре открывается контекстное меню и подсветка аккорда. Для возврата в режим одной ноты нужно выбрать "Без аккорда" в этом выпадающем меню. - - - Edit actions - Правка: - - - Copy paste controls - Копировать-вставить управление - - - Timeline controls - Управление временем - - - Zoom and note controls - - - - Piano-Roll - %1 - Нотный редактор - %1 - - - Piano-Roll - no pattern - - - - Quantize - - - - - PianoView - - Base note - Опорная нота - - - - Plugin - - Plugin not found - Модуль не найден - - - The plugin "%1" wasn't found or could not be loaded! -Reason: "%2" - Модуль «%1» отсутствует либо не может быть загружен! -Причина: «%2» - - - Error while loading plugin - Ошибка загрузки модуля - - - Failed to load plugin "%1"! - Не получилось загрузить модуль «%1»! - - - - PluginBrowser - - 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! - ЛММС плагин %1 не имеет описания плагина с именем %2! - - - - ProjectNotes - - Edit Actions - Правка - - - &Undo - &U Отменить - - - %1+Z - %1+Z - - - &Redo - &R Повторить - - - %1+Y - %1+Y - - - &Copy - &C Копировать - - - %1+C - %1+C - - - Cu&t - &t Вырезать - - - %1+X - %1+X - - - &Paste - &P Вставить - - - %1+V - %1+V - - - Format Actions - Форматирование - - - &Bold - &b Полужирный - - - %1+B - %1+B - - - &Italic - &i Курсив - - - %1+I - %1+I - - - &Underline - &U Подчеркнутый - - - %1+U - %1+U - - - &Left - &L По левому краю - - - %1+L - %1+L - - - C&enter - По &центру - - - %1+E - - - - &Right - - - - %1+R - - - - &Justify - - - - %1+J - - - - &Color... - - - - Project Notes - Показать/скрыть заметки к проекту - - - Enter project notes here - - - - - ProjectRenderer - - WAV-File (*.wav) - Файл WAV (*.wav) - - - Compressed OGG-File (*.ogg) - Сжатый файл OGG (*.ogg) - - - FLAC-File (*.flac) - - - - 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 - Файл: %1 - - - - RenameDialog - - Rename... - Переименовать... - - - - ReverbSCControlDialog - - Input - Ввод - - - Input Gain: - Входная мощность: - - - Size - Размер - - - Size: - Размер: - - - Color - Цвет - - - Color: - Цвет: - - - Output - Вывод - - - Output Gain: - Выходная мощность: - - - - ReverbSCControls - - Input Gain - Входная мощность - - - Size - Размер - - - Color - Цвет - - - Output Gain - Выходная мощность - - - - SampleBuffer - - Open audio file - Открыть звуковой файл - - - Wave-Files (*.wav) - Файлы Wave (*.wav) - - - OGG-Files (*.ogg) - Файлы OGG (*.ogg) - - - DrumSynth-Files (*.ds) - Файлы DrumSynth (*.ds) - - - FLAC-Files (*.flac) - Файлы FLAC (*.flac) - - - SPEEX-Files (*.spx) - Файлы SPEEX (*.spx) - - - VOC-Files (*.voc) - Файлы VOC (*.voc) - - - AIFF-Files (*.aif *.aiff) - Файлы AIFF (*.aif *.aiff) - - - AU-Files (*.au) - Файлы AU (*.au) - - - RAW-Files (*.raw) - Файлы RAW (*.raw) - - - All Audio-Files (*.wav *.ogg *.ds *.flac *.spx *.voc *.aif *.aiff *.au *.raw) - Все аудио файлы (*.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 - - - - - SampleTCOView - - double-click to select sample - Выберите запись двойным нажатием мыши - - - Delete (middle mousebutton) - Удалить (средняя кнопка мыши) - - - Cut - Вырезать - - - Copy - Копировать - - - Paste - Вставить - - - Mute/unmute (<%1> + middle click) - Заглушить/включить (<%1> + средняя кнопка мыши) - - - - SampleTrack - - Sample track - Дорожка записи - - - Volume - Громкость - - - Panning - Баланс - - - - SampleTrackView - - Track volume - Громкость дорожки - - - Channel volume: - Громкость канала: - - - VOL - ГРОМ - - - Panning - Баланс - - - Panning: - Баланс: - - - PAN - БАЛ - - - - SetupDialog - - Setup LMMS - Настройка LMMS - - - General settings - Общие параметры - - - BUFFER SIZE - РАЗМЕР БУФЕРА - - - Reset to default-value - Восстановить значение по умолчанию - - - MISC - РАЗНОЕ - - - Enable tooltips - Включить подсказки - - - Show restart warning after changing settings - Показывать предупреждение о перезапуске при изменении настроек - - - 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 - Синхронизировать VST плагины с хостом воспроизведения - - - Enable note labels in piano roll - Включить обозначение нот в музыкальном редакторе - - - Enable waveform display by default - Включить отображение формы звуков по умолчанию - - - Keep effects running even without input - Продолжать работу эффектов даже без входящего сигнала - - - Create backup file when saving a project - Создать запасной файл при сохранении проекта - - - LANGUAGE - ЯЗЫК - - - Paths - Пути - - - LMMS working directory - Рабочий каталог LMMS - - - VST-plugin directory - Каталог модулей VST - - - Background artwork - Фоновое изображение - - - STK rawwave directory - Каталог STK rawwave - - - Default Soundfont File - Основной Soundfont файл - - - Performance settings - Параметры производительности - - - UI effects vs. performance - Визуальные эффекты/производительность - - - Smooth scroll in Song Editor - Плавная прокрутка в музыкальном редакторе - - - Show playback cursor in AudioFileProcessor - Показывать указатель воспроизведения в процессоре аудио файлов (AFP) - - - Audio settings - Параметры звука - - - AUDIO INTERFACE - ЗВУКОВАЯ СИСТЕМА - - - MIDI settings - Параметры MIDI - - - MIDI INTERFACE - MIDI СИСТЕМА - - - OK - ОГА - - - Cancel - Отменить - - - Restart LMMS - Перезапустить LMMS - - - Please note that most changes won't take effect until you restart LMMS! - Учтите, что большинство настроек не вступят в силу до перезапуска ЛММС! - - - Frames: %1 -Latency: %2 ms - Фрагментов: %1 -Отклик: %2 - - - 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. - Здесь вы можете настроить размер внутреннего звукового буфера LMMS. Меньшие значения дают меньшее время отклика программы, но повышают потребление ресурсов - это особенно заметно на старых машинах и системах, ядро которых не поддерживает приоритета реального времени. Если наблюдается прерывистый звук, попробуйте увеличить размер буфера. - - - Choose LMMS working directory - Выбор рабочего каталога LMMS - - - Choose your VST-plugin directory - Выбор своего каталога для модулей VST - - - Choose artwork-theme directory - Выбор каталога с темой оформления для LMMS - - - Choose LADSPA plugin directory - Выбор каталога с модулями LADSPA - - - Choose STK rawwave directory - Выбор каталога STK rawwave - - - Choose default SoundFont - Выбрать главный 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. - Пожалуйста, выберите желаемую звуковую систему. В зависимости от конфигурации во время компилирования программы вы можете использовать ALSA, JACK, OSS и другие. В нижней части окна настройки можно задать специфические параметры выбранной системы. - - - 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. - Пожалуйста, выберите интерфейс MIDI. В зависимости от конфигурации во время компилирования программы вы можете использовать ALSA, OSS и другие. В нижней части окна настройки можно задать специфические параметры выбранного интерфейса. - - - Reopen last project on start - Открыть последний проект на старте - - - Directories - Папки - - - Themes directory - Папка тем - - - GIG directory - Папка GIG - - - SF2 directory - Папка SF2 - - - LADSPA plugin directories - Папка плагинов LADSPA - - - Auto save - Автосохранение - - - Choose your GIG directory - Выберите вашу папку GIG - - - Choose your SF2 directory - Выберите вашу папку SF2 - - - 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. - Установить время между автоматическим бэкапом на %1. Не забывайте сохранять проект вручную. - - - - Song - - Tempo - Темп - - - Master volume - Основная громкость - - - Master pitch - Основная тональность - - - Project saved - Проект сохранён - - - The project %1 is now saved. - Проект %1 сохранён. - - - Project NOT saved. - Проект НЕ СОХРАНЁН. - - - The project %1 was not saved! - Проект %1 не сохранён! - - - Import file - Импорт файла - - - MIDI sequences - MiDi последовательности - - - Hydrogen projects - Hydrogen проекты - - - 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 - - - - Save project - Сохранить проект - - - - 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. - Невозможно открыть файл %1, вероятно, нет разрешений на его чтение. -Пж. убедитесь, что есть по крайней мере права на чтение этого файла и попробуйте ещё раз. - - - Error in file - Ошибка в файле - - - The file %1 seems to contain errors and therefore can't be loaded. - Файл %1 возможно содержит ошибки из-за которых не может загрузиться. - - - Tempo - Темп - - - TEMPO/BPM - ТЕМП/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). - Это значение задаёт темп музыки в ударах в минуту (англ. аббр. BPM). На каждый такт приходится четыре удара, так что темп в ударах в минуту фактически указывает, сколько четвертей такта проигрывается за минуту (или, что то же, количество тактов, проигрываемых за четыре минуты). - - - High quality mode - Высокое качество - - - Master volume - Основная громкость - - - master volume - основная громкость - - - Master pitch - Основная тональность - - - master pitch - основная тональность - - - Value: %1% - Значение: %1% - - - Value: %1 semitones - Значение: %1 полутон(а/ов) - - - 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. - Невозможно открыть %1 для записи, возможно, нет разрешений на запись в этот файл, пж. удостоверьтесь, что есть доступ к этому файлу и попробуйте снова. - - - template - - - - project - - - - Version difference - Версия отличается - - - This %1 was created with LMMS %2. - - - - - 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 - - - - Edit actions - Правка: - - - Timeline controls - Управление временем - - - Zoom controls - Приблизить управление - - - - SpectrumAnalyzerControlDialog - - Linear spectrum - Линейный спектр - - - Linear Y axis - Линейная ось ординат (Y) - - - - SpectrumAnalyzerControls - - Linear spectrum - Линейный спектр - - - Linear Y axis - Линейная ось ординат (Y) - - - Channel mode - Режим канала - - - - SubWindow - - Close - Закрыть - - - Maximize - Развернуть - - - Restore - Восстановить - - - - TabWidget - - Settings for %1 - Настройки для %1 - - - - TempoSyncKnob - - Tempo Sync - Синхронизация темпа - - - No Sync - Синхронизации нет - - - Eight beats - Восемь ударов (две ноты) - - - Whole note - Целая нота - - - Half note - Полунота - - - Quarter note - Четверть ноты - - - 8th note - Восьмая ноты - - - 16th note - 1/16 ноты - - - 32nd note - 1/32 ноты - - - Custom... - Своя... - - - Custom - Своя - - - Synced to Eight Beats - Синхро по 8 ударам - - - Synced to Whole Note - Синхро по целой ноте - - - Synced to Half Note - Синхро по половине ноты - - - Synced to Quarter Note - Синхро по четверти ноты - - - Synced to 8th Note - Синхро по 1/8 ноты - - - Synced to 16th Note - Синхро по 1/16 ноты - - - Synced to 32nd Note - Синхро по 1/32 ноты - - - - TimeDisplayWidget - - click to change time units - нажми для изменения единиц времени - - - MIN - - - - SEC - - - - MSEC - - - - BAR - - - - BEAT - - - - TICK - - - - - 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. - Нажмите <%1>, чтобы убрать прилипание точек петли. - - - Hold <Shift> to move the begin loop point; Press <%1> to disable magnetic loop points. - Зажмите <Shift> чтобы сдвинуть начало точек петли; Нажмите <%1>, чтобы убрать прилипание точек петли. - - - - Track - - Mute - Тихо - - - Solo - Соло - - - - 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. - Не могу найти фильтр для импорта файла %1. -Для подключения этого файла преобразуйте его в формат, поддерживаемый LMMS. - - - 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! - Не могу открыть файл %1 для записи. -Проверьте, обладаете ли вы правами на запись в выбранный файл и содержащий его каталог и попробуйте снова! - - - Loading project... - Чтение проекта... - - - Cancel - Отменить - - - Please wait... - Подождите, пожалуйста... - - - Importing MIDI-file... - Импортирую файл MIDI... - - - Loading Track %1 (%2/Total %3) - - - - - TrackContentObject - - Mute - Тихо - - - - TrackContentObjectView - - Current position - Текущая позиция - - - Hint - Подсказка - - - Press <%1> and drag to make a copy. - Нажмите <%1> и тащите мышью, чтобы создать копию. - - - Current length - Текущая длительность - - - Press <%1> for free resizing. - Для свободного изменения размера нажмите <%1>. - - - %1:%2 (%3:%4 to %5:%6) - %1:%2 (от %3:%4 до %5:%6) - - - Delete (middle mousebutton) - Удалить (средняя кнопка мыши) - - - Cut - Вырезать - - - Copy - Копировать - - - Paste - Вставить - - - Mute/unmute (<%1> + middle click) - Тихо/громко (<%1> + middle click) - - - - TrackOperationsWidget - - Press <%1> while clicking on move-grip to begin a new drag'n'drop-action. - Зажмите <Сtrl> и нажимайте мышь во время движения, чтобы начать новую переброску. - - - Actions for this track - Действия для этой дорожки - - - Mute - Тихо - - - Solo - Соло - - - Mute this track - Заглушить эту дорожку - - - Clone this track - Клонировать дорожку - - - Remove this track - Удалить дорожку - - - Clear this track - Очистить эту дорожку - - - FX %1: %2 - ЭФ %1: %2 - - - Turn all recording on - Включить всё на запись - - - Turn all recording off - Выключить всю запись - - - Assign to new FX Channel - Назначить на другой канал ЭФфектов - - - - TripleOscillatorView - - Use phase modulation for modulating oscillator 1 with oscillator 2 - Модулировать фазу осциллятора 2 сигналом с 1 - - - Use amplitude modulation for modulating oscillator 1 with oscillator 2 - Модулировать амплитуду осциллятора 2 сигналом с первого - - - Mix output of oscillator 1 & 2 - Смешать выводы 1 и 2 осцилляторов - - - Synchronize oscillator 1 with oscillator 2 - Синхронизировать первый осциллятор по второму - - - Use frequency modulation for modulating oscillator 1 with oscillator 2 - Модулировать частоту осциллятора 2 сигналом с 1 - - - Use phase modulation for modulating oscillator 2 with oscillator 3 - Модулировать фазу осциллятора 3 сигналом с 2 - - - Use amplitude modulation for modulating oscillator 2 with oscillator 3 - Модулировать амплитуду осциллятора 3 сигналом с 2 - - - Mix output of oscillator 2 & 3 - Совместить вывод осцилляторов 2 и 3 - - - Synchronize oscillator 2 with oscillator 3 - Синхронизировать осциллятор 2 и 3 - - - Use frequency modulation for modulating oscillator 2 with oscillator 3 - Модулировать частоту осциллятора 3 сигналом со 2 - - - Osc %1 volume: - Громкость осциллятора %1: - - - 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. - Эта ручка устанавливает громкость осциллятора %1. Если 0, то осциллятор выключается, иначе будет слышно настолько громко , как тут установлено. - - - Osc %1 panning: - Баланс для осциллятора %1: - - - 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. - Регулятор стереобаланса осциллятора %1. Величина -100 обозначает, что 100% сигнала идёт в левый канал, а 100 - в правый. - - - Osc %1 coarse detuning: - Грубая подстройка осциллятора %1: - - - 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. - Грубая регулировка подстройки осциллятора %1. Возможна подстройка до 24 полутонов (до 2 октавы) вверх и вниз. Полезно для создания аккордов. - - - Osc %1 fine detuning left: - Точная подстройка левого канала осциллятора %1: - - - 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. - Эта ручка устанавливает точную подстройку для левого канала осциллятора %1. Подстройка задаётся в диапазоне от -100 сотых до +100 сотых. Это полезно для создания "сочных" звуков. - - - Osc %1 fine detuning right: - Точная подстройка правого канала осциллятора %1: - - - 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. - Эта ручка устанавливает точную подстройку для правого канала осциллятора %1. Подстройка задаётся в диапазоне от -100 сотых до +100 сотых. Это полезно для создания "сочных" звуков. - - - Osc %1 phase-offset: - Сдвиг фазы осциллятора %1: - - - 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. - Эта ручка устанавливает начальную фазу осциллятора %1, т. е. точку, с которой осциллятор начинает вырабатывать сигнал. Например, если вы задали синусоидальную форму сигнала и начальную фазу 180º, волна сначала пойдёт вниз, а не вверх. То же для меандра (сигнала прямоугольной формы). - - - Osc %1 stereo phase-detuning: - Подстройка стерео фазы осциллятора %1: - - - 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. - Эта ручка устанавливает фазовую подстройку осциллятора %1 между каналами, то есть разность фаз между левым и правым каналами. Это удобно для создания расширения стереоэффектов. - - - 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. - Задать форму сигнала. - - - - VersionedSaveDialog - - Increment version number - Увеличивающийся номер версии - - - Decrement version number - Понижающийся номер версии - - - already exists. Do you want to replace it? - - - - - VestigeInstrumentView - - Open other VST-plugin - Открыть другой VST плагин - - - 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. - Открыть другой модуль VST. После нажатия на кнопку появится стандартный диалог выбора файла, где вы сможете выбрать нужный модуль. - - - Show/hide GUI - Показать/скрыть интерфейс - - - Click here to show or hide the graphical user interface (GUI) of your VST-plugin. - Скрывает/показывает графический пользовательский интерфейс (GUI) выбранного модуля VST. - - - Turn off all notes - Выключить все ноты - - - Open VST-plugin - Открыть модуль VST - - - DLL-files (*.dll) - Бибилиотеки DLL (*.dll) - - - EXE-files (*.exe) - Программы EXE (*.exe) - - - No VST-plugin loaded - Модуль VST не загружен - - - Control VST-plugin from LMMS host - Управление VST плагином через LMMS - - - Click here, if you want to control VST-plugin from host. - Нажмите здесь для контроля VST плагина через хост. - - - Open VST-plugin preset - Открыть предустановку VST модуля - - - Click here, if you want to open another *.fxp, *.fxb VST-plugin preset. - Открыть другую .fxp . fxb предустановку VST. - - - Previous (-) - Предыдущий <-> - - - Click here, if you want to switch to another VST-plugin preset program. - Нажмите здесь для переключения на другую предустановку программы VST плагина. - - - Save preset - Сохранить предустановку - - - Click here, if you want to save current VST-plugin preset program. - Сохранить текущую предустановку программы VST плагина. - - - Next (+) - Следующий <+> - - - Click here to select presets that are currently loaded in VST. - Выбор из уже загруженных в VST предустановок. - - - Preset - Предустановка - - - by - от - - - - VST plugin control - - управление VST плагином - - - - VisualizationWidget - - click to enable/disable visualization of master-output - Нажмите, чтобы включить/выключить визуализацию главного вывода - - - Click to enable - Нажать для включения - - - - VstEffectControlDialog - - Show/hide - Показать/Скрыть - - - Control VST-plugin from LMMS host - Управление VST плагином через LMMS хост - - - Click here, if you want to control VST-plugin from host. - Нажмите здесь, для контроля VST плагином через хост. - - - Open VST-plugin preset - Открыть предустановку VST плагина - - - Click here, if you want to open another *.fxp, *.fxb VST-plugin preset. - Открыть другую .fxp . fxb предустановку VST. - - - Previous (-) - Предыдущий <-> - - - Click here, if you want to switch to another VST-plugin preset program. - Переключение на другую предустановку программы VST плагина. - - - Next (+) - Следующий <+> - - - Click here to select presets that are currently loaded in VST. - Выбор из уже загруженных в VST предустановок. - - - Save preset - Сохранить настройку - - - Click here, if you want to save current VST-plugin preset program. - Сохранить текущую предустановку программы VST плагина. - - - Effect by: - Эффекты по: - - - &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /> - &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /> - - - - VstPlugin - - Loading plugin - Загрузка модуля - - - Open Preset - Открыть предустановку - - - Vst Plugin Preset (*.fxp *.fxb) - Предустановка VST плагина (*.fxp *.fxb) - - - : default - : основные - - - " - " - - - ' - ' - - - Save Preset - Сохранить предустановку - - - .fxp - .fxp - - - .FXP - .FXP - - - .FXB - .FXB - - - .fxb - .fxb - - - Please wait while loading VST plugin... - Пожалуйста, подождите пока грузится VST плагин... - - - The VST plugin %1 could not be loaded. - VST плагин %1 не может быть загружен. - - - - 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 - - - - - 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 - Модулировать амплитуду A1 сигналом с A2 - - - Ring-modulate A1 and A2 - Кольцевая модуляция А1 и А2 - - - Modulate phase of A1 with output of A2 - Модулировать фазу A1 сигналом с A2 - - - Mix output of B2 to B1 - - - - Modulate amplitude of B1 with output of B2 - Модулировать амплитуду B1 сигналом с B2 - - - Ring-modulate B1 and B2 - Кольцевая модуляция B1 и B2 - - - Modulate phase of B1 with output of B2 - Модулировать фазу B1 сигналом с 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 - - - - - ZynAddSubFxInstrument - - Portamento - Портаменто - - - Filter Frequency - Фильтр Частот - - - Filter Resonance - Фильтр резонанса - - - Bandwidth - Ширина полосы - - - FM Gain - Усил FM - - - Resonance Center Frequency - Частоты центра резонанса - - - Resonance Bandwidth - Ширина полосы резонанса - - - Forward MIDI Control Change Events - Переслать изменение событий MiDi управления - - - - ZynAddSubFxView - - Show GUI - Показать интерфейс - - - Click here to show or hide the graphical user interface (GUI) of ZynAddSubFX. - Скрыть или показать графический интерфейс ZynAddSubFX. - - - Portamento: - Портаменто: - - - PORT - PORT - - - Filter Frequency: - Фильтр частот: - - - FREQ - FREQ - - - Filter Resonance: - Фильтр резонанса: - - - RES - RES - - - Bandwidth: - Полоса пропускания: - - - BW - BW - - - FM Gain: - Усиление частоты модуляции (FM): - - - FM GAIN - FM GAIN - - - Resonance center frequency: - Частоты центра резонанса: - - - RES CF - RES CF - - - Resonance bandwidth: - Ширина полосы резонанса: - - - RES BW - RES BW - - - Forward MIDI Control Changes - Переслать изменение событий MiDi управления - - - - audioFileProcessor - - Amplify - Усиление - - - Start of sample - Начало записи - - - End of sample - Конец записи - - - Reverse sample - Перевернуть запись - - - Stutter - Запинание - - - Loopback point - Точка петли - - - Loop mode - Режим повтора - - - Interpolation mode - Режим интерполяции - - - None - Нет - - - Linear - - - - Sinc - - - - Sample not found: %1 - Сэмпл не найден: %1 - - - - bitInvader - - Samplelength - Длительность - - - - 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. - Здесь вы можете рисовать собственный сигнал. - - - Click 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 white-noise. - Сгенерировать белый шум. - - - Click here for a user-defined shape. - Задать форму сигнала вручную. - - - - 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 - Повысить амплитуду графа волны на 1дБ - - - Click here to increase wavegraph amplitude by 1dB - Нажмите здесь, чтобы увеличить амплитуду графа волны на 1дБ - - - Decrease wavegraph amplitude by 1dB - Снизить амплитуду графа волны на 1дБ - - - Click here to decrease wavegraph amplitude by 1dB - Нажмите здесь, чтобы снизить амплитуду графа волны на 1дБ - - - 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 - Обрабатывает каждый стерео канал независимо - - - - dynProcControls - - Input gain - Входная мощность - - - Output gain - Выходная мощность - - - Attack time - Время атаки - - - Release time - Время отпуска - - - Stereo mode - Режим стерео - - - - expressiveView - - Select oscillator W1 - - - - Select oscillator W2 - - - - Select oscillator W3 - - - - Select OUTPUT 1 - - - - Select OUTPUT 2 - - - - Open help window - - - - Sine wave - Синусоида - - - Click for a sine-wave. - Сгенерировать гармонический (синусоидальный) сигнал. - - - Moog-Saw wave - - - - Click for a Moog-Saw-wave. - - - - Exponential wave - Экспоненциальная волна - - - Click for an exponential wave. - - - - Saw wave - Зигзаг - - - Click here for a saw-wave. - Сгенерировать зигзаг. - - - User defined wave - Пользовательская - - - Click here for a user-defined shape. - Задать форму сигнала вручную. - - - Triangle wave - Треугольная волна - - - Click here for a triangle-wave. - Сгенерировать треугольный сигнал. - - - Square wave - Квадрат - - - Click here for a square-wave. - Сгенерировать квадрат. - - - White noise wave - Белый шум - - - Click here for white-noise. - Сгенерировать белый шум. - - - WaveInterpolate - - - - ExpressionValid - - - - General purpose 1: - - - - General purpose 2: - - - - General purpose 3: - - - - O1 panning: - - - - O2 panning: - - - - Release transition: - - - - Smoothness - - - - - fxLineLcdSpinBox - - Assign to: - - - - New FX Channel - Новый канал ЭФ - - - - graphModel - - Graph - Граф - - - - kickerInstrument - - Start frequency - Начальная частота - - - End frequency - Конечная частота - - - Gain - Усиление - - - Length - Длина - - - Distortion Start - Начало искажения - - - Distortion End - Конец искажения - - - Envelope Slope - - - - Noise - Шум - - - Click - - - - Frequency Slope - - - - Start from note - - - - End to note - - - - - kickerInstrumentView - - Start frequency: - Начальная частота: - - - End frequency: - Конечная частота: - - - Gain: - Усиление: - - - Frequency Slope: - - - - Envelope Length: - - - - Envelope Slope: - - - - Click: - - - - Noise: - Шум: - - - Distortion Start: - - - - Distortion End: - - - - - 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. - -Unavailable Effects are those that were identified as effects, but either didn't have the same number of input and output channels or weren't real time capable. - -Instruments are plugins for which only output channels were identified. - -Analysis Tools are plugins for which only input channels were identified. - -Don't Knows are plugins for which no input or output channels were identified. - -Double clicking any of the plugins will bring up information on the ports. - В этом окне показана информация обо всех модулях LADSPA, которые обнаружила LMMS. Они разделены на пять категорий, в зависимости от названий и типов портов. - -Доступные эффекты — это те, которые могут быть использоаны в LMMS. Чтобы эффект LADSPA мог быть использован, он должен, во-первых, быть собственно эффектом, т. е. иметь как входные так и выходные каналы. LMMS в качестве входного канала воспринимает аудиопорт, содержащий в названии „in“, а выходные узнаёт по подстроке „out“. Для использования в LMMS число входных каналов должно совпадать с числом выходных, и эффект должен иметь возможность использования в реальном времени. - -Недоступные эффекты — это модули LADSPA, опознанные в качестве эффектов, однако либо с несовпадающими количестами входных/выходных каналов, либо не предназначенные для использования в реальном времени. - -Инструменты — это модули, у которых есть только выходные каналы. - -Анализаторы — это модули, обладающие лишь входными каналами. - -Неизвестные — модули, у которых не было обнаружено ни входных, ни выходных каналов. - -Двойной щелчок левой кнопкой мыши по модулю даст информацию о его портах. - - - Type: - Тип: - - - - ladspaDescription - - Plugins - Модули - - - Description - Описание - - - - ladspaPortDialog - - Ports - Порты - - - Name - Название - - - Rate - Частота выборки - - - Direction - Направление - - - Type - Тип - - - Min < Default < Max - Меньше < Стандарт < Больше - - - Logarithmic - Логарифмический - - - SR Dependent - Зависимость от SR - - - Audio - Аудио - - - Control - Управление - - - Input - Ввод - - - Output - Вывод - - - Toggled - Включено - - - Integer - Целое - - - Float - Дробное - - - Yes - Да - - - - lb302Synth - - VCF Cutoff Frequency - Частота среза VCF - - - VCF Resonance - Усиление VCF - - - VCF Envelope Mod - Модуляция огибающей VCF - - - VCF Envelope Decay - Спад огибающей VCF - - - Distortion - Искажение - - - Waveform - Форма сигнала - - - Slide Decay - Сдвиг затухания - - - Slide - Сдвиг - - - Accent - Акцент - - - Dead - Глухо - - - 24dB/oct Filter - 24дБ/окт фильтр - - - - lb302SynthView - - Cutoff Freq: - Частота среза: - - - Resonance: - Отзвук: - - - Env Mod: - Мод Огиб: - - - Decay: - Спад: - - - 303-es-que, 24dB/octave, 3 pole filter - 303-ий, 24дБ/октаву, 3-польный фильтр - - - 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. - Нажать здесь для пилообразной муг (moog) волны с ограниченной полосой. - - - - malletsInstrument - - Hardness - Жёсткость - - - Position - Положение - - - Vibrato Gain - Усиление вибрато - - - Vibrato Freq - Частота вибрато - - - Stick Mix - Сведение ручек - - - Modulator - Модулятор - - - Crossfade - Переход - - - LFO Speed - Скорость LFO - - - LFO Depth - Глубина LFO - - - ADSR - ADSR - - - Pressure - Давление - - - Motion - Движение - - - Speed - Скорость - - - Bowed - Наклон - - - Spread - Разброс - - - Marimba - Маримба - - - Vibraphone - Вибрафон - - - Agogo - Дискотека - - - Wood1 - Дерево1 - - - Reso - Резо - - - Wood2 - Дерево2 - - - Beats - Удары - - - Two Fixed - Два фиксированных - - - Clump - Тяжёлая поступь - - - Tubular Bells - Трубные колокола - - - Uniform Bar - Равномерные полосы - - - Tuned Bar - Подстроенные полосы - - - Glass - Стекло - - - Tibetan Bowl - Тибетские шары - - - - 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 - - - LFO Speed: - Скорость LFO: - - - LFO Depth - Глубина LFO - - - LFO Depth: - Глубина LFO: - - - ADSR - ADSR - - - ADSR: - ADSR: - - - Pressure - Давление - - - Pressure: - Давление: - - - Speed - Скорость + Min < Default < Max + Меньше < Стандарт < Больше - Speed: - Скорость: + Logarithmic + Логарифмический - Missing files - Файлы отсутствуют + SR Dependent + Зависимость от SR - Your Stk-installation seems to be incomplete. Please make sure the full Stk-package is installed! - Похоже устновка Stk прошла не полностью. Пожалуйста, убедитесь, что пакет Stk полностью установлен! + Audio + Аудио - - - manageVSTEffectView - - VST parameter control - Управление VST параметрами + Control + Управление - VST Sync - VST синхронизация + Input + Ввод - Click here if you want to synchronize all parameters with VST plugin. - Нажмите здесь для синхронизации всех параметров с VST плагином. + Output + Вывод - Automated - Автоматизировано + Toggled + Включено - Click here if you want to display automated parameters only. - Нажмите здесь, если хотите видеть только автоматизированные параметры. + Integer + Целое - Close - Закрыть + Float + Дробное - Close VST effect knob-controller window. - Закрыть окно управления регуляторами VST эффектов. + Yes + Да - manageVestigeInstrumentView - - - VST plugin control - Управление VST плагином - + lb302Synth - VST Sync - VST синхронизация + VCF Cutoff Frequency + Частота среза VCF - Click here if you want to synchronize all parameters with VST plugin. - Нажмите здесь для синхронизации всех параметров VST плагина. + VCF Resonance + Усиление VCF - Automated - Автоматизировано + VCF Envelope Mod + Модуляция огибающей VCF - Click here if you want to display automated parameters only. - Нажмите здесь, если хотите видеть только автоматизированные параметры. + VCF Envelope Decay + Спад огибающей VCF - Close - Закрыть + Distortion + Искажение - Close VST plugin knob-controller window. - Закрыть окно управления регуляторами VST плагина. + Waveform + Форма сигнала - - - opl2instrument - Patch - Патч + Slide Decay + Сдвиг затухания - Op 1 Attack - ОП 1 Вступление + Slide + Сдвиг - Op 1 Decay - ОП 1 Спад + Accent + Акцент - Op 1 Sustain - ОП 1 Выдержка + Dead + Глухо - Op 1 Release - ОП 1 Убывание + 24dB/oct Filter + 24дБ/окт фильтр + + + lb302SynthView - Op 1 Level - ОП 1 Уровень + Cutoff Freq: + Частота среза: - Op 1 Level Scaling - ОП 1 Уровень увеличения + Resonance: + Отзвук: - Op 1 Frequency Multiple - ОП 1 Множитель частот + Env Mod: + Мод Огиб: - Op 1 Feedback - ОП 1 Возврат + Decay: + Спад: - Op 1 Key Scaling Rate - ОП 1 Ключевая ставка увеличения + 303-es-que, 24dB/octave, 3 pole filter + 303-ий, 24дБ/октаву, 3-польный фильтр - Op 1 Percussive Envelope - ОП 1 Ударная огибающая + Slide Decay: + Сдвиг спада: - Op 1 Tremolo - ОП 1 Тремоло + DIST: + ИСК: - Op 1 Vibrato - Оп 1 Вибрато + Saw wave + Зигзаг - Op 1 Waveform - ОП 1 Волна + Click here for a saw-wave. + Сгенерировать зигзаг. - Op 2 Attack - ОП 2 Вступление + Triangle wave + Треугольная волна - Op 2 Decay - ОП 2 Спад + Click here for a triangle-wave. + Сгенерировать треугольный сигнал. - Op 2 Sustain - ОП 2 Выдержка + Square wave + Квадрат - Op 2 Release - ОП 2 Убывание + Click here for a square-wave. + Сгенерировать квадрат. - Op 2 Level - ОП 2 Уровень + Rounded square wave + Волна скругленного квадрата - Op 2 Level Scaling - ОП 2 Уровень увеличения + Click here for a square-wave with a rounded end. + Создать квадратную волну закруглённую в конце. - Op 2 Frequency Multiple - ОП 2 Множитель частот + Moog wave + Муг волна - Op 2 Key Scaling Rate - ОП 2 Ключевая ставка множителя + Click here for a moog-like wave. + Сгенерировать волну похожую на муг. - Op 2 Percussive Envelope - ОП 2 Ударная огибающая + Sine wave + Синусоида - Op 2 Tremolo - ОП 2 Тремоло + Click for a sine-wave. + Сгенерировать гармонический (синусоидальный) сигнал. - Op 2 Vibrato - Оп 2 Вибрато + White noise wave + Белый шум - Op 2 Waveform - ОП 2 Волна + Click here for an exponential wave. + Генерировать экспоненциальный сигнал. - FM - FM + Click here for white-noise. + Сгенерировать белый шум. - Vibrato Depth - Глубина вибрато + Bandlimited saw wave + - Tremolo Depth - Глубина тремоло + Click here for bandlimited saw wave. + Нажать здесь для пилообразной волны с ограниченной полосой. - - - opl2instrumentView - Attack - Вступление + Bandlimited square wave + - Decay - Затихание + Click here for bandlimited square wave. + Нажать здесь для квадратной волны с ограниченной полосой. - Release - Убывание + Bandlimited triangle wave + - Frequency multiplier - + Click here for bandlimited triangle wave. + Нажать здесь для треуголной волны с ограниченной полосой. - - - organicInstrument - Distortion - Искажение + Bandlimited moog saw wave + - Volume - Громкость + Click here for bandlimited moog saw wave. + Нажать здесь для пилообразной муг (moog) волны с ограниченной полосой. - organicInstrumentView + malletsInstrument - Distortion: - Искажение: + Hardness + Жёсткость - Volume: - Громкость: + Position + Положение - Randomise - Случайно + Modulator + Модулятор - Osc %1 waveform: - Форма сигнала для осциллятора %1: + Crossfade + Переход - Osc %1 volume: - Громкость осциллятора %1: + ADSR + ADSR - Osc %1 panning: - Баланс для осциллятора %1: + Pressure + Давление - cents - сотые + Motion + Движение - The distortion knob adds distortion to the output of the instrument. - Дисторшн добавляет искажения к выводу инструмента. + Speed + Скорость - The volume knob controls the volume of the output of the instrument. It is cumulative with the instrument window's volume control. - Регулятор громкости вывода инструмента, суммируется с регулятором громкости окна инструмента. + Bowed + Наклон - The randomize button randomizes all knobs except the harmonics,main volume and distortion knobs. - Кнопка рандомизации случайно устанавливает все регуляторы, кроме гармоник, основной громкости и регулятора искажений (дисторшн). + Spread + Разброс - Osc %1 stereo detuning - Осц %1 стерео расстройка + Marimba + Маримба - Osc %1 harmonic: - Осц %1 гармоника: + Vibraphone + Вибрафон - - - FreeBoyInstrument - Sweep time - Время распространения + Agogo + Дискотека - Sweep direction - Направление распространения + Reso + Резо - Sweep RtShift amount - Кол-во распространения сдвига вправо + Beats + Удары - Wave Pattern Duty - Рабочая форма волны + Clump + Тяжёлая поступь - Channel 1 volume - Громкость первого канала + Glass + Стекло - Volume sweep direction - Объём направления распространения + Vibrato gain + - Length of each step in sweep - Длина каждого такта в распространении + Vibrato frequency + - Channel 2 volume - Громкость второго канала + Stick mix + - Channel 3 volume - Громкость третьего канала + LFO speed + Скорость LFO - Channel 4 volume - Громкость четвёртого канала + LFO depth + - Right Output level - Выходной уровень справа + Wood 1 + - Left Output level - Выходной уровень слева + Wood 2 + - Channel 1 to SO2 (Left) - От первого канала к SO2 (левый канал) + Two fixed + - Channel 2 to SO2 (Left) - От второго канала к SO2 (левый канал) + Tubular bells + - Channel 3 to SO2 (Left) - От третьего канала к SO2 (левый канал) + Uniform bar + - Channel 4 to SO2 (Left) - От четвёртого канала к SO2 (левый канал) + Tuned bar + - Channel 1 to SO1 (Right) - От первого канала к SO1 (правый канал) + Tibetan bowl + + + + malletsInstrumentView - Channel 2 to SO1 (Right) - От второго канала к SO1 (правый канал) + Instrument + Инструмент - Channel 3 to SO1 (Right) - От третьего канала к SO1 (правый канал) + Spread + Разброс - - Channel 4 to SO1 (Right) - От четвёртого канала к SO1 (правый канал) + + Spread: + Разброс: - Treble - Верхние + Hardness + Жёсткость - Bass - Нижние + Hardness: + Жёсткость: - Shift Register width - Сдвиг ширины регистра + Position + Положение - - - FreeBoyInstrumentView - Sweep Time: - Время развёртки: + Position: + Положение: - Sweep Time - Время развёртки + Modulator + Модулятор - Sweep RtShift amount: - Кол-во развёртки сдвиг вправо: + Modulator: + Модулятор: - Sweep RtShift amount - Кол-во развёртки сдвиг вправо + Crossfade + Переход - Wave pattern duty: - Рабочая форма волны: + Crossfade: + Переход: - Wave Pattern Duty - Рабочая форма волны + ADSR + ADSR - Square Channel 1 Volume: - Громкость квадратного канала 1: + ADSR: + ADSR: - Length of each step in sweep: - Длина каждого такта в развёртке: + Pressure + Давление - Length of each step in sweep - Длина каждого такта в распространении + Pressure: + Давление: - Wave pattern duty - Рабочая форма волны + Speed + Скорость - Square Channel 2 Volume: - Громкость квадратного канала 2: + Speed: + Скорость: - Square Channel 2 Volume - Громкость квадратного канала 2 + Missing files + Файлы отсутствуют - Wave Channel Volume: - Громкость волнового канала: + Your Stk-installation seems to be incomplete. Please make sure the full Stk-package is installed! + Похоже устновка Stk прошла не полностью. Пожалуйста, убедитесь, что пакет Stk полностью установлен! - Wave Channel Volume - Громкость волнового канала + Vibrato gain + - Noise Channel Volume: - Громкость канала шума: + Vibrato gain: + - Noise Channel Volume - Громкость канала шума + Vibrato frequency + - SO1 Volume (Right): - Громкость SO1 (Правый): + Vibrato frequency: + - SO1 Volume (Right) - Громкость SO1 (Правый) + Stick mix + - SO2 Volume (Left): - Громкость SO2 (Левый): + Stick mix: + - SO2 Volume (Left) - Громкость SO2 (Левый) + LFO speed + Скорость LFO - Treble: - Верхние: + LFO speed: + Скорость LFO: - Treble - Верхние + LFO depth + - Bass: - Нижние: + LFO depth: + + + + manageVSTEffectView - Bass - Нижние + - VST parameter control + Управление VST параметрами - Sweep Direction - Направление развёртки + Automated + Автоматизировано - Volume Sweep Direction - Громкость направления развёртки + Close + Закрыть - Shift Register Width - Сдвиг ширины регистра + VST sync + + + + manageVestigeInstrumentView - Channel1 to SO1 (Right) - Канал1 в SO1 (Правый) + - VST plugin control + Управление VST плагином - Channel2 to SO1 (Right) - Канал2 в SO1 (Правый) + VST Sync + VST синхронизация - Channel3 to SO1 (Right) - Канал3 в SO1 (Правый) + Automated + Автоматизировано - Channel4 to SO1 (Right) - Канал4 в SO1 (Правый) + Close + Закрыть + + + organicInstrument - Channel1 to SO2 (Left) - Канал1 в SO2 (Левый) + Distortion + Искажение - Channel2 to SO2 (Left) - Канал2 в SO2 (Левый) + Volume + Громкость + + + organicInstrumentView - Channel3 to SO2 (Left) - Канал2 в SO2 (Левый) + Distortion: + Искажение: - Channel4 to SO2 (Left) - Канал4 в SO2 (Левый) + Volume: + Громкость: - Wave Pattern - Рисунок волны + Randomise + Случайно - The amount of increase or decrease in frequency - Кол-во увеличения или уменьшения в частоте + Osc %1 waveform: + Форма сигнала для осциллятора %1: - The rate at which increase or decrease in frequency occurs - Темп проявления увеличения или снижения в частоте + Osc %1 volume: + Громкость осциллятора %1: - The duty cycle is the ratio of the duration (time) that a signal is ON versus the total period of the signal. - Рабочий цикл это коэффициент длительности (времени) включенного сигнала относительно всего периода сигнала. + Osc %1 panning: + Баланс для осциллятора %1: - Square Channel 1 Volume - Громкость квадратного канала 1 + cents + сотые - The delay between step change - Задержка между изменениями такта + Osc %1 stereo detuning + Осц %1 стерео расстройка - Draw the wave here - Рисовать волну здесь + Osc %1 harmonic: + Осц %1 гармоника: patchesDialog Qsynth: Channel Preset - + Bank selector - + Bank @@ -9402,10 +4309,6 @@ Double clicking any of the plugins will bring up information on the ports. pluginBrowser - - no description - описание отсутствует - Incomplete monophonic imitation tb303 Незавершённая монофоническая имитация tb303 @@ -9506,7 +4409,7 @@ This chip was used in the Commodore 64 computer. 4-oscillator modulatable wavetable synth - + plugin for waveshaping @@ -9518,7 +4421,7 @@ This chip was used in the Commodore 64 computer. Versatile drum synthesizer - + Simple sampler with various settings for using samples (e.g. drums) in an instrument-track @@ -9526,11 +4429,11 @@ This chip was used in the Commodore 64 computer. plugin for processing dynamics in a flexible way - + Carla Patchbay Instrument - + plugin for using arbitrary VST effects inside LMMS. @@ -9546,23 +4449,23 @@ This chip was used in the Commodore 64 computer. A native delay plugin - + Player for GIG files - + A multitap echo delay plugin - + A native flanger plugin - + An oversampling bitcrusher - + A native eq plugin @@ -9570,23 +4473,23 @@ This chip was used in the Commodore 64 computer. A 4-band Crossover Equalizer - + A Dual filter plugin - + Filter for exporting MIDI-files from LMMS - + Reverb algorithm by Sean Costello - + Mathematical expression parser - + @@ -9608,134 +4511,110 @@ This chip was used in the Commodore 64 computer. Эхо - Reverb Roomsize - Объём эха + Chorus + Хор (припев) - Reverb Damping - Затухание эха + A soundfont %1 could not be loaded. + Soundfont %1 не удаётся загрузить. - Reverb Width - Долгота эха + Reverb room size + - Reverb Level - Уровень эха + Reverb damping + - Chorus - Хор (припев) + Reverb width + - Chorus Lines - Линии хора + Reverb level + - Chorus Level - Уровень хора + Chorus voices + - Chorus Speed - Скорость хора + Chorus level + - Chorus Depth - Глубина хора + Chorus speed + - A soundfont %1 could not be loaded. - Soundfont %1 не удаётся загрузить. + Chorus depth + sf2InstrumentView - - Open other SoundFont file - Открыть другой файл SoundFront - - - Click here to open another SF2 file - Нажмите здесь чтобы открыть другой файл SF2 - - - 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: - Размер помещения: + Apply chorus (if supported) + Создать эффект хора (если поддерживается) - Reverb Damping: - Глушение эха: + Open SoundFont file + Открыть файл SoundFront - Reverb Width: - Долгота эха: + Choose patch + - Reverb Level: - Уровень эха: + Gain: + - Apply chorus (if supported) - Создать эффект хора (если поддерживается) + Room size: + - This button enables the chorus effect. This is useful for cool echo effects, but only works on files that support it. - Эта кнопка включает эффект хора. Это может пригодиться, но работает не для всех файлов. + Damping: + - Chorus Lines: - Линии хора: + Width: + Ширина: - Chorus Level: - Уровень хора: + Level: + - Chorus Speed: - Скорость хора: + Voices: + - Chorus Depth: - Глубина хора: + Speed: + Скорость: - Open SoundFont file - Открыть файл SoundFront + Depth: + Емкость: - SoundFont2 Files (*.sf2) - Файлы SoundFont2 (*.sf2) + SoundFont Files (*.sf2 *.sf3) + sfxrInstrument - Wave Form - Форма волны + Wave + sidInstrument - - Cutoff - Срез - Resonance Усиление @@ -9756,6 +4635,10 @@ This chip was used in the Commodore 64 computer. Chip model Модель чипа + + Cutoff frequency + + sidInstrumentView @@ -9771,137 +4654,101 @@ This chip was used in the Commodore 64 computer. Cutoff frequency: Частота среза: - - High-Pass filter - Выс.ЧФ - - - Band-Pass filter - Сред.ЧФ - - - Low-Pass filter - Низ.ЧФ - - - Voice3 Off - Голос 3 откл - MOS6581 SID - + MOS8580 SID - + Attack: Вступление: - - Attack rate determines how rapidly the output of Voice %1 rises from zero to peak amplitude. - Длительность вступления определяет, насколько быстро громкость %1-го голоса возрастает от нуля до наибольшего значения. - 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. - Громкость %1-го голоса будет оставаться на уровне амплитуды выдержки, пока длится нота. - Release: Убывание: - - The output of of Voice %1 will fall from Sustain amplitude to zero amplitude at the selected Release rate. - Громкость %1-го голоса будет падать от остаточного уровня до нуля с указанной здесь скоростью. - 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. - Длительность импульса позволяет мягко регулировать прохождение импульса без заметных сбоев. Импульсная волна должна быть выбрана на осцилляторе %1, чтобы получить звучание. - Coarse: Грубость: - The Coarse detuning allows to detune Voice %1 one octave up or down. - Грубая настройка позволяет подстроить Голос %1 на одну октаву вверх или вниз. + Noise + Шум - Pulse Wave - Пульсирующая волна + Sync + Синхро - Triangle Wave - Треугольник + Filtered + Фильтровать - SawTooth - Зигзаг + Test + Тест - Noise - Шум + High-pass filter + - Sync - Синхро + Band-pass filter + - Sync synchronizes the fundamental frequency of Oscillator %1 with the fundamental frequency of Oscillator %2 producing "Hard Sync" effects. - Синхро синхронизирует фундаментальную частоту осцилляторов %1 фундаментальной частотой осциллятора %2, создавая эффект "Железной синхронизации". + Low-pass filter + - Ring-Mod - Круговой режим + Voice 3 off + - Ring-mod replaces the Triangle Waveform output of Oscillator %1 with a "Ring Modulated" combination of Oscillators %1 and %2. - Круговой режим заменяет треугольные волны на выходе осциллятора %1 "Круговой модуляцией" комбинацией осцилляторов %1 и %2. + Pulse wave + - Filtered - Фильтровать + Triangle wave + - 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. - Если этот флажок установлен, то %1-й голос будет проходить через фильтр. Иначе голос №%1 будет подаваться прямо на выход. + Saw wave + Зигзаг - Test - Тест + Ring modulation + - Test, when set, resets and locks Oscillator %1 at zero until Test is turned off. - Если «флажок» установлен, то %1-й осциллятор выдаёт нулевой сигнал (пока флажок не снимется). + Pulse width: + stereoEnhancerControlDialog - - WIDE - ШИРЕ - Width: Ширина: + + WIDTH + + stereoEnhancerControls @@ -9955,8 +4802,8 @@ This chip was used in the Commodore 64 computer. Загрузка модуля - Please wait while loading VST-plugin... - Подождите, пока загрузится модуль VST... + Please wait while loading the VST plugin... + @@ -9978,179 +4825,60 @@ This chip was used in the Commodore 64 computer. Положение %1-го звукоснимателя - Pan %1 - Бал %1 + Impulse %1 + Импульс %1 - Detune %1 - Подстройка %1 + String %1 panning + - Fuzziness %1 - Нечёткость %1 + String %1 detune + - Length %1 - Длина %1 + String %1 fuzziness + - Impulse %1 - Импульс %1 + String %1 length + - Octave %1 - Октава %1 + String %1 + vibedView - - Volume: - Громкость: - - - The 'V' knob sets the volume of the selected string. - Регулятор 'V' устанавливает громкость текущей струны. - 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. - Регулятор 'S' устанавливает жёсткость текущей струны. Этот параметр отвечает за длительность звучания струны (чем больше значение жёсткости, тем дольше звенит струна). - 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. - Регулятор 'P' устанавливает место струны, где она будет „прижата“. Чем ниже значение, тем ближе это место будет к кобылке. - 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. - Регулятор 'PU' устанавливает место струны, откуда будет сниматься звук. Чем ниже значение, тем ближе это место будет к кобылке. - - - 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. - Переключатель „Imp“ устанавливает режим работы струны: если он включён, то указанная форма сигнала интерпретируется как начальный импульс, иначе — как начальная форма струны. - 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. - Переключатель октав позволяет указать гармонику основной частоты, на которой будет звучать струна. Например, „-2“ означает, что струна будет звучать двумя октавами ниже основной частоты, „F“ заставит струну звенеть на основной частоте инструмента, а „6“ — на частоте, на шесть октав более высокой, чем основная. - 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. - -The 'S' button will smooth the waveform. - -The 'N' button will normalize the waveform. - Редактор формы позволяет явно указать профиль струны в начальный момент времени, либо её начальный импульс (в заисимости от состояния переключателя „Imp“). -Кнопки справа от рисунка позволяют задавать некоторые стандартные формы, причём кнопка '?' служит для задания формы из произвольного звукового файла (загружаются первые 128 элементов выборки). - -Также форма сигнала может быть просто нарисована с помощью мыши. - -Кнопка 'S' сгладит текущую форму. - -Кнопка 'N' нормализует уровень. - - - 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. - -The 'V' knob controls the volume. The 'S' knob controls the string's stiffness. The 'P' knob controls the pick position. The 'PU' knob controls the pickup position. - -'Pan' and 'Detune' hopefully don't need explanation. The 'Slap' knob adds a bit of fuzz to the sound of the string. - -The 'Length' knob controls the length of the string. - -The LED in the lower right corner of the waveform editor determines whether the string is active in the current instrument. - Инструмент „Vibed“ моделирует до девяти независимых одновременно звучащих струн. - -Переключатель „Strings“ позволяет выбрать струну, чьи свойства редактируются. - -Переключатель „Imp“ устанавливает режим работы струны: если он включён, то указанная форма сигнала интерпретируется как начальный импульс, иначе — как начальная форма струны. - -Переключатель „Octave“ позволяет указать гармонику основной частоты, на которой будет звучать струна. - -Редактор формы позволяет явно указать профиль струны в начальный момент времени, либо её начальный импульс. - -Ручка 'V' устанавливает громкость текущей струны, 'S' — жёсткость, 'P' — место, где прижата струна, а 'PU'' — положение звукоснимателя - -Ручка подстройки и стереобаланса, есть надежда, не нуждаются в объяснениях. - -Ручка „Длина“ регулирует длину струны - -Индикатор-переключатель слева внизу определяет, включена ли текущая струна. - 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. - Переключатель струн позволяет выбрать струну, чьи свойства редактируются. Инструмент Vibed содержит до девяти независимо звучащих струн, индикатор в левом нижнем углу показывает, активна ли текущая струна (т. е. будет ли она слышна). - Sine wave Синусоида @@ -10168,52 +4896,48 @@ The LED in the lower right corner of the waveform editor determines whether the Квадратная волна - White noise wave - Белый шум - - - User defined wave - Пользовательская + String volume: + - Smooth - Сгладить + String panning: + - Click here to smooth waveform. - Щёлкните чтобы сгладить форму сигнала. + String detune: + - Normalize - Нормализовать + String fuzziness: + - Click here to normalize waveform. - Нажмите, чтобы нормализовать сигнал. + String length: + - Use a sine-wave for current oscillator. - Генерировать гармонический (синусоидальный) сигнал. + Impulse + - Use a triangle-wave for current oscillator. - Генерировать треугольный сигнал. + Enable/disable string + - Use a saw-wave for current oscillator. - Генерировать зигзагообразный сигнал. + White noise + Белый шум - Use a square-wave for current oscillator. - Генерировать квадрат (меандр). + User-defined wave + - Use white-noise for current oscillator. - Генерировать белый шум. + Smooth waveform + Сгладить волну - Use a user-defined waveform for current oscillator. - Задать форму сигнала. + Normalize waveform + @@ -10282,44 +5006,28 @@ The LED in the lower right corner of the waveform editor determines whether the Выходная мощность: - 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 - + Clip input + Срезать выходной сигнал - Click here to increase wavegraph amplitude by 1dB - Повыситьить амплитуду графа волны на 1дБ + Reset wavegraph + - Decrease graph amplitude by 1dB - + Smooth wavegraph + - Click here to decrease wavegraph amplitude by 1dB - Снизить амплитуду графа волны на 1дБ + Increase wavegraph amplitude by 1 dB + - Clip input - Срезать выходной сигнал + Decrease wavegraph amplitude by 1 dB + - Clip input signal to 0dB - Срезать входной сигнал до 0дБ + Clip input signal to 0 dB + @@ -10333,4 +5041,4 @@ The LED in the lower right corner of the waveform editor determines whether the Выходная мощность - \ No newline at end of file + diff --git a/data/locale/sv.ts b/data/locale/sv.ts index 144cee15a52..eb51c90822b 100644 --- a/data/locale/sv.ts +++ b/data/locale/sv.ts @@ -2,121 +2,148 @@ AboutDialog + About LMMS Om LMMS + + LMMS + LMMS + + + Version %1 (%2/%3, Qt %4, %5) Version %1 (%2/%3, Qt %4, %5) + About Om + LMMS - easy music production for everyone LMMS - enkel musikproduktion för alla - Authors - Medverkande - - - Translation - Översättning - - - 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! - + + Copyright © %1 + Copyright © %1 - License - Licens + + <html><head/><body><p><a href="https://lmms.io"><span style=" text-decoration: underline; color:#0000ff;">https://lmms.io</span></a></p></body></html> + <html><head/><body><p><a href="https://lmms.io"><span style=" text-decoration: underline; color:#0000ff;">https://lmms.io</span></a></p></body></html> - LMMS - LMMS + + Authors + Upphovsmän + Involved - Involverad + Engagerade + Contributors ordered by number of commits: - Medverkande, ordnade efter mängd bidrag: + Bidragsgivare ordnade efter mängd bidrag: - Copyright © %1 - Copyright © %1 + + Translation + Översättning - <html><head/><body><p><a href="https://lmms.io"><span style=" text-decoration: underline; color:#0000ff;">https://lmms.io</span></a></p></body></html> + + 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 + Licens + AmplifierControlDialog + VOL VOL + Volume: Volym: + PAN - PANORERA + PAN + Panning: Panorering: + LEFT VÄNSTER + Left gain: - Vänster förstärkning: + Vänsterförstärkning: + RIGHT HÖGER + Right gain: - Höger förstärkning: + Högerförstärkning: AmplifierControls + Volume Volym + Panning Panorering + Left gain - Vänster förstärkning + Vänsterförstärkning + Right gain - Höger förstärkning + Högerförstärkning AudioAlsaSetupWidget + DEVICE ENHET + CHANNELS KANALER @@ -124,78 +151,98 @@ If you're interested in translating LMMS in another language or want to imp AudioFileProcessorView + Open other sample Öppna annan ljudfil + 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. Klicka här för att öppna en annan ljudfil. En dialog visas där du väljer din fil. Inställningar som looping, start och slutpunkter, amplifiering och sådant omställs inte. Därför låter det kanske inte som originalfilen. + Reverse sample Spela baklänges + If you enable this button, the whole sample is reversed. This is useful for cool effects, e.g. a reversed crash. - Den här knappen gör att ljudfilen spelas baklänges. Den kan användas för intressanta effeker t.ex. en baklänges cymbal. - - - Amplify: - Förstärkning: + Den här knappen gör att ljudfilen spelas baklänges. Den kan användas för intressanta effekter t.ex. en baklänges cymbal. - 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!) - Med detta vred ställer du in förstärkningen. Vid 100% blir det ingen skillnad. Annars blir din ljudfil mer eller mindre högljudd, men originalfilen förändras inte. + + Disable loop + Inaktivera slinga - Startpoint: - Startpunkt: + + This button disables looping. The sample plays only once from start to end. + Den här knappen avaktiverar looping. Ljudfilen spelas bara en gång från start till slut. - Endpoint: - Slutpunkt: + + + Enable loop + Aktivera slinga - Continue sample playback across notes - Forsätt spela ljudfil över noter + + This button enables forwards-looping. The sample loops between the end point and the loop point. + Den här knappen aktiverar looping. Ljudfilen loopar mellan slutpunkten och looppunkten. - 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) - Denna inställningen gör att ljudfilen förtsätter spela över noter. Om en not avslutas före ljudfilen är slut fortsätter nästa not där den förra slutade. Om du vill starta från början av ljudfilen innan den spelat färdigt, placera en not på botten av pianot (vid 20Hz) + + This button enables ping-pong-looping. The sample loops backwards and forwards between the end point and the loop point. + Den här knappen aktiverar "ping-pong" looping. Ljudfilen spelar från start till slut, och sen tillbaka, och fortsätter så. - Disable loop - Avaktivera looping + + Continue sample playback across notes + Fortsätt spela ljudfil över noter - This button disables looping. The sample plays only once from start to end. - Den här knappen avaktiverar looping. Ljudfilen spelas bara en gång från start till slut. + + 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) + Denna inställningen gör att ljudfilen fortsätter spela över noter. Om en not avslutas före ljudfilen är slut fortsätter nästa not där den förra slutade. Om du vill starta från början av ljudfilen innan den spelat färdigt, placera en not på botten av pianot (vid 20Hz) - Enable loop - Aktivera looping + + Amplify: + Förstärkning: - This button enables forwards-looping. The sample loops between the end point and the loop point. - Den här knappen aktiverar looping. Ljudfilen loopar mellan slutpunkten och looppunkten. + + 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!) + Med detta vred ställer du in förstärkningen. Vid 100% blir det ingen skillnad. Annars blir din ljudfil mer eller mindre högljudd, men originalfilen förändras inte. - This button enables ping-pong-looping. The sample loops backwards and forwards between the end point and the loop point. - Den här knappen aktiverar "ping-pong" looping. Ljudfilen spelar från start till slut, och sen tilbaks, och fortsäter så. + + Startpoint: + Startpunkt: + With this knob you can set the point where AudioFileProcessor should begin playing your sample. Med den här vreden ställer du in vartifrån ljudfilen ska börja spela. + + Endpoint: + Slutpunkt: + + + With this knob you can set the point where AudioFileProcessor should stop playing your sample. Med den här vreden ställer du in vart ljudfilen slutar spela. + Loopback point: - Loopback punkt: + Slinga-tillbaka punkt: + With this knob you can set the point where the loop starts. Den här vreden ställer in vart loopen startar. @@ -203,6 +250,7 @@ If you're interested in translating LMMS in another language or want to imp AudioFileProcessorWaveView + Sample length: Ljudfilens längd: @@ -210,26 +258,32 @@ If you're interested in translating LMMS in another language or want to imp AudioJack + JACK client restarted - JACK klienten omstartades + JACK-klienten omstartad + 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. - LMMS blev bortkopplat från JACK. LMMS JACK backend omstartades därfor. Du får manuellt koppla om igen. + LMMS blev bortkopplat från JACK. LMMS JACK backend omstartades därfor. Du behöver koppla om manuellt. + JACK server down JACK-server nerstängd + 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. JACK-servern stängdes ned och det gick inte starta en ny. LMMS kan inte fortsätta. Du bör spara ditt projekt och starta om både JACK och LMMS. + CLIENT-NAME KLIENT-NAMN + CHANNELS KANALER @@ -237,10 +291,12 @@ If you're interested in translating LMMS in another language or want to imp AudioOss::setupWidget + DEVICE ENHET + CHANNELS KANALER @@ -248,10 +304,12 @@ If you're interested in translating LMMS in another language or want to imp AudioPortAudio::setupWidget + BACKEND BACKEND + DEVICE ENHET @@ -259,10 +317,12 @@ If you're interested in translating LMMS in another language or want to imp AudioPulseAudio::setupWidget + DEVICE ENHET + CHANNELS KANALER @@ -270,6 +330,7 @@ If you're interested in translating LMMS in another language or want to imp AudioSdl::setupWidget + DEVICE ENHET @@ -277,10 +338,12 @@ If you're interested in translating LMMS in another language or want to imp AudioSndio::setupWidget + DEVICE ENHET + CHANNELS KANALER @@ -288,10 +351,12 @@ If you're interested in translating LMMS in another language or want to imp AudioSoundIo::setupWidget + BACKEND BAKÄNDE + DEVICE ENHET @@ -299,61 +364,75 @@ If you're interested in translating LMMS in another language or want to imp AutomatableModel + &Reset (%1%2) &Nollställ (%1%2) + &Copy value (%1%2) - Kopiera värde (%1%2) + &Kopiera värde (%1%2) + &Paste value (%1%2) &Klistra in värde (%1%2) + Edit song-global automation - Redigera global automation + Redigera låt-global automation + + + + Remove song-global automation + Ta bort global automation + + + + Remove all linked controls + Ta bort alla kopplade kontroller + Connected to %1 Kopplad till %1 + Connected to controller Kopplad till controller + Edit connection... Redigera koppling... + Remove connection Ta bort koppling + Connect to controller... Koppla till kontroller... - - Remove song-global automation - Ta bort global automation - - - Remove all linked controls - Ta bort alla kopplade kontroller - AutomationEditor + Please open an automation pattern with the context menu of a control! - Öppna ett automationsmönster ifrån en kontrollers kontextmeny! + Öppna ett automationsmönster från en kontrollers kontextmeny! + Values copied Värden kopierade + All selected values were copied to the clipboard. Alla valda värden blev kopierade till urklipp. @@ -361,142 +440,184 @@ If you're interested in translating LMMS in another language or want to imp AutomationEditorWindow + Play/pause current pattern (Space) Spela/pausa aktuellt mönster (Mellanslag) + 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. Klicka här för att spela det aktuella mönstret, detta är användbart när man redigerar. Mönstret spelas från början igen när det nått sitt slut. + Stop playing of current pattern (Space) - Sluta spela aktuellt mönster (mellanslag) + Sluta spela aktuellt mönster (Mellanslag) + Click here if you want to stop playing of the current pattern. Klicka här för att stoppa uppspelning av de aktuella mönstret. + + Edit actions + Redigera åtgärder + + + Draw mode (Shift+D) - Ritläge (Shift+D) + Ritläge (Skift+D) + Erase mode (Shift+E) - Suddläge (Shift+E) + Suddläge (Skift+E) + Flip vertically Spegla vertikalt + Flip horizontally Spegla horizontellt + Click here and the pattern will be inverted.The points are flipped in the y direction. Klicka här för att spegla mönstret. Punkterna förflyttas på y-axeln + Click here and the pattern will be reversed. The points are flipped in the x direction. Klicka här för att spegla mönstret. Punkterna förflyttas på x-axeln + 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. - Klicka här för att aktivera ritläget. I detta läget kan du lägga till och förflytta individuella värden. Det här är standardläget. Det går också att trycka 'Shift+D' på tangentborded för att aktivera detta läget. + Klicka här för att aktivera ritläget. I detta läget kan du lägga till och förflytta individuella värden. Det här är standardläget. Det går också att trycka "Skift+D" på tangentbordet för att aktivera detta läget. + 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. - Klicka här för att aktivera suddläget. I detta läget kan du ta bort individuella värden. Det går också att trycka 'Shift+E' på tangentborded för att aktivera detta läget. + Klicka här för att aktivera suddläget. I detta läget kan du ta bort individuella värden. Det går också att trycka "Skift+E" på tangentbordet för att aktivera detta läget. + + + + Interpolation controls + Interpoleringskontroller + Discrete progression Diskret talföljd + Linear progression Linjär talföljd + Cubic Hermite progression Cubic Hermite talföljd + Tension value for spline Spänning i mönstrets 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. Högre spänning ger en mjuk kurva som ibland missar individuella punkter. Med lägre spänning planar kurvan ut nära punkterna. + 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. Klicka här för att aktivera diskret talföljd. Värdet är konstant mella kontroll punkter och ändras direkt när en ny kontrollpunkt nås. + 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. Klicka här för att aktivera linjär talföljd. Värdet ändras vid en stadig takt mellan kontrollpunkter för att gradvis nå nästa värde. + 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. Klicka här för att aktivera cubic hermite talföljd. Värdet följer en mjuk kurva mellan kontrollpunkter. + + Tension: + Spänning: + + + Cut selected values (%1+X) Klipp ut valda värden (%1+X) + Copy selected values (%1+C) Kopiera valda värden (%1+C) + Paste values from clipboard (%1+V) Klistra värden (%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. Klicka här för att klippa de valda värderna. Du kan sen klistra dem var som helst genom att klicka på klistra knappen. + 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. Klicka här för att kopiera de valda värderna. Du kan sedan klistra dem var som helst genom att klicka på klistra knappen. + Click here and the values from the clipboard will be pasted at the first visible measure. Klicka här för att klistra kopierade värderna vid den första synliga metern. - Tension: - Spänning: - - - Automation Editor - no pattern - Redigera Automation - inget automationsmönster - - - Automation Editor - %1 - Redigera Automation - %1 + + Zoom controls + Zoomningskontroller - Edit actions - Redigera åtgärder + + Quantization controls + Kvantiseringskontroller - Interpolation controls - Interpoleringskontroller + + Quantization + Kvantisering - Timeline controls - Tidslinjekontroller + + 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. + - Zoom controls - Zoomningskontroller + + + Automation Editor - no pattern + Redigera Automation - inget automationsmönster - Quantization controls - + + + Automation Editor - %1 + Redigera Automation - %1 + Model is already connected to this pattern. Modellen är redan ansluten till det här mönstret. @@ -504,6 +625,7 @@ If you're interested in translating LMMS in another language or want to imp AutomationPattern + Drag a control while pressing <%1> Dra en kontroll samtidigt som du håller <%1> @@ -511,46 +633,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 dubbelklicka för att öppna det här automationsmönstret för redigering + Open in Automation editor Redigera automationsmönster + Clear Rensa + Reset name Nollställ namn + Change name Byt namn - %1 Connections - %1 Kopplingar - - - Disconnect "%1" - Avkoppla "%1" - - + Set/clear record + Flip Vertically (Visible) Spegla Vertikalt (Synligt) + Flip Horizontally (Visible) Spegla Horizontellt (Synligt) + + %1 Connections + %1 Kopplingar + + + + Disconnect "%1" + Koppla bort "%1" + + + Model is already connected to this pattern. Modellen är redan ansluten till det här mönstret. @@ -558,6 +691,7 @@ If you're interested in translating LMMS in another language or want to imp AutomationTrack + Automation track Automationsspår @@ -565,88 +699,108 @@ If you're interested in translating LMMS in another language or want to imp BBEditor + Beat+Bassline Editor - Redigera Trummor+Bas + Takt+Basgång-redigeraren + Play/pause current beat/bassline (Space) - Spela/pause Trummor+Bas + Spela/pausa nuvarande takt/basgång (Mellanslag) + Stop playback of current beat/bassline (Space) - Avsluta uppspelning av trummor/bas + Avsluta uppspelning av nuvarande takt/basgång (Mellanslag) + Click here to play the current beat/bassline. The beat/bassline is automatically looped when its end is reached. - Klicka här för att spela trummor/bas. Mönstret loopar när det nåt sitt slut. + Klicka här för att spela takt/basgång. Takt/basgång återupprepas automatiskt när dess slut nås. + Click here to stop playing of current beat/bassline. - Klicka här för att sluta spela trummor/bas. + Klicka här för att sluta spela takt/basgång. + + + + Beat selector + Taktväljare + + + + Track and step actions + Spår och stegåtgärder + Add beat/bassline - Lägg till trummor/bas + Lägg till takt/basgång + + + + Add sample-track + Lägg till ljudspår + Add automation-track Lägg till automationsspår + Remove steps Ta bort steg + Add steps Lägg till steg - Beat selector - Taktväljare - - - Track and step actions - Spår och stegåtgärder - - + Clone Steps Klona steg - - Add sample-track - Lägg till ljudfils-spår - BBTCOView + Open in Beat+Bassline-Editor - Redigera Trummor+Bas + Öppna Takt+Basgång-redigeraren + Reset name Nollställ namn + Change name Byt namn + Change color Byt färg + Reset color to default - Byt färg till standard + Nollställ färg till standard BBTrack + Beat/Bassline %1 - Trum/Basmönster %1 + Takt/Basgång %1 + Clone of %1 Kopia av %1 @@ -654,124 +808,149 @@ If you're interested in translating LMMS in another language or want to imp BassBoosterControlDialog + FREQ FREQ + Frequency: Frekvens: + GAIN - FÖRST + FÖRSTÄRKNING + Gain: Förstärkning: + RATIO - RATIO + FÖRHÅLLANDE + Ratio: - Ratio: + Förhållande: BassBoosterControls + Frequency Frekvens + Gain Förstärkning + Ratio - Ratio + Förhållande BitcrushControlDialog + IN IN + OUT UT + + GAIN - FÖRST + FÖRSTÄRKNING + Input Gain: - Input Förstärkning: + Ingång förstärkning: - NOIS - NOIS + + NOISE + BRUS + Input Noise: + Output Gain: Output Förstärkning + CLIP KLIPP + Output Clip: - Rate - Värdera - - + Rate Enabled - + Hastighet Aktiverad + Enable samplerate-crushing - Depth - Djup - - + Depth Enabled + Enable bitdepth-crushing + + FREQ + FREKV. + + + Sample rate: - + Samplingsfrekvens: - STD - STD + + STEREO + STEREO + Stereo difference: - + Stereo skillnad: - Levels - Nivåer + + QUANT + + Levels: Nivåer: @@ -779,10 +958,12 @@ If you're interested in translating LMMS in another language or want to imp CaptionMenu + &Help &Hjälp + Help (not available) Hjälp (inte tillgängligt) @@ -790,10 +971,12 @@ If you're interested in translating LMMS in another language or want to imp CarlaInstrumentView + Show GUI Visa användargränssnitt + Click here to show or hide the graphical user interface (GUI) of Carla. Klicka här för att visa eller gömma användargränssnittet för Carla. @@ -801,6 +984,7 @@ If you're interested in translating LMMS in another language or want to imp Controller + Controller %1 Kontroller %1 @@ -808,58 +992,73 @@ If you're interested in translating LMMS in another language or want to imp ControllerConnectionDialog + Connection Settings Kopplingsinställningar + MIDI CONTROLLER MIDI-KONTROLLER + Input channel - Inputkanal + Ingångskanal + CHANNEL KANAL + Input controller - Inputkontroller + Ingångsregulator + CONTROLLER KONTROLLER + + Auto Detect Upptäck Automatiskt + MIDI-devices to receive MIDI-events from - MIDI-enheter att ta emot MIDI-events från + MIDI-enheter för att ta emot MIDI-händelser från + USER CONTROLLER ANVÄNDARKONTROLLER + MAPPING FUNCTION - + KARTLÄGGNINGSFUNKTION + OK OK + Cancel Avbryt + LMMS LMMS + Cycle Detected. @@ -867,18 +1066,22 @@ If you're interested in translating LMMS in another language or want to imp ControllerRackView + Controller Rack Kontrollrack + Add Lägg till + Confirm Delete Bekräfta Borttagning + Confirm delete? There are existing connection(s) associated with this controller. There is no way to undo. Vill du verkligen ta bort? Det finns kopplingar till den här kontrollern, och operationen går inte ångra. @@ -886,93 +1089,115 @@ If you're interested in translating LMMS in another language or want to imp ControllerView + Controls Kontroller + Controllers are able to automate the value of a knob, slider, and other controls. Kontroller kan automatisera värdet på en vred, reglage, och andra kontroller + Rename controller Byt namn på kontroller + Enter the new name for this controller Skriv nya namnet på kontrollern + + LFO + LFO + + + &Remove this controller &Ta bort den här kontrollen + Re&name this controller Döp& om den här kontrollern - - LFO - LFO - CrossoverEQControlDialog + Band 1/2 Crossover: + Band 2/3 Crossover: + Band 3/4 Crossover: + Band 1 Gain: Band 1 Förstärkn.: + Band 2 Gain: Band 2 Förstärkn.: + Band 3 Gain: Band 3 Förstärkn.: + Band 4 Gain: Band 4 Förstärkn.: + Band 1 Mute Band 1 Tyst + Mute Band 1 Tysta Band 1 + Band 2 Mute Band 2 Tyst + Mute Band 2 Tysta Band 2 + Band 3 Mute Band 3 Tyst + Mute Band 3 Tysta Band 3 + Band 4 Mute Band 4 Tyst + Mute Band 4 Tysta Band 4 @@ -980,22 +1205,27 @@ If you're interested in translating LMMS in another language or want to imp DelayControls + Delay Samples - Fördröj Samplingar + Fördröj samplingar + Feedback Återkoppling + Lfo Frequency Lfo-frekvens + Lfo Amount Lfo-mängd + Output gain Utgångsförstärkning @@ -1003,228 +1233,311 @@ If you're interested in translating LMMS in another language or want to imp DelayControlsDialog - Lfo Amt - + + DELAY + FÖRDRÖJNING + Delay Time Tidsfördröjning - Feedback Amount - Återgivningsmängd + + FDBK + - Lfo - Lfo + + Feedback Amount + Återgivningsmängd - Out Gain - Ut-förstärkning + + RATE + HASTIGHET - Gain - Förstärkning + + Lfo + Lfo - DELAY + + AMNT - FDBK + + Lfo Amt - RATE - + + Out Gain + Ut-förstärkning - AMNT - + + Gain + Förstärkning DualFilterControlDialog - Filter 1 enabled - Filter 1 aktiverat - - - Filter 2 enabled - Filter 2 aktiverat - - - Click to enable/disable Filter 1 - Klicka för att aktivera/inaktivera Filter 1 - - - Click to enable/disable Filter 2 - Klicka för att aktivera/inaktivera Filter 2 - - + + FREQ - FREQ + FREKV. + + Cutoff frequency Cutoff frekvens + + RESO RESO + + Resonance Resonans + + GAIN FÖRST. + + Gain Förstärkning + MIX MIX + Mix Mix + + + Filter 1 enabled + Filter 1 aktiverat + + + + Filter 2 enabled + Filter 2 aktiverat + + + + Click to enable/disable Filter 1 + Klicka för att aktivera/inaktivera Filter 1 + + + + Click to enable/disable Filter 2 + Klicka för att aktivera/inaktivera Filter 2 + DualFilterControls + Filter 1 enabled Filter 1 aktiverat + Filter 1 type Filter 1 typ + Cutoff 1 frequency Cutoff 1 frekvens + Q/Resonance 1 Q/Resonans 1 + Gain 1 Förstärkning 1 + Mix Mix + Filter 2 enabled Filter 2 aktiverat + Filter 2 type Filter 2 typ + Cutoff 2 frequency Cutoff 2 frekvens + Q/Resonance 2 Q/Resonans 2 + Gain 2 Förstärkning 2 + + LowPass Lågpass + + HiPass Högpass + + BandPass csg - + BandPass csg + + BandPass czpg - + BandPass czpg + + Notch + + Allpass - + Allpass + + Moog Moog + + 2x LowPass 2x Lågpass + + RC LowPass 12dB RC Lågpass 12dB + + RC BandPass 12dB RC BandPass 12dB + + RC HighPass 12dB RC Högpass 12dB + + RC LowPass 24dB RC Lågpass 24dB + + RC BandPass 24dB RC BandPass 24dB + + RC HighPass 24dB RC Högpass 24dB + + Vocal Formant Filter + + 2x Moog - + 2x Moog + + SV LowPass SV Lågpass + + SV BandPass SV BandPass + + SV HighPass SV Högpass + + SV Notch + + Fast Formant + + Tripole @@ -1232,48 +1545,58 @@ If you're interested in translating LMMS in another language or want to imp Editor + + Transport controls + Transportkontroller + + + Play (Space) Play (Mellanslag) + Stop (Space) Stop (Mellanslag) + Record Spela in + Record while playing Spela in under uppspelningen - - Transport controls - Transportkontroller - Effect + Effect enabled Effekt aktiverad + Wet/Dry mix Blöt/Torr mix + Gate - + Gate + Decay - Decay + Förfall EffectChain + Effects enabled Effekter aktiverade @@ -1281,10 +1604,12 @@ If you're interested in translating LMMS in another language or want to imp EffectRackView + EFFECTS CHAIN EFFEKTKEDJA + Add effect Lägg till effekt @@ -1292,22 +1617,28 @@ If you're interested in translating LMMS in another language or want to imp EffectSelectDialog + Add effect Lägg till effekt + + Name Namn + Type Typ + Description Beskrivning + Author Författare @@ -1315,54 +1646,67 @@ If you're interested in translating LMMS in another language or want to imp EffectView + Toggles the effect on or off. Slår på eller av effekten. + On/Off På/Av + W/D - W/D + B/T + Wet Level: - + Blöt Nivå: + The Wet/Dry knob sets the ratio between the input signal and the effect signal that forms the output. + DECAY - DECAY + FÖRFALL + Time: Tid: + 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 + Gate: Gate: + The Gate knob controls the signal level that is considered to be 'silence' while deciding when to stop processing signals. + Controls Kontroller + 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. @@ -1379,73 +1723,90 @@ Right clicking will bring up a context menu where you can change the order in wh + Move &up Flytta &upp + Move &down Flytta &ner + &Remove this plugin - &Ta bort det här insticksprogrammet + &Ta bort den här insticksmodulen EnvelopeAndLfoParameters + Predelay För-fördröjning + Attack Attack + Hold Hold + Decay Decay + Sustain Sustain + Release Release + Modulation Modulering + LFO Predelay + LFO Attack LFO-Attack + LFO speed LFO-hastighet + LFO Modulation LFO-Modulering + LFO Wave Shape LFO-vågform + Freq x 100 - Freq x 100 + Frekv. x 100 + Modulate Env-Amount Modulera Env-mängd @@ -1453,349 +1814,439 @@ Right clicking will bring up a context menu where you can change the order in wh EnvelopeAndLfoView + + DEL - DEL + RAD + Predelay: För-fördröjning: + Use this knob for setting predelay of the current envelope. The bigger this value the longer the time before start of actual envelope. + + ATT ATT + Attack: 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 + 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 DEC + Decay: 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 SUST + Sustain: 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 REL + Release: 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 - AMT + MÄNGD + + Modulation amount: Moduleringsmängd: + 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: LFO-för-fördröjning: + Use this knob for setting predelay-time of the current LFO. The bigger this value the the time until the LFO starts to oscillate. Använd denna ratt för att ställa för-fördröjningen för aktuell LFO. Ju högre värdet är desto längre tid tar det innan LFO'n börjar oscillera. + LFO- attack: 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. Använd denna ratt för att ställa attack-tiden för aktuell LFO. Ju högre värdet är desto längre tid tar det för LFO'n att nå sin maximala amplitud. + SPD - + SPD + LFO speed: - + LFO-hastighet: + 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. Använd denna ratt för att ställa hastigheten för aktuell LFO. Ju högre värdet är desto snabbare oscillerar LFO'n och desto snabbare är effekten. + 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. Använd denna ratt för att ställa mängden modulering för aktuell LFO. Ju högre värdet är desto större valt värde (volym eller cutoff-frekvens) kommer influeras av denna LFO. + Click here for a sine-wave. Klicka här för sinusvåg. + Click here for a triangle-wave. Klicka här för triangelvåg. + Click here for a saw-wave for current. Klicka här för sågtandsvåg för aktuell. + Click here for a square-wave. - Klicka här för fyrkantvåg + Klicka här för fyrkantvåg. + Click here for a user-defined wave. Afterwards, drag an according sample-file onto the LFO graph. + + Click here for random wave. + Klicka här för en slumpmässig vågform. + + + FREQ x 100 - FREQ x 100 + FREKV. x 100 + Click here if the frequency of this LFO should be multiplied by 100. Klicka här för att multiplicera frekvensen för denna LFO med 100. + multiply LFO-frequency by 100 multiplicera LFO-frekvensen med 100 + MODULATE ENV-AMOUNT + Click here to make the envelope-amount controlled by this LFO. + control envelope-amount by this LFO + ms/LFO: ms/LFO: + Hint Ledtråd + Drag a sample from somewhere and drop it in this window. Dra en ljudfil till det här fönstret. - - Click here for random wave. - Klicka här för en slumpmässig vågform. - EqControls + Input gain Ingångsförstärkning + Output gain Utgångsförstärkning + 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 aktiv + LP 12 - + LP 12 + LP 24 - + LP 24 + LP 48 - + LP 48 + HP 12 - + HP 12 + HP 24 - + HP 24 + HP 48 - + HP 48 + low pass type Lågpass-typ + high pass type Högpass-typ + Analyse IN Analysera IN + Analyse OUT Analysera UT @@ -1803,260 +2254,352 @@ Right clicking will bring up a context menu where you can change the order in wh EqControlsDialog + HP - + HP + Low Shelf + Peak 1 + Peak 2 + Peak 3 + Peak 4 + High Shelf + LP - + LP + In Gain In-förstärkning + + + Gain Förstärkning + Out Gain Ut-förstärkning + Bandwidth: Bandbredd: + + Octave + Oktav + + + Resonance : Resonans: + Frequency: Frekvens: + lp grp + hp grp - - Octave - Oktav - EqHandle + Reso: Reso.: + BW: + + Freq: - Freq: + Frekv.: ExportProjectDialog + Export project Exportera projekt + Output Utgång + File format: - Fil-format: + Filformat: + Samplerate: Samplingshastighet: + 44100 Hz 44100 Hz + 48000 Hz 48000 Hz + 88200 Hz 88200 Hz + 96000 Hz 96000 Hz + 192000 Hz 192000 Hz + + Depth: + Djup: + + + + 16 Bit Integer + + + + + 24 Bit Integer + + + + + 32 Bit Float + + + + + Stereo mode: + Stereoläge: + + + + Stereo + Stereo + + + + Joint Stereo + + + + + Mono + Mono + + + Bitrate: - Bit-hastighet: + Bithastighet: + 64 KBit/s 64 KBit/s + 128 KBit/s 128 KBit/s + 160 KBit/s 160 KBit/s + 192 KBit/s 192 KBit/s + 256 KBit/s 256 KBit/s + 320 KBit/s 320 KBit/s - Depth: - Djup: - - - 16 Bit Integer - - - - 32 Bit Float - - - - Please note that not all of the parameters above apply for all file formats. - Alla inställningar ovan gäller för samtliga filformat + + Use variable bitrate + Använd variabel bithastighet + Quality settings Kvalitetsinställningar + Interpolation: Interpolering: + Zero Order Hold + Sinc Fastest + Sinc Medium (recommended) + Sinc Best (very slow!) + Oversampling (use with care!): Översampling (använd varsamt!): + 1x (None) 1x (Ingen) + 2x 2x + 4x 4x + 8x 8x - Start - Starta + + Export as loop (remove end silence) + Exportera som loop (ta bort slut-tystnad) - Cancel - Avbryt + + Export between loop markers + Exportera mellan slinga-markeringar - Export as loop (remove end silence) - Exportera som loop (ta bort slut-tystnad) + + Start + Starta - Export between loop markers - Exportera mellan loop-markeringar + + Cancel + Avbryt + Could not open file Kunde inte öppna fil + + 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! + Det gick inte att öppna filen %1 för att skriva. +Se till att du har skrivbehörighet till filen och mappen som innehåller filen och försök igen! + + + Export project to %1 Exportera projekt till %1 + Error Fel + Error while determining file-encoder device. Please try to choose a different output format. - + Fel vid bestämning av filkodarenhet. Vänligen försök att välja ett annat utmatningsformat. + Rendering: %1% Renderar: %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! - - Fader + + Please enter a new value between %1 and %2: Ange ett nytt värde mellan %1 och %2: @@ -2064,72 +2607,88 @@ Please make sure you have write permission to the file and the directory contain FileBrowser + Browser - + Bläddrare FileBrowserTreeWidget + Send to active instrument-track Skicka till aktivt instrument-spår + + Open in new instrument-track/Song Editor + Öppna i nytt instrument-spår/Låt-redigeraren + + + Open in new instrument-track/B+B Editor + Loading sample - Laddar ljudfil + Läser in ljudfil + Please wait, loading sample for preview... - Ljudfilen laddas för förhandslyssning... - - - --- Factory files --- - --- Grundfiler --- - - - Open in new instrument-track/Song Editor - Öppna i nytt instrument-spår/Sång Editor + Ljudfilen läses in för förhandslyssning... + Error Fel + does not appear to be a valid verkar inte vara en giltig + file fil + + + --- Factory files --- + --- Grundfiler --- + FlangerControls + Delay Samples - Fördröj Samplingar + Fördröj samplingar + Lfo Frequency Lfo-frekvens + Seconds Sekunder + Regen + Noise Brus + Invert Invertera @@ -2137,46 +2696,57 @@ Please make sure you have write permission to the file and the directory contain FlangerControlsDialog - Delay Time: - - - - Feedback Amount: - - - - White Noise Amount: - + + DELAY + FÖRDRÖJNING - DELAY - + + Delay Time: + Fördröjningstid: + RATE - + HASTIGHET - Rate: - + + Period: + Period: + AMNT + Amount: - + Mängd: + FDBK + + Feedback Amount: + + + + NOISE + BRUS + + + + White Noise Amount: + Invert Invertera @@ -2184,10 +2754,12 @@ Please make sure you have write permission to the file and the directory contain FxLine + Channel send amount - + Kanalsändningsbelopp + 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. @@ -2198,22 +2770,27 @@ You can remove and move FX channels in the context menu, which is accessed by ri + Move &left Flytta &vänster + Move &right Flytta &höger + Rename &channel Byt namn på &kanal + R&emove channel T&a bort kanal + Remove &unused channels Ta bort &oanvända kanaler @@ -2221,37 +2798,62 @@ You can remove and move FX channels in the context menu, which is accessed by ri FxMixer + Master Master + + + FX %1 FX %1 + + + Volume + Volym + + + + Mute + Tysta + + + + Solo + Solo + FxMixerView + FX-Mixer FX-Mixer + FX Fader %1 FX Fader %1 + Mute Tysta + Mute this FX channel Tysta denna FX-kanal + Solo Solo + Solo FX channel FX-kanal Solo @@ -2259,6 +2861,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 Mängd att skicka från kanal %1 till kanal %2 @@ -2266,14 +2870,17 @@ You can remove and move FX channels in the context menu, which is accessed by ri GigInstrument + Bank Bank + Patch + Gain Förstärkning @@ -2281,46 +2888,58 @@ You can remove and move FX channels in the context menu, which is accessed by ri GigInstrumentView + Open other GIG file Öppna en annan GIG-fil + Click here to open another GIG file Klicka här för att öppna en annan GIG-fil + 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 Välj vilket instrument i GIG-filen som ska spelas + Which GIG file is currently being used Vilken GIG-fil används för närvarande + Which patch of the GIG file is currently being used Vilken del av GIG-filen används för närvarande + Gain Förstärkning + Factor to multiply samples by Faktor att multiplicera samplingar med + Open GIG file Öppna GIG-fil + GIG Files (*.gig) GIG-filer (*.gig) @@ -2328,704 +2947,880 @@ You can remove and move FX channels in the context menu, which is accessed by ri GuiApplication + Working directory - Arbetskatalog + Arbetsmapp + The LMMS working directory %1 does not exist. Create it now? You can change the directory later via Edit -> Settings. - Arbetskatalogen %1 för LMMS existerar inte. Vill du skapa detta nu? Du kan ändra katalog senare under Redigera -> Inställningar. + Arbetsmappen %1 för LMMS finns inte. Vill du skapa denna nu? Du kan ändra mappen senare via Redigera -> Inställningar. + Preparing UI Förbereder användargränssnitt + Preparing song editor - Förbereder sång-editor + Förbereder låtredigeraren + Preparing mixer Förbereder mixer + Preparing controller rack Förbereder kontrollrack + Preparing project notes Förbereder projektanteckningar + Preparing beat/bassline editor - Förbereder Takt/Bas-editor + Förbereder takt/basgång-redigeraren + Preparing piano roll Förbereder pianorulle + Preparing automation editor - Förbereder automations-editor + Förbereder automationsredigeraren InstrumentFunctionArpeggio + Arpeggio Arpeggio + Arpeggio type Arpeggio-typ + Arpeggio range Arpeggio-omfång + + Cycle steps + + + + + Skip rate + + + + + Miss rate + + + + Arpeggio time Arpeggio-tid + Arpeggio gate + Arpeggio direction Arpeggio-riktning + Arpeggio mode Arpeggio-typ + Up Upp + Down Ner + Up and down Upp och ner + + Down and up + Ner och upp + + + Random Slumpmässig + Free - + Fritt + Sort - + Sortera + Sync - - - - Down and up - Ner och upp - - - Skip rate - - - - Miss rate - - - - Cycle steps - + Synkronisera InstrumentFunctionArpeggioView + ARPEGGIO 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 OMFÅNG + Arpeggio range: Arpeggio-omfång: + octave(s) oktav(er) + Use this knob for setting the arpeggio range in octaves. The selected arpeggio will be played within specified number of octaves. + + CYCLE + + + + + Cycle notes: + + + + + note(s) + not(er) + + + + 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 TID + Arpeggio time: Arpeggio-tid: + ms ms + Use this knob for setting the arpeggio time in milliseconds. The arpeggio time specifies how long each arpeggio-tone should be played. Använd denna ratt för att ställa arpeggio-tiden i millisekunder. Arpeggio-tiden anger hur länge varje arpeggio-ton ska spelas. + GATE 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: Ackord: + Direction: Riktning: + Mode: Läge: + + + InstrumentFunctionNoteStacking - SKIP - + + octave + oktav - Skip rate: - + + + Major + Dur - 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. + + Majb5 - MISS - + + minor + moll - Miss rate: + + minb5 - The miss function will make the arpeggiator miss the intended note. - - - - CYCLE - - - - Cycle notes: - - - - note(s) - not(er) - - - 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. - - - - - InstrumentFunctionNoteStacking - - octave - oktav - - - Major - - - - Majb5 - - - - minor - - - - minb5 - - - - sus2 + + sus2 + sus4 + aug + augsus4 + tri + 6 - + 6 + 6sus4 + 6add9 + m6 + m6add9 + 7 - + 7 + 7sus4 + 7#5 - + 7#5 + 7b5 - + 7b5 + 7#9 - + 7#9 + 7b9 - + 7b9 + 7#5#9 - + 7#5#9 + 7#5b9 - + 7#5b9 + 7b5b9 - + 7b5b9 + 7add11 + 7add13 + 7#11 - + 7#11 + Maj7 + Maj7b5 + Maj7#5 + Maj7#11 + Maj7add13 + m7 + m7b5 + m7b9 + m7add11 + m7add13 + m-Maj7 + m-Maj7add11 + m-Maj7add13 + 9 - + 9 + 9sus4 + add9 + 9#5 - + 9#5 + 9b5 - + 9b5 + 9#11 - + 9#11 + 9b13 - + 9b13 + Maj9 + Maj9sus4 + Maj9#5 + Maj9#11 + m9 + madd9 + m9b5 + m9-Maj7 + 11 - + 11 + 11b9 + Maj11 + m11 + m-Maj11 + 13 - + 13 + 13#9 - + 13#9 + 13b9 - + 13b9 + 13b5b9 - + 13b5b9 + Maj13 + m13 + m-Maj13 + Harmonic minor - + Harmonisk moll + Melodic minor - + Melodisk moll + Whole tone - + Hela tonen + Diminished - + Minskad + Major pentatonic + Minor pentatonic + Jap in sen + Major bebop + Dominant bebop + Blues - + Blues + Arabic - + Arabisk + Enigmatic - + Gåtfull + Neopolitan + Neopolitan minor + Hungarian minor + Dorian - Phrygolydian + + Phrygian + Lydian + Mixolydian + Aeolian + Locrian - Chords - Ackord - - - Chord type - Ackord-typ - - - Chord range - - - + Minor - + Moll + Chromatic - + Kromatisk + Half-Whole Diminished + 5 - + 5 + Phrygian dominant + Persian - + Persisk + + + + Chords + Ackord + + + + Chord type + Ackordtyp + + + + Chord range + Ackordomfång InstrumentFunctionNoteStackingView + + STACKING + STAPLA + + + + Chord: + Ackord: + + + RANGE OMFÅNG + Chord range: - + Ackordomfång: + octave(s) oktav(er) + Use this knob for setting the chord range in octaves. The selected chord will be played within specified number of octaves. - - STACKING - - - - Chord: - Ackord: - InstrumentMidiIOView + ENABLE MIDI INPUT AKTIVERA MIDI-INMATNING + + CHANNEL KANAL + + VELOCITY - + HASTIGHET + ENABLE MIDI OUTPUT - + AKTIVERA MIDI-UTGÅNG + PROGRAM - + PROGRAM - MIDI devices to receive MIDI events from - + + NOTE + NOT - MIDI devices to send MIDI events to - + + MIDI devices to receive MIDI events from + MIDI-enheter att ta emot MIDI-händelser från - NOTE - + + MIDI devices to send MIDI events to + MIDI-enheter att skicka MIDI-händelser till + CUSTOM BASE VELOCITY - + ANPASSAD BASHASTIGHET + Specify the velocity normalization base for MIDI-based instruments at 100% note velocity + BASE VELOCITY - + BASHASTIGHET InstrumentMiscView + MASTER PITCH + Enables the use of Master Pitch @@ -3033,126 +3828,158 @@ You can remove and move FX channels in the context menu, which is accessed by ri InstrumentSoundShaping + VOLUME VOLYM + Volume Volym + CUTOFF + + Cutoff frequency Cutoff frekvens + RESO RESO + Resonance Resonans + Envelopes/LFOs + Filter type Filtertyp + Q/Resonance Q/Resonans + LowPass Lågpass + HiPass Högpass + BandPass csg - + BandPass csg + BandPass czpg - + BandPass czpg + Notch + Allpass - + Allpass + Moog Moog + 2x LowPass 2x Lågpass + RC LowPass 12dB RC Lågpass 12dB + RC BandPass 12dB RC BandPass 12dB + RC HighPass 12dB RC Högpass 12dB + RC LowPass 24dB RC Lågpass 24dB + RC BandPass 24dB RC BandPass 24dB + RC HighPass 24dB RC Högpass 24dB + Vocal Formant Filter + 2x Moog - + 2x Moog + SV LowPass SV Lågpass + SV BandPass SV BandPass + SV HighPass SV Högpass + SV Notch + Fast Formant + Tripole @@ -3160,50 +3987,62 @@ You can remove and move FX channels in the context menu, which is accessed by ri InstrumentSoundShapingView + TARGET MÅL + 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 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. Här kan du välja vilket inbyggt filter du vill använda för detta instrument-spår. Filter är väldigt viktiga om man vill ändra karaktäristiken på ett ljud. + + FREQ + FREKV. + + + + cutoff frequency: + cutoff-frekvens: + + + Hz 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 RESO + Resonance: Resonans: + 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 - FREQ - - - cutoff frequency: - cutoff-frekvens: - - + Envelopes, LFOs and filters are not supported by the current instrument. @@ -3211,85 +4050,107 @@ You can remove and move FX channels in the context menu, which is accessed by ri InstrumentTrack + + With this knob you can set the volume of the opened channel. + Med denna ratt ställer du volymen för den öppnade kanalen. + + + + unnamed_track namnlöst_spår + + Base note + Grundton + + + Volume Volym + Panning Panorering + Pitch Tonhöjd - FX channel - FX-kanal - - - Default preset - Standardinställning - - - With this knob you can set the volume of the opened channel. - Med denna ratt ställer du volymen för den öppnade kanalen. - - - Base note - Grundton - - + Pitch range Tonhöjdsomfång + + FX channel + FX-kanal + + + Master Pitch + + + + Default preset + Standardinställning + InstrumentTrackView + Volume Volym + Volume: Volym: + VOL VOL + Panning Panorering + Panning: Panorering: + PAN PAN + MIDI MIDI + Input Ingång + Output Utgång + FX %1: %2 FX %1: %2 @@ -3297,125 +4158,160 @@ You can remove and move FX channels in the context menu, which is accessed by ri InstrumentTrackWindow + GENERAL SETTINGS ÖVERGRIPANDE INSTÄLLNINGAR + + Use these controls to view and edit the next/previous track in the song editor. + Använd dessa kontroller för att visa och redigera nästa/föregående spår i låtredigeraren. + + + Instrument volume Instrument-volym + Volume: Volym: + VOL VOL + Panning Panorering + Panning: Panorering: + PAN PAN + Pitch Tonhöjd + Pitch: Tonhöjd: + cents + PITCH - FX channel - FX-kanal + + Pitch range (semitones) + - ENV/LFO - + + RANGE + OMFÅNG - FUNC - + + FX channel + FX-kanal + FX - + FX - MIDI - MIDI + + Save current instrument track settings in a preset file + Spara aktuella instrumentspårinställningar i en förinställd fil - Save preset - Spara förinställning + + 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. + - XML preset file (*.xpf) - XML förinställnings-fil (*.xpf) + + SAVE + SPARA - PLUGIN + + Envelope, filter & LFO - Pitch range (semitones) + + Chord stacking & arpeggio - RANGE - OMFÅNG + + Effects + Effekter - Save current instrument track settings in a preset file - + + MIDI settings + MIDI-inställningar - 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. - + + Miscellaneous + Diverse - MISC - + + Save preset + Spara förinställning - Use these controls to view and edit the next/previous track in the song editor. - + + XML preset file (*.xpf) + XML förinställnings-fil (*.xpf) - SAVE - SPARA + + Plugin + Insticksmodul Knob + Set linear - + Ställ in linjär + Set logarithmic - + Ställ in logaritmisk + Please enter a new value between -96.0 dBFS and 6.0 dBFS: - + Vänligen ange ett nytt värde mellan -96.0 dBFS och 6.0 dBFS: + Please enter a new value between %1 and %2: Ange ett nytt värde mellan %1 och %2: @@ -3423,6 +4319,7 @@ You can remove and move FX channels in the context menu, which is accessed by ri LadspaControl + Link channels Länka kanaler @@ -3430,10 +4327,12 @@ You can remove and move FX channels in the context menu, which is accessed by ri LadspaControlDialog + Link Channels Länka Kanaler + Channel Kanal @@ -3441,14 +4340,17 @@ You can remove and move FX channels in the context menu, which is accessed by ri LadspaControlView + Link channels Länka kanaler + Value: Värde: + Sorry, no help available. Ledsen, ingen hjälp är tillgänglig. @@ -3456,13 +4358,15 @@ You can remove and move FX channels in the context menu, which is accessed by ri LadspaEffect + Unknown LADSPA plugin %1 requested. - + Okänd LADSPA-insticksmodul %1 efterfrågad. LcdSpinBox + Please enter a new value between %1 and %2: Ange ett nytt värde mellan %1 och %2: @@ -3470,18 +4374,26 @@ You can remove and move FX channels in the context menu, which is accessed by ri LeftRightNav + + + Previous Tidigare + + + Next Nästa + Previous (%1) Tidigare (%1) + Next (%1) Nästa (%1) @@ -3489,145 +4401,180 @@ You can remove and move FX channels in the context menu, which is accessed by ri LfoController + LFO Controller + Base value Basvärde + Oscillator speed - + Oscillatorhastighet + Oscillator amount - + Oscillatormängd + Oscillator phase - + Oscillatorfas + Oscillator waveform - + Oscillatorvågform + Frequency Multiplier - + Frekvens Multiplikator LfoControllerDialog + LFO LFO + LFO Controller + BASE + Base amount: + todo + SPD - + 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: Moduleringsmängd: + 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 grader + 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. Klicka här för sinusvåg. + Click here for a triangle-wave. Klicka här för triangelvåg. + Click here for a saw-wave. - Klicka här för sågtandvåg + Klicka här för sågtandsvåg + Click here for a square-wave. - Klicka här för fyrkantvåg + Klicka här för fyrkantvåg. + + + + Click here for a moog saw-wave. + + Click here for an exponential wave. + Click here for white-noise. Klicka här för vitt brus. + Click here for a user-defined shape. Double click to pick a file. - - - - Click here for a moog saw-wave. - - - - AMNT - + Klicka här för en användardefinierad form. +Dubbelklicka för att välja en fil. LmmsCore + Generating wavetables + Initializing data structures - + Initierar datastrukturer + Opening audio and midi devices - + Öppnar ljud- och midienheter + Launching mixer threads @@ -3635,404 +4582,500 @@ Double click to pick a file. MainWindow - Could not save config-file - + + Configuration file + Konfigurationsfil - Could not save configuration file %1. You're probably not permitted to write to this file. -Please make sure you have write-access to the file and try again. - + + Error while parsing configuration file at line %1:%2: %3 + Fel vid inläsning av konfigurationsfil på rad %1:%2: %3 - &New - &Ny - - - &Open... - &Öppna... + + Could not open file + Kunde inte öppna fil - &Save - &Spara + + 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! + Det gick inte att öppna filen %1 för att skriva. +Se till att du har skrivbehörighet till filen och mappen som innehåller filen och försök igen! - Save &As... - Spara &som... + + Project recovery + Projektåterställning - Import... - Importera... + + 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? + Det finns en återställningsfil tillgänglig. Det verkar som om programmet inte avslutades korrekt senast, eller så körs redan LMMS. Vill du återställa detta projekt? - E&xport... - E&xportera... + + + + Recover + Återställ - &Quit - &Avsluta + + Recover the file. Please don't run multiple instances of LMMS when you do this. + Återställ filen. Se till att du bara har en instans av LMMS igång när du gör detta. - &Edit - &Redigera + + + + Discard + Kasta bort - Settings - Inställningar + + Launch a default session and delete the restored files. This is not reversible. + Starta en standard-session och ta bort den återskapade filen. Detta går inte ångra. - &Tools - + + Version %1 + Version %1 - &Help - &Hjälp + + Preparing plugin browser + Förbereder insticksmodulsbläddraren - Help - Hjälp + + Preparing file browsers + Förbereder fil-browser - What's this? - Vad är detta? + + My Projects + Mina projekt - About - Om + + My Samples + Mina samplingar - Create new project - Skapa nytt projekt + + My Presets + Mina förinställningar - Create new project from template - Skapa nytt projekt från mall + + My Home + Min hemmapp - Open existing project - Öppna existerande projekt + + Root directory + Rotmapp - Recently opened projects - Nyligen öppnade projekt + + Volumes + Volymer - Save current project - Spara aktuellt projekt + + My Computer + Min dator - Export current project - Exportera aktuellt projekt + + Loading background artwork + Laddar bakgrunds-grafik - Song Editor - Sång-editor + + &File + &Arkiv - 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. - + + &New + &Ny - Beat+Bassline Editor - Redigera Trummor+Bas + + New from template + Nytt från mall - 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. - + + &Open... + &Öppna... - Piano Roll - Pianorulle + + &Recently Opened Projects + &Nyligen öppnade projekt - Click here to show or hide the Piano-Roll. With the help of the Piano-Roll you can edit melodies in an easy way. - Klicka här för att visa eller dölja pianorullen. Med hjälp av pianorullen kan du skapa melodier på ett enkelt sätt. + + &Save + &Spara - Automation Editor - Automations-editor + + Save &As... + Spara &som... - 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. - + + Save as New &Version + Spara som ny &version - FX Mixer - + + Save as default template + Spara som standardmall - 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. - + + Import... + Importera... - Project Notes - Projektanteckningar + + E&xport... + E&xportera... - Click here to show or hide the project notes window. In this window you can put down your project notes. - Klicka här för att visa eller dölja fönstret för projektanteckningar. I detta fönster kan du göra noteringar om ditt projekt, + + E&xport Tracks... + E&xportera spår... - Controller Rack - Kontrollrack + + Export &MIDI... + Exportera &MIDI... - Untitled - Namnlös + + &Quit + &Avsluta - LMMS %1 - LMMS %1 + + &Edit + &Redigera - Project not saved - Projekt inte sparat + + Undo + Ångra - The current project was modified since last saving. Do you want to save it now? - Projektet har ändrats sedan det sparades senast. Vill du spara nu? + + Redo + Gör om - Help not available - Hjälp inte tillgänglig + + Settings + Inställningar - Currently there's no help available in LMMS. -Please visit http://lmms.sf.net/wiki for documentation on LMMS. - Just nu finns ingen hjälp tillgänglig i LMMS -Besök https://lmms.io/documentation/ för dokumentation (Engelska). + + &View + &Visa - LMMS (*.mmp *.mmpz) - + + &Tools + &Verktyg - Version %1 - Version %1 + + &Help + &Hjälp - Configuration file - Konfigurationsfil + + Online Help + Hjälp på nätet - Error while parsing configuration file at line %1:%2: %3 - Fel vid inläsning av konfigurationsfil på rad %1:%2: %3 + + Help + Hjälp - Volumes - + + What's This? + Vad är det här? - Undo - Ångra + + About + Om - Redo - Gör om + + Create new project + Skapa nytt projekt - My Projects - Mina Projekt + + Create new project from template + Skapa nytt projekt från mall - My Samples - + + Open existing project + Öppna existerande projekt - My Presets - + + Recently opened projects + Nyligen öppnade projekt - My Home - + + Save current project + Spara aktuellt projekt - My Computer - Min dator + + Export current project + Exportera aktuellt projekt - &File - &Fil + + What's this? + Vad är detta? - &Recently Opened Projects - &Nyligen öppnade projekt + + Toggle metronome + Slå på/av metronom - Save as New &Version - Spara som Ny &Version + + Show/hide Song-Editor + Visa/dölj Låtredigeraren - E&xport Tracks... - E&xportera spår... + + 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. + Genom att trycka på den här knappen kan du visa eller dölja Låtredigeraren. Med hjälp av Låtredigeraren kan du redigera låtspellista och ange när vilken låt ska spelas. Du kan också infoga och flytta samplingar (t.ex. rap-samplingar) direkt i spellistan. - Online Help - Online-hjälp + + Show/hide Beat+Bassline Editor + Visa/dölj Takt+Basgång-redigeraren - What's This? - Vad är det här? + + 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. + - Open Project - Öppna Projekt + + Show/hide Piano-Roll + Visa/dölj pianorulle - Save Project - Spara Projekt + + Click here to show or hide the Piano-Roll. With the help of the Piano-Roll you can edit melodies in an easy way. + Klicka här för att visa eller dölja pianorullen. Med hjälp av pianorullen kan du skapa melodier på ett enkelt sätt. - Project recovery - Projektåterställning + + Show/hide Automation Editor + Visa/dölj Automationsredigeraren - 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? - Det finns en återställningsfil tillgänglig. Det verkar som om programmet inte avslutades korrekt senast, eller så körs redan LMMS. Vill du återställa detta projekt? + + 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. + - Recover - Återställ + + Show/hide FX Mixer + Visa/dölj FX Mixer - Recover the file. Please don't run multiple instances of LMMS when you do this. - Återställ filen. Se till att du bara har en instans av LMMS igång när du gör detta. + + 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. + - Ignore - Ignorera + + Show/hide project notes + Visa/dölj projektanteckningar - Launch LMMS as usual but with automatic backup disabled to prevent the present recover file from being overwritten. - Starta LMMS som vanligt men med automatisk backup avstängt för att förhindra att den nuvarande återställningsfilen blir överskriven. + + Click here to show or hide the project notes window. In this window you can put down your project notes. + Klicka här för att visa eller dölja fönstret för projektanteckningar. I detta fönster kan du göra noteringar om ditt projekt, - Discard - Kasta bort + + Show/hide controller rack + Visa/dölj kontrollrack - Launch a default session and delete the restored files. This is not reversible. - Starta en standard-session och ta bort den återskapade filen. Detta går inte ångra. + + Untitled + Namnlös - Preparing plugin browser - Förbereder plugin-browser + + Recover session. Please save your work! + Återställnings-session. Spara ditt arbete! - Preparing file browsers - Förbereder fil-browser + + LMMS %1 + LMMS %1 - Root directory - Rotkatalog + + Recovered project not saved + Återställt projekt inte sparat - Loading background artwork - Laddar bakgrunds-grafik + + 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? + Projektet återställdes från den senaste sessionen. Det kommer försvinna om du inte sparar det. Vill du spara projektet nu? - New from template - Nytt från mall + + Project not saved + Projektet inte sparat - Save as default template - Spara som standard-mall + + The current project was modified since last saving. Do you want to save it now? + Projektet har ändrats sedan det sparades senast. Vill du spara nu? - &View - &Visa + + Open Project + Öppna projekt - Toggle metronome - Slå på/av metronom + + LMMS (*.mmp *.mmpz) + LMMS (*.mmp *.mmpz) - Show/hide Song-Editor - Visa/dölj Sång-editor + + Save Project + Spara projekt - Show/hide Beat+Bassline Editor - Visa/dölj Takt+Bas-editor + + LMMS Project + LMMS-Projekt - Show/hide Piano-Roll - Visa/dölj pianorulle + + LMMS Project Template + LMMS-Projektmall - Show/hide Automation Editor - Visa/dölj Automations-editor + + Save project template + Spara projektmall - Show/hide FX Mixer - Visa/dölj FX Mixer + + Overwrite default template? + Vill du skriva över standardmallen? - Show/hide project notes - Visa/dölj projektanteckningar + + This will overwrite your current default template. + Detta kommer skriva över din nuvarande standardmall. - Show/hide controller rack - Visa/dölj kontrollrack + + Help not available + Hjälp inte tillgänglig - Recover session. Please save your work! - Återställnings-session. Spara ditt arbete! + + Currently there's no help available in LMMS. +Please visit http://lmms.sf.net/wiki for documentation on LMMS. + Just nu finns ingen hjälp tillgänglig i LMMS +Besök https://lmms.io/documentation/ för dokumentation (Engelska). - Automatic backup disabled. Remember to save your work! - Automatisk backup avstängd. Kom ihåg att spara ditt arbete! + + Song Editor + Låtredigeraren - Recovered project not saved - Återställt projekt inte sparat + + Beat+Bassline Editor + Takt+Basgång-redigeraren - 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? - Projektet återställdes från den senaste sessionen. Det kommer försvinna om du inte sparar det. Vill du spara projektet nu? + + Piano Roll + Pianorulle - LMMS Project - LMMS-Projekt + + Automation Editor + Automatiseringsredigeraren - LMMS Project Template - LMMS-Projektmall + + FX Mixer + FX-mixer - Overwrite default template? - Vill du skriva över standardmallen? + + Project Notes + Projektanteckningar - This will overwrite your current default template. - Detta kommer skriva över din nuvarande standardmall. + + Controller Rack + Kontrollrack + Volume as dBFS Volym som dBFS + Smooth scroll Mjuk rullning + Enable note labels in piano roll Visa noter i pianorulle - - Save project template - - MeterDialog + + Meter Numerator + + Meter Denominator + TIME SIG @@ -4040,107 +5083,130 @@ Besök https://lmms.io/documentation/ för dokumentation (Engelska). MeterModel + Numerator - + Täljare + Denominator - + Nämnare MidiController + MIDI Controller - + MIDI-styrenhet + unnamed_midi_controller - + unnamed_midi_controller MidiImport + + Setup incomplete Installation ofullständig + 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. - + Du har inte ställt in en standard soundfont i inställningsdialogrutan (Redigera->Inställningar). Därför spelas inget ljud upp efter att ha importerat denna MIDI-fil. Du bör hämta en allmän MIDI-soundfont, ange den i inställningsdialogrutan och försök igen. + 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. - + Du kompilerade inte LMMS med stöd för SoundFont2-spelaren, som används för att lägga till standardljud till importerade MIDI-filer. Därför spelas inget ljud upp efter att ha importerat denna MIDI-fil. + Track - + Spår MidiJack + JACK server down When JACK(JACK Audio Connection Kit) disconnects, it will show the following message (title) - JACK server nerstängd + JACK-server nerstängd + The JACK server seems to be shuted down. When JACK(JACK Audio Connection Kit) disconnects, it will show the following message (dialog message) - + JACK-servern verkar vara avstängd. MidiPort + Input channel Ingångskanal + Output channel Utgångskanal + Input controller Ingångskontroller + Output controller Utgångskontroller + Fixed input velocity - + Fast ingångshastighet + Fixed output velocity - + Fast utgångshastighet + + Fixed output note + Fast utgångsnot + + + Output MIDI program - + Utgång MIDI-program + + + + Base velocity + Bashastighet + Receive MIDI-events Ta emot MIDI-event + Send MIDI-events Skicka MIDI-event - - Fixed output note - Fast utgångs-not - - - Base velocity - - MidiSetupWidget + DEVICE ENHET @@ -4148,495 +5214,620 @@ Besök https://lmms.io/documentation/ för dokumentation (Engelska). MonstroInstrument + Osc 1 Volume Osc 1 Volym + Osc 1 Panning Osc 1 Panorering + 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 Vald vy + 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 Sinusvåg + Bandlimited Triangle wave + Bandlimited Saw wave + Bandlimited Ramp wave + Bandlimited Square wave + Bandlimited Moog saw wave + + Soft square wave - + Mjuk fyrkantvåg + Absolute sine wave - + Absolut sinusvåg + + Exponential wave - + Exponentiell våg + White noise - + Vitt brus + Digital Triangle wave Digital Triangelvåg + Digital Saw wave Digital Sågtandsvåg + Digital Ramp wave + Digital Square wave + Digital Moog saw wave + Triangle wave Triangelvåg + Saw wave Sågtandsvåg + Ramp wave - + Rampvåg + Square wave Fyrkantvåg + Moog saw wave Moog sågtandsvåg + Abs. sine wave Abs. sinusvåg + Random Slumpmässig + Random smooth - + Slumpmässigt slät MonstroView + Operators view - + Operatörernas vy + 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. @@ -4645,256 +5836,407 @@ Each modulation target has 4 knobs, one for each modulator. By default the knobs - Mix Osc2 with Osc3 - Mixa Osc2 med Osc3 + + + + Volume + Volym - Modulate amplitude of Osc3 with Osc2 - Modulera amplituden för Osc3 med Osc2 + + + + Panning + Panorering - Modulate frequency of Osc3 with Osc2 - Modulera frekvensen för Osc3 med Osc2 + + + + Coarse detune + - Modulate phase of Osc3 with Osc2 - Modulera fasen för Osc3 med Osc2 + + + + semitones + halvtoner - The CRS knob changes the tuning of oscillator 1 in semitone steps. + + + Finetune left - The CRS knob changes the tuning of oscillator 2 in semitone steps. + + + + + cents - The CRS knob changes the tuning of oscillator 3 in semitone steps. + + + Finetune right - 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. + + + + Stereo phase offset - The SPO knob modifies the difference in phase between left and right channels. Higher difference creates a wider stereo image. + + + + + + deg - 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. + + Pulse width - 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 pulse rise - 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. + + Send sync on pulse fall - Hard sync: Every time the oscillator receives a sync signal from oscillator 1, its phase is reset to 0 + whatever its phase offset is. + + Hard sync oscillator 2 - Reverse sync: Every time the oscillator receives a sync signal from oscillator 1, the amplitude of the oscillator gets inverted. + + Reverse sync oscillator 2 - Choose waveform for oscillator 2. - Välj vågform för oscillator 2. + + Sub-osc mix + - Choose waveform for oscillator 3's first sub-osc. Oscillator 3 can smoothly interpolate between two different waveforms. + + Hard sync oscillator 3 - Choose waveform for oscillator 3's second sub-osc. Oscillator 3 can smoothly interpolate between two different waveforms. + + Reverse sync oscillator 3 - 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. - + + + + + Attack + Attack - 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. - + + + Rate + Värdera - 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. - + + + Phase + Fas - 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. + + + Pre-delay - 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. - + + + Hold + Håll - 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... - + + + Decay + Decay - 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... - + + + Sustain + Sustain - Attack causes the LFO to come on gradually from the start of the note. - + + + Release + Släpp - Rate sets the speed of the LFO, measured in milliseconds per cycle. Can be synced to tempo. - + + + Slope + Lutning + + + + Mix Osc2 with Osc3 + Mixa Osc2 med Osc3 + + + + Modulate amplitude of Osc3 with Osc2 + Modulera amplituden för Osc3 med Osc2 + + + + Modulate frequency of Osc3 with Osc2 + Modulera frekvensen för Osc3 med Osc2 - PHS controls the phase offset of the LFO. - + + Modulate phase of Osc3 with Osc2 + Modulera fasen för Osc3 med Osc2 - PRE, or pre-delay, delays the start of the envelope from the start of the note. 0 means no delay. + + The CRS knob changes the tuning of oscillator 1 in semitone steps. - ATT, or attack, controls how fast the envelope ramps up at start, measured in milliseconds. A value of 0 means instant. + + The CRS knob changes the tuning of oscillator 2 in semitone steps. - HOLD controls how long the envelope stays at peak after the attack phase. + + The CRS knob changes the tuning of oscillator 3 in semitone steps. - 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. + + + + + 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. - 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. + + + + The SPO knob modifies the difference in phase between left and right channels. Higher difference creates a wider stereo image. - 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 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. - 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. + + 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. - Volume - Volym + + 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. + - Panning - Panorering + + + Hard sync: Every time the oscillator receives a sync signal from oscillator 1, its phase is reset to 0 + whatever its phase offset is. + Hard sync: varje gång oscillatorn tar emot en synkroniseringssignal från oscillator 1 återställs dess fas till 0 + vad dess fasförskjutning är. - Coarse detune + + + Reverse sync: Every time the oscillator receives a sync signal from oscillator 1, the amplitude of the oscillator gets inverted. - semitones - halvtoner + + Choose waveform for oscillator 2. + Välj vågform för oscillator 2. - Finetune left + + Choose waveform for oscillator 3's first sub-osc. Oscillator 3 can smoothly interpolate between two different waveforms. - cents + + Choose waveform for oscillator 3's second sub-osc. Oscillator 3 can smoothly interpolate between two different waveforms. - Finetune right + + 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. - Stereo phase offset + + 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. - deg + + 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. - Pulse width + + 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. - Send sync on pulse rise + + 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. - Send sync on pulse fall + + 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... - Hard sync oscillator 2 + + 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... - Reverse sync oscillator 2 + + + Attack causes the LFO to come on gradually from the start of the note. - Sub-osc mix + + + Rate sets the speed of the LFO, measured in milliseconds per cycle. Can be synced to tempo. - Hard sync oscillator 3 + + + PHS controls the phase offset of the LFO. - Reverse sync oscillator 3 + + + PRE, or pre-delay, delays the start of the envelope from the start of the note. 0 means no delay. - Attack - Attack - - - Rate - Värdera - - - Phase + + + ATT, or attack, controls how fast the envelope ramps up at start, measured in milliseconds. A value of 0 means instant. - Pre-delay + + + HOLD controls how long the envelope stays at peak after the attack phase. - Hold - Håll - - - Decay - Decay + + + 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. + - Sustain - Sustain + + + 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. + - Release - Släpp + + + 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. + - Slope + + + 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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Modulation amount Moduleringsmängd @@ -4902,34 +6244,42 @@ PM means phase modulation: Oscillator 3's phase is modulated by oscillator MultitapEchoControlDialog + Length Längd + Step length: + Dry + Dry Gain: + Stages - + Stadier + Lowpass stages: + Swap inputs + Swap left and right input channel for reflections @@ -4937,82 +6287,102 @@ PM means phase modulation: Oscillator 3's phase is modulated by oscillator NesInstrument + Channel 1 Coarse detune + Channel 1 Volume - + Kanal 1 volym + Channel 1 Envelope length + Channel 1 Duty cycle + Channel 1 Sweep amount + Channel 1 Sweep rate + Channel 2 Coarse detune + Channel 2 Volume - + Kanal 2 volym + Channel 2 Envelope length + Channel 2 Duty cycle + Channel 2 Sweep amount + Channel 2 Sweep rate + Channel 3 Coarse detune + Channel 3 Volume - + Kanal 3 volym + Channel 4 Volume - + Kanal 4 volym + Channel 4 Envelope length + Channel 4 Noise frequency + Channel 4 Noise frequency sweep + Master volume Huvudvolym + Vibrato @@ -5020,114 +6390,155 @@ PM means phase modulation: Oscillator 3's phase is modulated by oscillator NesInstrumentView + + + + Volume Volym + + + Coarse detune + + + Envelope length + Enable channel 1 - + Aktivera kanal 1 + Enable envelope 1 + Enable envelope 1 loop + Enable sweep 1 - + Aktivera svep 1 + + Sweep amount - + Svepmängd + + Sweep rate - + Svephastighet + + 12.5% Duty cycle + + 25% Duty cycle + + 50% Duty cycle + + 75% Duty cycle + Enable channel 2 - + Aktivera kanal 2 + Enable envelope 2 + Enable envelope 2 loop + Enable sweep 2 + Enable channel 3 - + Aktivera kanal 3 + Noise Frequency - + Brusfrekvens + Frequency sweep + Enable channel 4 - + Aktivera kanal 4 + Enable envelope 4 + Enable envelope 4 loop + Quantize noise frequency when using note frequency - + Kvantifiera brusfrekvens vid användning av notfrekvens + Use note frequency for noise - + Använd notfrekvens för brus + Noise mode - + Brusläge + Master Volume - + Huvudvolym + Vibrato @@ -5135,81 +6546,103 @@ PM means phase modulation: Oscillator 3's phase is modulated by oscillator OscillatorObject - Osc %1 volume + + Osc %1 waveform - Osc %1 panning + + Osc %1 harmonic - Osc %1 coarse detuning - + + + Osc %1 volume + Osc %1 volym + + + + + Osc %1 panning + Osc %1 panorering + + 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 - - - - Osc %1 waveform - - - - Osc %1 harmonic - + Moduleringstyp %1 PatchesDialog + Qsynth: Channel Preset - + Qsynth: Kanal förinställd + Bank selector - + Bankväljare + Bank Bank + Program selector - + Programväljare + Patch + Name Namn + OK OK + Cancel Avbryt @@ -5217,46 +6650,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 - + Slinga + Loop mode - + Slinga-läge + Here you can toggle the Loop mode. If enabled, PatMan will use the loop information available in the file. + Tune - + Tune + Tune mode - + Tune-läge + Here you can toggle the Tune mode. If enabled, PatMan will tune the sample to match the note's frequency. + No file selected Ingen fil vald + Open patch file Öppna patch-fil + Patch-Files (*.pat) Patch-filer (*.pat) @@ -5264,53 +6708,65 @@ PM means phase modulation: Oscillator 3's phase is modulated by oscillator PatternView + + use mouse wheel to set velocity of a step + använd mushjulet för att ställa in hastigheten på ett steg + + + + double-click to open in Piano Roll + Dubbelklicka för att öppna i Pianorulle + + + Open in piano-roll Öppna i pianorulle + Clear all notes Rensa alla noter + Reset name Nollställ namn + Change name Byt namn + Add steps Lägg till steg + Remove steps Ta bort steg - use mouse wheel to set velocity of a step - - - - double-click to open in Piano Roll - Dubbelklicka för att öppna i Pianorulle - - + Clone Steps - Klona steg + Klona Steg 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. @@ -5318,10 +6774,12 @@ PM means phase modulation: Oscillator 3's phase is modulated by oscillator PeakControllerDialog + PEAK + LFO Controller @@ -5329,353 +6787,438 @@ PM means phase modulation: Oscillator 3's phase is modulated by oscillator PeakControllerEffectControlDialog + BASE + Base amount: - Modulation amount: - Moduleringsmängd: - - - Attack: - Attack: - - - Release: - Release: - - + AMNT + + Modulation amount: + Moduleringsmängd: + + + MULT + Amount Multiplicator: + ATCK + + Attack: + Attack: + + + DCAY - Treshold: - + + Release: + Release: + TRSH + + + Treshold: + Tröskelvärde: + PeakControllerEffectControls + Base value Basvärde + Modulation amount Moduleringsmängd - Mute output - Tysta utgångs-ljud - - + Attack Attack + Release Släpp + + Treshold + Tröskelvärde + + + + Mute output + Tysta utgångs-ljud + + + Abs Value Abs-värde + Amount Multiplicator - - Treshold - - PianoRoll - Please open a pattern by double-clicking on it! - Dubbelklicka för att öppna ett mönster! - - - Last note - Senaste noten - - - Note lock - - - + Note Velocity - + Nothastighet + Note Panning Not-panorering + Mark/unmark current semitone Markera/avmarkera nuvarande halvton + + Mark/unmark all corresponding octave semitones + Markera/avmarkera alla motsvarande oktavhalvtoner + + + Mark current scale Markera nuvarande skala + Mark current chord Markera nuvarande ackord + Unmark all Avmarkera allt + + Select all notes on this key + Välj alla noter på denna tangent + + + + Note lock + Notlås + + + + Last note + Senaste noten + + + No scale Ingen skala + No chord Inget ackord + Velocity: %1% - + Hastighet: %1% + Panning: %1% left Panorering: %1% vänster + Panning: %1% right Panorering: %1% höger + Panning: center Panorering: center - Please enter a new value between %1 and %2: - Ange ett nytt värde mellan %1 och %2: - - - Mark/unmark all corresponding octave semitones - + + Please open a pattern by double-clicking on it! + Dubbelklicka för att öppna ett mönster! - Select all notes on this key - Välj alla noter på denna tangent + + + Please enter a new value between %1 and %2: + Ange ett nytt värde mellan %1 och %2: PianoRollWindow + Play/pause current pattern (Space) Spela/pausa aktuellt mönster (mellanslag) + Record notes from MIDI-device/channel-piano Spela in noter från MIDI-enhet/kanal-piano + Record notes from MIDI-device/channel-piano while playing song or BB track Spela in noter från MIDI-enhet/kanal-piano medan sång eller BB-spår spelas + Stop playing of current pattern (Space) Sluta spela aktuellt mönster (mellanslag) + Click here to play the current pattern. This is useful while editing it. The pattern is automatically looped when its end is reached. Klicka här för att spela det aktuella mönstret, detta är användbart när man redigerar. Mönstret spelas från början igen när det nått sitt slut. + 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. Klicka här för att stoppa uppspelning av de aktuella mönstret. + + Edit actions + Redigera åtgärder + + + Draw mode (Shift+D) - Ritläge (Shift+D) + Ritläge (Skift+D) + Erase mode (Shift+E) - Suddläge (Shift+E) + Suddläge (Skift+E) + Select mode (Shift+S) - Markeringsläge (Shift+S) + Markeringsläge (Skift+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. + Klicka här och ritläget kommer att aktiveras. I det här läget kan du lägga till, ändra storlek och flytta anteckningar. Detta är standardläget som används för det mesta. Du kan också trycka på 'Shift+D' på tangentbordet för att aktivera det här läget. I det här läget håller du %1 intryckt för att tillfälligt gå in i välja-läget. - 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. + Klicka här och radera-läge kommer att aktiveras. I det här läget kan du radera anteckningar. Du kan också trycka på "Skift+E" på tangentbordet för att aktivera det här läget. + + + + 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. + Klicka här och välja-läget aktiveras. I det här läget kan du välja anteckningar. Alternativt kan du hålla %1 i ritläget för att tillfälligt använda välja-läget. + + + + Pitch Bend mode (Shift+T) - 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 Pitch Bend 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. - 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. + + Quantize - 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. + + Copy paste controls + Cut selected notes (%1+X) Klipp ut valda noter (%1+X) + Copy selected notes (%1+C) Kopiera valda noter (%1+C) + Paste notes from clipboard (%1+V) Klistra in noter (%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. - + Klicka här och de valda noterna kommer att klippas ut till urklipp. Du kan klistra in dem var som helst i något mönster genom att klicka på knappen klistra in. + 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. - + Klicka här och de valda anteckningarna kopieras till urklipp. Du kan klistra in dem var som helst i något mönster genom att klicka på knappen klistra in. + 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. - + + Timeline controls + Tidslinjekontroller - 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. + + Zoom and note controls - 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 + + 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 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! + + 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. - 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. + + 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 - Edit actions - Redigera åtgärder - - - Copy paste controls + + 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! - Timeline controls - Tidslinjekontroller - - - Zoom and note controls + + 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 Pianorulle - %1 + + Piano-Roll - no pattern Pianorulle - inget mönster - - Quantize - - PianoView + Base note - Bas-not + Basnot Plugin + Plugin not found - Plugin hittades inte + Instickmodulen hittades inte + The plugin "%1" wasn't found or could not be loaded! Reason: "%2" - Pluginet "%1" hittades inte eller kunde inte laddas! + Instickmodulen "%1" hittades inte eller kunde inte läsas in! Orsak: "%2" + Error while loading plugin - Fel vid inläsning av plugin + Fel vid inläsning av instickmodulen + Failed to load plugin "%1"! - Misslyckades att läsa in plugin "%1"! + Misslyckades att läsa in insticksmodulen "%1"! PluginBrowser - Instrument browser - + + Instrument Plugins + Instrument insticksmoduler - Drag an instrument into either the Song-Editor, the Beat+Bassline Editor or into an existing instrument track. - + + Instrument browser + Instrument bläddrare - Instrument Plugins - + + Drag an instrument into either the Song-Editor, the Beat+Bassline Editor or into an existing instrument track. + Dra ett instrument till antingen Låtredigeraren, Takt+Basgång-redigeraren eller till ett befintligt instrument spår. PluginFactory + Plugin not found. - Plugin hittades inte. + Insticksmodulen hittades inte. + LMMS plugin %1 does not have a plugin descriptor named %2! @@ -5683,118 +7226,147 @@ Orsak: "%2" ProjectNotes - Project notes + + Project Notes Projektanteckningar - Put down your project notes here. - Skriv ner dina anteckningar för projektet här. + + Enter project notes here + + Edit Actions - Redigera Händelser + Redigera Åtgärder + &Undo &Ångra + %1+Z - + %1+Z + &Redo &Gör om + %1+Y - + %1+Y + &Copy &Kopiera + %1+C - + %1+C + Cu&t Klipp u&t + %1+X - + %1+X + &Paste &Klistra in + %1+V %1+V + Format Actions + &Bold &Fet + %1+B %1+B + &Italic &Kursiv + %1+I %1+I + &Underline &Understruken + %1+U %1+U + &Left &Vänster + %1+L %1+L + C&enter C&entrera + %1+E %1+E + &Right &Höger + %1+R %1+R + &Justify - + &Justera + %1+J %1+J + &Color... &Färg... @@ -5802,185 +7374,326 @@ Orsak: "%2" ProjectRenderer + WAV-File (*.wav) WAV-Fil (*.wav) + Compressed OGG-File (*.ogg) Komprimerad OGG-Fil (*.ogg) + + + Compressed MP3-File (*.mp3) + Komprimerad MP3-fil ( *.mp3) + QWidget + + + Name: Namn: + + Maker: Skapare: + + Copyright: Copyright: + + Requires Real Time: + + + + + + Yes Ja + + + + + + No Nej + + Real Time Capable: + + In Place Broken: + + Channels In: Kanaler In: + + Channels Out: Kanaler Ut: - File: - Fil: - - + File: %1 Fil: %1 + + + File: + Fil: + RenameDialog + Rename... Byt namn... + + ReverbSCControlDialog + + + Input + Ingång + + + + Input Gain: + Input Förstärkning: + + + + Size + Storlek + + + + Size: + Storlek: + + + + Color + Färg + + + + Color: + Färg: + + + + Output + Utgång + + + + Output Gain: + Output Förstärkning + + + + ReverbSCControls + + + Input Gain + Ingångsförstärkning + + + + Size + Storlek + + + + Color + Färg + + + + Output Gain + Utgångsförstärkning + + SampleBuffer + + Fail to open file + Misslyckas med att öppna filen + + + + Audio files are limited to %1 MB in size and %2 minutes of playing time + Ljudfiler är begränsade till %1 MB i storlek och %2 minuters speltid + + + Open audio file Öppna ljudfil + + All Audio-Files (*.wav *.ogg *.ds *.flac *.spx *.voc *.aif *.aiff *.au *.raw) + Alla ljudfiler (*.wav *.ogg *.ds *.flac *.spx *.voc *.aif *.aiff *.au *.raw) + + + Wave-Files (*.wav) - Wave-Filer (*.wav) + Wave-filer (*.wav) + OGG-Files (*.ogg) - OGG-Filer (*.ogg) + OGG-filer (*.ogg) + DrumSynth-Files (*.ds) - + DrumSynth-filer (*.ds) + FLAC-Files (*.flac) - FLAC-Filer (*.flac) + FLAC-filer (*.flac) + SPEEX-Files (*.spx) - + SPEEX-filer (*.spx) + VOC-Files (*.voc) - VOC-Filer - (*.voc) + VOC-filer (*.voc) + AIFF-Files (*.aif *.aiff) - AIFF-Filer (*.aif *.aiff) + AIFF-filer (*.aif *.aiff) + AU-Files (*.au) - AU-Filer (*.au) + AU-filer (*.au) + RAW-Files (*.raw) - RAW-Filer (*.raw) - - - All Audio-Files (*.wav *.ogg *.ds *.flac *.spx *.voc *.aif *.aiff *.au *.raw) - Alla Ljudfiler (*.wav *.ogg *.ds *.flac *.spx *.voc *.aif *.aiff *.au *.raw) + RAW-filer (*.raw) SampleTCOView + double-click to select sample dubbelklicka för att välja ljudfil + Delete (middle mousebutton) Ta bort (musens mitt-knapp) + Cut Klipp ut + Copy Kopiera + Paste Klistra in + Mute/unmute (<%1> + middle click) - + Tysta/avtysta (<%1> + mittenklick) SampleTrack - Sample track - Ljudfils-spår - - + Volume Volym + Panning Panorering + + + + Sample track + Ljudspår + SampleTrackView + Track volume - + Spårvolym + Channel volume: - + Kanalvolym: + VOL VOL + Panning Panorering + Panning: Panorering: + PAN PAN @@ -5988,494 +7701,658 @@ Orsak: "%2" SetupDialog + Setup LMMS - Inställningar + Ställ in LMMS + + General settings - + Allmänna inställningar + BUFFER SIZE - + BUFFERTSTORLEK + + Reset to default-value Återställ till standardvärde + MISC + Enable tooltips - Aktivera verktygs-tips + Aktivera verktygstips + Show restart warning after changing settings - + Visa omstartsvarning efter att ha ändrat inställningar + Display volume as dBFS Visa volym som dBFS + Compress project files per default Komprimera projektfiler som standard + One instrument track window mode + HQ-mode for output audio-device - + HQ-läge för ljudenhetsutgång + Compact track buttons - + Kompakta spårknappar + Sync VST plugins to host playback + Enable note labels in piano roll Visa noter i pianorulle + Enable waveform display by default - + Aktivera vågformsvisning som standard + Keep effects running even without input - + Håll effekter igång även utan ingång + Create backup file when saving a project Skapa en backup-fil när ett projekt sparas + + Reopen last project on start + Öppna senaste projektet vid start + + + + Use built-in NaN handler + Använd inbyggd NaN-hanterare + + + + PLUGIN EMBEDDING + + + + + No embedding + + + + + Embed using Qt API + + + + + Embed using native Win32 API + + + + + Embed using XEmbed protocol + + + + LANGUAGE SPRÅK + + Paths Sökvägar + + Directories + Kataloger + + + LMMS working directory - LMMS arbetskatalog + LMMS-arbetsmapp - VST-plugin directory - Katalog för VST-plugin + + Themes directory + Mapp för teman + Background artwork - + Bakgrund konstverk + + + + VST-plugin directory + Mapp för VST-insticksmoduler + + + + GIG directory + Mapp för GIG-filer + + SF2 directory + Mapp för SF2-filer + + + + LADSPA plugin directories + Katalog för LADSPA-insticksmoduler + + + STK rawwave directory - Katalog för STK vågformer + Mapp för STK rå-vågform + Default Soundfont File - + Standard Soundfont-fil + + Performance settings - + Prestandainställningar + + + + Auto save + Spara automatiskt + + + + Enable auto-save + Aktivera automatisk sparande + + + + Allow auto-save while playing + Tillåt automatisk sparande när du spelar + UI effects vs. performance - + UI-effekter vs. prestanda + Smooth scroll in Song Editor - Mjuk rullning i Sång-editorn + Mjuk rullning i Låtredigeraren + Show playback cursor in AudioFileProcessor - + Visa uppspelningsmarkören i AudioFileProcessor + + Audio settings - + Ljudinställningar + AUDIO INTERFACE - + LJUDGRÄNSSNITT + + MIDI settings MIDI-inställningar + MIDI INTERFACE - + MIDIGRÄNSSNITT + OK OK + Cancel Avbryt + Restart LMMS Starta om LMMS + Please note that most changes won't take effect until you restart LMMS! Många av ändringarna kommer inte gälla förrän LMMS startats om! + Frames: %1 Latency: %2 ms - + Ramar: %1 +Latens: %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. - + Här kan du ställa in den interna buffertstorleken som används av LMMS. Mindre värden resulterar i en lägre latens men kan också orsaka oanvändbart ljud eller dålig prestanda, särskilt på äldre datorer eller system med en icke-realtidskernel. + Choose LMMS working directory - Välj arbetskatalog för LMMS + Välj LMMS-arbetsmapp + + Choose your GIG directory + Välj din GIG-mapp + + + + Choose your SF2 directory + Välj din SF2-mapp + + + Choose your VST-plugin directory - Välj katalog för dina VST-plugin + Välj mapp för dina VST-insticksmoduler + Choose artwork-theme directory - Välj katalog för gränssnitts-tema + Välj mapp för gränssnitts-tema + Choose LADSPA plugin directory - Välj katalog för LADSPA-plugin + Välj mapp för LADSPA-insticksmoduler + Choose STK rawwave directory - Välj katalog för STK-råfiler + Välj mapp för STK-rawwave + Choose default SoundFont Välj standard-SoundFont + Choose background artwork Välj bakgrunds-grafik - 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 - Kataloger - - - Themes directory - Katalog för teman - - - GIG directory - Katalog för GIG-filer - - - SF2 directory - Katalog för SF2-filer - - - LADSPA plugin directories - Katalog för LADSPA-plugins - - - Auto save - Autospara - - - Choose your GIG directory - Välj din GIG-katalog - - - Choose your SF2 directory - Välj din SF2-katalog - - + minutes minuter + minute minut - Enable auto-save - + + Disabled + Inaktiverad - Allow auto-save while playing - + + Auto-save interval: %1 + Automatiskt sparande intervall: %1 - Disabled + + 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. - Auto-save interval: %1 + + 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. - 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 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 Tempo + Master volume Huvudvolym + Master pitch + + LMMS Error report + LMMS Felrapport + + + Project saved Projekt sparat + The project %1 is now saved. Projektet %1 är nu sparat. + Project NOT saved. Projektet är INTE sparat. + The project %1 was not saved! Projektet %1 sparades inte! + Import file Importera fil + MIDI sequences MIDI-sekvenser + Hydrogen projects + All file types Alla filtyper + + Empty project Tomt projekt + + This project is empty so exporting makes no sense. Please put some items into Song Editor first! - Projektet är tomt, export är meningslöst. Skapa något i Sång-editorn innan du exporterar! + Projektet är tomt, export är meningslöst. Skapa något i Låtredigeraren innan du exporterar! + Select directory for writing exported tracks... - + Välj mapp för att skriva exporterade spår... + + untitled namnlös + + Select file for project-export... - - - - The following errors occured while loading: - + Välj fil för projekt-export... - MIDI File (*.mid) - MIDI-fil (*.mid) + + Save project + Spara projekt - LMMS Error report - LMMS Felrapport + + MIDI File (*.mid) + MIDI-fil (*.mid) - Save project - + + The following errors occured while loading: + Följande fel inträffade under inläsning: SongEditor + Could not open file - kunde inte öppna fil + Kunde inte öppna fil + + + + 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. + Det gick inte att öppna filen %1. Du har förmodligen inga behörigheter att läsa den här filen. + Se till att ha åtminstone läsbehörigheter till filen och försök igen. + Could not write file Kunde inte skriva fil - 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. - + + 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. + Det gick inte att öppna %1 för att skriva. Du har förmodligen inte tillåtelse att skriva till den här filen. Se till att du har skrivåtkomst till filen och försök igen. + Error in file - Fil-fel + Fel i filen + The file %1 seems to contain errors and therefore can't be loaded. - + Filen %1 verkar innehålla fel och kan därför inte läsas in. + + + + Version difference + Versions-skillnad + + + + This %1 was created with LMMS %2. + Detta %1 skapades med LMMS %2. + + + + template + mall + + + + project + projekt + Tempo Tempo + TEMPO/BPM TEMPO/BPM + tempo of song Sångtempo + 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 - + Hög kvalitet läge + + Master volume Huvudvolym + master volume huvudvolym + + Master pitch + master pitch + Value: %1% Värde: %1% + Value: %1 semitones Värde: %1 halvtoner - - 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 - mall - - - project - projekt - - - Version difference - Versions-skillnad - - - This %1 was created with LMMS %2. - - SongEditorWindow + Song-Editor - Sång-Editor + Låtredigerare + Play song (Space) Spela sång (Mellanslag) + Record samples from Audio-device - + Spela in samplingar från ljudenheten + Record samples from Audio-device while playing song or BB track - + Spela in samplingar från ljudenheten medan du spelar låten eller BB-spåret + Stop song (Space) Sluta spela sång (Mellanslag) - Add beat/bassline - Lägg till trummor/bas + + 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. + Klicka här, om du vill spela hela din låt. Uppspelningen startas vid sångplaceringsmarkören (grön). Du kan också flytta den medan du spelar. - Add sample-track - Lägg till ljudfils-spår + + Click here, if you want to stop playing of your song. The song-position-marker will be set to the start of your song. + - Add automation-track - Lägg till automationsspår + + Track actions + Spåråtgärder - Draw mode - Ritläge + + Add beat/bassline + Lägg till takt/basgång - Edit mode (select and move) - Redigeringsläge (välj och flytta) + + Add sample-track + Lägg till ljudspår - 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. - + + Add automation-track + Lägg till automationsspår - Click here, if you want to stop playing of your song. The song-position-marker will be set to the start of your song. - + + Edit actions + Redigera åtgärder - Track actions - + + Draw mode + Ritläge - Edit actions - Redigera åtgärder + + Edit mode (select and move) + Redigeringsläge (välj och flytta) + Timeline controls Tidslinjekontroller + Zoom controls Zoomningskontroller @@ -6483,10 +8360,12 @@ Remember to also save your project manually. You can choose to disable saving wh SpectrumAnalyzerControlDialog + Linear spectrum - + Linjärt spektrum + Linear Y axis Linjär Y-axel @@ -6494,29 +8373,35 @@ Remember to also save your project manually. You can choose to disable saving wh SpectrumAnalyzerControls + Linear spectrum - + Linjärt spektrum + Linear Y axis Linjär Y-axel + Channel mode - + Kanalläge SubWindow + Close Stäng + Maximize Maximera + Restore Återställ @@ -6524,6 +8409,8 @@ Remember to also save your project manually. You can choose to disable saving wh TabWidget + + Settings for %1 Inställningar för %1 @@ -6531,105 +8418,131 @@ Remember to also save your project manually. You can choose to disable saving wh TempoSyncKnob + + Tempo Sync - + Temposynkronisering + No Sync - + Ingen synkronisering + Eight beats Åtta takter + Whole note Hel-not + Half note Halvnot + Quarter note - + Fjärdedelsnot + 8th note - + 8:e noten + 16th note - + 16:e noten + 32nd note - + 32:e noten + Custom... - + Anpassad... + Custom - + Anpassad + Synced to Eight Beats - + Synkroniserad till Åtta Takter + Synced to Whole Note - + Synkroniserad till helnoten + Synced to Half Note - + Synkroniserad till halvnoten + Synced to Quarter Note - + Synkroniserad till fjärdedelsnoten + Synced to 8th Note - + Synkroniserad till 8:e noten + Synced to 16th Note - + Synkroniserad till 16:e noten + Synced to 32nd Note - + Synkroniserad till 32:e noten TimeDisplayWidget + click to change time units Klicka för att ändra tidsenheter + MIN MIN + SEC SEK + MSEC MSEK + BAR + BEAT TAKT + TICK TICK @@ -6637,45 +8550,56 @@ Remember to also save your project manually. You can choose to disable saving wh TimeLineWidget + Enable/disable auto-scrolling - + Aktivera/inaktivera automatisk rullning + Enable/disable loop-points - + Aktivera/inaktivera loop-punkter + After stopping go back to begin - + Efter att ha stoppat gå tillbaka till början + After stopping go back to position at which playing was started - + Efter att ha stoppat gå tillbaka till position där spelningen startades + After stopping keep position - + Efter stopp behåll positionen + + Hint Ledtråd + Press <%1> to disable magnetic loop points. - + Tryck på <%1> för att inaktivera magnetiska slingpunkter. + Hold <Shift> to move the begin loop point; Press <%1> to disable magnetic loop points. - + Håll nedtryckt för att flytta startlooppunkten; tryck på <%1> för att inaktivera magnetiska slingpunkter. Track + Mute Tysta + Solo Solo @@ -6683,38 +8607,63 @@ Remember to also save your project manually. You can choose to disable saving wh TrackContainer + Couldn't import file Kunde inte importera filen + Couldn't find a filter for importing file %1. You should convert this file into a format supported by LMMS using another software. Kunde inte hitta ett filter för att importera filen %1. -Du bör konvertera filen till ett format som stöd av LMMS genom att använda ett annat program. +Du bör konvertera filen till ett format som stöds av LMMS genom att använda ett annat program. + Couldn't open file Kunde inte öppna filen + 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! Kunde inte öppna filen %1 för läsning. -Se till att du har läsrättigheter för filen och katalogen som innehåller filen och försök igen! +Se till att du har läsrättigheter för filen och mappen som innehåller filen och försök igen! + Loading project... Läser in projekt... + + Cancel Avbryt + + Please wait... Vänligen vänta... + + Loading cancelled + Inläsningen avbruten + + + + Project loading was cancelled. + Projektinläsningen avbröts. + + + + Loading Track %1 (%2/Total %3) + Läser in spår %1 (%2/Totalt %3) + + + Importing MIDI-file... Importerar MIDI-fil... @@ -6722,6 +8671,7 @@ Se till att du har läsrättigheter för filen och katalogen som innehåller fil TrackContentObject + Mute Tysta @@ -6729,346 +8679,435 @@ Se till att du har läsrättigheter för filen och katalogen som innehåller fil TrackContentObjectView + Current position Aktuell position + + Hint Ledtråd + Press <%1> and drag to make a copy. Håll nere <%1> och dra för att kopiera. + Current length Aktuell längd + Press <%1> for free resizing. + + %1:%2 (%3:%4 to %5:%6) %1:%2 (%3:%4 till %5:%6) + Delete (middle mousebutton) Ta bort (musens mitt-knapp) + Cut Klipp ut + Copy Kopiera + Paste Klistra in + Mute/unmute (<%1> + middle click) - + Tysta/avtysta (<%1> + mittenklick) TrackOperationsWidget + Press <%1> while clicking on move-grip to begin a new drag'n'drop-action. + Actions for this track - + Åtgärder för detta spår + Mute Tysta + + Solo Solo + Mute this track Tysta detta spår + Clone this track Klona detta spår + Remove this track Ta bort detta spår + Clear this track Rensa detta spår + FX %1: %2 FX %1: %2 - Turn all recording on - + + Assign to new FX Channel + Koppla till ny FX-kanal - Turn all recording off - + + Turn all recording on + Slå på all inspelning - Assign to new FX Channel - Koppla till ny FX-kanal + + Turn all recording off + Slå av all inspelning 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 - + Synkronisera oscillatorn 1 med oscillatorn 2 + Use frequency modulation for modulating oscillator 1 with oscillator 2 - + Använd frekvensmodulering för modulerande oscillator 1 med oscillator 2 + Use phase modulation for modulating oscillator 2 with oscillator 3 + Use amplitude modulation for modulating oscillator 2 with oscillator 3 - + Använd amplitudmodulering för modulerande oscillator 2 med oscillator 3 + Mix output of oscillator 2 & 3 + Synchronize oscillator 2 with oscillator 3 - + Synkronisera oscillatorn 2 med oscillatorn 3 + Use frequency modulation for modulating oscillator 2 with oscillator 3 + Osc %1 volume: - + Osc %1 volym: + 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. - + Med denna knapp kan du ställa in volymen av oscillator %1. När du ställer in ett värde på 0 stängs oscillatorn av. Annars kan du höra oscillatorn så hög som du ställer in den här. + Osc %1 panning: - + Osc %1 panorering: + 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 halvtoner + 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 grader + 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. - + Använd en exponentiell våg för aktuell oscillator. + Use white-noise for current oscillator. + Use a user-defined waveform for current oscillator. - + Använd en användardefinierad vågform för nuvarande oscillator. VersionedSaveDialog + Increment version number + Decrement version number + already exists. Do you want to replace it? - + finns redan. Vill du ersätta den? 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 - Visa/dölj användargränssnitt - - - Click here to show or hide the graphical user interface (GUI) of your VST-plugin. - - - - Turn off all notes - - - - Open VST-plugin - Öppna VST-plugin - - - DLL-files (*.dll) - DLL-filer (*.dll) - - - EXE-files (*.exe) - EXE-filer (*.exe) - - - No VST-plugin loaded - - - + Control VST-plugin from LMMS host - Kontrollera VST-plugin från LMMS-värd + Kontrollera VST-insticksmodulen från LMMS-värd + Click here, if you want to control VST-plugin from host. - + Klicka här om du vill styra VST-insticksmodulen från värd. + Open VST-plugin preset + Click here, if you want to open another *.fxp, *.fxb VST-plugin preset. - + Klicka här om du vill öppna en annan *.fxp, *.FXB VST-insticksmodulsförinställning. + Previous (-) Tidigare (-) + + Click here, if you want to switch to another VST-plugin preset program. - + Klicka här om du vill byta till ett annat VST-insticksmodulsförinställningsprogram. + Save preset Spara förinställning + Click here, if you want to save current VST-plugin preset program. + Next (+) Nästa (+) + Click here to select presets that are currently loaded in VST. + + Show/hide GUI + Visa/dölj användargränssnitt + + + + Click here to show or hide the graphical user interface (GUI) of your VST-plugin. + + + + + Turn off all notes + Stäng av alla noter + + + + Open VST-plugin + Öppna VST-insticksmodul + + + + DLL-files (*.dll) + DLL-filer (*.dll) + + + + EXE-files (*.exe) + EXE-filer (*.exe) + + + + No VST-plugin loaded + Ingen VST-insticksmodul inläst + + + Preset Förinställning + by av + - VST plugin control @@ -7076,10 +9115,12 @@ Se till att du har läsrättigheter för filen och katalogen som innehåller fil VisualizationWidget + click to enable/disable visualization of master-output + Click to enable Klicka för att aktivera @@ -7087,54 +9128,69 @@ Se till att du har läsrättigheter för filen och katalogen som innehåller fil VstEffectControlDialog + Show/hide Visa/dölj + Control VST-plugin from LMMS host Kontrollera VST-plugin från LMMS-värd + Click here, if you want to control VST-plugin from host. - + Klicka här om du vill styra VST-insticksmodulen från värd. + Open VST-plugin preset + Click here, if you want to open another *.fxp, *.fxb VST-plugin preset. - + Klicka här om du vill öppna en annan *.fxp, *.fxb VST-insticksmodulsförinställning. + Previous (-) Tidigare (-) + + Click here, if you want to switch to another VST-plugin preset program. - + Klicka här om du vill byta till ett annat VST-insticksmodulsförinställningsprogram. + Next (+) Nästa (+) + Click here to select presets that are currently loaded in VST. + Save preset Spara förinställning + Click here, if you want to save current VST-plugin preset program. + + Effect by: Effekt skapad av: + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /> @@ -7142,387 +9198,509 @@ Se till att du har läsrättigheter för filen och katalogen som innehåller fil VstPlugin - Loading plugin - Laddar plugin + + + The VST plugin %1 could not be loaded. + VST-insticksmodulen %1 kunde inte läsas in. + Open Preset Öppna Förinställning + + Vst Plugin Preset (*.fxp *.fxb) + : default : standard + " " + ' ' + Save Preset Spara Förinställning + .fxp .fxp + .FXP .FXP + .FXB .FXB + .fxb .fxb - Please wait while loading VST plugin... - Vänta medan VST-plugin läses in... + + Loading plugin + Läser in insticksmodulen - The VST plugin %1 could not be loaded. - + + Please wait while loading VST plugin... + Vänligen vänta medan VST-instickmodulen läses in... WatsynInstrument + Volume A1 Volym A1 + Volume A2 Volym A2 + Volume B1 Volym B2 + Volume B2 Volym B2 + Panning A1 - + Panorering A1 + Panning A2 - + Panorering A2 + Panning B1 - + Panorering B1 + Panning B2 - + Panorering 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 - + A2-A1 modulering + B2-B1 modulation + B2-B1 modulering + + + + Selected graph + Vald graf + + + + WatsynView + + + + + + Volume + Volym + + + + + + + Panning + Panorering + + + + + + + Freq. multiplier + + + + + + + + Left detune + + + + + + + + + + + + cents + + + + + + + + Right detune + + + + + A-B Mix + + + + + Mix envelope amount + + + + + Mix envelope attack + + + + + Mix envelope hold + + + + + Mix envelope decay - Selected graph + + Crosstalk - - - WatsynView + Select oscillator A1 - + Välj oscillator A1 + Select oscillator A2 - + Välj oscillator A2 + Select oscillator B1 - + Välj oscillator B1 + Select oscillator B2 - + Välj 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 - + Blanda utgång B2 till 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. - + Rita din egen vågform här genom att dra musen på den här grafen. + Load waveform Ladda vågform + Click to load a waveform from a sample file Klicka för att ladda in en vågform från en ljudfil + Phase left - + Fas vänster + Click to shift phase by -15 degrees - + Klicka för att flytta fas med -15 grader + Phase right - + Fas höger + Click to shift phase by +15 degrees + Normalize Normalisera + Click to normalize Klicka för normalisering + Invert Invertera + Click to invert Klicka för invertering + Smooth Utjämna + Click to smooth Klicka för utjämning + Sine wave Sinusvåg + Click for sine wave Klicka för sinusvåg + + Triangle wave Triangelvåg + Click for triangle wave Klicka för triangelvåg + Click for saw wave - Klicka för sågtandvåg + Klicka för sågtandsvåg + Square wave Fyrkantvåg + Click for square wave - - - - Volume - Volym - - - Panning - Panorering - - - Freq. multiplier - - - - Left detune - - - - cents - - - - Right detune - - - - A-B Mix - - - - Mix envelope amount - - - - Mix envelope attack - - - - Mix envelope hold - - - - Mix envelope decay - - - - Crosstalk - + Klicka för fyrkantvåg ZynAddSubFxInstrument + Portamento + Filter Frequency + Filter Resonance + Bandwidth Bandbredd + FM Gain FM-Förstärkning + Resonance Center Frequency + Resonance Bandwidth - + Resonans Bandbredd + Forward MIDI Control Change Events @@ -7530,121 +9708,150 @@ Se till att du har läsrättigheter för filen och katalogen som innehåller fil ZynAddSubFxView - Show GUI - Visa användargränssnitt - - - Click here to show or hide the graphical user interface (GUI) of ZynAddSubFX. - Klicka här för att visa eller dölja användargränssnittet för ZynAddSubFX. - - + Portamento: Portamento: + PORT - + PORT + Filter Frequency: Filter-frekvens: + FREQ FREQ + Filter Resonance: Filter-resonans: + RES + Bandwidth: Bandbredd: + BW + FM Gain: FM-Förstärkning: + FM GAIN + Resonance center frequency: - + Resonanscenterfrekvens: + RES CF + Resonance bandwidth: - + Resonans bandbredd: + RES BW + Forward MIDI Control Changes + + + Show GUI + Visa användargränssnitt + + + + Click here to show or hide the graphical user interface (GUI) of ZynAddSubFX. + Klicka här för att visa eller dölja användargränssnittet för ZynAddSubFX. + audioFileProcessor + Amplify Amplifiera + Start of sample Start på ljudfil + End of sample Slut på ljudfil - Reverse sample - Spela baklänges + + Loopback point + Loopback punkt - Stutter - + + Reverse sample + Spela baklänges - Loopback point - + + Loop mode + Slinga-läge - Loop mode - + + Stutter + Stamning + Interpolation mode - + Interpoleringsläge + None - + Ingen + Linear Linjär + Sinc + Sample not found: %1 Ljudfil hittades inte: %1 @@ -7652,6 +9859,7 @@ Se till att du har läsrättigheter för filen och katalogen som innehåller fil bitInvader + Samplelength Ljudfilslängd @@ -7659,165 +9867,205 @@ Se till att du har läsrättigheter för filen och katalogen som innehåller fil bitInvaderView + Sample Length Ljudfilens Längd + + Draw your own waveform here by dragging your mouse on this graph. + Rita din egen vågform här genom att dra musen på den här grafen. + + + Sine wave Sinusvåg + + Click for a sine-wave. + Klicka för sinusvåg + + + Triangle wave Triangelvåg + + Click here for a triangle-wave. + Klicka här för triangelvåg. + + + Saw wave Sågtandsvåg + + Click here for a saw-wave. + Klicka här för sågtandsvåg + + + Square wave Fyrkantvåg + + Click here for a square-wave. + Klicka här för fyrkantvåg. + + + White noise wave Vitt brus-våg + + Click here for white-noise. + Klicka här för vitt brus. + + + User defined wave Användardefinierad vågform + + Click here for a user-defined shape. + Klicka här för en användardefinierad kurva. + + + Smooth Utjämna + Click here to smooth waveform. - + Klicka här för att jämna vågform. + Interpolation Interpolering + Normalize Normalisera - - Draw your own waveform here by dragging your mouse on this graph. - - - - Click for a sine-wave. - Klicka för sinusvåg - - - Click here for a triangle-wave. - Klicka här för triangelvåg. - - - Click here for a saw-wave. - Klicka här för sågtandvåg - - - Click here for a square-wave. - Klicka här för fyrkantvåg - - - Click here for white-noise. - Klicka här för vitt brus. - - - Click here for a user-defined shape. - Klicka här för en användardefinierad kurva. - dynProcControlDialog + INPUT INGÅNG + Input gain: Ingångsförstärkning: + OUTPUT UTGÅNG + Output gain: Utgångsförstärkning: + ATTACK - + ATTACK + Peak attack time: + RELEASE + Peak release time: + Reset waveform Återställ vågform + Click here to reset the wavegraph back to default + Smooth waveform Mjuk vågform + Click here to apply smoothing to wavegraph + Increase wavegraph amplitude by 1dB + Click here to increase wavegraph amplitude by 1dB - + Klicka här för att öka våggrafamplituden med 1 dB + Decrease wavegraph amplitude by 1dB - + Minska våggrafamplituden med 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 @@ -7825,22 +10073,27 @@ Se till att du har läsrättigheter för filen och katalogen som innehåller fil dynProcControls + Input gain Ingångsförstärkning + Output gain Utgångsförstärkning + Attack time - + Attacktid + Release time + Stereo mode Stereo-läge @@ -7848,10 +10101,12 @@ Se till att du har läsrättigheter för filen och katalogen som innehåller fil fxLineLcdSpinBox + Assign to: Tilldela till: + New FX Channel Ny FX-Kanal @@ -7859,6 +10114,7 @@ Se till att du har läsrättigheter för filen och katalogen som innehåller fil graphModel + Graph Graf @@ -7866,93 +10122,115 @@ Se till att du har läsrättigheter för filen och katalogen som innehåller fil kickerInstrument + Start frequency Startfrekvens + End frequency Slutfrekvens - Gain - Förstärkning - - + Length Längd + Distortion Start + Distortion End + + Gain + Förstärkning + + + Envelope Slope + Noise Brus + Click Klick + Frequency Slope + Start from note - + Starta från not + End to note - + Sluta på not kickerInstrumentView + Start frequency: - + Startfrekvens: + End frequency: + Slutfrekvens: + + + + Frequency Slope: + Gain: Förstärkning: - Frequency Slope: - - - + Envelope Length: + Envelope Slope: + Click: Klick: + Noise: Brus: + Distortion Start: + Distortion End: @@ -7960,26 +10238,37 @@ Se till att du har läsrättigheter för filen och katalogen som innehåller fil ladspaBrowserView + + Available Effects - + Tillgängliga effekter + + Unavailable Effects - + Otillgängliga effekter + + Instruments Instrument + + Analysis Tools Analysverktyg + + Don't know Vet inte + 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. @@ -7996,6 +10285,7 @@ Double clicking any of the plugins will bring up information on the ports. + Type: Typ: @@ -8003,10 +10293,12 @@ Double clicking any of the plugins will bring up information on the ports. ladspaDescription + Plugins - Plugin + Insticksmoduler + Description Beskrivning @@ -8014,66 +10306,83 @@ Double clicking any of the plugins will bring up information on the ports. ladspaPortDialog + Ports Portar + Name Namn + Rate Värdera + Direction Riktning + Type Typ + Min < Default < Max Min < Standard < Max + Logarithmic Logaritmisk + SR Dependent + Audio Ljud + Control Kontroll + Input Ingång + Output Utgång + Toggled - + Växlad + Integer Heltal + Float Flyttal + + Yes Ja @@ -8081,46 +10390,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 - + Förvrängning + Waveform Vågform + Slide Decay + Slide + Accent + Dead + 24dB/oct Filter @@ -8128,122 +10448,153 @@ Double clicking any of the plugins will bring up information on the ports. lb302SynthView + Cutoff Freq: + Resonance: Resonans: + Env Mod: + Decay: Decay: + 303-es-que, 24dB/octave, 3 pole filter + Slide Decay: + DIST: + Saw wave Sågtandsvåg + Click here for a saw-wave. - Klicka här för sågtandvåg + Klicka här för sågtandsvåg + Triangle wave Triangelvåg + Click here for a triangle-wave. Klicka här för triangelvåg. + Square wave Fyrkantvåg + Click here for a square-wave. Klicka här för fyrkantvåg + Rounded square wave + Click here for a square-wave with a rounded end. + Moog wave + Click here for a moog-like wave. + Sine wave Sinusvåg + Click for a sine-wave. Klicka för sinusvåg + + White noise wave Vitt brus-våg + Click here for an exponential wave. + Click here for white-noise. Klicka här för vitt brus. + 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. @@ -8251,268 +10602,334 @@ Double clicking any of the plugins will bring up information on the ports. malletsInstrument + Hardness - + Hårdhet + Position Position + Vibrato Gain + Vibrato Freq + Stick Mix + Modulator - + Modulator + Crossfade - + Överbländning + LFO Speed - + LFO hastighet + LFO Depth + ADSR - + ADSR + Pressure - + Tryck + Motion - + Rörelse + Speed Hastighet + Bowed + Spread + Marimba + Vibraphone + Agogo + Wood1 + Reso + Wood2 + Beats - + Takter + Two Fixed + Clump + Tubular Bells + Uniform Bar + Tuned Bar + Glass + Tibetan Bowl - + Tibetansk skål malletsInstrumentView + Instrument - + Instrument + Spread + Spread: + + Missing files + Saknade filer + + + + Your Stk-installation seems to be incomplete. Please make sure the full Stk-package is installed! + Din Stk-installation verkar vara ofullständig. Se till att hela Stk-paketet är installerat! + + + Hardness - + Hårdhet + Hardness: - + Hårdhet: + Position Position + Position: Position: + Vib Gain + Vib Gain: + Vib Freq + Vib Freq: + Stick Mix + Stick Mix: + Modulator - + Modulator + Modulator: - + Modulator: + Crossfade - + Överbländning + Crossfade: - + Överbländning: + LFO Speed - + LFO hastighet + LFO Speed: + LFO Depth + LFO Depth: + ADSR - + ADSR + ADSR: - + ADSR: + Pressure - + Tryck + Pressure: - + Tryck: + Speed Hastighet + Speed: Hastighet: - - Missing files - - - - Your Stk-installation seems to be incomplete. Please make sure the full Stk-package is installed! - - manageVSTEffectView + - VST parameter control + VST Sync + Click here if you want to synchronize all parameters with VST plugin. + + Automated Automatiserad + Click here if you want to display automated parameters only. - + Klicka här om du bara vill visa automatiska parametrar. + Close Stäng + Close VST effect knob-controller window. @@ -8520,30 +10937,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 Automatiserad + Click here if you want to display automated parameters only. - + Klicka här om du bara vill visa automatiserade parametrar. + Close Stäng + Close VST plugin knob-controller window. @@ -8551,118 +10977,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 FM + Vibrato Depth + Tremolo Depth @@ -8670,18 +11125,26 @@ Double clicking any of the plugins will bring up information on the ports. opl2instrumentView + + Attack Attack + + Decay Decay + + Release - Släpp + Release + + Frequency multiplier @@ -8689,10 +11152,12 @@ Double clicking any of the plugins will bring up information on the ports. organicInstrument + Distortion - + Förvrängning + Volume Volym @@ -8700,351 +11165,458 @@ Double clicking any of the plugins will bring up information on the ports. organicInstrumentView + Distortion: + Förvrängning: + + + + The distortion knob adds distortion to the output of the instrument. + Volume: Volym: - Randomise - Slumpa - - - Osc %1 waveform: + + The volume knob controls the volume of the output of the instrument. It is cumulative with the instrument window's volume control. - Osc %1 volume: - + + Randomise + Slumpa - Osc %1 panning: - + + The randomize button randomizes all knobs except the harmonics,main volume and distortion knobs. + Knappen randomisera randomiserar alla rattar utom reglagen övertoner, huvudvolym och distorsion. - cents + + + Osc %1 waveform: - The distortion knob adds distortion to the output of the instrument. - + + Osc %1 volume: + Osc %1 volym: - The volume knob controls the volume of the output of the instrument. It is cumulative with the instrument window's volume control. - + + Osc %1 panning: + Osc %1 panorering: - The randomize button randomizes all knobs except the harmonics,main volume and distortion knobs. + + Osc %1 stereo detuning - Osc %1 stereo detuning + + cents + Osc %1 harmonic: - + Osc %1 harmonisk: FreeBoyInstrument + Sweep time + Sweep direction + Sweep RtShift amount + + Wave Pattern Duty + Channel 1 volume - + Kanal 1 volym + + + Volume sweep direction + + + Length of each step in sweep + Channel 2 volume - + Kanal 2 volym + Channel 3 volume - + Kanal 3 volym + Channel 4 volume + Kanal 4 volym + + + + Shift Register width + Right Output level + Left Output level + Channel 1 to SO2 (Left) - + Kanal 1 till SO2 (vänster) + Channel 2 to SO2 (Left) - + Kanal 2 till SO2 (vänster) + Channel 3 to SO2 (Left) - + Kanal 3 till SO2 (vänster) + Channel 4 to SO2 (Left) - + Kanal 4 till SO2 (Vänster) + Channel 1 to SO1 (Right) - + Kanal 1 till SO1 (Höger) + Channel 2 to SO1 (Right) - + Kanal 2 till SO1 (höger) + Channel 3 to SO1 (Right) - + Kanal 3 till SO1 (höger) + Channel 4 to SO1 (Right) - + Kanal 4 till SO1 (höger) + Treble - + Diskant + Bass Bas - - Shift Register width - - FreeBoyInstrumentView + Sweep Time: + Sweep Time + + The amount of increase or decrease in frequency + Mängden ökning eller minskning av frekvensen + + + 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 - + Volym för vågkanalen + Noise Channel Volume: + + Noise Channel Volume + SO1 Volume (Right): - + SO1 volym (höger): + SO1 Volume (Right) + SO2 Volume (Left): - + SO2 volym (vänster): + SO2 Volume (Left) + Treble: - + Diskant: + Treble - + Diskant + Bass: Bas: + Bass Bas + Sweep Direction + + + + + Volume Sweep Direction + Shift Register Width + Channel1 to SO1 (Right) + Channel2 to SO1 (Right) - + Channel2 till SO1 (höger) + Channel3 to SO1 (Right) + Channel4 to SO1 (Right) - + Channel4 till SO1 (höger) + Channel1 to SO2 (Left) + Channel2 to SO2 (Left) - + Channel2 till SO2 (Vänster) + Channel3 to SO2 (Left) - + Channel3 till SO2 (vänster) + Channel4 to SO2 (Left) + Wave Pattern - - - - The amount of increase or decrease in frequency - - - - The rate at which increase or decrease in frequency occurs - - - - 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 - - - - The delay between step change - + Vågmönster + Draw the wave here - + Rita vågen här patchesDialog + Qsynth: Channel Preset - + Qsynth: Kanal förinställd + Bank selector - + Bankväljare + Bank Bank + Program selector - + Programväljare + Patch + Name Namn + OK OK + Cancel Avbryt @@ -9052,238 +11624,301 @@ Double clicking any of the plugins will bring up information on the ports. pluginBrowser + no description ingen beskrivning - Incomplete monophonic imitation tb303 - + + A native amplifier plugin + En inbyggd förstärkare-insticksmodul - Plugin for freely manipulating stereo output - + + Simple sampler with various settings for using samples (e.g. drums) in an instrument-track + Enkel sampler med olika inställningar för att använda samplingar (t. ex. trummor) i ett instrumentspår - Plugin for controlling knobs with sound peaks - + + Boost your bass the fast and simple way + Öka din bas på snabbt och enkelt sätt - Plugin for enhancing stereo separation of a stereo input file + + Customizable wavetable synthesizer - List installed LADSPA plugins + + An oversampling bitcrusher - GUS-compatible patch instrument + + Carla Patchbay Instrument - Additive Synthesizer for organ-like sounds + + Carla Rack Instrument - Tuneful things to bang on + + A 4-band Crossover Equalizer - VST-host for using VST(i)-plugins within LMMS - + + A native delay plugin + En inbyggd fördröjning-insticksmodul - Vibrating string modeler - + + A Dual filter plugin + En Dual filter-insticksmodul - plugin for using arbitrary LADSPA-effects inside LMMS. - + + plugin for processing dynamics in a flexible way + insticksmodul för dynamisk bearbetning på ett flexibelt sätt - Filter for importing MIDI-files into LMMS - Filter för att importera MIDI-filer till LMMS + + A native eq plugin + En inbyggd eq-insticksmodul - Emulation of the MOS6581 and MOS8580 SID. -This chip was used in the Commodore 64 computer. + + A native flanger plugin - Player for SoundFont files - Spelare för SoundFont-filer + + Player for GIG files + Spelare för GIG-filer - Emulation of GameBoy (TM) APU - Emulering av GameBoy (TM) APU + + Filter for importing Hydrogen files into LMMS + Filter för att importera Hydrogen-filer till LMMS - Customizable wavetable synthesizer - + + Versatile drum synthesizer + Mångsidig trum-synth - Embedded ZynAddSubFX + + List installed LADSPA plugins + Lista installerade LADSPA-insticksmoduler + + + + plugin for using arbitrary LADSPA-effects inside LMMS. - 2-operator FM Synth + + Incomplete monophonic imitation tb303 - Filter for importing Hydrogen files into LMMS - Filter för att importera Hydrogen-filer till LMMS + + Filter for exporting MIDI-files from LMMS + Filter för att exportera MIDI-filer från LMMS - LMMS port of sfxr - + + Filter for importing MIDI-files into LMMS + Filter för att importera MIDI-filer till LMMS + Monstrous 3-oscillator synth with modulation matrix - Three powerful oscillators you can modulate in several ways + + A multitap echo delay plugin - A native amplifier plugin - + + A NES-like synthesizer + En NES-lik synthesizer - Carla Rack Instrument + + 2-operator FM Synth - 4-oscillator modulatable wavetable synth + + Additive Synthesizer for organ-like sounds - plugin for waveshaping - + + Emulation of GameBoy (TM) APU + Emulering av GameBoy (TM) APU - Boost your bass the fast and simple way + + GUS-compatible patch instrument - Versatile drum synthesizer - Mångsidig trum-synth + + Plugin for controlling knobs with sound peaks + - Simple sampler with various settings for using samples (e.g. drums) in an instrument-track + + Reverb algorithm by Sean Costello - plugin for processing dynamics in a flexible way - + + Player for SoundFont files + Spelare för SoundFont-filer - Carla Patchbay Instrument + + LMMS port of sfxr - plugin for using arbitrary VST effects inside LMMS. + + Emulation of the MOS6581 and MOS8580 SID. +This chip was used in the Commodore 64 computer. + Graphical spectrum analyzer plugin - + Grafiska spektrumanalysator insticksmodul - A NES-like synthesizer - En NES-lik synthesizer + + Plugin for enhancing stereo separation of a stereo input file + Insticksmodul för att förbättra stereoseparation av en stereoingångsfil - A native delay plugin + + Plugin for freely manipulating stereo output - Player for GIG files - Spelare för GIG-filer + + 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 + insticksmodul för vågformande - Filter for exporting MIDI-files from LMMS + + Embedded ZynAddSubFX sf2Instrument + Bank Bank + Patch + Gain Förstärkning + Reverb - + Reverb + Reverb Roomsize + Reverb Damping + Reverb Width + Reverb Level + Chorus - + Chorus + Chorus Lines + Chorus Level + Chorus Speed + Chorus Depth + A soundfont %1 could not be loaded. SoundFont %1 kunde inte läsas in. @@ -9291,74 +11926,92 @@ This chip was used in the Commodore 64 computer. sf2InstrumentView + Open other SoundFont file Öppna en annan SoundFont-fil + Click here to open another SF2 file Klicka här för att öppna en annan SF2-fil + Choose the patch + Gain Förstärkning + Apply reverb (if supported) - + Applicera reverb (om det stöds) + This button enables the reverb effect. This is useful for cool effects, but only works on files that support it. - + Denna knapp aktiverar reverb-effekten. Detta är användbart för häftiga effekter, men fungerar bara på filer som stöder den. + Reverb Roomsize: + Reverb Damping: + Reverb Width: + Reverb Level: + Apply chorus (if supported) - + Applicera chorus (om det stöds) + This button enables the chorus effect. This is useful for cool echo effects, but only works on files that support it. - + Denna knapp aktiverar köreffekten. Detta är användbart för coola eko effekter, men fungerar bara på filer som stöder den. + Chorus Lines: + Chorus Level: + Chorus Speed: + Chorus Depth: + Open SoundFont file - + Öppna SoundFont-fil + SoundFont2 Files (*.sf2) SoundFont2-filer (*.sf2) @@ -9366,6 +12019,7 @@ This chip was used in the Commodore 64 computer. sfxrInstrument + Wave Form Vågform @@ -9373,26 +12027,32 @@ This chip was used in the Commodore 64 computer. sidInstrument + Cutoff + Resonance Resonans + Filter type Filtertyp + Voice 3 off - + Röst 3 av + Volume Volym + Chip model @@ -9400,134 +12060,172 @@ This chip was used in the Commodore 64 computer. sidInstrumentView + Volume: Volym: + Resonance: Resonans: + + Cutoff frequency: + High-Pass filter Högpassfilter + Band-Pass filter Bandpassfilter + Low-Pass filter Lågpassfilter + Voice3 Off - + Voice3 Av + MOS6581 SID MOS6581 SID + MOS8580 SID MOS8580 SID + + Attack: Attack: + Attack rate determines how rapidly the output of Voice %1 rises from zero to peak amplitude. - + Attack-hastigheten bestämmer hur snabbt utgången för Voice %1 stiger från noll till toppamplitud. + + Decay: Decay: + Decay rate determines how rapidly the output falls from the peak amplitude to the selected Sustain level. + Sustain: Sustain: + Output of Voice %1 will remain at the selected Sustain amplitude as long as the note is held. + + Release: Release: + The output of of Voice %1 will fall from Sustain amplitude to zero amplitude at the selected Release rate. + + Pulse Width: Pulsbredd: + 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: Grov: + The Coarse detuning allows to detune Voice %1 one octave up or down. - + Den grova detuningen gör det möjligt att detunera Voice %1 en oktav upp eller ner. + Pulse Wave Pulsvåg + Triangle Wave Triangelvåg + SawTooth Sågtand + Noise Brus + Sync - + Synkronisera + 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 Filtrerad + 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 Testa + Test, when set, resets and locks Oscillator %1 at zero until Test is turned off. @@ -9535,10 +12233,12 @@ This chip was used in the Commodore 64 computer. stereoEnhancerControlDialog + WIDE + Width: Bredd: @@ -9546,6 +12246,7 @@ This chip was used in the Commodore 64 computer. stereoEnhancerControls + Width Bredd @@ -9553,91 +12254,111 @@ This chip was used in the Commodore 64 computer. stereoMatrixControlDialog + Left to Left Vol: Vänster till Vänster Vol.: + Left to Right Vol: Vänster till Höger Vol.: + Right to Left Vol: Höger till Vänster Vol.: + Right to Right Vol: - + Höger till Höger vol.: stereoMatrixControls + Left to Left - Vänster till vänster + Vänster till Vänster + Left to Right - Vänster till höger + Vänster till Höger + Right to Left - Höger till vänster + Höger till Vänster + Right to Right - Höger till höger + Höger till Höger vestigeInstrument + Loading plugin - Laddar plugin + Läser in plugin + Please wait while loading VST-plugin... - Vänta medans VST-plugin läses in... + Vänta medans VST-insticksmodulen läses in... vibed + String %1 volume - + Sträng %1 volym + String %1 stiffness - + Sträng %1 styvhet + Pick %1 position - + Välj %1 position + Pickup %1 position + Pan %1 + Detune %1 + Fuzziness %1 - + Oskärpa %1  + Length %1 Längd %1 + Impulse %1 Impuls %1 + Octave %1 Oktav %1 @@ -9645,90 +12366,112 @@ This chip was used in the Commodore 64 computer. vibedView + Volume: Volym: + The 'V' knob sets the volume of the selected string. + String stiffness: - + Strängstyvhet: + 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. - + "P" - ratten ställer in den position där den valda strängen kommer att "plockas". Ju lägre inställningen desto närmare plockningen är till bridgen. + 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: - + Oskärpa: + 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: Längd: + 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 Oktav + 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. @@ -9739,6 +12482,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. @@ -9753,188 +12497,233 @@ The LED in the lower right corner of the waveform editor determines whether the + Enable waveform - + Aktivera vågform + Click here to enable/disable waveform. - + Klicka här för att aktivera/inaktivera vågform. + String Sträng + 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 Sinusvåg + + Use a sine-wave for current oscillator. + + + + Triangle wave Triangelvåg + + Use a triangle-wave for current oscillator. + + + + Saw wave Sågtandsvåg + + Use a saw-wave for current oscillator. + + + + Square wave Fyrkantvåg + + Use a square-wave for current oscillator. + + + + White noise wave Vitt brus-våg + + Use white-noise for current oscillator. + + + + User defined wave Användardefinierad vågform + + Use a user-defined waveform for current oscillator. + Använd en användardefinierad vågform för aktuell oscillator. + + + Smooth Utjämna + Click here to smooth waveform. - + Klicka här för att jämna vågform. + Normalize Normalisera + Click here to normalize waveform. - - - - 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 white-noise for current oscillator. - - - - Use a user-defined waveform for current oscillator. - + Klicka här för att normalisera vågformen. voiceObject + Voice %1 pulse width - + Röst %1 pulsbredd + Voice %1 attack - + Röst %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 - + Röst %1 filtrerad + Voice %1 test - + Röst %1 test waveShaperControlDialog + INPUT INGÅNG + Input gain: Ingångsförstärkning: + OUTPUT UTGÅNG + Output gain: Utgångsförstärkning: + Reset waveform Återställ vågform + Click here to reset the wavegraph back to default + Smooth waveform Mjuk vågform + Click here to apply smoothing to wavegraph + Increase graph amplitude by 1dB - + Öka grafamplituden med 1dB + Click here to increase wavegraph amplitude by 1dB - + Klicka här för att öka våggrafamplituden med 1dB + Decrease graph amplitude by 1dB - + Minska grafamplituden med 1dB + Click here to decrease wavegraph amplitude by 1dB + Clip input + Clip input signal to 0dB @@ -9942,12 +12731,14 @@ The LED in the lower right corner of the waveform editor determines whether the waveShaperControls + Input gain Ingångsförstärkning + Output gain Utgångsförstärkning - + \ No newline at end of file diff --git a/data/locale/uk.ts b/data/locale/uk.ts index d5236a7aa74..e9aefd4c149 100644 --- a/data/locale/uk.ts +++ b/data/locale/uk.ts @@ -1,64 +1,6 @@ - - - AboutDialog - - About LMMS - Про програму LMMS - - - Version %1 (%2/%3, Qt %4, %5) - Версія %1 (%2/%3, Qt %4, %5) - - - About - Про програму - - - LMMS - easy music production for everyone - LMMS - легке створення музики для всіх - - - Authors - Автори - - - 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! - Переклад виконали: -Михайло Рожко <mihail.rozshko@gmail.com> - -Якщо Ви зацікавлені в перекладі LMMS на іншу мову або хочете поліпшити існуючий переклад, ми будемо раді будь-якій допомогі! Просто зв'яжіться з розробниками! - - - License - Ліцензія - - - LMMS - LMMS - - - Involved - Учасники - - - Contributors ordered by number of commits: - Розробники відсортовані за кількістю коммітов: - - - Copyright © %1 - Авторське право © %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 @@ -113,94 +55,47 @@ If you're interested in translating LMMS in another language or want to imp Праве підсилення - - AudioAlsaSetupWidget - - DEVICE - ПРИСТРІЙ - - - CHANNELS - КАНАЛИ - - 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!) - Ця ручка задає коефіцієнт підсилення. При значенні 100% вихідний звук не змінюється, в іншому випадку - він буде ослаблений або підсилений. (Зверніть увагу, що вихідний запис при цьому залишиться недоторканим.) - - - 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) - Включення цієї опції продовжить відтворення запису за різними нотами - якщо змінити прискорення або тривалість ноти зупиниться до кінця запису, то з наступної ноти запис продовжиться там, де зупинився, щоб скинути відтворення на початок запису, вставте ноту внизу у клавіш (<20 Гц) - 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. - Ця кнопка включає пінг-понг петлю. Запис повторюється назад і вперед між кінцевою точкою і точкою повтору. + Loopback point: + Точка повернення з повтору: - With this knob you can set the point where AudioFileProcessor should begin playing your sample. - Цим регулятором можна встановити мітку з якої АудіоФайлПроцессор повинен почати відтворення запису. + Open sample + - With this knob you can set the point where AudioFileProcessor should stop playing your sample. - Цей регулятор встановлює мітку в якій АудіоФайлПроцессор повинен перестати програвати запис. + Enable ping-pong loop + - Loopback point: - Точка повернення з повтору: + Start point: + - With this knob you can set the point where the loop starts. - Цей регулятор ставить мітку початку повторення. + End point: + @@ -211,9154 +106,4170 @@ If you're interested in translating LMMS in another language or want to imp - AudioJack + BassBoosterControlDialog - JACK client restarted - JACK-клієнт перезапущений + FREQ + ЧАСТ - 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. - LMMS не був підключений до JACK з якоїсь причини, тому LMMS підключення до JACK було перезапущено. Вам доведеться заново вручну створити з'єднання. + Frequency: + Частота: - JACK server down - JACK-сервер не доступний + GAIN + ПІДС - 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. - Можливо JACK-сервер був вимкнений і запуск нового процесу не вдався, тому LMMS не може продовжити роботу. Вам слід зберегти проект і перезапустити JACK і LMMS. + Gain: + Підсилення: - CLIENT-NAME - ІМ'Я КЛІЄНТА + RATIO + ВІДН - CHANNELS - КАНАЛИ + Ratio: + Відношення: - AudioOss::setupWidget - - DEVICE - ПРИСТРІЙ - + BassBoosterControls - CHANNELS - КАНАЛИ + Frequency + Частота - - - AudioPortAudio::setupWidget - BACKEND - УПРАВЛІННЯ + Gain + Підсилення - DEVICE - ПРИСТРІЙ + Ratio + Відношення - AudioPulseAudio::setupWidget + BitcrushControlDialog - DEVICE - ПРИСТРІЙ + IN + ВХД - CHANNELS - КАНАЛИ + OUT + ВИХ - - - AudioSdl::setupWidget - DEVICE - ПРИСТРІЙ + GAIN + ПІДС - - - AudioSndio::setupWidget - DEVICE - ПРИСТРІЙ + CLIP + ЗРІЗ - CHANNELS - КАНАЛИ + Sample rate: + Частота дискретизації: - - - AudioSoundIo::setupWidget - BACKEND - УПРАВЛІННЯ + Stereo difference: + Стерео різниця: - DEVICE - ПРИСТРІЙ + Levels: + Рівні: + + + NOISE + - - - AutomatableModel - &Reset (%1%2) - &R Скинути (%1%2) + FREQ + ЧАСТ - &Copy value (%1%2) - &C Копіювати значення (%1%2) + STEREO + - &Paste value (%1%2) - &P Вставити значення (%1%2) + QUANT + - Edit song-global automation - Змінити глоабльную автоматизацію композиції + Input gain: + Вхідне підсилення: - Connected to %1 - Приєднано до %1 + Input noise: + - Connected to controller - Приєднано до контролера + Output gain: + Вихідне підсилення: - Edit connection... - Налаштувати з'єднання... + Output clip: + - Remove connection - Видалити з'єднання + Rate enabled + - Connect to controller... - З'єднати з контролером ... + Enable sample-rate crushing + - Remove song-global automation - Прибрати глобальну автоматизацію композиції + Depth enabled + - Remove all linked controls - Прибрати все приєднане управління + Enable bit-depth crushing + - AutomationEditor + BitcrushControls - Please open an automation pattern with the context menu of a control! - Відкрийте редатор автоматизації через контекстне меню регулятора! + Input gain + Вхідне підсилення - Values copied - Значення скопійовані + Input noise + - All selected values were copied to the clipboard. - Всі вибрані значення скопійовані до буферу обміну. + Output gain + Вихідне підсилення - - - AutomationEditorWindow - Play/pause current pattern (Space) - Гра/Пауза поточної мелодії (Пробіл) + Output clip + - 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. - Натисніть тут щоб програти поточну мелодію. Це може стати в нагоді при його редагуванні. Мелодія автоматично програватиме знову при досягненні кінця. + Sample rate + - Stop playing of current pattern (Space) - Зупинити програвання поточної мелодії (Пробіл) + Stereo difference + - Click here if you want to stop playing of the current pattern. - Натисніть тут, якщо ви хочете зупинити відтворення поточної мелодії. + Levels + - Draw mode (Shift+D) - Режим малювання (Shift + D) + Rate enabled + - Erase mode (Shift+E) - Режим стирання (Shift+E) + Depth enabled + + + + CarlaInstrumentView - Flip vertically - Перевернути вертикально + Show GUI + Показати інтерфейс + + + CrossoverEQControlDialog - Flip horizontally - Перевернути горизонтально + Band 1/2 crossover: + - Click here and the pattern will be inverted.The points are flipped in the y direction. - Натисніть тут і мелодія перевернеться. Точки перевертаються в Y напрямку. + Band 2/3 crossover: + - Click here and the pattern will be reversed. The points are flipped in the x direction. - Натисніть тут і мелодія перевернеться в напрямку X. + Band 3/4 crossover: + - 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. - При натиснені цієї кнопки активується режим малювання нот, в ньому ви можете додавати/переміщати і змінювати тривалість одиночних нот. Це основний режим і використовується більшу частину часу. -Для увімкнення цього режиму можна скористатися комбінацію клавіш Shift+D. + Band 1 gain + - 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. - При натиснені цієї кнопки активується режим стирання. У цьому режимі ви можете видаляти ноти по одній. -Для увімкнення цього режиму можна скористатися комбінацію клавіш Shift+E. + Band 1 gain: + - Discrete progression - Дискретна прогресія + Band 2 gain + - Linear progression - Лінійна прогресія + Band 2 gain: + - Cubic Hermite progression - Кубічна Ермітова прогресія + Band 3 gain + - Tension value for spline - Величина напруженості для сплайна + Band 3 gain: + - 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. - Більш висока напруженість може зробити криву більш м'якою, але перевантажить деякі величини. Низька напруженість зробить нахил кривої нижчою в кожній контрольній точці. + Band 4 gain + - 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. - Вибір дискретної прогресії для цього шаблону автоматизації. Кількість приєднаних об'єктів залишатиметься постійним між керуючими точками і буде встановлена на нове значення відразу після досягнення кожної керуючої точки. + Band 4 gain: + - 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. - Вибір лінійної прогресії для цього шаблону автоматизації. Кількість приєднаних об'єктів буде змінюватися з постійною швидкістю в часі між керуючими точками для досягнення точного значення в кожній керуючій точці без раптових змін. + Band 1 mute + - 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. - Кубічна Ермітова прогресія для цього шаблону автоматизації. Кількість приєднаних об'єктів зміниться по згладженій кривій і пом'якшиться на піках і спадах. + Mute band 1 + - Cut selected values (%1+X) - Вирізати вибрані ноти (%1+X) + Band 2 mute + - Copy selected values (%1+C) - Копіювати вибрані ноти до буферу (%1+C) + Mute band 2 + - Paste values from clipboard (%1+V) - Вставити значення з буферу (%1+V) + Band 3 mute + - 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. - При натиснені цієї кнопки виділені ноти будуть вирізані до буферу. Пізніше ви можете вставити їх в будь-яке місце будь-якого шаблону за допомогою кнопки "Вставити". + Mute band 3 + - 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. - При натиснені цієї кнопки виділені ноти будуть скопійовано до буферу. Пізніше ви зможете вставити їх в будь-яке місце будь-якого шаблону за допомогою кнопки "Вставити". + Band 4 mute + - Click here and the values from the clipboard will be pasted at the first visible measure. - При натиснені цієї кнопки ноти з буферу будуть вставлені в перший видимий такт. + Mute band 4 + + + + DelayControls - Tension: - Напруженість: + Feedback + Повернення - Automation Editor - no pattern - Редактор автоматизації - немає шаблону + Output gain + Вихідне підсилення - Automation Editor - %1 - Редактор автоматизації - %1 + Delay samples + - Edit actions - Зміна + LFO frequency + - Interpolation controls - Управління інтерполяцією + LFO amount + + + + DelayControlsDialog - Timeline controls - Управління хронологією + Gain + Підсилення - Zoom controls - Управління масштабом + DELAY + - Quantization controls - Управління квантуванням + FDBK + - Model is already connected to this pattern. - Модель вже підключена до цього шаблону. + RATE + - Quantization - + AMNT + ГЛИБ - 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. - + Delay time + - - - AutomationPattern - Drag a control while pressing <%1> - Тягніть контроль утримуючи <%1> + Feedback amount + - - - AutomationPatternView - Open in Automation editor - Відкрити в редакторі автоматизації + LFO frequency + - Clear - Очистити + LFO amount + - Reset name - Скинути назву + Out gain + + + + DualFilterControlDialog - Change name - Перейменувати + Filter 1 enabled + Фільтр 1 включено - %1 Connections - З'єднання %1 + Filter 2 enabled + Фільтр 2 включено - Disconnect "%1" - Від'єднати «%1» + FREQ + ЧАСТ - Set/clear record - Встановити/очистити запис + Cutoff frequency + Зріз частоти - Flip Vertically (Visible) - Перевернути вертикально (Видиме) + RESO + РЕЗО - Flip Horizontally (Visible) - Перевернути горизонтально (Видиме) + Resonance + Резонанс - Model is already connected to this pattern. - Модель вже підключена до цього шаблону. + GAIN + ПІДС - - - AutomationTrack - Automation track - Доріжка автоматизації + Gain + Підсилення - - - BBEditor - Beat+Bassline Editor - Ритм Бас Редактор + MIX + МІКС - Play/pause current beat/bassline (Space) - Грати/пауза поточної лінії ритму/басу (Пробіл) + Mix + Мікс - Stop playback of current beat/bassline (Space) - Зупинити відтворення поточної лінії ритм-басу (Пробіл) + Enable/disable filter 1 + - Click here to play the current beat/bassline. The beat/bassline is automatically looped when its end is reached. - Натисніть щоб програти поточну лінію ритм-басу. Вона буде повторена при досягненні кінця. + Enable/disable filter 2 + + + + DualFilterControls - Click here to stop playing of current beat/bassline. - Зупинити відтворення (Пробіл). + Filter 1 enabled + Фільтр 1 включено - Add beat/bassline - Додати ритм/бас + Filter 1 type + Тип фільтру - Add automation-track - Додати доріжку автоматизації + Q/Resonance 1 + Кіл./Резонансу 1 - Remove steps - Видалити такти + Gain 1 + Підсилення 1 - Add steps - Додати такти + Mix + Мікс - Beat selector - Вибір ударних + Filter 2 enabled + Фільтр 2 включено - Track and step actions - Дії для доріжки чи її частини + Filter 2 type + Тип фільтру 2 - Clone Steps - Клонувати такти + Q/Resonance 2 + Кіл./Резонансу 2 - Add sample-track - Додати доріжку запису + Gain 2 + Підсилення 2 - - - BBTCOView - Open in Beat+Bassline-Editor - Відкрити в редакторі ритму і басу + Notch + Смуго-загороджуючий - Reset name - Скинути назву + Moog + Муг - Change name - Перейменувати + 2x Moog + 2x Муг - Change color - Змінити колір + SV Notch + SV Смуго-заг - Reset color to default - Відновити колір за замовчуванням + Fast Formant + Швидка форманта - - - BBTrack - Beat/Bassline %1 - Ритм/Бас лінія %1 + Tripole + Тріполі - Clone of %1 - Копія %1 + Cutoff frequency 1 + - - - BassBoosterControlDialog - FREQ - ЧАСТ + Cutoff frequency 2 + - Frequency: - Частота: + Low-pass + - GAIN - ПІДС + Hi-pass + - Gain: - Підсилення: + Band-pass csg + - RATIO - ВІДН + Band-pass czpg + - Ratio: - Відношення: + All-pass + - - - BassBoosterControls - Frequency - Частота + 2x Low-pass + - Gain - Підсилення + RC Low-pass 12 dB/oct + - Ratio - Відношення + RC Band-pass 12 dB/oct + - - - BitcrushControlDialog - IN - ВХД + RC High-pass 12 dB/oct + - OUT - ВИХ + RC Low-pass 24 dB/oct + - GAIN - ПІДС + RC Band-pass 24 dB/oct + - Input Gain: - Вхідне підсилення: + RC High-pass 24 dB/oct + - Input Noise: - Вхідний шум: + Vocal Formant + - Output Gain: - Вихідне підсилення: + SV Low-pass + - CLIP - ЗРІЗ + SV Band-pass + - Output Clip: - Вихідне відсічення: + SV High-pass + + + + EqControls - Rate Enabled - Частоту вибірки увімкнено + Input gain + Вхідне підсилення - Enable samplerate-crushing - Включити дроблення частоти дискретизації + Output gain + Вихідне підсилення - Depth Enabled - Глибина включена + Peak 1 gain + Пік 1 підсилення - Enable bitdepth-crushing - Включити ​​дроблення глибини кольору + Peak 2 gain + Пік 2 підсилення - Sample rate: - Частота дискретизації: + Peak 3 gain + Пік 3 підсилення - Stereo difference: - Стерео різниця: + Peak 4 gain + Пік 4 підсилення - Levels: - Рівні: + HP res + ВЧ резон - NOISE - + Peak 1 BW + Пік 1 BW - FREQ - ЧАСТ + Peak 2 BW + Пік 2 BW - STEREO - + Peak 3 BW + Пік 3 BW - QUANT - + Peak 4 BW + Пік 4 BW - - - CaptionMenu - &Help - &H Довідка + LP res + НЧ резон - Help (not available) - Допомога (не доступно) + HP freq + НЧ част - - - CarlaInstrumentView - Show GUI - Показати інтерфейс + Peak 1 freq + Пік 1 част - Click here to show or hide the graphical user interface (GUI) of Carla. - Натисніть сюди щоб сховати чи показати графічний інтерфейс Carla. + Peak 2 freq + Пік 2 част - - - Controller - Controller %1 - Контролер %1 + Peak 3 freq + Пік 3 част + + + Peak 4 freq + Пік 4 част - - - ControllerConnectionDialog - Connection Settings - Параметры соединения + LP freq + НЧ част - MIDI CONTROLLER - MIDI-КОНТРОЛЕР + HP active + ВЧ активна - Input channel - Канал введення + Peak 1 active + Пік 1 активний - CHANNEL - КАНАЛ + Peak 2 active + Пік 2 активний - Input controller - Контролер введення + Peak 3 active + Пік 3 активний - CONTROLLER - КОНТРОЛЕР + Peak 4 active + Пік 4 активний - Auto Detect - Автовизначення + LP active + НЧ активна - MIDI-devices to receive MIDI-events from - Пристрої MiDi для прийому подій + LP 12 + НЧ 12 - USER CONTROLLER - КОРИСТ. КОНТРОЛЕР + LP 24 + НЧ 24 - MAPPING FUNCTION - ПЕРЕВИЗНАЧЕННЯ + LP 48 + НЧ 48 - OK - ОК + HP 12 + ВЧ 12 - Cancel - Відміна + HP 24 + ВЧ 24 - LMMS - ЛММС + HP 48 + ВЧ 48 - Cycle Detected. - Виявлено цикл. + Analyse IN + Аналізувати ВХІД - - - ControllerRackView - Controller Rack - Стійка контролерів + Analyse OUT + Аналізувати ВИХІД - Add - Додати + Low-shelf gain + - Confirm Delete - Підтвердити видалення + High-shelf gain + - Confirm delete? There are existing connection(s) associated with this controller. There is no way to undo. - Чи підтверджуєте видалення? Є можливі зв'язки з цим контролером, потім їх не можна буде повернути.. + Low-shelf res + - - - ControllerView - Controls - Управління + High-shelf res + - Controllers are able to automate the value of a knob, slider, and other controls. - Контролери можуть автоматизувати зміни значень регуляторів, повзунків та іншого управління. + Low-shelf freq + - Rename controller - Перейменувати контролер + High-shelf freq + - Enter the new name for this controller - Введіть нову назву контролера + Low-shelf active + - &Remove this controller - &R Видалити цей контролер + High-shelf active + - Re&name this controller - &N Перейменувати цей контролер + Low-pass type + - LFO - LFO + High-pass type + - CrossoverEQControlDialog + EqControlsDialog - Band 1/2 Crossover: - Смуга 1/2 кросовер: + HP + ВЧ - Band 2/3 Crossover: - Смуга 2/3 кросовер: + Peak 1 + Пік 1 - Band 3/4 Crossover: - Смуга 3/4 кросовер: + Peak 2 + Пік 2 - Band 1 Gain: - Смуга 1 підсилення: + Peak 3 + Пік 3 - Band 2 Gain: - Смуга 2 підсилення: + Peak 4 + Пік 4 - Band 3 Gain: - Смуга 3 підсилення: + LP + НЧ - Band 4 Gain: - Смуга 4 підсилення: + Gain + Підсилення - Band 1 Mute - Смуга 1 відключена + Bandwidth: + Ширина смуги: - Mute Band 1 - Відключити смугу 1 + Resonance : + Резонанс: - Band 2 Mute - Смуга 2 відключена + Frequency: + Частота: - Mute Band 2 - Відключити смугу 2 + Octave + Октава - Band 3 Mute - Смуга 3 відключена + Low-shelf + - Mute Band 3 - Відключити смугу 3 + High-shelf + - Band 4 Mute - Смуга 4 відключена + Input gain + Вхідне підсилення - Mute Band 4 - Відключити смугу 4 + Output gain + Вихідне підсилення - - - DelayControls - Delay Samples - Затримка семплів + LP group + - Feedback - Повернення + HP group + + + + EqHandle - Lfo Frequency - Частота LFO + Reso: + Резон: - Lfo Amount - Величина LFO + BW: + ШС: - Output gain - Вихідне підсилення + Freq: + Част: - DelayControlsDialog + FlangerControls - Lfo Amt - Вел LFO + Seconds + Секунд - Delay Time - Час затримки + Regen + Перегенерувати - Feedback Amount - Величина повернення + Noise + Шум - Lfo - LFO + Invert + Інвертувати - Out Gain - Вих підсилення + Delay samples + - Gain - Підсилення + LFO frequency + + + + FlangerControlsDialog DELAY - - - - FDBK - + RATE - + AMNT ГЛИБ - - - DualFilterControlDialog - Filter 1 enabled - Фільтр 1 включено + Amount: + - Filter 2 enabled - Фільтр 2 включено + FDBK + - Click to enable/disable Filter 1 - Натиснути для включення/виключення Фільтру 1 + NOISE + - Click to enable/disable Filter 2 - Натиснути для включення/виключення Фільтру 2 + Invert + Інвертувати - FREQ - ЧАСТ + Period: + - Cutoff frequency - Зріз частоти + Delay time: + - RESO - РЕЗО + Feedback amount: + - Resonance - Резонанс + White noise amount: + + + + FreeBoyInstrument - GAIN - ПІДС + Sweep time + Час поширення - Gain - Підсилення + Sweep direction + Напрям поширення - MIX - МІКС + Channel 1 volume + Гучність першого каналу - Mix - Мікс + Volume sweep direction + Обсяг напрямку поширення - - - DualFilterControls - Filter 1 enabled - Фільтр 1 включено + Length of each step in sweep + Довжина кожного такту в поширенні - Filter 1 type - Тип фільтру + Channel 2 volume + Гучність другого каналу - Cutoff 1 frequency - Зріз 1 частоти + Channel 3 volume + Гучність третього каналу - Q/Resonance 1 - Кіл./Резонансу 1 + Channel 4 volume + Гучність четвертого каналу - Gain 1 - Підсилення 1 + Channel 1 to SO2 (Left) + Від першого каналу до SO2 (лівий канал) - Mix - Мікс + Channel 2 to SO2 (Left) + Від другого каналу до SO2 (лівий канал) - Filter 2 enabled - Фільтр 2 включено + Channel 3 to SO2 (Left) + Від третього каналу до SO2 (лівий канал) - Filter 2 type - Тип фільтру 2 + Channel 4 to SO2 (Left) + Від четвертого каналу до SO2 (лівий канал) - Cutoff 2 frequency - Зріз 2 частоти + Channel 1 to SO1 (Right) + Від першого каналу до SO1 (правий канал) - Q/Resonance 2 - Кіл./Резонансу 2 + Channel 2 to SO1 (Right) + Від другого каналу до SO1 (правий канал) - Gain 2 - Підсилення 2 + Channel 3 to SO1 (Right) + Від третього каналу до SO1 (правий канал) - LowPass - Низ.ЧФ + Channel 4 to SO1 (Right) + Від четвертого каналу до SO1 (правий канал) - HiPass - Вис.ЧФ + Treble + Дискант - BandPass csg - Серед.ЧФ csg + Bass + Бас - BandPass czpg - Серед.ЧФ czpg + Shift Register width + Зміщення ширини регістра - Notch - Смуго-загороджуючий + Sweep rate shift amount + - Allpass - Всі проходять + Wave pattern duty cycle + - Moog - Муг + Right output level + - 2x LowPass - 2х Низ.ЧФ + Left output level + + + + FreeBoyInstrumentView - RC LowPass 12dB - RC Низ.ЧФ 12дБ + Length of each step in sweep: + Довжина кожного кроку в розгортці: - RC BandPass 12dB - RC Серед.ЧФ 12 дБ + Length of each step in sweep + Довжина кожного кроку в розгортці - RC HighPass 12dB - RC Вис.ЧФ 12дБ + Treble: + Дискант: - RC LowPass 24dB - RC Низ.ЧФ 24дБ + Treble + Дискант - RC BandPass 24dB - RC Серед.ЧФ 24дБ + Bass: + Бас: - RC HighPass 24dB - RC Вис.ЧФ 24дБ - + Bass + Бас + - Vocal Formant Filter - Фільтр Вокальної форманти + Sweep time: + - 2x Moog - 2x Муг + Sweep time + Час поширення - SV LowPass - SV Низ.ЧФ + Sweep rate shift amount: + - SV BandPass - SV Серед.ЧФ + Sweep rate shift amount + - SV HighPass - SV Вис.ЧФ + Wave pattern duty cycle: + - SV Notch - SV Смуго-заг + Wave pattern duty cycle + - Fast Formant - Швидка форманта + Square channel 1 volume: + - Tripole - Тріполі + Square channel 1 volume + - - - Editor - Play (Space) - Грати (Пробіл) + Square channel 2 volume: + - Stop (Space) - Зупинити (Пробіл) + Square channel 2 volume + - Record - Запис + Wave pattern channel volume: + - Record while playing - Запис під час програвання + Wave pattern channel volume + - Transport controls - Управління засобами сполучення + Noise channel volume: + - - - Effect - Effect enabled - Ефект включений + Noise channel volume + - Wet/Dry mix - Насиченість + SO1 volume (Right): + - Gate - Шлюз + SO1 volume (Right) + - Decay - Згасання + SO2 volume (Left): + - - - EffectChain - Effects enabled - Ефекти включені + SO2 volume (Left) + - - - EffectRackView - EFFECTS CHAIN - МЕРЕЖА ЕФЕКТІВ + Sweep direction + Напрям поширення - Add effect - Додати ефект + Volume sweep direction + Обсяг напрямку поширення - - - EffectSelectDialog - Add effect - Додати ефект + Shift register width + - Name - І'мя + Channel 1 to SO1 (Right) + Від першого каналу до SO1 (правий канал) - Type - Тип + Channel 2 to SO1 (Right) + Від другого каналу до SO1 (правий канал) - Description - Опис + Channel 3 to SO1 (Right) + Від третього каналу до SO1 (правий канал) - Author - Автор + Channel 4 to SO1 (Right) + Від четвертого каналу до SO1 (правий канал) - - - EffectView - Toggles the effect on or off. - Увімк/Вимк ефект. + Channel 1 to SO2 (Left) + Від першого каналу до SO2 (лівий канал) - On/Off - Увімк/Вимк + Channel 2 to SO2 (Left) + Від другого каналу до SO2 (лівий канал) - W/D - НАСИЧ + Channel 3 to SO2 (Left) + Від третього каналу до SO2 (лівий канал) - Wet Level: - Рівень насиченості: + Channel 4 to SO2 (Left) + Від четвертого каналу до SO2 (лівий канал) - The Wet/Dry knob sets the ratio between the input signal and the effect signal that forms the output. - Регулятор насиченості визначає частку обробленого сигналу, яка буде на виході. + Wave pattern graph + + + + GigInstrument - DECAY - DECAY + Bank + Банк - Time: - Час: + Patch + Патч - 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. - Decay (затихання) управляє кількістю буферів тиші, які повинні пройти до кінця роботи плагіна. Менші величини знижують перевантаження процесора, але виникає ризик появи потріскування або підрізання в хвості на перетримці (delay) або відлуння (reverb) ефектах. + Gain + Підсилення + + + GigInstrumentView - GATE - ШЛЮЗ + Open GIG file + Відкрити GIG файл - Gate: - Шлюз: + GIG Files (*.gig) + GIG Файли (*.gig) - The Gate knob controls the signal level that is considered to be 'silence' while deciding when to stop processing signals. - GATE (Шлюз) визначає рівень сигналу, який буде вважатися "тишею" при визначенні зупинки оброблення сигналів. + Choose patch + - Controls - Управління + Gain: + Підсилення: + + + InstrumentTrack - 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. - -The Wet/Dry knob controls the balance between the input signal and the effected signal that is the resulting output from the effect. The input for the stage is the output from the previous stage. So, the 'dry' signal for effects lower in the chain contains all of the previous effects. - -The Decay knob controls how long the signal will continue to be processed after the notes have been released. The effect will stop processing signals when the volume has dropped below a given threshold for a given length of time. This knob sets the 'given length of time'. Longer times will require more CPU, so this number should be set low for most effects. It needs to be bumped up for effects that produce lengthy periods of silence, e.g. delays. - -The Gate knob controls the 'given threshold' for the effect's auto shutdown. The clock for the 'given length of time' will begin as soon as the processed signal level drops below the level specified with this knob. - -The Controls button opens a dialog for editing the effect's parameters. - -Right clicking will bring up a context menu where you can change the order in which the effects are processed or delete an effect altogether. - Сигнал проходить послідовно через всі встановлені фільтри (зверху вниз). - -Перемикач Увімк/Вимк дозволяє в будь-який момент вмикати / вимикати фільтр. - -Регулятор (wet / dry) насиченості визначає баланс між вхідним сигналом і сигналом після ефекту, який стає вихідним сигналом ефекту. Вхідний сигнал кожного фільтра є виходом попереднього, так що частка чистого сигналу при проходженні по ланцюжку постійно падає. - -Регулятор (decay) затихання визначає час, який буде діяти фільтр після того як ноти були відпущені. -Ефект перестане обробляти сигнали, коли гучність впаде нижче порогу для заданої довжини часу. Ця ручка (Knob) встановлює "задану довжину часу" Чим менше значення, тим менші вимоги до ЦП, тому краще ставити це число низьким для більшості ефектів. однак це може викликати обрізку звуку при використанні ефектів з тривалими періодами тиші, типу затримки. - -Регулятор шлюзу служить для вказівки порогу сигналу для авто-відключення ефекту, відлік для "заданої довжини часу" почнеться як тільки опрацьований сигнал впаде нижче зазначеного цим регулятором рівня. - -Кнопка "Управління" відкриває вікно зміни параметрів ефекту. - -Контекстне меню, яке викликається клацанням правою кнопкою миші, дозволяє змінювати порядок проходження фільтрів або видаляти їх разом з іншими. - - - Move &up - &u Перемістити вище - - - Move &down - &d Перемістити нижче - - - &Remove this plugin - &R Видалити цей плагін + Default preset + Основна предустановка - EnvelopeAndLfoParameters + LadspaControlDialog - Predelay - Затримка + Link Channels + Зв'язати канали - Attack - Вступ + Channel + Канал + + + LadspaEffect - Hold - Утримання + Unknown LADSPA plugin %1 requested. + Запитаний невідомий модуль LADSPA «%1». + + + MidiImport - Decay - Згасання + Setup incomplete + Установку не завершено - Sustain - Витримка + 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. + Ви не увімкнули підтримку програвача SoundFont2 при компіляції LMMS, він використовується для додавання основного звуку в імпортовані Міді файли, тому після імпорту цього міді файлу звуку не буде. - Release - Зменшення + Track + Трек - Modulation - Модуляція + You have not 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. + + + + MonstroInstrument - LFO Predelay - Затримка LFO + Osc 3 Stereo phase offset + Зміщення стерео-фази осциллятора 3 - LFO Attack - Вступ LFO + Selected view + Перегляд обраного - LFO speed - Швидкість LFO + Sine wave + Синусоїда - LFO Modulation - Модуляція LFO + Bandlimited Triangle wave + Трикутна хвиля з обмеженою смугою - LFO Wave Shape - Форма сигналу LFO + Bandlimited Saw wave + Зигзаг хвиля з обмеженою смугою - Freq x 100 - ЧАСТ x 100 + Bandlimited Ramp wave + Спадаюча хвиля з обмеженою смугою - Modulate Env-Amount - Модулювати обвідну + Bandlimited Square wave + Квадратна хвиля з обмеженою смугою - - - EnvelopeAndLfoView - DEL - DEL + Bandlimited Moog saw wave + Муг-зигзаг хвиля з обмеженою смугою - Predelay: - Предзатримка: + Soft square wave + М'яка прямокутна хвиля - Use this knob for setting predelay of the current envelope. The bigger this value the longer the time before start of actual envelope. - Ця ручка визначає затримку обвідної. Чим більша ця величина, тим довший час до старту поточної обвідної. + Absolute sine wave + Абсолютна синусоїдна хвиля - ATT - ATT + Exponential wave + Експоненціальна хвиля - Attack: - Вступ: + White noise + Білий шум - 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. - Ця ручка встановлює час зростання для поточної обвідної. Чим більше значення, тим довше характеристика (н-д, гучність) зростає до максимуму. Для інструменов нашталт піаніно характерний малий час наростання, а для струнних - великий. + Digital Triangle wave + Цифрова трикутна хвиля - HOLD - HOLD + Digital Saw wave + Цифрова зигзаг хвиля - Hold: - Утримання: + Digital Ramp wave + Цифрова спадна хвиля - 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. - Ця ручка встановлює тривалість обвідної. Чим більше значення, тим довше обвідна тримається на найвищому рівні. + Digital Square wave + Цифрова квадратна хвиля - DEC - DEC + Digital Moog saw wave + Цифрова Муг-зигзаг хвиля - Decay: - Згасання: + Triangle wave + Трикутна хвиля - 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. - Ця ручка встановлює час згасання для поточної обвідної. Чим більше значення, тим довше обвідна повинна зменшуватися від вступу до рівня витримки. Для інструментів накшталт піаніно слід вибирати невеликі значення. + Saw wave + Зигзаг - SUST - SUST + Ramp wave + Спадна хвиля - Sustain: - Витримка: + Square wave + Квадратна хвиля - 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. - Ця ручка встановлює рівень витримки. Чим більша ця величина, тим вище рівень на якому залишається обвідна, перш ніж опуститися до нуля. + Moog saw wave + Муг-зигзаг хвиля - REL - REL + Abs. sine wave + Синусоїда по модулю - Release: - Зменшення: + Random + Випадково - 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. - Ця ручка встановлює час відпускання для поточної обвідної. Чим більше значення, тим довша характеристика (н-д, гучність) зменшується від рівня витримки до нуля. Для струнних інструментів слід вибирати великі значення. + Random smooth + Випадкове зглажування - AMT - AMT + Osc 1 volume + - Modulation amount: - Глибина модуляції: + Osc 1 panning + - 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. - Ця ручка встановлює глибину модуляції для поточної обвідної. Чим більше значення, тим більшою мірою обрана характеристика (н-д, гучність або частота зрізу) буде залежати від цієї обвідної. + Osc 1 coarse detune + - LFO predelay: - Предзатримка LFO: + Osc 1 fine detune left + - 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 (LFO - низькочастотний осциллятор (генератор)). Чим більша величина, тим більше часу до того як LFO почне працювати. + Osc 1 fine detune right + - LFO- attack: - Вступ LFO: + Osc 1 stereo phase offset + - 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. - Використовуйте цю ручку для встановлення часу вступу цього LFO. Чим більше значення, тим довше LFO потребує збільшення своєї амплітуди до максимуму. + Osc 1 pulse width + - SPD - SPD + Osc 1 sync send on rise + - LFO speed: - Швидкість LFO: + Osc 1 sync send on fall + - 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. - Ця ручка встановлює швидкість поточного LFO. Чим більше значення, тим швидше LFO коливається і швидше виробляється ефект. + Osc 2 volume + - 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. - Ця ручка встановлює глибину модуляції для поточного LFO. Чим більше значення, тим більшою мірою обрана характеристика (н-д, гучність або частота зрізу) залежатиме від цього LFO. + Osc 2 panning + - Click here for a sine-wave. - Генерувати гармонійний (синусоїдальний) сигнал. + Osc 2 coarse detune + - Click here for a triangle-wave. - Згенерувати трикутний сигнал. + Osc 2 fine detune left + - Click here for a saw-wave for current. - Згенерувати зигзагоподібний сигнал. + Osc 2 fine detune right + - Click here for a square-wave. - Згенерувати квадратний сигнал. + Osc 2 stereo phase offset + - Click here for a user-defined wave. Afterwards, drag an according sample-file onto the LFO graph. - Задати свою форму сигналу. Згодом, перетягнути відповідний файл із записом в граф LFO. + Osc 2 waveform + - FREQ x 100 - ЧАСТОТА x 100 + Osc 2 sync hard + - Click here if the frequency of this LFO should be multiplied by 100. - Натисніть, щоб помножити частоту цього LFO на 100. + Osc 2 sync reverse + - multiply LFO-frequency by 100 - Помножити частоту LFO на 100 + Osc 3 volume + - MODULATE ENV-AMOUNT - МОДЕЛЮВ ОБВІДНУ + Osc 3 panning + - Click here to make the envelope-amount controlled by this LFO. - Натисніть сюди, щоб глибина модуляції обвідної задавалася цим LFO. + Osc 3 coarse detune + - control envelope-amount by this LFO - Дозволити цьому LFO задавати значення обвідної + Osc 3 sub-oscillator mix + - ms/LFO: - мс/LFO: + Osc 3 waveform 1 + - Hint - Підказка + Osc 3 waveform 2 + - Drag a sample from somewhere and drop it in this window. - Перетягніть в це вікно який-небудь запис. + Osc 3 sync hard + - Click here for random wave. - Натисніть сюди для випадкової хвилі. + Osc 3 Sync reverse + - - - EqControls - Input gain - Вхідне підсилення + LFO 1 waveform + - Output gain - Вихідне підсилення + LFO 1 attack + - Low shelf gain - Мала ступінь підсилення + LFO 1 rate + - Peak 1 gain - Пік 1 підсилення + LFO 1 phase + - Peak 2 gain - Пік 2 підсилення + LFO 2 waveform + - Peak 3 gain - Пік 3 підсилення + LFO 2 attack + - Peak 4 gain - Пік 4 підсилення + LFO 2 rate + - High Shelf gain - Висока ступінь підсилення + LFO 2 phase + - HP res - ВЧ резон + Env 1 pre-delay + - Low Shelf res - Мала ступінь резон + Env 1 attack + - Peak 1 BW - Пік 1 BW + Env 1 hold + - Peak 2 BW - Пік 2 BW + Env 1 decay + - Peak 3 BW - Пік 3 BW + Env 1 sustain + - Peak 4 BW - Пік 4 BW + Env 1 release + - High Shelf res - Висока ступінь резон + Env 1 slope + - LP res - НЧ резон + Env 2 pre-delay + - HP freq - НЧ част + Env 2 attack + - Low Shelf freq - Низька ступінь част + Env 2 hold + - Peak 1 freq - Пік 1 част + Env 2 decay + - Peak 2 freq - Пік 2 част + Env 2 sustain + - Peak 3 freq - Пік 3 част + Env 2 release + - Peak 4 freq - Пік 4 част + Env 2 slope + - High shelf freq - Висока ступінь част + Osc 2+3 modulation + - LP freq - НЧ част + Osc 1 - Vol env 1 + - HP active - ВЧ активна + Osc 1 - Vol env 2 + - Low shelf active - Мала ступінь активна + Osc 1 - Vol LFO 1 + - Peak 1 active - Пік 1 активний + Osc 1 - Vol LFO 2 + - Peak 2 active - Пік 2 активний + Osc 2 - Vol env 1 + - Peak 3 active - Пік 3 активний + Osc 2 - Vol env 2 + - Peak 4 active - Пік 4 активний + Osc 2 - Vol LFO 1 + - High shelf active - Висока ступінь активна + Osc 2 - Vol LFO 2 + - LP active - НЧ активна + Osc 3 - Vol env 1 + - LP 12 - НЧ 12 + Osc 3 - Vol env 2 + - LP 24 - НЧ 24 + Osc 3 - Vol LFO 1 + - LP 48 - НЧ 48 + Osc 3 - Vol LFO 2 + - HP 12 - ВЧ 12 + Osc 1 - Phs env 1 + - HP 24 - ВЧ 24 + Osc 1 - Phs env 2 + - HP 48 - ВЧ 48 + Osc 1 - Phs LFO 1 + - low pass type - Тип низької частоти + Osc 1 - Phs LFO 2 + - high pass type - Тип високої частоти + Osc 2 - Phs env 1 + - Analyse IN - Аналізувати ВХІД + Osc 2 - Phs env 2 + - Analyse OUT - Аналізувати ВИХІД + Osc 2 - Phs LFO 1 + - - - EqControlsDialog - HP - ВЧ + Osc 2 - Phs LFO 2 + - Low Shelf - Мала ступінь + Osc 3 - Phs env 1 + - Peak 1 - Пік 1 + Osc 3 - Phs env 2 + - Peak 2 - Пік 2 + Osc 3 - Phs LFO 1 + - Peak 3 - Пік 3 + Osc 3 - Phs LFO 2 + - Peak 4 - Пік 4 + Osc 1 - Pit env 1 + - High Shelf - Висока ступінь + Osc 1 - Pit env 2 + - LP - НЧ + Osc 1 - Pit LFO 1 + - In Gain - Вхід підсилення + Osc 1 - Pit LFO 2 + - Gain - Підсилення + Osc 2 - Pit env 1 + - Out Gain - Вих підсилення + Osc 2 - Pit env 2 + - Bandwidth: - Ширина смуги: + Osc 2 - Pit LFO 1 + - Resonance : - Резонанс: + Osc 2 - Pit LFO 2 + - Frequency: - Частота: + Osc 3 - Pit env 1 + - lp grp - нч grp + Osc 3 - Pit env 2 + - hp grp - вч grp + Osc 3 - Pit LFO 1 + - Octave - Октава + Osc 3 - Pit LFO 2 + - - - EqHandle - Reso: - Резон: + Osc 1 - PW env 1 + - BW: - ШС: + Osc 1 - PW env 2 + - Freq: - Част: + Osc 1 - PW LFO 1 + - - - ExportProjectDialog - Export project - Експорт проекту + Osc 1 - PW LFO 2 + - Output - Вивід + Osc 3 - Sub env 1 + - File format: - Формат файла: + Osc 3 - Sub env 2 + - Samplerate: - Частота дискретизації: + Osc 3 - Sub LFO 1 + - 44100 Hz - 44.1 КГц + Osc 3 - Sub LFO 2 + + + + MonstroView - 48000 Hz - 48 КГц + Operators view + Операторский вид - 88200 Hz - 88.2 КГц + Matrix view + Матричний вигляд - 96000 Hz - 96 КГц + Volume + Гучність - 192000 Hz - 192 КГц + Panning + Баланс - Bitrate: - Бітрейт: + Coarse detune + Грубе підстроювання - 64 KBit/s - 64 КБіт/с + semitones + півтон(а,ів) - 128 KBit/s - 128 КБіт/с + cents + відсотків - 160 KBit/s - 160 КБіт/с + Stereo phase offset + Зміщення стерео-фази - 192 KBit/s - 192 КБіт/с + deg + град - 256 KBit/s - 256 КБіт/с + Pulse width + Довжина імпульсу - 320 KBit/s - 320 КБіт/с + Send sync on pulse rise + Відправляти синхронізацію на підйомі імпульсу - Depth: - Глибина: + Send sync on pulse fall + Відправити синхронізацію на падінні пульсу - 16 Bit Integer - 16 Біт ціле + Hard sync oscillator 2 + Жорстка синхронізація осциллятора 2 - 32 Bit Float - 32 Біт плаваюча + Reverse sync oscillator 2 + Верерс синхронізація осциллятора 2 - Quality settings - Налаштування якості + Sub-osc mix + Мікс суб-осциляторів - Interpolation: - Інтерполяція: + Hard sync oscillator 3 + Жорстка синхронізація осциллятора 3 - Zero Order Hold - Нульова затримка + Reverse sync oscillator 3 + Верерс синхронізація осциллятора 3 - Sinc Fastest - Синхр. Швидка + Attack + Вступ - Sinc Medium (recommended) - Синхр. Середня (рекомендовано) + Rate + Частота вибірки - Sinc Best (very slow!) - Синхр. краща (дуже повільно!) + Phase + Фаза - Oversampling (use with care!): - Передискретизація (використовувати обережно!): + Pre-delay + Передзатримка - 1x (None) - 1х (Ні) + Hold + Утримання - 2x - + Decay + Згасання - 4x - + Sustain + Витримка - 8x - + Release + Зменшення - Start - Почати + Slope + Нахил - Cancel - Відміна + Modulation amount + Глибина модуляції - Export as loop (remove end silence) - Експортувати як петлю (прибрати тишу в кінці) + Fine tune left + - Export between loop markers - Експорт між маркерами циклу + Fine tune right + - Could not open file - Не можу відкрити файл + Mix osc 2 with osc 3 + - Export project to %1 - Експорт проекту в %1 + Modulate amplitude of osc 3 by osc 2 + - Error - Помилка + Modulate frequency of osc 3 by osc 2 + - Error while determining file-encoder device. Please try to choose a different output format. - Помилка при визначенні кодека файлу. Спробуйте вибрати інший формат виводу. + Modulate phase of osc 3 by osc 2 + + + + MultitapEchoControlDialog - Rendering: %1% - Обробка: %1% + Length + Довжина - 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! - + Step length: + Довжина кроку: - 24 Bit Integer - + Dry + Сухий - Use variable bitrate - + Stages + Етапи - Stereo mode: - + Swap inputs + Обмін входами - Stereo - + Dry gain: + - Joint Stereo - + Low-pass stages: + - Mono - + Swap left and right input channels for reflections + + + + NesInstrument - Compression level: - + Channel 2 Coarse detune + Грубе підстроювання 2 каналу - (fastest) - + Channel 2 Volume + Гучність 2 каналу - (default) - + Master volume + Основна гучність - (smallest) - + Vibrato + Вібрато - - - Expressive - Selected graph - Обраний графік + Channel 1 coarse detune + - A1 - + Channel 1 volume + Гучність першого каналу - A2 - + Channel 1 envelope length + - A3 - + Channel 1 duty cycle + - W1 smoothing - + Channel 1 sweep amount + - W2 smoothing - + Channel 1 sweep rate + - W3 smoothing - + Channel 2 envelope length + - PAN1 - + Channel 2 duty cycle + - PAN2 - + Channel 2 sweep amount + - REL TRANS - + Channel 2 sweep rate + - - - Fader - Please enter a new value between %1 and %2: - Введіть нове значення від %1 до %2: + Channel 3 coarse detune + - - - FileBrowser - Browser - Оглядач файлів + Channel 3 volume + Гучність третього каналу - Search - + Channel 4 volume + Гучність четвертого каналу - Refresh list - + Channel 4 envelope length + - - - FileBrowserTreeWidget - Send to active instrument-track - З'єднати з активним інструментом-доріжкою + Channel 4 noise frequency + - Open in new instrument-track/B+B Editor - Відкрити в новій інструментальній доріжці/Біт + Бас редакторі + Channel 4 noise frequency sweep + + + + NesInstrumentView - Loading sample - Завантаження запису + Volume + Гучність - Please wait, loading sample for preview... - Будь-ласка почекайте, запис завантажується для перегляду ... + Coarse detune + Грубе підстроювання - --- Factory files --- - --- Заводські файли --- + Envelope length + Довжина обвідної - Open in new instrument-track/Song Editor - Відкрити в новій інструментальній доріжці/Музичному редакторі + Enable channel 1 + Увімкнути канал 1 - Error - Помилка + Enable envelope 1 + Увімкнути обвідну 1 - does not appear to be a valid - не являється дійсним + Enable envelope 1 loop + Увімкнти повтор обвідної 1 - file - файл + Enable sweep 1 + Увімкнути розгортку 1 - - - FlangerControls - Delay Samples - Затримка семплів + Sweep amount + Кількість розгортки - Lfo Frequency - Частота LFO + Sweep rate + Темп розгортки - Seconds - Секунд + 12.5% Duty cycle + 12.5% Робочого циклу - Regen - Перегенерувати + 25% Duty cycle + 25% Робочого циклу - Noise - Шум + 50% Duty cycle + 50% Робочого циклу - Invert - Інвертувати + 75% Duty cycle + 75% Робочого циклу - - - FlangerControlsDialog - Delay Time: - Час затримки: + Enable channel 2 + Увімкнути канал 2 - Feedback Amount: - Величина повернення: + Enable envelope 2 + Увімкнути обвідну 2 - White Noise Amount: - Об'єм білого шуму: + Enable envelope 2 loop + Увімкнти повтор обвідної 2 - DELAY - + Enable sweep 2 + Увімкнути розгортку 2 - RATE - + Enable channel 3 + Увімкнути канал 3 - AMNT - ГЛИБ + Noise Frequency + Частота шуму - Amount: - + Frequency sweep + Частота темпу - FDBK - + Enable channel 4 + Увімкнути канал 4 - NOISE - + Enable envelope 4 + Увімкнути обвідну 4 - Invert - Інвертувати + Enable envelope 4 loop + Увімкнти повтор обвідної 4 - Period: - + Quantize noise frequency when using note frequency + Квантування частоту шуму при використанні частоти ноти - - - FxLine - Channel send amount - Величина відправки каналу + Use note frequency for noise + Використовувати частоту ноти для шуму - 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. - -In order to route the channel to another channel, select the FX channel and click on the "send" button on the channel you want to send to. The knob under the send button controls the level of signal that is sent to the channel. - -You can remove and move FX channels in the context menu, which is accessed by right-clicking the FX channel. - - Канал ефектів (ЕФ) отримує сигнал на вхід від однієї або декількох інструментальних доріжок. -У свою чергу його можна підключити до декількох інших каналам ефектів. ЛММС автоматично запобігає нескінченному повтореню і не дозволяє створювати з'єднання, які приведуть до нескінченного повторення. -Щоб з'єднати один канал з іншим, виберіть канал ефектів і натисніть кнопку надіслати на каналі, в який потрібно надіслати. Регулятор під кнопкою "надіслати" контролює рівень сигналу, що посилається на канал. -Можна прибирати і рухати канали ефектів через контекстне меню, якщо натиснути правою кнопкою миші по каналу ефектів. + Noise mode + Форма шуму - Move &left - Рухати вліво &L + Vibrato + Вібрато - Move &right - Рухати вправо &R + Master volume + Основна гучність + + + OpulenzInstrument - Rename &channel - Перейменувати канал &C + Patch + Патч - R&emove channel - Видалити канал &e + Op 1 attack + - Remove &unused channels - Видалити канали які &не використовуються + Op 1 decay + - - - FxMixer - Master - Головний + Op 1 sustain + - FX %1 - Ефект %1 + Op 1 release + - Volume - Гучність + Op 1 level + - Mute - Тиша + Op 1 level scaling + - Solo - Соло + Op 1 frequency multiplier + - - - FxMixerView - FX-Mixer - Мікшер Ефектів + Op 1 feedback + - FX Fader %1 - Повзунок Ефекту %1 + Op 1 key scaling rate + - Mute - Тиша + Op 1 percussive envelope + - Mute this FX channel - Тиша на цьому каналі Ефекту + Op 1 tremolo + - Solo - Соло + Op 1 vibrato + - Solo FX channel - Соло каналу ЕФ + Op 1 waveform + - - - FxRoute - Amount to send from channel %1 to channel %2 - Величина відправки з каналу %1 на канал %2 + Op 2 attack + - - - GigInstrument - Bank - Банк + Op 2 decay + - Patch - Патч + Op 2 sustain + - Gain - Підсилення + Op 2 release + - - - GigInstrumentView - Open other GIG file - Відкрити інший GIG файл + Op 2 level + - Click here to open another GIG file - Натисніть, щоб відкрити інший GIG файл + Op 2 level scaling + - Choose the patch - Вибрати патч + Op 2 frequency multiplier + - Click here to change which patch of the GIG file to use - Натисніть для зміни використовуваного патчу GIG файлу + Op 2 key scaling rate + - Change which instrument of the GIG file is being played - Змінити інструмент, який відтворює GIG файл + Op 2 percussive envelope + - Which GIG file is currently being used - Який GIG файл зараз використовується + Op 2 tremolo + - Which patch of the GIG file is currently being used - Який патч GIG файлу зараз використовується + Op 2 vibrato + - Gain - Підсилення + Op 2 waveform + - Factor to multiply samples by - Фактор множення семплів + FM + FM - Open GIG file - Відкрити GIG файл + Vibrato depth + - GIG Files (*.gig) - GIG Файли (*.gig) + Tremolo depth + - GuiApplication + OpulenzInstrumentView - Working directory - Робочий каталог LMMS + Attack + Вступ - The LMMS working directory %1 does not exist. Create it now? You can change the directory later via Edit -> Settings. - Робочий каталог LMMS (%1) не існує. Створити його? Пізніше ви зможете змінити його через Правку -> Параметри. + Decay + Згасання - Preparing UI - Підготовка користувацького інтерфейсу + Release + Зменшення - Preparing song editor - Підготовка музичного редактора + Frequency multiplier + Множник частоти + + + OscillatorObject - Preparing mixer - Підготовка міксера + Osc %1 volume + Гучність осциллятора %1 - Preparing controller rack - Підготовка стійки контролерів + Osc %1 panning + Стереобаланс для осциллятора %1 - Preparing project notes - Підготовка заміток проекту + Osc %1 coarse detuning + Підстроювання осциллятора %1 грубе - Preparing beat/bassline editor - Підготовка ритм/бас редактора + Osc %1 fine detuning left + Точне підстроювання лівого каналу осциллятора %1 - Preparing piano roll - Підготовка нотного редактора + Osc %1 fine detuning right + Підстроювання правого каналу осциллятора %1 тонка - Preparing automation editor - Підготовка редактора автоматизації + Osc %1 phase-offset + Зміщення фази осциллятора %1 - - - InstrumentFunctionArpeggio - Arpeggio - Арпеджіо + Osc %1 stereo phase-detuning + Підстроювання стерео-фази осциллятора %1 - Arpeggio type - Тип арпеджіо + Osc %1 wave shape + Гладкість сигналу осциллятора %1 - Arpeggio range - Діапазон арпеджіо - - - Arpeggio time - Період арпеджіо - - - Arpeggio gate - Шлюз арпеджіо + Modulation type %1 + Тип модуляції %1 - Arpeggio direction - Напрямок арпеджіо + Osc %1 waveform + Форма сигналу осциллятора %1 - Arpeggio mode - Режим арпеджіо + Osc %1 harmonic + Осц %1 гармонійний + + + PatchesDialog - Up - Вгору + Qsynth: Channel Preset + Q-Синтезатор: Канал передустановлено - Down - Вниз + Bank selector + Селектор банку - Up and down - Вгору та вниз + Bank + Банк - Random - Випадково + Program selector + Селектор програм - Free - Вільно + Patch + Патч - Sort - Сортувати + Name + І'мя - Sync - Синхронізувати + OK + ОК - Down and up - Вниз та вгору + Cancel + Скасувати + + + PatmanView - Skip rate - + Loop + Повтор - Miss rate - + Loop mode + Режим повтору - Cycle steps - + Tune + Підлаштувати - - - InstrumentFunctionArpeggioView - ARPEGGIO - ARPEGGIO + Tune mode + Тип підстроювання - 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. - Арпеджіо - різновид виконання акордів на фортепіано і струнних інструментах, який оживляє звучання. Струни таких інструментів граються перебором по акордах, як на арфі, коли звуки акорду слідують один за іншим. Типові арпеджіо - мажорні та мінорні тріади, серед яких можна вибрати й інші. + No file selected + Файл не вибрано - RANGE - RANGE + Open patch file + Відкрити патч-файл - Arpeggio range: - Діапазон арпеджіо: + Patch-Files (*.pat) + Патч-файли (*.pat) - octave(s) - Октав(а/и) + Open patch + + + + PeakControllerEffectControlDialog - Use this knob for setting the arpeggio range in octaves. The selected arpeggio will be played within specified number of octaves. - Використовуйте цю ручку, щоб встановити діапазон арпеджіо (в октавах). Обраний тип арпеджіо охоплюватиме вказану кількість октав. + BASE + БАЗА - TIME - TIME + Modulation amount: + Глибина модуляції: - Arpeggio time: - Період арпеджіо: + Attack: + Вступ: - ms - мс + Release: + Зменшення: - Use this knob for setting the arpeggio time in milliseconds. The arpeggio time specifies how long each arpeggio-tone should be played. - Регулювання періоду арпеджіо - час (в мілісекундах), який має звучати кожен тон арпеджіо. + AMNT + ГЛИБ - GATE - GATE + MULT + МНОЖ - Arpeggio gate: - Шлюз арпеджіо: + ATCK + ВСТУП - % - % + DCAY + ЗГАС - 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. - Регулювання шлюзу арпеджіо, показує процентну частку кожного тону арпеджіо, яка буде відтворена. Простий спосіб створювати стаккато-арпеджіо. + Treshold: + Поріг: - Chord: - Акорд: + TRSH + - Direction: - Напрямок: + Base: + - Mode: - Режим: + Amount multiplicator: + - SKIP - + Mute output + Заглушити вивід - Skip rate: - + Absolute value + + + + PeakControllerEffectControls - 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. - + Base value + Опорне значення - MISS - + Modulation amount + Глибина модуляції - Miss rate: - + Mute output + Заглушити вивід - The miss function will make the arpeggiator miss the intended note. - + Attack + Вступ - CYCLE - + Release + Зменшення - Cycle notes: - + Treshold + Поріг - note(s) - + Absolute value + - 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. - + Amount multiplicator + - InstrumentFunctionNoteStacking + QWidget - octave - Октава + Name: + І'мя: - Major - Мажорний + Maker: + Розробник: - Majb5 - Majb5 + Copyright: + Авторське право: - minor - мінорний + Requires Real Time: + Потрібна обробка в реальному часі: - minb5 - minb5 + Yes + Так - sus2 - sus2 + No + Ні - sus4 - sus4 + Real Time Capable: + Робота в реальному часі: - aug - aug + In Place Broken: + Замість зламаного: - augsus4 - augsus4 + Channels In: + Канали в: - tri - tri + Channels Out: + Канали з: - 6 - 6 + File: + Файл: - 6sus4 - 6sus4 + File: %1 + Файл: %1 + + + ReverbSCControlDialog - 6add9 - 6add9 + Input + Ввід - m6 - m6 + Size + - m6add9 - m6add9 + Size: + - 7 - 7 + Color + - 7sus4 - 7sus4 + Color: + - 7#5 - 7#5 + Output + Вивід - 7b5 - 7b5 + Input gain: + Вхідне підсилення: - 7#9 - 7#9 + Output gain: + Вихідне підсилення: + + + ReverbSCControls - 7b9 - 7b9 + Size + - 7#5#9 - 7#5#9 + Color + - 7#5b9 - 7#5b9 + Input gain + Вхідне підсилення - 7b5b9 - 7b5b9 + Output gain + Вихідне підсилення + + + SpectrumAnalyzerControlDialog - 7add11 - 7add11 + Linear spectrum + Лінійний спектр - 7add13 - 7add13 + Linear Y axis + Лінійна вісь ординат + + + SpectrumAnalyzerControls - 7#11 - 7#11 + Linear spectrum + Лінійний спектр - Maj7 - Maj7 + Linear Y axis + Лінійна вісь ординат - Maj7b5 - Maj7b5 + Channel mode + Режим каналу + + + TrackContainer - Maj7#5 - Maj7#5 + Cancel + Скасувати - Maj7#11 - Maj7#11 + Please wait... + Зачекайте будь-ласка ... - Maj7add13 - Maj7add13 + Importing MIDI-file... + Імпортую файл MIDI... + + + TripleOscillatorView - m7 - m7 + Synchronize oscillator 1 with oscillator 2 + Синхронізувати 1 осциллятор по 2 - m7b5 - m7b5 + Synchronize oscillator 2 with oscillator 3 + Синхронізувати осциллятор 2 і 3 - m7b9 - m7b9 + Osc %1 volume: + Гучність осциллятора %1: - m7add11 - m7add11 + Osc %1 panning: + Баланс для осциллятора %1: - m7add13 - m7add13 + Osc %1 coarse detuning: + Грубе підстроювання осциллятора %1: - m-Maj7 - m-Maj7 + semitones + півтон(а,ів) - m-Maj7add11 - m-Maj7add11 + Osc %1 fine detuning left: + Точне підстроювання лівого каналу осциллятора %1: - m-Maj7add13 - m-Maj7add13 + cents + Відсотки - 9 - 9 + Osc %1 fine detuning right: + Точна підстройка правого канала осциллятора %1: - 9sus4 - 9sus4 + Osc %1 phase-offset: + Зміщення фази осциллятора %1: - add9 - add9 + degrees + градуси - 9#5 - 9#5 + Osc %1 stereo phase-detuning: + Підстроювання стерео фази осциллятора %1: - 9b5 - 9b5 + Modulate phase of oscillator 1 by oscillator 2 + - 9#11 - 9#11 + Modulate amplitude of oscillator 1 by oscillator 2 + - 9b13 - 9b13 + Mix output of oscillators 1 & 2 + - Maj9 - Maj9 + Modulate frequency of oscillator 1 by oscillator 2 + - Maj9sus4 - Maj9sus4 + Modulate phase of oscillator 2 by oscillator 3 + - Maj9#5 - Maj9#5 + Modulate amplitude of oscillator 2 by oscillator 3 + - Maj9#11 - Maj9#11 + Mix output of oscillators 2 & 3 + - m9 - m9 + Modulate frequency of oscillator 2 by oscillator 3 + - madd9 - madd9 + Sine wave + Синусоїда - m9b5 - m9b5 + Triangle wave + - m9-Maj7 - m9-Maj7 + Saw wave + Зигзаг - 11 - 11 + Square wave + - 11b9 - 11b9 + Moog-like saw wave + - Maj11 - Maj11 + Exponential wave + Експоненціальна хвиля - m11 - m11 + White noise + Білий шум - m-Maj11 - m-Maj11 + User-defined wave + + + + VestigeInstrumentView - 13 - 13 + Show/hide GUI + Показати / приховати інтерфейс - 13#9 - 13#9 + Turn off all notes + Вимкнути всі ноти - 13b9 - 13b9 + DLL-files (*.dll) + Бібліотеки DLL (*.dll) - 13b5b9 - 13b5b9 + EXE-files (*.exe) + Програми EXE (*.exe) - Maj13 - Maj13 + Previous (-) + Попередній <-> - m13 - m13 + Save preset + Зберегти передустановку - m-Maj13 - m-Maj13 + Next (+) + Наступний <+> - Harmonic minor - Гармонійний мінор + Preset + Передустановка - Melodic minor - Мелодійний мінор + by + від - Whole tone - Цілий тон + - VST plugin control + - Управління VST плагіном - Diminished - Понижений + Open VST plugin + - Major pentatonic - Пентатонік major + Control VST plugin from LMMS host + - Minor pentatonic - Пентатонік major + Open VST plugin preset + - Jap in sen - Япон in sen + No VST plugin loaded + + + + VstEffectControlDialog - Major bebop - Major Бібоп + Show/hide + Показати/Сховати - Dominant bebop - Домінтний бібоп + Previous (-) + Попередній <-> - Blues - Блюз + Next (+) + Наступний <+> - Arabic - Арабська + Save preset + Зберегти налаштування - Enigmatic - Загадкова + Effect by: + Ефекти по: - Neopolitan - Неаполітанська + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /> + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /> - Neopolitan minor - Неаполітанський мінор + Control VST plugin from LMMS host + - Hungarian minor - Угорський мінор + Open VST plugin preset + + + + VstPlugin - Dorian - Дорійська + Loading plugin + Завантаження модуля - Phrygolydian - Фруголідійська + Open Preset + Відкрити предустановку - Lydian - Лідійська + Vst Plugin Preset (*.fxp *.fxb) + Передустановка VST плагіна (*.fxp *.fxb) - Mixolydian - Міксолідійська + : default + : основні - Aeolian - Еолійська + " + " - Locrian - Локріанська + ' + ' - Chords - Акорди + Save Preset + Зберегти предустановку - Chord type - Тип акорду + .fxp + .fxp - Chord range - Діапазон акорду + .FXP + .FXP - Minor - Мінор + .FXB + .FXB - Chromatic - Хроматична + .fxb + .fxb - Half-Whole Diminished - Напів-зниження - - - 5 - 5 - - - Phrygian dominant - + Please wait while loading VST plugin... + Будь ласка, зачекайте доки завантажується VST плагін ... - Persian - + The VST plugin %1 could not be loaded. + VST плагін %1 не може бути завантажено. - InstrumentFunctionNoteStackingView + WatsynInstrument - RANGE - ДІАПАЗОН + Volume A1 + Гучність A1 - Chord range: - Діапазон акорду: + Volume A2 + Гучність A2 - octave(s) - Октав[а/и] + Volume B1 + Гучність B1 - Use this knob for setting the chord range in octaves. The selected chord will be played within specified number of octaves. - Ця ручка змінює діапазон акорду, який буде містити вказане число октав. + Volume B2 + Гучність B2 - STACKING - Стиковка + Panning A1 + Баланс A1 - Chord: - Акорд: + Panning A2 + Баланс A2 - - - InstrumentMidiIOView - ENABLE MIDI INPUT - УВІМК MIDI ВХІД + Panning B1 + Баланс B1 - CHANNEL - CHANNEL + Panning B2 + Баланс B2 - VELOCITY - VELOCITY + Freq. multiplier A1 + Множник частоти A1 - ENABLE MIDI OUTPUT - УВІМК MIDI ВИВІД + Freq. multiplier A2 + Множник частоти A2 - PROGRAM - PROGRAM + Freq. multiplier B1 + Множник частоти B1 - MIDI devices to receive MIDI events from - MiDi пристрої-джерела подій + Freq. multiplier B2 + Множник частоти B2 - MIDI devices to send MIDI events to - MiDi пристрої для відправки подій на них + Left detune A1 + Ліве підстроювання A1 - NOTE - NOTE + Left detune A2 + Ліве підстроювання A2 - CUSTOM BASE VELOCITY - СВОЯ БАЗОВА ШВИДКІСТЬ + Left detune B1 + Ліве підстроювання B1 - Specify the velocity normalization base for MIDI-based instruments at 100% note velocity - Визначає базову швидкість нормальізаціі для MiDi інструментів при гучності ноти 100% + Left detune B2 + Ліве підстроювання B2 - BASE VELOCITY - БАЗОВА ШВИДКІСТЬ + Right detune A1 + Праве підстроювання A1 - - - InstrumentMiscView - MASTER PITCH - ОСНОВНА ТОНАЛЬНІСТЬ + Right detune A2 + Праве підстроювання A2 - Enables the use of Master Pitch - Включає використання основної тональності + Right detune B1 + Праве підстроювання B1 - - - InstrumentSoundShaping - VOLUME - VOLUME + Right detune B2 + Праве підстроювання B2 - Volume - Гучність + A-B Mix + A-B Мікс - CUTOFF - CUTOFF + A-B Mix envelope amount + A-B Мікс кіл. обвідної - Cutoff frequency - Зріз частоти + A-B Mix envelope attack + A-B Мікс атаки обвідної - RESO - RESO + A-B Mix envelope hold + A-B Мікс утримання обвідної - Resonance - Резонанс + A-B Mix envelope decay + A-B Мікс згасання обвідної - Envelopes/LFOs - Огибание/LFO + A1-B2 Crosstalk + Перехресні перешкоди A1-B2 - Filter type - Тип фільтру + A2-A1 modulation + Модуляція A2-A1 - Q/Resonance - Кіл./Резонансу + B2-B1 modulation + Модуляція B2-B1 - LowPass - Низ.ЧФ + Selected graph + Обраний графік + + + WatsynView - HiPass - Вис.ЧФ + Select oscillator A1 + Виберіть генератор A1 - BandPass csg - Серед.ЧФ csg + Select oscillator A2 + Виберіть генератор A2 - BandPass czpg - Серед.ЧФ czpg + Select oscillator B1 + Виберіть генератор B1 - Notch - Смуго-загороджуючий + Select oscillator B2 + Виберіть генератор B2 - Allpass - Всі проходять + Mix output of A2 to A1 + Змішати виходи A2 до A1 - Moog - Муг + Mix output of B2 to B1 + Змішати виходи В2 до В1 - 2x LowPass - 2х Низ.ЧФ + Draw your own waveform here by dragging your mouse on this graph. + Тут ви можете малювати власний сигнал. - RC LowPass 12dB - RC Низ.ЧФ 12дБ + Load waveform + Завантаження форми звуку - RC BandPass 12dB - RC Серед.ЧФ 12 дБ + Phase left + Фаза зліва - RC HighPass 12dB - RC Вис.ЧФ 12дБ + Phase right + Фаза праворуч - RC LowPass 24dB - RC Низ.ЧФ 24дБ + Normalize + Нормалізувати - RC BandPass 24dB - RC Серед.ЧФ 24дБ + Invert + Інвертувати - RC HighPass 24dB - RC Вис.ЧФ 24дБ + Smooth + Згладити - Vocal Formant Filter - Фільтр Вокальної форманти + Sine wave + Синусоїда - 2x Moog - 2x Муг + Triangle wave + Трикутна хвиля - SV LowPass - SV Низ.ЧФ + Square wave + Квадратна хвиля - SV BandPass - SV Серед.ЧФ + Volume + Гучність - SV HighPass - SV Вис.ЧФ + Panning + Баланс - SV Notch - SV Смуго-заг + Freq. multiplier + Множник частоти - Fast Formant - Швидка форманта + Left detune + Ліве підстроювання - Tripole - Тріполі + cents + відсотків - - - InstrumentSoundShapingView - TARGET - ЦЕЛЬ + Right detune + Праве підстроювання - 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...! - Ця вкладка дозволяє вам налаштувати обвідні. Вони дуже важливі для налаштування звучання. -Наприклад, за допомогою обвідної гучності ви можете задати залежність гучності звучання від часу. Якщо вам знадобиться емулювати м'які струнні, просто задайте більше часу наростання і зникнення звуку. За допомогою обвідних і низькочастотного осциллятора (LFO) ви в кілька кліків миші зможете створити просто неймовірні звуки! + A-B Mix + A-B Мікс - FILTER - ФИЛЬТР + Mix envelope amount + Мікс кількості обвідної - 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. - Здесь вы можете выбрать фильтр для дорожки этого инструмента. Фильтры могут довольно сильно менять звучание. + Mix envelope attack + A-B Мікс вступу обвідної - Hz - Гц + Mix envelope hold + A-B Мікс утримання обвідної - 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... - Эта ручка устанавливает частоту среза для выбранного фильтра. К примеру, ФНЧ будет срезать сигнал на частотах выше частоты среза, полосно-пропускающий фильтр будет хорошо пропускать сигнал только на заданной частоте и так далее... + Mix envelope decay + A-B Мікс згасання обвідної - RESO - РЕЗО + Crosstalk + Перехід - Resonance: - Резонанс: + Modulate amplitude of A1 by output of A2 + - 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. - Эта ручка задаёт количество резонанса для фильтра, этим определяется насколько нужно усилить ближайшие к отрезанным частоты. + Ring modulate A1 and A2 + - FREQ - ЧАСТ + Modulate phase of A1 by output of A2 + - cutoff frequency: - Срез частот: + Modulate amplitude of B1 by output of B2 + - Envelopes, LFOs and filters are not supported by the current instrument. - Обвідні, LFO і фільтри не підтримуються цим інструментом. + Ring modulate B1 and B2 + - - - InstrumentTrack - unnamed_track - безіменна_доріжка + Modulate phase of B1 by output of B2 + - Volume - Гучність + Load a waveform from a sample file + - Panning - Стерео + Shift phase by -15 degrees + - Pitch - Тональність + Shift phase by +15 degrees + - FX channel - Канал ЕФ + Saw wave + Зигзаг + + + Xpressive - Default preset - Основна предустановка + Selected graph + Обраний графік - With this knob you can set the volume of the opened channel. - Регулювання гучності поточного каналу. + A1 + - Base note - Опорна нота + A2 + - Pitch range - Діапазон тональності + A3 + - Master Pitch - Основна тональність + W1 smoothing + - - - InstrumentTrackView - Volume - Гучність + W2 smoothing + - Volume: - Гучність: + W3 smoothing + - VOL - ГУЧН + Panning 1 + - Panning - Баланс + Panning 2 + - Panning: - Баланс: + Rel trans + + + + XpressiveView - PAN - БАЛ + Draw your own waveform here by dragging your mouse on this graph. + Тут ви можете малювати власний сигнал. - MIDI - MIDI + Select oscillator W1 + - Input - Вхід + Select oscillator W2 + - Output - Вихід + Select oscillator W3 + - FX %1: %2 - ЕФ %1: %2 + Select output O1 + - - - InstrumentTrackWindow - GENERAL SETTINGS - ОСНОВНІ НАЛАШТУВАННЯ + Select output O2 + - Instrument volume - Гучність інструменту + Open help window + - Volume: - Гучність: + Sine wave + Синусоїда - VOL - ГУЧН + Moog-saw wave + - Panning - Баланс + Exponential wave + Експоненціальна хвиля - Panning: - Стереобаланс: + Saw wave + Зигзаг - PAN - БАЛ + User-defined wave + - Pitch - Тональність + Triangle wave + - Pitch: - Тональність: + Square wave + - cents - відсотків + White noise + Білий шум - PITCH - ТОН + WaveInterpolate + - FX channel - Канал ЕФ + ExpressionValid + - FX - ЕФ + General purpose 1: + - Save preset - Зберегти передустановку + General purpose 2: + - XML preset file (*.xpf) - XML файл налаштувань (*.xpf) + General purpose 3: + - Pitch range (semitones) - Діапазон тональності (півтону) + O1 panning: + - RANGE - ДІАПАЗОН + O2 panning: + - Save current instrument track settings in a preset file - Зберегти поточну інструментаьную доріжку в файл предустановок + Release transition: + - 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. - Нитисніть тут, щоб зберегти налаштування поточної інстр. доріжки в файл предустановок. Пізніше можна завантажити цю передустановку подвійним кліком в браузері предустановок. + Smoothness + + + + ZynAddSubFxInstrument - Use these controls to view and edit the next/previous track in the song editor. - Використовуйте ці елементи керування для перегляду і редагування наступного/попереднього треку в музичному редакторі. + Portamento + Портаменто - SAVE - ЗБЕРЕГТИ + Bandwidth + Ширина смуги - Envelope, filter & LFO - + Filter frequency + - Chord stacking & arpeggio - + Filter resonance + - Effects - + FM gain + - MIDI settings - Параметри MIDI + Resonance center frequency + - Miscellaneous - + Resonance bandwidth + - Plugin - + Forward MIDI control change events + - Knob + ZynAddSubFxView - Set linear - Встановити лінійний + Show GUI + Показати інтерфейс - Set logarithmic - Встановити логарифмічний + Portamento: + Портаменто: - Please enter a new value between %1 and %2: - Введіть нове значення від %1 до %2: + PORT + PORT - Please enter a new value between -96.0 dBFS and 6.0 dBFS: - Введіть нове значення від -96,0 дБFS до 6,0 дБFS: + FREQ + FREQ - - - LadspaControl - Link channels - Зв'язати канали + RES + RES - - - LadspaControlDialog - Link Channels - Зв'язати канали + Bandwidth: + Смуга пропускання: - Channel - Канал + BW + BW - - - LadspaControlView - Link channels - Зв'язати канали + FM GAIN + FM GAIN - Value: - Значення: + Resonance center frequency: + Частота центру резонансу: - Sorry, no help available. - Вибачте, довідки немає. + RES CF + RES CF - - - LadspaEffect - Unknown LADSPA plugin %1 requested. - Запитаний невідомий модуль LADSPA «%1». + Resonance bandwidth: + Ширина смуги резонансу: - - - LcdSpinBox - Please enter a new value between %1 and %2: - Введіть нове значення від %1 до %2: + RES BW + RES BW - - - LeftRightNav - Previous - Попередній + Filter frequency: + - Next - Наступний + Filter resonance: + - Previous (%1) - Попередній (%1) + FM gain: + - Next (%1) - Наступний (%1) + Forward MIDI control changes + - LfoController + audioFileProcessor - LFO Controller - Контролер LFO + Amplify + Підсилення - Base value - Основне значення + Start of sample + Початок запису - Oscillator speed - Швидкість хвилі + End of sample + Кінець запису - Oscillator amount - Розмір хвилі + Reverse sample + Перевернути запис - Oscillator phase - Фаза хвилі + Stutter + Заїкання - Oscillator waveform - Форма хвилі + Loopback point + Точка повернення з повтору - Frequency Multiplier - Множник частоти + Loop mode + Режим повтору - - - LfoControllerDialog - LFO - LFO + Interpolation mode + Режим Інтерполяції - LFO Controller - Контролер LFO + None + Нічого - BASE - БАЗА + Linear + Лінійний - Base amount: - Кіл-ть бази: + Sinc + Синхронізований - todo - доробити + Sample not found: %1 + Запис не знайдено: %1 + + + bitInvader - SPD - ШВИД + Sample length + + + + bitInvaderView - LFO-speed: - Швидкість LFO: + Sine wave + Синусоїда - Use this knob for setting speed of the LFO. The bigger this value the faster the LFO oscillates and the faster the effect. - Ця ручка встановлює швидкість LFO. Чим більше значення, тим більша частота осциллятора. + Triangle wave + Трикутник - Modulation amount: - Кількість модуляції: + Saw wave + Зигзаг - 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. - Ця ручка встановлює глибину модуляції для LFO. Чим більше значення, тим більшою мірою обрана характеристика (н-д, гучність або частота зрізу) буде залежати від ГНЧ (LFO). + Square wave + Квадрат - PHS - ФАЗА + Interpolation + Інтерполяція - Phase offset: - Зсув фази: + Normalize + Нормалізувати - degrees - градуси + Draw your own waveform here by dragging your mouse on this graph. + Тут ви можете малювати власний сигнал. - 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. - Ця ручка встановлює початкову фазу НизькоЧастотного Осциллятора (LFO), т. б. Точку, з якої осциллятор починає виробляти сигнал. Наприклад, якщо ви задали синусоїдальну форму сигналу і початкову фазу 180º, хвиля спочатку піде вниз, а не вгору, так само як і для квадратної хвилі. + Sample length + - Click here for a sine-wave. - Синусоїда. + White noise + Білий шум - Click here for a triangle-wave. - Трикутник. + User-defined wave + - Click here for a saw-wave. - Зигзаг. + Smooth waveform + Згладжений сигнал + + + dynProcControlDialog - Click here for a square-wave. - Квадрат. + INPUT + ВХІД - Click here for an exponential wave. - Експонента. + Input gain: + Вхідне підсилення: - Click here for white-noise. - Білий шум. + OUTPUT + ВИХІД - Click here for a user-defined shape. -Double click to pick a file. - Натисніть тут для визначення своєї форми. -Подвійне натискання для вибору файлу. + Output gain: + Вихідне підсилення: - Click here for a moog saw-wave. - Натисніть для зигзагоподібної муг-хвилі. + ATTACK + ВСТУП - AMNT - ГЛИБ + Peak attack time: + Час пікової атаки: - - - LmmsCore - Generating wavetables - Генерування синтезатора звукозаписів + RELEASE + ЗМЕНШЕННЯ - Initializing data structures - Ініціалізація структур даних + Peak release time: + Час відпуску піку: - Opening audio and midi devices - Відкриття аудіо та міді пристроїв + Process based on the maximum of both stereo channels + Процес заснований на максимумі від обох каналів - Launching mixer threads - Запуск потоків міксера + Process based on the average of both stereo channels + Процес заснований на середньому обох каналів - - - MainWindow - &New - &N Новий + Process each stereo channel independently + Обробляє кожен стерео канал незалежно - &Open... - &O Відкрити... + Reset wavegraph + - &Save - &S Зберегти + Smooth wavegraph + - Save &As... - &A Зберегти як... + Increase wavegraph amplitude by 1 dB + - Import... - Імпорт... + Decrease wavegraph amplitude by 1 dB + - E&xport... - &X Експорт ... + Stereo mode: maximum + - &Quit - &Q Вийти + Stereo mode: average + - &Edit - &E Редагування + Stereo mode: unlinked + + + + dynProcControls - Settings - Параметри + Input gain + Вхідне підсилення - &Tools - &T Сервіс + Output gain + Вихідне підсилення - &Help - &H Довідка + Attack time + Час вступу - Help - Довідка + Release time + Час зменшення - What's this? - Що це? + Stereo mode + Стерео режим + + + kickerInstrument - About - Про програму + Start frequency + Початкова частота - Create new project - Створити новий проект + End frequency + Кінцева частота - Create new project from template - Створити новий проект по шаблону + Gain + Підсилення - Open existing project - Відкрити існуючий проект + Length + Довжина - Recently opened projects - Нещодавні проекти + Noise + Шум - Save current project - Зберегти поточний проект + Click + Натисніть - Export current project - Експорт проекту + Start from note + Почати з замітки - Song Editor - Музичний редактор + End to note + Закінчити заміткою - 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. - Показати чи сховати музичний редактор. З його допомогою ви можете редагувати композицію і задавати час відтворення кожної доріжки. -Також ви можете вставляти і пересувати записи прямо у списку відтворення. + Start distortion + - Beat+Bassline Editor - Редактор шаблонів + End distortion + - 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. - Показати чи сховати ритм-бас редактор. Він необхідний для установки ритму, відкриття, додавання і видалення каналів, а також вирізання, копіювання і вставки ритм-бас шаблонів і схожих речей. + Envelope slope + - Piano Roll - Нотний редактор + Frequency slope + + + + kickerInstrumentView - Click here to show or hide the Piano-Roll. With the help of the Piano-Roll you can edit melodies in an easy way. - Запуск редатора нот. З його допомогою ви можете легко редагувати мелодії. + Start frequency: + Початкова частота: - Automation Editor - Редактор автоматизації + End frequency: + Кінцева частота: - 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. - Показати / сховати вікно редактора автоматизації. З його допомогою ви можете легко редагувати динаміку обраних величин. + Gain: + Підсилення: - FX Mixer - Мікшер Ефектів + Click: + Натиснення: - 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. - Сховати / показати мікшер ефектів. Він є потужним інструментом для управління ефектами. Ви можете вставляти ефекти в різні канали. + Noise: + Шум: - Project Notes - Примітки проекту + Frequency slope: + - Click here to show or hide the project notes window. In this window you can put down your project notes. - Ця кнопка показує / ховає вікно з нотатками. У цьому вікні ви можете поміщати будь-які коментарі до своєї композиції. + Envelope length: + - Controller Rack - Стійка контролерів + Envelope slope: + - Untitled - Без назви + Start distortion: + - LMMS %1 - LMMS %1 + End distortion: + + + + ladspaBrowserView - Project not saved - Проект не збережений + Available Effects + Доступні ефекти - The current project was modified since last saving. Do you want to save it now? - Проект був змінений. Зберегти його зараз? + Unavailable Effects + Недоступні ефекти - Help not available - Довідка недоступна + Instruments + Інструменти - Currently there's no help available in LMMS. -Please visit http://lmms.sf.net/wiki for documentation on LMMS. - Поки що довідка для LMMS не написана. -Ймовірно, Ви зможете знайти потрібні матеріали на http://lmms.sf.net/wiki. + Analysis Tools + Аналізатори - LMMS (*.mmp *.mmpz) - LMMS (*.mmp *.mmpz) + Don't know + Невідомі - Version %1 - Версія %1 + Type: + Тип: + + + ladspaDescription - Configuration file - Файл налаштувань + Plugins + Модулі - Error while parsing configuration file at line %1:%2: %3 - Помилка під час обробки файлу налаштувань в рядку %1:%2:%3 + Description + Опис + + + ladspaPortDialog - Volumes - Гучності + Ports + Порти - Undo - Скасувати + Name + І'мя - Redo - Повторити + Rate + Частота вибірки - My Projects - Мої проекти + Direction + Напрямок - My Samples - Мої записи + Type + Тип - My Presets - Мої передустановки + Min < Default < Max + Менше < Стандарт <Більше - My Home - Моя домашня тека + Logarithmic + Логарифмічний - My Computer - Мій комп'ютер + SR Dependent + Залежність від SR - &File - &Файл + Audio + Аудіо - &Recently Opened Projects - &Нещодавно відкриті проекти + Control + Управління - Save as New &Version - Зберегти як нову &Версію + Input + Ввід - E&xport Tracks... - &Експортувати треки ... + Output + Вивід - Online Help - Онлайн Допомога + Toggled + Увімкнено - What's This? - Що це? + Integer + Ціле - Open Project - Відкрити проект + Float + Дробове - Save Project - Зберегти проект + Yes + Так + + + lb302Synth - Project recovery - Відновлення проекту + VCF Cutoff Frequency + Частота зрізу VCF - 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? - Присутній файл відновлення. Схоже, остання сесія не закінчилася належним чином або інший екземпляр LMMS вже запущений. Ви хочете, відновити проект цієї сесії? + VCF Resonance + Посилення VCF - Recover - Відновлення + VCF Envelope Mod + Модуляція обвідної VCF - Recover the file. Please don't run multiple instances of LMMS when you do this. - Відновлення файлу. Будь ласка, не запускайте кілька копій LMMS під час цієї операції. + VCF Envelope Decay + Спад обвідної VCF - Discard - Відкинути + Distortion + Спотворення - Launch a default session and delete the restored files. This is not reversible. - Запуск за замовчуванням з видаленням файла відновлення. Ця дія не відворотня. + Waveform + Форма хвилі - Preparing plugin browser - Підготовка браузера плагінів + Slide Decay + Зміщення згасання - Preparing file browsers - Підготовка переглядача файлів + Slide + Зміщення - Root directory - Кореневий каталог + Accent + Акцент - Loading background artwork - Завантаження фонового зображення + Dead + Глухо - New from template - Новий проект по шаблону + 24dB/oct Filter + 24дБ/окт фільтр + + + lb302SynthView - Save as default template - Зберегти як шаблон за замовчуванням + Cutoff Freq: + Частота зрізу: - &View - &V Перегляд - - - 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 проект - - - LMMS Project Template - Шаблон LMMS проекту - - - Overwrite default template? - Переписати шаблон за замовчуванням? - - - This will overwrite your current default template. - Це перезапише поточний шаблон за замовчуванням. - - - Smooth scroll - Плавне прокручування - - - Enable note labels in piano roll - Включити позначення нот у музичному редакторі - - - Save project template - - - - Volume as dBFS - Відображати гучність в децибелах - - - 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! - - - - Export &MIDI... - Експорт в &MIDI ... - - - - MeterDialog - - Meter Numerator - Шкала чисел - - - Meter Denominator - Шкала поділів - - - TIME SIG - ПЕРІОД - - - - MeterModel - - Numerator - Чисельник - - - Denominator - Знаменник - - - - MidiController - - MIDI Controller - Контролер MIDI - - - unnamed_midi_controller - нерозпізнаний міді контролер - - - - 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. - Ви не встановили SoundFont за замовчуванням в налаштуваннях (Правка-> Налаштування), тому після імпорту міді файлу звук відтворюватися не буде. -Вам слід завантажити основний MiDi SoundFont, вказати його в налаштуваннях і спробувати знову. - - - 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. - Ви не увімкнули підтримку програвача SoundFont2 при компіляції LMMS, він використовується для додавання основного звуку в імпортовані Міді файли, тому після імпорту цього міді файлу звуку не буде. - - - Track - Трек - - - - MidiJack - - JACK server down - When JACK(JACK Audio Connection Kit) disconnects, it will show the following message (title) - JACK-сервер не доступний - - - The JACK server seems to be shuted down. - When JACK(JACK Audio Connection Kit) disconnects, it will show the following message (dialog message) - - - - - MidiPort - - Input channel - Вхід - - - Output channel - Вихід - - - Input controller - Контролер входу - - - Output controller - Контролер виходу - - - Fixed input velocity - Постійна швидкість введення - - - Fixed output velocity - Постійна швидкість виведення - - - Output MIDI program - Програма для виведення MiDi - - - Receive MIDI-events - Приймати події MIDI - - - Send MIDI-events - Відправляти події MIDI - - - Fixed output note - Постійний вихід нот - - - Base velocity - Базова швидкість - - - - MidiSetupWidget - - DEVICE - ПРИСТРІЙ - - - - MonstroInstrument - - Osc 1 Volume - Гучність осциллятора 1 - - - Osc 1 Panning - Баланс осциллятора 1 - - - Osc 1 Coarse detune - Грубе підстроювання осциллятора 1 - - - Osc 1 Fine detune left - Точне підстроювання лівого каналу осциллятора 1 - - - Osc 1 Fine detune right - Точне підстроювання правого каналу осциллятора 1 - - - Osc 1 Stereo phase offset - Зміщення стерео-фази осциллятора 1 - - - Osc 1 Pulse width - Довжина імпульсу осциллятора 1 - - - Osc 1 Sync send on rise - Синхронізація підйому осциллятора 1 - - - Osc 1 Sync send on fall - Синхронізація падіння осциллятора 1 - - - Osc 2 Volume - Гучність осциллятора 2 - - - Osc 2 Panning - Баланс осциллятора 2 - - - Osc 2 Coarse detune - Грубе підстроювання осциллятора 2 - - - Osc 2 Fine detune left - Точне підстроювання лівого каналу осциллятора 2 - - - Osc 2 Fine detune right - Точне підстроювання правого каналу осциллятора 2 - - - Osc 2 Stereo phase offset - Зміщення стерео-фази осциллятора 2 - - - Osc 2 Waveform - Форма сигналу осциллятора 2 - - - Osc 2 Sync Hard - Жорстка синхронізація осциллятора 2 - - - Osc 2 Sync Reverse - Верерс синхронізація осциллятора 2 - - - Osc 3 Volume - Гучність осциллятора 3 - - - Osc 3 Panning - Баланс осциллятора 3 - - - Osc 3 Coarse detune - Грубе підстроювання осциллятора 3 - - - Osc 3 Stereo phase offset - Зміщення стерео-фази осциллятора 3 - - - Osc 3 Sub-oscillator mix - Змішення суб-генератора осциллятора 3 - - - Osc 3 Waveform 1 - Форма 1 сигналу осциллятора 3 - - - Osc 3 Waveform 2 - Форма 2 сигналу осциллятора 3 - - - Osc 3 Sync Hard - Жорстка синхронізація осциллятора 3 - - - Osc 3 Sync Reverse - Верерс синхронізація осциллятора 3 - - - LFO 1 Waveform - Форма сигналу LFO 1 - - - LFO 1 Attack - Вступ LFO 1 - - - LFO 1 Rate - Темп LFO 1 - - - LFO 1 Phase - Фаза LFO 1 - - - LFO 2 Waveform - Форма сигналу LFO 2 - - - LFO 2 Attack - Вступ LFO 2 - - - LFO 2 Rate - Темп LFO 2 - - - LFO 2 Phase - Фаза LFO 2 - - - Env 1 Pre-delay - Затримка обвідної 1 - - - Env 1 Attack - Вступ обвідної 1 - - - Env 1 Hold - Утримання обвідної 1 - - - Env 1 Decay - Згасання обвідної 1 - - - Env 1 Sustain - Витримка обвідної 1 - - - Env 1 Release - Зменшення обвідної 1 - - - Env 1 Slope - Нахил обвідної 1 - - - Env 2 Pre-delay - Затримка обвідної 2 - - - Env 2 Attack - Вступ обвідної 2 - - - Env 2 Hold - Утримання обвідної 2 - - - Env 2 Decay - Згасання обвідної 2 - - - Env 2 Sustain - Витримка обвідної 2 - - - Env 2 Release - Зменшення обвідної 2 - - - Env 2 Slope - Нахил обвідної 2 - - - Osc2-3 modulation - Модуляція осцилляторів 2-3 - - - Selected view - Перегляд обраного - - - Vol1-Env1 - Гучн1-Обв1 - - - Vol1-Env2 - Гучн1-Обв2 - - - Vol1-LFO1 - Гучн1-LFO1 - - - Vol1-LFO2 - Гучн1-LFO2 - - - Vol2-Env1 - Гучн2-Обв1 - - - Vol2-Env2 - Гучн2-Обв2 - - - Vol2-LFO1 - Гучн2-LFO1 - - - Vol2-LFO2 - Гучн2-LFO2 - - - Vol3-Env1 - Гучн3-Обв1 - - - Vol3-Env2 - Гучн3-Обв2 - - - Vol3-LFO1 - Гучн3-LFO1 - - - Vol3-LFO2 - Гучн3-LFO2 - - - Phs1-Env1 - Фаз1-Обв1 - - - Phs1-Env2 - Фаз1-Обв2 - - - Phs1-LFO1 - Фаз1-LFO1 - - - Phs1-LFO2 - Фаз1-LFO2 - - - Phs2-Env1 - Фаз2-Обв1 - - - Phs2-Env2 - Фаз2-Обв2 - - - Phs2-LFO1 - Фаз2-LFO1 - - - Phs2-LFO2 - Фаз2-LFO2 - - - Phs3-Env1 - Фаз3-Обв1 - - - Phs3-Env2 - Фаз3-Обв2 - - - Phs3-LFO1 - Фаз3-LFO1 - - - Phs3-LFO2 - Фаз3-LFO2 - - - Pit1-Env1 - Тон1-Обв1 - - - Pit1-Env2 - Тон1-Обв2 - - - Pit1-LFO1 - Тон1-LFO1 - - - Pit1-LFO2 - Тон1-LFO2 - - - Pit2-Env1 - Тон2-Обв1 - - - Pit2-Env2 - Тон2-Обв2 - - - Pit2-LFO1 - Тон2-LFO1 - - - Pit2-LFO2 - Тон2-LFO2 - - - Pit3-Env1 - Тон3-Обв1 - - - Pit3-Env2 - Тон3-Обв2 - - - Pit3-LFO1 - Тон3-LFO1 - - - Pit3-LFO2 - Тон3-LFO2 - - - PW1-Env1 - PW1-Обв1 - - - PW1-Env2 - PW1-Обв2 - - - PW1-LFO1 - PW1-LFO1 - - - PW1-LFO2 - PW1-LFO2 - - - Sub3-Env1 - Sub3-Обв1 - - - Sub3-Env2 - Sub3-Обв2 - - - Sub3-LFO1 - Sub3-LFO1 - - - Sub3-LFO2 - 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 - Випадкове зглажування - - - - 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. - -Each modulation target has 4 knobs, one for each modulator. By default the knobs are at 0, which means no modulation. Turning a knob to 1 causes that modulator to affect the modulation target as much as possible. Turning it to -1 does the same, but the modulation is inversed. - Матричний вид містить матрицю модуляції. Тут можна визначити модуляційні відношення між різними операторами. Кожен чутний оператор (осциллятори 1-3) мають 3-4 властивості, які можна модулювати будь-якими модуляторами. Використовуючи більше модуляцій збільшується навантаження на процесор. - -Вид ділиться на цілі модуляції, згруповані на цільовий осциллятор. Доступні цілі: гучність, тон, фаза, ширина пульсація і відношення з підлеглим (під-) осциллятором. Відзначимо що деякі цілі визначені тільки для одного осциллятора. - -Кожна ціль модуляції має 4 регулятори, по одному на кожен модулятор. За замовчуванням регулятори встановлені на 0, тобто без модуляції. Включення регуляторів на 1 веде до того, що модулятор впливає на ціль модуляції на стільки на скільки це можливо. Включення його в -1 робить те ж, але зі зворотньою модуляцією. - - - Mix Osc2 with Osc3 - Змішати Осц2 з Осц3 - - - Modulate amplitude of Osc3 with Osc2 - Модулювати амплітуду осциллятора 3 сигналом з осц2 - - - Modulate frequency of Osc3 with Osc2 - Модулювати частоту осциллятора 3 сигналом з осц2 - - - Modulate phase of Osc3 with Osc2 - Модулювати фазу Осц3 осциллятором2 - - - The CRS knob changes the tuning of oscillator 1 in semitone steps. - Регулятор CRS змінює налаштування осциллятора 1 у розмірі півтону. - - - The CRS knob changes the tuning of oscillator 2 in semitone steps. - Регулятор CRS змінює налаштування осциллятора 2 у розмірі півтону. - - - The CRS knob changes the tuning of oscillator 3 in semitone steps. - Регулятор CRS змінює налаштування осциллятора 3 у розмірі півтону. - - - 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. - FTL і FTR змінюють підстроювання осциллятора для лівого і правого каналів відповідно. Вони можуть додати стерео розстроювання осциллятора, яке розширює стерео картину і створює ілюзію космосу. - - - The SPO knob modifies the difference in phase between left and right channels. Higher difference creates a wider stereo image. - Регулятор SPO змінює фазову різницю між лівим і правим каналами. Висока різниця створює більш широку стерео картину. - - - 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. - PW регулятор контролює ширину пульсацій, також відому як робочий цикл осциллятора 1. Осциллятор 1 це цифровий імпульсний хвильовий генератор, він не відтворює сигнал з обмеженою смугою, це означає, що його можна використовувати як чутний осциллятор, але це призведе до накладення сигналів (або згладжування) . Його можна використовувати й як не чутне джерело синхронізуючого сигналу, для використання в синхронізації осцилляторів 2 і 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. - Надсилати синхронізацію при підвищенні: при включенні, сигнал синхронізації надсилається кожен раз коли стан осциллятора 1 змінюється з низького на високий, тобто коли амплітуда змінюється від -1 до 1. -Тон осциллятора 1, фаза і ширина пульсацій може впливати на час синхронізації, але гучність не має ефекту. Сигнал синхронізації надсилається незалежно для лівого і правого каналів. - - - 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. - Надсилати синхронізацію при зниженні: при включенні, сигнал синхронізації надсилається кожен раз коли стан осциллятора 1 змінюється з виского на низьке, тобто коли амплітуда змінюється від 1 до -1. -Тон осциллятора 1, фаза і ширина пульсацій може впливати на час синхронізації, але гучність не має ефекту. Сигнал синхронізації надсилається незалежно для лівого і правого каналів. - - - Hard sync: Every time the oscillator receives a sync signal from oscillator 1, its phase is reset to 0 + whatever its phase offset is. - Жорстка синхронізація: Кожен раз при отриманні осциллятором сигналу синхронізації від осциллятора 1, його фаза скидається до 0 + його межа фази, якою б вона не була. - - - Reverse sync: Every time the oscillator receives a sync signal from oscillator 1, the amplitude of the oscillator gets inverted. - Реверс синхронізація: Кожен раз при отриманні сигналу синхронізації від осциллятора 1, амплітуда осциллятора перевертається. - - - Choose waveform for oscillator 2. - Вибрати форму хвилі для осциллятора 2. - - - Choose waveform for oscillator 3's first sub-osc. Oscillator 3 can smoothly interpolate between two different waveforms. - Виберіть форму хвилі для першого додаткового осциллятора осциллятора 3. Осциллятор 3 може м'яко переходити між двома різними хвилями. - - - Choose waveform for oscillator 3's second sub-osc. Oscillator 3 can smoothly interpolate between two different waveforms. - Виберіть форму хвилі для другого додаткового осциллятора осциллятора 3. Осциллятор 3 може м'яко переходити між двома різними хвилями. - - - 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. - SUB змінює змішування двох дод осцилляторів осциллятора 3. Кожен дод. осц. може бути встановлений для створення різних хвиль і осциллятор 3 може м'яко переходити між ними. Усі вхідні модуляції для осциллятора 3 застосовуються на обидва дод.осц./хвилі одним і тим же чином. - - - 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. - На додаток до виділених модуляторів Монстро дозволяє виходу осциллятора 2 модулювати осцллятор 3. - -Змішаний (Mix) режим означає без модуляції: виходи осцилляторів просто змішуються один з одним. - - - 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. - На додаток до виділених модуляторів Монстро дозволяє виходу осциллятора 2 модулювати осцллятор 3. - -AM режим значить Амплітуда Модуляції: Осциллятори 2 модулює амплітуду (гучність) осциллятора 3. - - - 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. - На додаток до виділених модуляторів Монстро дозволяє виходу осциллятора 2 модулювати осцллятор 3. - -FM (ЧМ) режим означає Частотна Модуляція: осциллятор 2 модулює частоту (pitch, тональність) осциллятора 3. Частота модуляції відбувається у фазі модуляції, яка дає більш стабільний загальний тон, ніж "чиста" частотна модуляція. - - - 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. - На додаток до виділених модуляторів Монстро дозволяє виходу осциллятора 2 модулювати осцллятор 3. - -PM (ФМ) режим означає Фазова Модуляція: Осциллятор 2 модулює фазу осциллятора 3. Це відрізняється від частотної модуляції тим, що зміни фаз не сумуються. - - - 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... - Виберіть форму хвилі для LFO 1 (НизькоЧастотнийГенератор). -"Random" (Випадково) і "Random-smooth" (випадкове згладжування) - це спеціальні хвилі: вони створюють випадковий сигнал, де частота LFO контролює як часто змінюється стан генератора (LFO). -Згладжена версія переходить між цими станами з косинусоїдальною інтерполяцією. Ці випадкові режими можуть бути використані, щоб дати "життя" вашим налаштуванням - додати трішки аналогової непередбачуваності ... - - - 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... - Виберіть форму хвилі для LFO 2 (НизкоЧастотнийГенератор). -"Random" (Випадково) і "Random-smooth" (випадкове згладжування) - це спеціальні хвилі: вони створюють випадковий сигнал, де частота LFO контролює як часто змінюється стан генератора (LFO). -Згладжена версія переходить між цими станами з косинусоїдальною інтерполяцією. Ці випадкові режими можуть бути використані, щоб дати "життя" вашим налаштуванням - додати трішки аналогової непередбачуваності ... - - - Attack causes the LFO to come on gradually from the start of the note. - Атака відповідає за плавність поведінки LFO від початку ноти. - - - Rate sets the speed of the LFO, measured in milliseconds per cycle. Can be synced to tempo. - Rate (Частота) встановлює швидкість LFO, вимірювану в мілісекундах за цикл. Може синхронізуватися з темпом. - - - PHS controls the phase offset of the LFO. - PHS контролює зсув фази LFO (НЧГ). - - - PRE, or pre-delay, delays the start of the envelope from the start of the note. 0 means no delay. - PRE передзатримка, затримує старт обвідної від початку ноти. 0 означає без затримки. - - - ATT, or attack, controls how fast the envelope ramps up at start, measured in milliseconds. A value of 0 means instant. - ATT атака контролює як швидко обвідна нарощується на старті, вимірюється в мілісекундах. Значення 0 означає миттєво. - - - HOLD controls how long the envelope stays at peak after the attack phase. - HOLD (УТРИМУВАТИ) контролює як довго обвідна залишається на піку після фази атаки. - - - 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. - DEC (decay) згасання контролює як швидко обвідна спадає з пікового значення, вимірюється в мілісекундах, як довго буде йти з піку до нуля. Реальне загасання може бути коротшим, якщо використовується витримка. - - - 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. - SUS (sustain) витримка, контролює рівень обвідної. Загасання фази не піде нижче цього рівня поки нота утримується. - - - 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. - REL (release) відпускання контролює як довго нота відпускається, вимірюється в довготі падіння від піку до нуля. Реальне відпускання може бути коротшим, залежно від фази, в якій нота відпущена. - - - 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. - Регулятор нахилу контролює криву або форму обвідної. Значення 0 створює прямі підйоми і спади. Від'ємні величини створюють криві з уповільненим початком, швидким піком і знову уповільненим спадом. Позитивні значення створюють криві які починаються і закінчуються швидко, але довше залишаються на піках. - - - 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 - Жорстка синхронізація осциллятора 2 - - - Reverse sync oscillator 2 - Верерс синхронізація осциллятора 2 - - - Sub-osc mix - Мікс суб-осциляторів - - - Hard sync oscillator 3 - Жорстка синхронізація осциллятора 3 - - - Reverse sync oscillator 3 - Верерс синхронізація осциллятора 3 - - - Attack - Вступ - - - Rate - Частота вибірки - - - Phase - Фаза - - - Pre-delay - Передзатримка - - - Hold - Утримання - - - Decay - Згасання - - - Sustain - Витримка - - - Release - Зменшення - - - Slope - Нахил - - - Modulation amount - Глибина модуляції - - - - MultitapEchoControlDialog - - Length - Довжина - - - Step length: - Довжина кроку: - - - Dry - Сухий - - - Dry Gain: - Сухе підсилення: - - - Stages - Етапи - - - Lowpass stages: - НЧ етапи: - - - Swap inputs - Обмін входами - - - Swap left and right input channel for reflections - Дзеркальний обмін лівим і правим каналами - - - - NesInstrument - - Channel 1 Coarse detune - Грубе підстроювання 1 каналу - - - Channel 1 Volume - Гучність 1 каналу - - - Channel 1 Envelope length - Довжина обвідної 1 каналу - - - Channel 1 Duty cycle - Робочий цикл 1 каналу - - - Channel 1 Sweep amount - Кількість розгортки 1 каналу - - - Channel 1 Sweep rate - Швидкість розгортки 1 каналу - - - Channel 2 Coarse detune - Грубе підстроювання 2 каналу - - - Channel 2 Volume - Гучність 2 каналу - - - Channel 2 Envelope length - Довжина обвідної 2 каналу - - - Channel 2 Duty cycle - Робочий цикл 2 каналу - - - Channel 2 Sweep amount - Кількість розгортки 2 каналу - - - Channel 2 Sweep rate - Швидкість розгортки 2 каналу - - - Channel 3 Coarse detune - Грубе підстроювання 3 каналу - - - Channel 3 Volume - Гучність 3 каналу - - - Channel 4 Volume - Гучність 4 каналу - - - Channel 4 Envelope length - Довжина обвідної 4 каналу - - - Channel 4 Noise frequency - Частота шуму 4 каналу - - - Channel 4 Noise frequency sweep - Частота розгортки шуму 4 каналу - - - Master volume - Основна гучність - - - Vibrato - Вібрато - - - - NesInstrumentView - - Volume - Гучність - - - Coarse detune - Грубе підстроювання - - - Envelope length - Довжина обвідної - - - Enable channel 1 - Увімкнути канал 1 - - - Enable envelope 1 - Увімкнути обвідну 1 - - - Enable envelope 1 loop - Увімкнти повтор обвідної 1 - - - Enable sweep 1 - Увімкнути розгортку 1 - - - Sweep amount - Кількість розгортки - - - Sweep rate - Темп розгортки - - - 12.5% Duty cycle - 12.5% Робочого циклу - - - 25% Duty cycle - 25% Робочого циклу - - - 50% Duty cycle - 50% Робочого циклу - - - 75% Duty cycle - 75% Робочого циклу - - - Enable channel 2 - Увімкнути канал 2 - - - Enable envelope 2 - Увімкнути обвідну 2 - - - Enable envelope 2 loop - Увімкнти повтор обвідної 2 - - - Enable sweep 2 - Увімкнути розгортку 2 - - - Enable channel 3 - Увімкнути канал 3 - - - Noise Frequency - Частота шуму - - - Frequency sweep - Частота темпу - - - Enable channel 4 - Увімкнути канал 4 - - - Enable envelope 4 - Увімкнути обвідну 4 - - - Enable envelope 4 loop - Увімкнти повтор обвідної 4 - - - Quantize noise frequency when using note frequency - Квантування частоту шуму при використанні частоти ноти - - - Use note frequency for noise - Використовувати частоту ноти для шуму - - - Noise mode - Форма шуму - - - Master Volume - Основна гучність - - - Vibrato - Вібрато - - - - OscillatorObject - - Osc %1 volume - Гучність осциллятора %1 - - - Osc %1 panning - Стереобаланс для осциллятора %1 - - - Osc %1 coarse detuning - Підстроювання осциллятора %1 грубе - - - Osc %1 fine detuning left - Точне підстроювання лівого каналу осциллятора %1 - - - Osc %1 fine detuning right - Підстроювання правого каналу осциллятора %1 тонка - - - Osc %1 phase-offset - Зміщення фази осциллятора %1 - - - Osc %1 stereo phase-detuning - Підстроювання стерео-фази осциллятора %1 - - - Osc %1 wave shape - Гладкість сигналу осциллятора %1 - - - Modulation type %1 - Тип модуляції %1 - - - Osc %1 waveform - Форма сигналу осциллятора %1 - - - Osc %1 harmonic - Осц %1 гармонійний - - - - PatchesDialog - - Qsynth: Channel Preset - Q-Синтезатор: Канал передустановлено - - - Bank selector - Селектор банку - - - Bank - Банк - - - Program selector - Селектор програм - - - Patch - Патч - - - Name - І'мя - - - OK - ОК - - - Cancel - Скасувати - - - - 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. - Тут вмикається/вимикається режим повтору, при увімкнені PatMan буде використовувати інформацію про повтор з файлу. - - - Tune - Підлаштувати - - - Tune mode - Тип підстроювання - - - Here you can toggle the Tune mode. If enabled, PatMan will tune the sample to match the note's frequency. - Тут вмикається/вимикається режим підстроювання. Якщо його увімкнено, то PatMan змінить запис так, щоб він збігався по частоті з нотою. - - - No file selected - Файл не вибрано - - - Open patch file - Відкрити патч-файл - - - Patch-Files (*.pat) - Патч-файли (*.pat) - - - - PatternView - - Open in piano-roll - Відкрити в редакторі нот - - - Clear all notes - Очистити всі ноти - - - Reset name - Скинути назву - - - Change name - Перейменувати - - - Add steps - Додати такти - - - Remove steps - Видалити такти - - - Clone Steps - Клонувати такти - - - - 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. - Через помилку в старій версії LMMS контролери вершин не можуть правильно підключатися. Будь-ласка переконайтеся, що контролери вершин правильно приєднані і перезбережіть цей файл, вибачте, за заподіяні незручності. - - - - PeakControllerDialog - - PEAK - ПІК - - - LFO Controller - Контролер LFO - - - - PeakControllerEffectControlDialog - - BASE - БАЗА - - - Base amount: - Базове значення: - - - Modulation amount: - Глибина модуляції: - - - Attack: - Вступ: - - - Release: - Зменшення: - - - AMNT - ГЛИБ - - - MULT - МНОЖ - - - Amount Multiplicator: - Величина множника: - - - ATCK - ВСТУП - - - DCAY - ЗГАС - - - Treshold: - Поріг: - - - TRSH - - - - - PeakControllerEffectControls - - Base value - Опорне значення - - - Modulation amount - Глибина модуляції - - - Mute output - Заглушити вивід - - - Attack - Вступ - - - Release - Зменшення - - - 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% - Гучність %1% - - - Panning: %1% left - Баланс %1% лівий - - - Panning: %1% right - Баланс %1% правий - - - Panning: center - Баланс: по середині - - - Please enter a new value between %1 and %2: - Введіть нове значення від %1 до %2: - - - Mark/unmark all corresponding octave semitones - Відмітити/Зняти всі відповідні півтони октави - - - Select all notes on this key - Вибрати всі ноти на цій тональності - - - - PianoRollWindow - - Play/pause current pattern (Space) - Гра/Пауза поточної мелодії (Пробіл) - - - Record notes from MIDI-device/channel-piano - Записати ноти з цифрового музичного інструмента (MIDI) - - - Record notes from MIDI-device/channel-piano while playing song or BB track - Записати ноти з цифрового музичного інструменту (MIDI) під час відтворення пісні або доріжки Ритм-Басу - - - 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. - Натисніть цю кнопку, якщо ви хочете записати ноти з пристрою MIDI або віртуального синтезатора відповідного каналу. Пізніше ви зможете відредагувати записаний шаблон. - - - 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. - Натисніть цю кнопку, якщо ви хочете записати ноти з пристрою MIDI або віртуального синтезатора відповідного каналу. Під час запису всі ноти записуються в цей шаблон, і ви будете чути композицію або РБ доріжку на задньому плані. - - - Click here to stop playback of current pattern. - Натисніть тут, якщо ви хочете зупинити відтворення поточного шаблону. - - - Draw mode (Shift+D) - Режим малювання (Shift + D) - - - Erase mode (Shift+E) - Режим стирання (Shift+E) - - - Select mode (Shift+S) - Режим вибору нот (Shift+S) - - - Detune mode (Shift+T) - Режим підлаштовування (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. - Режим малювання нот, в ньому ви можете додавати/переміщати і змінювати тривалість одиночних нот. Це режим за замовчуванням і використовується більшу частину часу. -Для включення цього режиму можна скористатися комбінацією клавіш Shift+D, утримуйте %1 для тимчасового перемикання в режим вибору. - - - 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. - Режим стирання. У цьому режимі ви можете стирати ноти. Для увімкнення цього режиму можна скористатися комбінацією клавіш Shift+E. - - - 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. - Режим виділення. У цьому режимі можна виділяти ноти, також можна утримувати %1 в режимі малювання, щоб на час увійти в режим виділення. - - - 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. - Режим підстроювання. У цьому режимі можна вибирати ноти для автоматизації їх підлаштування. Можна використовувати це для переходів нот від однієї до іншої. Для активації з клавіатури <Shift+T>. - - - Cut selected notes (%1+X) - Перемістити виділені ноти до буферу (%1+X) - - - Copy selected notes (%1+C) - Копіювати виділені ноти до буферу (%1+X) - - - Paste notes from clipboard (%1+V) - Вставити ноти з буферу (%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. - "Q" позначає квантування і контролює розмір нотної сітки і контрольні точки тяжіння. З меншою величиною квантування, можна малювати короткі ноти в редаторі нот і більш точно контролювати точки в редакторі Автоматизації. - - - 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 - Дозволяє вибрати довжину нової ноти. "Остання Нота" означає, що LMMS буде використовувати довжину ноти, зміненої в останній раз - - - 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! - Функція безпосередньо пов'язана з контекстним меню на віртуальній клавіатурі зліва в нотному редакторі. Після того, як обраний масштаб у випадаючому меню, можна натиснути правою кнопкою у віртуальній клавіатурі і вибрати "Mark Current Scale" (Відзначити поточний масштаб). LMMS підсвітить всі ноти які лежать в обраному масштабі для обраної клавіші! - - - 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. - Дозволяє вибрати акорд, який LMMS потім зможе намалювати або підсвітити. У цьому меню можна знайти найбільш популярні акорди. Після того, як ви вибрали акорд, натисніть в будь-якому місці, щоб поставити його, а правим кліком по віртуальній клавіатурі відкривається контекстне меню і підсвічування акорду. Для повернення в режим однієї ноти потрібно вибрати "Без акорду" в цьому випадаючому меню. - - - Edit actions - Зміна - - - Copy paste controls - Управління копіюванням та вставкою - - - Timeline controls - Управління хронологією - - - Zoom and note controls - Управління масштабом і нотами - - - Piano-Roll - %1 - Нотний редактор - %1 - - - Piano-Roll - no pattern - Нотний редактор - без шаблону - - - Quantize - Квантовать - - - - PianoView - - Base note - Опорна нота - - - - Plugin - - Plugin not found - Модуль не знайдено - - - The plugin "%1" wasn't found or could not be loaded! -Reason: "%2" - Модуль «%1» відсутній чи не може бути завантажений! -Причина: «%2» - - - Error while loading plugin - Помилка завантаження модуля - - - Failed to load plugin "%1"! - Не вдалося завантажити модуль «%1»! - - - - PluginBrowser - - 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! - LMMS плагін %1 не має опису плагіна з ім'ям %2! - - - - ProjectNotes - - Edit Actions - Зміна - - - &Undo - &U Скасувати - - - %1+Z - %1+Z - - - &Redo - &R Повторити - - - %1+Y - %1+Y - - - &Copy - &C Копіювати - - - %1+C - %1+C - - - Cu&t - &t Вирізати - - - %1+X - %1+X - - - &Paste - &P Вставити - - - %1+V - %1+V - - - Format Actions - Форматування - - - &Bold - Напів&жирний - - - %1+B - %1+B - - - &Italic - &Курсив - - - %1+I - %1+I - - - &Underline - &Підкреслити - - - %1+U - %1+U - - - &Left - По &лівому краю - - - %1+L - %1+L - - - C&enter - По &центрі - - - %1+E - %1+E - - - &Right - По &правому краю - - - %1+R - %1+R - - - &Justify - По &ширині - - - %1+J - %1+J - - - &Color... - &C Колір... - - - Project Notes - Примітки проекту - - - Enter project notes here - - - - - ProjectRenderer - - WAV-File (*.wav) - Файл WAV (*.wav) - - - Compressed OGG-File (*.ogg) - Стиснутий файл OGG (*.ogg) - - - FLAC-File (*.flac) - - - - 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 - Файл: %1 - - - - RenameDialog - - Rename... - Перейменувати ... - - - - ReverbSCControlDialog - - Input - Ввід - - - Input Gain: - Вхідне підсилення: - - - Size - - - - Size: - - - - Color - - - - Color: - - - - Output - Вивід - - - Output Gain: - Вихідне підсилення: - - - - ReverbSCControls - - Input Gain - - - - Size - - - - Color - - - - Output Gain - - - - - SampleBuffer - - Open audio file - Відкрити звуковий файл - - - Wave-Files (*.wav) - Файли Wave (*.wav) - - - OGG-Files (*.ogg) - Файли OGG (*.ogg) - - - DrumSynth-Files (*.ds) - Файли DrumSynth (*.ds) - - - FLAC-Files (*.flac) - Файли FLAC (*.flac) - - - SPEEX-Files (*.spx) - Файли SPEEX (*.spx) - - - VOC-Files (*.voc) - Файли VOC (*.voc) - - - AIFF-Files (*.aif *.aiff) - Файли AIFF (*.aif *.aiff) - - - AU-Files (*.au) - Файли AU (*.au) - - - RAW-Files (*.raw) - Файли RAW (*.raw) - - - All Audio-Files (*.wav *.ogg *.ds *.flac *.spx *.voc *.aif *.aiff *.au *.raw) - Всі Аудіо-файли (*.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 - - - - - SampleTCOView - - double-click to select sample - Виберіть запис подвійним натисненням миші - - - Delete (middle mousebutton) - Видалити (середня кнопка мишки) - - - Cut - Вирізати - - - Copy - Копіювати - - - Paste - Вставити - - - Mute/unmute (<%1> + middle click) - Заглушити/включити (<%1> + середня кнопка миші) - - - - SampleTrack - - Sample track - Доріжка запису - - - Volume - Гучність - - - Panning - Баланс - - - - SampleTrackView - - Track volume - Гучність доріжки - - - Channel volume: - Гучність каналу: - - - VOL - ГУЧН - - - Panning - Баланс - - - Panning: - Баланс: - - - PAN - БАЛ - - - - SetupDialog - - Setup LMMS - Налаштування LMMS - - - General settings - Загальні налаштування - - - BUFFER SIZE - РОЗМІР БУФЕРУ - - - Reset to default-value - Відновити значення за замовчуванням - - - MISC - РІЗНЕ - - - Enable tooltips - Включити підказки - - - Show restart warning after changing settings - Показувати попередження про перезапуск при зміні налаштувань - - - 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 - Синхронізувати VST плагіни з хостом відтворення - - - Enable note labels in piano roll - Включити позначення нот у музичному редакторі - - - Enable waveform display by default - Включити відображення форми хвилі за замовчуванням - - - Keep effects running even without input - Продовжувати роботу ефектів навіть без вхідного сигналу - - - Create backup file when saving a project - Створю запасний файл при збереженні проекту - - - LANGUAGE - МОВА - - - Paths - Шляхи - - - LMMS working directory - Робочий каталог LMMS - - - VST-plugin directory - Каталог модулів VST - - - Background artwork - Фонове зображення - - - STK rawwave directory - Каталог STK rawwave - - - Default Soundfont File - Основний Soundfont файл - - - Performance settings - Налаштування продуктивності - - - UI effects vs. performance - Візуальні ефекти / продуктивність - - - Smooth scroll in Song Editor - Плавне прокручування в музичному редакторі - - - Show playback cursor in AudioFileProcessor - Показувати покажчик відтворення в процесорі аудіо файлів - - - Audio settings - Параметри звуку - - - AUDIO INTERFACE - ЗВУКОВА СИСТЕМА - - - MIDI settings - Параметри MIDI - - - MIDI INTERFACE - ІНТЕРФЕЙС MIDI - - - OK - ОК - - - Cancel - Скасувати - - - Restart LMMS - Перезапустіть LMMS - - - Please note that most changes won't take effect until you restart LMMS! - Врахуйте, що більшість налаштувань не вступлять в силу до перезапуску програми! - - - Frames: %1 -Latency: %2 ms - Фрагментів: %1 -Затримка: %2 мс - - - 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. - Тут ви можете налаштувати розмір внутрішнього звукового буфера LMMS. Менші значення дають менший час відгуку програми, але підвищують споживання ресурсів - це особливо помітно на старих машинах і системах, ядро ​​яких не підтримує пріоритету реального часу. Якщо спостерігається переривчастий звук, спробуйте збільшити розмір буферу. - - - Choose LMMS working directory - Вибір робочого каталогу LMMS - - - Choose your VST-plugin directory - Вибір свого каталогу для модулів VST - - - Choose artwork-theme directory - Вибір каталогу з темою оформлення для LMMS - - - Choose LADSPA plugin directory - Вибір каталогу з модулями LADSPA - - - Choose STK rawwave directory - Вибір каталогу STK rawwave - - - Choose default SoundFont - Вибрати головний 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. - Будь ласка, виберіть звукову систему. Залежно від конфігурації під час компілювання програми, ви можете використовувати ALSA, JACK, OSS та інші. У нижній частині вікна налаштування можна задати специфічні параметри обраної системи. - - - 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. - Будь ласка, виберіть інтерфейс MIDI. Залежно від конфігурації під час компілювання програми, ви можете використовувати ALSA, OSS та інші. У нижній частині вікна налаштування можна задати специфічні параметри обраного інтерфейсу. - - - Reopen last project on start - Відкривати останній проект при запуску - - - Directories - Каталоги - - - Themes directory - Каталог тем - - - GIG directory - Каталог GIG - - - SF2 directory - Каталог SF2 - - - LADSPA plugin directories - Каталог модулів LADSPA - - - Auto save - Авто-збереження - - - Choose your GIG directory - Виберіть каталог GIG - - - Choose your SF2 directory - Виберіть каталог SF2 - - - 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. - - - - - Song - - Tempo - Темп - - - Master volume - Основна гучність - - - Master pitch - Основна тональність - - - Project saved - Проект збережено - - - The project %1 is now saved. - Проект %1 збережено. - - - Project NOT saved. - Проект НЕ ЗБЕРЕЖЕНО. - - - The project %1 was not saved! - Проект %1 не збережено! - - - Import file - Імпорт файлу - - - MIDI sequences - MiDi послідовність - - - Hydrogen projects - Hydrogen проекти - - - 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) - MIDI-файл (* mid) - - - LMMS Error report - Повідомлення про помилку в LMMS - - - Save project - - - - - 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. - Неможливо відкрити файл %1, ймовірно, немає дозволу на його читання. -Будь-ласка переконайтеся, що є принаймні права на читання цього файлу і спробуйте ще раз. - - - Error in file - Помилка у файлі - - - The file %1 seems to contain errors and therefore can't be loaded. - Файл %1 можливо містить помилки через які не може завантажитися. - - - Tempo - Темп - - - TEMPO/BPM - ТЕМП/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). - Це значення задає темп музики в ударах в хвилину (англ. аббр. BPM). На кожен такт приходить чотири удари, так що темп в ударах в хвилину фактично вказує, скільки чвертей такту програється за хвилину (або, що те ж, кількість тактів, що програються за чотири хвилини). - - - High quality mode - Висока якість - - - Master volume - Основна гучність - - - master volume - основна гучність - - - Master pitch - Основна тональність - - - master pitch - основна тональність - - - Value: %1% - Значення: %1% - - - Value: %1 semitones - Значення: %1 півтон(у/ів) - - - 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. - Неможливо відкрити %1 для запису, можливо, немає дозволу на запис в цей файл, будь-ласка упевніться, що є доступ до цього файлу і спробуйте знову. - - - template - шаблон - - - project - проект - - - Version difference - - - - This %1 was created with LMMS %2. - Цей %1 було створено в LMMS версії %2 - - - - 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 - Стежити - - - Edit actions - Зміна - - - Timeline controls - Управління хронологією - - - Zoom controls - Управління масштабом - - - - SpectrumAnalyzerControlDialog - - Linear spectrum - Лінійний спектр - - - Linear Y axis - Лінійна вісь ординат - - - - SpectrumAnalyzerControls - - Linear spectrum - Лінійний спектр - - - Linear Y axis - Лінійна вісь ординат - - - Channel mode - Режим каналу - - - - SubWindow - - Close - Закрити - - - Maximize - Розгорнути - - - Restore - Відновити - - - - TabWidget - - Settings for %1 - Налаштування для %1 - - - - TempoSyncKnob - - Tempo Sync - Синхронізація темпу - - - No Sync - Синхронізації немає - - - Eight beats - Вісім ударів (дві ноти) - - - Whole note - Ціла нота - - - Half note - Півнота - - - Quarter note - Чверть ноти - - - 8th note - Восьма ноти - - - 16th note - 1/16 ноти - - - 32nd note - 1/32 ноти - - - Custom... - Своя... - - - Custom - Своя - - - Synced to Eight Beats - Синхро по 8 ударам - - - Synced to Whole Note - Синхро по цілій ноті - - - Synced to Half Note - Синхро по половині ноти - - - Synced to Quarter Note - Синхро по чверті ноти - - - Synced to 8th Note - Синхро по 1/8 ноти - - - Synced to 16th Note - Синхро по 1/16 ноти - - - Synced to 32nd Note - Синхро по 1/32 ноти - - - - TimeDisplayWidget - - click to change time units - натисніть для зміни одиниць часу - - - MIN - ХВ - - - SEC - С - - - MSEC - МС - - - BAR - БАР - - - BEAT - БІТ - - - TICK - ТІК - - - - 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. - Натисніть <%1>, щоб прибрати прилипання точок циклу. - - - Hold <Shift> to move the begin loop point; Press <%1> to disable magnetic loop points. - Зажміть <Shift> щоб змістити початок точок циклу; Натисніть <%1>, щоб прибрати прилипання точок циклу. - - - - Track - - Mute - Тиша - - - Solo - Соло - - - - 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. - Не можу знайти фільтр для імпорту файла %1. -Для підключення цього файлу перетворіть його в формат, підтримуваний LMMS. - - - 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! - Не можу відкрити файл %1 для запису. -Перевірте, чи володієте ви правами на запис в обраний файл і каталог що його містить і спробуйте знову! - - - Loading project... - Завантаження проекту ... - - - Cancel - Скасувати - - - Please wait... - Зачекайте будь-ласка ... - - - Importing MIDI-file... - Імпортую файл MIDI... - - - Loading Track %1 (%2/Total %3) - - - - - TrackContentObject - - Mute - Тиша - - - - TrackContentObjectView - - Current position - Позиція - - - Hint - Підказка - - - Press <%1> and drag to make a copy. - Натисніть <%1> і перетягніть, щоб створити копію. - - - Current length - Тривалість - - - Press <%1> for free resizing. - Для вільної зміни розміру натисніть <%1>. - - - %1:%2 (%3:%4 to %5:%6) - %1:%2 (від %3:%4 до %5:%6) - - - Delete (middle mousebutton) - Видалити (середня кнопка мишки) - - - Cut - Вирізати - - - Copy - Копіювати - - - Paste - Вставити - - - Mute/unmute (<%1> + middle click) - Заглушити/включити (<%1> + середня кнопка миші) - - - - TrackOperationsWidget - - Press <%1> while clicking on move-grip to begin a new drag'n'drop-action. - Затисніть <%1> і натискайте мишку під час руху, щоб почати нову перезбірку. - - - Actions for this track - Дії для цієї доріжки - - - Mute - Тиша - - - Solo - Соло - - - Mute this track - Відключити доріжку - - - Clone this track - Клонувати доріжку - - - Remove this track - Видалити доріжку - - - Clear this track - Очистити цю доріжку - - - FX %1: %2 - ЕФ %1: %2 - - - Turn all recording on - Включити все на запис - - - Turn all recording off - Вимкнути всі записи - - - Assign to new FX Channel - Призначити до нового каналу ефекту - - - - TripleOscillatorView - - Use phase modulation for modulating oscillator 1 with oscillator 2 - Модулювати фазу осциллятора 2 сигналом з 1 - - - Use amplitude modulation for modulating oscillator 1 with oscillator 2 - Модулювати амплітуду осциллятора 2 сигналом з 1 - - - Mix output of oscillator 1 & 2 - Змішати виходи 1 і 2 осцилляторів - - - Synchronize oscillator 1 with oscillator 2 - Синхронізувати 1 осциллятор по 2 - - - Use frequency modulation for modulating oscillator 1 with oscillator 2 - Модулювати частоту осциллятора 2 сигналом з 1 - - - Use phase modulation for modulating oscillator 2 with oscillator 3 - Модулювати фазу осциллятора 3 сигналом з 2 - - - Use amplitude modulation for modulating oscillator 2 with oscillator 3 - Модулювати амплітуду осциллятора 3 сигналом з 2 - - - Mix output of oscillator 2 & 3 - Поєднати виходи осцилляторів 2 і 3 - - - Synchronize oscillator 2 with oscillator 3 - Синхронізувати осциллятор 2 і 3 - - - Use frequency modulation for modulating oscillator 2 with oscillator 3 - Модулювати частоту осциллятора 3 сигналом з 2 - - - Osc %1 volume: - Гучність осциллятора %1: - - - 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. - Ця ручка встановлює гучність осциллятора %1. Якщо 0, то осциллятор вимикається, інакше буде чутно настільки голосно, настільки тут встановлено. - - - Osc %1 panning: - Баланс для осциллятора %1: - - - 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. - Регулятор стереобалансу осциллятора %1. Величина -100 позначає, що 100% сигналу йде в лівий канал, а 100 - в правий. - - - Osc %1 coarse detuning: - Грубе підстроювання осциллятора %1: - - - 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. - Ця ручка встановлює грубе підстроювання осцилятора %1. Ви можете пістроїти осцилятор на 24 півтони (2 октави) вгору і вниз. Це корисно для створення звуків з акорду. - - - Osc %1 fine detuning left: - Точне підстроювання лівого каналу осциллятора %1: - - - 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. - Ця ручка встановлює точне підстроювання для лівого каналу осциллятора %1. Підстроювання задається в діапазоні від -100 сотих до +100 сотих. Це корисно для створення "насичених" звуків. - - - Osc %1 fine detuning right: - Точна підстройка правого канала осциллятора %1: - - - 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. - Ця ручка встановлює точне підстроювання для правого каналу осциллятора %1. Підстроювання задається в діапазоні від -100 сотих до +100 сотих. Це корисно для створення "насичених" звуків. - - - Osc %1 phase-offset: - Зміщення фази осциллятора %1: - - - 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. - Ця ручка встановлює початкову фазу осциллятора %1, т. б. точку, з якої осциллятор починає виробляти сигнал. Наприклад, якщо ви задали синусоїдальну форму сигналу і початкову фазу 180º, хвиля спочатку піде вниз, а не вгору. Те ж саме для сигналу прямокутної форми. - - - Osc %1 stereo phase-detuning: - Підстроювання стерео фази осциллятора %1: - - - 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. - Ця ручка встановлює фазове підстроювання осциллятора %1 між каналами, тобто різницю фаз між лівим і правим каналами. Це зручно для створення розширення стереоефектів. - - - 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. - Задати форму сигналу. - - - - VersionedSaveDialog - - Increment version number - Збільшуючийся номер версії - - - Decrement version number - Зменшуючийся номер версії - - - already exists. Do you want to replace it? - - - - - VestigeInstrumentView - - Open other VST-plugin - Відкрити інший VST плагін - - - 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. - Відкрити інший модуль VST. Після натискання на кнопку з'явиться стандартний діалог вибору файлу, де ви зможете вибрати потрібний модуль. - - - Show/hide GUI - Показати / приховати інтерфейс - - - Click here to show or hide the graphical user interface (GUI) of your VST-plugin. - Приховує / показує графічний користувальницький інтерфейс (GUI) обраного модуля VST. - - - Turn off all notes - Вимкнути всі ноти - - - Open VST-plugin - Відкрити модуль VST - - - DLL-files (*.dll) - Бібліотеки DLL (*.dll) - - - EXE-files (*.exe) - Програми EXE (*.exe) - - - No VST-plugin loaded - Модуль VST не завантажений - - - Control VST-plugin from LMMS host - Управління VST плагіном через LMMS - - - Click here, if you want to control VST-plugin from host. - Натисніть тут для контролю VST плагіна через хост. - - - Open VST-plugin preset - Відкрити передустановку VST модуля - - - Click here, if you want to open another *.fxp, *.fxb VST-plugin preset. - Відкрити інший .fxp. fxb VST плагін передустановки. - - - Previous (-) - Попередній <-> - - - Click here, if you want to switch to another VST-plugin preset program. - Натисніть тут для перемикання на іншу передустановку програми VST плагіна. - - - Save preset - Зберегти передустановку - - - Click here, if you want to save current VST-plugin preset program. - Зберегти поточну передустановку програми VST плагіна. - - - Next (+) - Наступний <+> - - - Click here to select presets that are currently loaded in VST. - Вибір з уже завантажених в VST передустановок. - - - Preset - Передустановка - - - by - від - - - - VST plugin control - - Управління VST плагіном - - - - VisualizationWidget - - click to enable/disable visualization of master-output - Натисніть, щоб увімкнути/вимкнути візуалізацію головного виводу - - - Click to enable - Натисніть для включення - - - - VstEffectControlDialog - - Show/hide - Показати/Сховати - - - Control VST-plugin from LMMS host - Управління VST плагіном через LMMS хост - - - Click here, if you want to control VST-plugin from host. - Натисніть тут, для контролю VST плагіном через хост. - - - Open VST-plugin preset - Відкрити передустановку VST плагіна - - - Click here, if you want to open another *.fxp, *.fxb VST-plugin preset. - Відкрити іншу .fxp . fxb передустановку VST. - - - Previous (-) - Попередній <-> - - - Click here, if you want to switch to another VST-plugin preset program. - Перемикання на іншу передустановку програми VST плагіна. - - - Next (+) - Наступний <+> - - - Click here to select presets that are currently loaded in VST. - Вибір із уже завантажених в VST предустановок. - - - Save preset - Зберегти налаштування - - - Click here, if you want to save current VST-plugin preset program. - Зберегти поточну передустановку програми VST плагіна. - - - Effect by: - Ефекти по: - - - &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /> - &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /> - - - - VstPlugin - - Loading plugin - Завантаження модуля - - - Open Preset - Відкрити предустановку - - - Vst Plugin Preset (*.fxp *.fxb) - Передустановка VST плагіна (*.fxp *.fxb) - - - : default - : основні - - - " - " - - - ' - ' - - - Save Preset - Зберегти предустановку - - - .fxp - .fxp - - - .FXP - .FXP - - - .FXB - .FXB - - - .fxb - .fxb - - - Please wait while loading VST plugin... - Будь ласка, зачекайте доки завантажується VST плагін ... - - - The VST plugin %1 could not be loaded. - VST плагін %1 не може бути завантажено. - - - - WatsynInstrument - - Volume A1 - Гучність A1 - - - Volume A2 - Гучність A2 - - - Volume B1 - Гучність B1 - - - Volume B2 - Гучність B2 - - - Panning A1 - Баланс A1 - - - Panning A2 - Баланс A2 - - - Panning B1 - Баланс B1 - - - Panning B2 - Баланс B2 - - - Freq. multiplier A1 - Множник частоти A1 - - - Freq. multiplier A2 - Множник частоти A2 - - - Freq. multiplier B1 - Множник частоти B1 - - - Freq. multiplier B2 - Множник частоти B2 - - - Left detune A1 - Ліве підстроювання A1 - - - Left detune A2 - Ліве підстроювання A2 - - - Left detune B1 - Ліве підстроювання B1 - - - Left detune B2 - Ліве підстроювання B2 - - - Right detune A1 - Праве підстроювання A1 - - - Right detune A2 - Праве підстроювання A2 - - - Right detune B1 - Праве підстроювання B1 - - - Right detune B2 - Праве підстроювання B2 - - - A-B Mix - A-B Мікс - - - A-B Mix envelope amount - A-B Мікс кіл. обвідної - - - A-B Mix envelope attack - A-B Мікс атаки обвідної - - - A-B Mix envelope hold - A-B Мікс утримання обвідної - - - A-B Mix envelope decay - A-B Мікс згасання обвідної - - - A1-B2 Crosstalk - Перехресні перешкоди A1-B2 - - - A2-A1 modulation - Модуляція A2-A1 - - - B2-B1 modulation - Модуляція B2-B1 - - - Selected graph - Обраний графік - - - - WatsynView - - Select oscillator A1 - Виберіть генератор A1 - - - Select oscillator A2 - Виберіть генератор A2 - - - Select oscillator B1 - Виберіть генератор B1 - - - Select oscillator B2 - Виберіть генератор B2 - - - Mix output of A2 to A1 - Змішати виходи A2 до A1 - - - Modulate amplitude of A1 with output of A2 - Модулювати амплітуду А1 виходом з А2 - - - Ring-modulate A1 and A2 - Кільцева модуляція А1 і А2 - - - Modulate phase of A1 with output of A2 - Модулювати фазу А1 виходом з А2 - - - Mix output of B2 to B1 - Змішати виходи В2 до В1 - - - Modulate amplitude of B1 with output of B2 - Модулювати амплітуду В1 виходом з В2 - - - Ring-modulate B1 and B2 - Кільцева модуляція В1 і В2 - - - Modulate phase of B1 with output of B2 - Модулювати фазу В1 виходом з В2 - - - 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 - Натисніть, щоб змістити фазу на -15 градусів - - - Phase right - Фаза праворуч - - - Click to shift phase by +15 degrees - Натисніть, щоб змістити фазу на +15 градусів - - - 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 - A-B Мікс - - - Mix envelope amount - Мікс кількості обвідної - - - Mix envelope attack - A-B Мікс вступу обвідної - - - Mix envelope hold - A-B Мікс утримання обвідної - - - Mix envelope decay - A-B Мікс згасання обвідної - - - Crosstalk - Перехід - - - - ZynAddSubFxInstrument - - Portamento - Портаменто - - - Filter Frequency - Фільтр Частот - - - Filter Resonance - Фільтр резонансу - - - Bandwidth - Ширина смуги - - - FM Gain - Підсил FM - - - Resonance Center Frequency - Частоти центру резонансу - - - Resonance Bandwidth - Ширина смуги резонансу - - - Forward MIDI Control Change Events - Переслати зміну подій MIDI управління - - - - ZynAddSubFxView - - Show GUI - Показати інтерфейс - - - Click here to show or hide the graphical user interface (GUI) of ZynAddSubFX. - Натисніть сюди щоб сховати чи показати графічний інтерфейс ZynAddSubFX. - - - Portamento: - Портаменто: - - - PORT - PORT - - - Filter Frequency: - Фільтр частот: - - - FREQ - FREQ - - - Filter Resonance: - Фільтр резонансу: - - - RES - RES - - - Bandwidth: - Смуга пропускання: - - - BW - BW - - - FM Gain: - Підсилення частоти модуляції (FM): - - - FM GAIN - FM GAIN - - - Resonance center frequency: - Частота центру резонансу: - - - RES CF - RES CF - - - Resonance bandwidth: - Ширина смуги резонансу: - - - RES BW - RES BW - - - Forward MIDI Control Changes - Переслати зміну подій MiDi управління - - - - audioFileProcessor - - Amplify - Підсилення - - - Start of sample - Початок запису - - - End of sample - Кінець запису - - - Reverse sample - Перевернути запис - - - Stutter - Заїкання - - - Loopback point - Точка повернення з повтору - - - Loop mode - Режим повтору - - - Interpolation mode - Режим Інтерполяції - - - None - Нічого - - - Linear - Лінійний - - - Sinc - Синхронізований - - - Sample not found: %1 - Запис не знайдено: %1 - - - - bitInvader - - Samplelength - Тривалість - - - - 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. - Тут ви можете малювати власний сигнал. - - - Click 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 white-noise. - Згенерувати білий шум. - - - Click here for a user-defined shape. - Задати форму сигналу вручну. - - - - 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 - Збільште амплітуди графа хвилі на 1дБ - - - Click here to increase wavegraph amplitude by 1dB - Натисніть тут, щоб збільшити амплітуду графа хвилі на 1дБ - - - Decrease wavegraph amplitude by 1dB - Зменшення амплітуди графа хвилі на 1дБ - - - Click here to decrease wavegraph amplitude by 1dB - Натисніть тут, щоб зменшити амплітуду графа хвилі на 1дБ - - - 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 - Обробляє кожен стерео канал незалежно - - - - dynProcControls - - Input gain - Вхідне підсилення - - - Output gain - Вихідне підсилення - - - Attack time - Час вступу - - - Release time - Час зменшення - - - Stereo mode - Стерео режим - - - - expressiveView - - Select oscillator W1 - - - - Select oscillator W2 - - - - Select oscillator W3 - - - - Select OUTPUT 1 - - - - Select OUTPUT 2 - - - - Open help window - - - - Sine wave - Синусоїда - - - Click for a sine-wave. - Генерувати гармонійний (синусоїдальний) сигнал. - - - Moog-Saw wave - - - - Click for a Moog-Saw-wave. - - - - Exponential wave - Експоненціальна хвиля - - - Click for an exponential wave. - - - - Saw wave - Зигзаг - - - Click here for a saw-wave. - Згенерувати зигзаг. - - - User defined wave - Користувацька - - - Click here for a user-defined shape. - Задати форму сигналу вручну. - - - Triangle wave - Трикутник - - - Click here for a triangle-wave. - Згенерувати трикутний сигнал. - - - Square wave - Квадратна хвиля - - - Click here for a square-wave. - Згенерувати квадратний сигнал. - - - White noise wave - Білий шум - - - Click here for white-noise. - Згенерувати білий шум. - - - WaveInterpolate - - - - ExpressionValid - - - - General purpose 1: - - - - General purpose 2: - - - - General purpose 3: - - - - O1 panning: - - - - O2 panning: - - - - Release transition: - - - - Smoothness - - - - - fxLineLcdSpinBox - - Assign to: - Призначити до: - - - New FX Channel - Новий ефект каналу - - - - graphModel - - Graph - Графік - - - - kickerInstrument - - Start frequency - Початкова частота - - - End frequency - Кінцева частота - - - Gain - Підсилення - - - Length - Довжина - - - Distortion Start - Початкове спотворення - - - Distortion End - Кінцеве спотворення - - - Envelope Slope - Нахил обвідної - - - Noise - Шум - - - Click - Натисніть - - - Frequency Slope - Частота нахилу - - - Start from note - Почати з замітки - - - End to note - Закінчити заміткою - - - - kickerInstrumentView - - Start frequency: - Початкова частота: - - - End frequency: - Кінцева частота: - - - Gain: - Підсилення: - - - Frequency Slope: - Частота нахилу: - - - Envelope Length: - Довжина обвідної: - - - Envelope Slope: - Нахил обвідної: - - - Click: - Натиснення: - - - Noise: - Шум: - - - Distortion Start: - Початкове спотворення: - - - Distortion End: - Кінцеве спотворення: - - - - 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. - -Unavailable Effects are those that were identified as effects, but either didn't have the same number of input and output channels or weren't real time capable. - -Instruments are plugins for which only output channels were identified. - -Analysis Tools are plugins for which only input channels were identified. - -Don't Knows are plugins for which no input or output channels were identified. - -Double clicking any of the plugins will bring up information on the ports. - У цьому вікні показана інформація про всі модулі LADSPA, які виявила LMMS. Вони розділені на п'ять категорій, залежно від назв і типів портів. - -Доступні ефекти - це ті, які можуть бути використані в LMMS. Щоб ефект LADSPA міг бути використаний, він повинен, по-перше, бути власне ефектом, т. б. мати як вхідні так і вихідні канали. LMMS в якості вхідного каналу сприймає аудіопорти, що містять у назві "in", а вихідні вгадує по підстрочці "out". Для використання в LMMS число вхідних каналів має збігатися з числом вихідних, і ефект повинен мати можливість використання в реальному часі. - -Недоступні ефекти - це модулі LADSPA, розпізнані як ефекти, однак або з незбіжною кількістю вхідних/вихідних каналів, або не призначені для використання в реальному часі. - -Інструменти - це модулі, у яких є тільки вихідні канали. - -Аналізатори - це модулі, що володіють лише вхідними каналами. - -Невідомі - модулі, у яких не було виявлено ні вхідних, ні вихідних каналів. - -Подвійне клацання лівою кнопкою миші по модулю дасть інформацію по його портах. - - - Type: - Тип: - - - - ladspaDescription - - Plugins - Модулі - - - Description - Опис - - - - ladspaPortDialog - - Ports - Порти - - - Name - І'мя - - - Rate - Частота вибірки - - - Direction - Напрямок - - - Type - Тип - - - Min < Default < Max - Менше < Стандарт <Більше - - - Logarithmic - Логарифмічний - - - SR Dependent - Залежність від SR - - - Audio - Аудіо - - - Control - Управління - - - Input - Ввід - - - Output - Вивід - - - Toggled - Увімкнено - - - Integer - Ціле - - - Float - Дробове - - - Yes - Так - - - - lb302Synth - - VCF Cutoff Frequency - Частота зрізу VCF - - - VCF Resonance - Посилення VCF - - - VCF Envelope Mod - Модуляція обвідної VCF - - - VCF Envelope Decay - Спад обвідної VCF - - - Distortion - Спотворення - - - Waveform - Форма хвилі - - - Slide Decay - Зміщення згасання - - - Slide - Зміщення - - - Accent - Акцент - - - Dead - Глухо - - - 24dB/oct Filter - 24дБ/окт фільтр - - - - lb302SynthView - - Cutoff Freq: - Частота зрізу: - - - Resonance: - Резонанс: - - - Env Mod: - Мод Обвідної: - - - Decay: - Згасання: - - - 303-es-que, 24dB/octave, 3 pole filter - 303-ій, 24дБ/октаву, 3-польний фільтр - - - 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. - Натисніть тут для муг-зигзаг хвилі з обмеженою смугою. - - - - malletsInstrument - - Hardness - Жорсткість - - - Position - Положення - - - Vibrato Gain - Посилення вібрато - - - Vibrato Freq - Частота вібрато - - - Stick Mix - Зведення рученят - - - Modulator - Модулятор - - - Crossfade - Перехід - - - LFO Speed - Швидкість LFO - - - LFO Depth - Глибина LFO - - - ADSR - ADSR - - - Pressure - Тиск - - - Motion - Рух - - - Speed - Швидкість - - - Bowed - Нахил - - - Spread - Розкид - - - Marimba - Марімба - - - Vibraphone - Віброфон - - - Agogo - Дискотека - - - Wood1 - Дерево1 - - - Reso - Ресо - - - Wood2 - Дерево2 - - - Beats - Удари - - - Two Fixed - Два фіксованих - - - Clump - Важка хода - - - Tubular Bells - Трубні дзвони - - - Uniform Bar - Рівномірні смуги - - - Tuned Bar - Підстроєні смуги - - - Glass - Скло - - - Tibetan Bowl - Тибетські кулі - - - - 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 - - - LFO Speed: - Швидкість LFO: - - - LFO Depth - Глибина LFO - - - LFO Depth: - Глибина LFO: - - - ADSR - ADSR - - - ADSR: - ADSR: - - - Pressure - Тиск - - - Pressure: - Тиск: - - - Speed - Швидкість - - - Speed: - Швидкість: - - - Missing files - Відсутні файли - - - Your Stk-installation seems to be incomplete. Please make sure the full Stk-package is installed! - Схоже, що встановлені не всі пакети Stk. Вам слід це перевірити! - - - - manageVSTEffectView - - - VST parameter control - Управление VST параметрами - - - VST Sync - VST синхронізація - - - Click here if you want to synchronize all parameters with VST plugin. - Натисніть тут для синхронізації всіх параметрів VST плагіна. - - - Automated - Автоматизовано - - - Click here if you want to display automated parameters only. - Натисніть тут, якщо хочете бачити тільки автоматизовані параметри. - - - Close - Закрити - - - Close VST effect knob-controller window. - Закрити вікно управління регуляторами VST плагіна. - - - - manageVestigeInstrumentView - - - VST plugin control - Управління VST плагіном - - - VST Sync - VST синхронізація - - - Click here if you want to synchronize all parameters with VST plugin. - Натисніть тут для синхронізації всіх параметрів VST плагіна. - - - Automated - Автоматизовано - - - Click here if you want to display automated parameters only. - Натисніть тут, якщо хочете бачити тільки автоматизовані параметри. - - - Close - Закрити - - - Close VST plugin knob-controller window. - Закрити вікно управління регуляторами VST плагіна. - - - - opl2instrument - - Patch - Патч - - - Op 1 Attack - ОП 1 Вступ - - - Op 1 Decay - ОП 1 Спад - - - Op 1 Sustain - ОП 1 Видержка - - - Op 1 Release - ОП 1 Зменшення - - - Op 1 Level - ОП 1 Рівень - - - Op 1 Level Scaling - ОП 1 Рівень збільшення + Resonance: + Резонанс: - Op 1 Frequency Multiple - ОП 1 Множник частот + Env Mod: + Мод Обвідної: - Op 1 Feedback - ОП 1 Повернення + Decay: + Згасання: - Op 1 Key Scaling Rate - ОП 1 Ключова ставка множника + 303-es-que, 24dB/octave, 3 pole filter + 303-ій, 24дБ/октаву, 3-польний фільтр - Op 1 Percussive Envelope - ОП 1 Ударна обвідна + Slide Decay: + Зміщення згасання: - Op 1 Tremolo - ОП 1 Тремоло + DIST: + СПОТ: - Op 1 Vibrato - Оп 1 Вібрато + Saw wave + Зигзаг - Op 1 Waveform - ОП 1 Хвиля + Click here for a saw-wave. + Згенерувати зигзаг. - Op 2 Attack - ОП 2 Вступ + Triangle wave + Трикутна хвиля - Op 2 Decay - ОП 2 Спад + Click here for a triangle-wave. + Згенерувати трикутний сигнал. - Op 2 Sustain - ОП 2 Видержка + Square wave + Квадрат - Op 2 Release - ОП 2 Зменшення + Click here for a square-wave. + Згенерувати квадратний сигнал. - Op 2 Level - ОП 2 Рівень + Rounded square wave + Хвиля округленого квадрату - Op 2 Level Scaling - ОП 2 Рівень збільшення + Click here for a square-wave with a rounded end. + Створити квадратну хвилю закруглену в кінці. - Op 2 Frequency Multiple - ОП 2 Множник частот + Moog wave + Муг хвиля - Op 2 Key Scaling Rate - ОП 2 Ключова ставка множника + Click here for a moog-like wave. + Згенерувати хвилю схожу на муг. - Op 2 Percussive Envelope - ОП 2 Ударна обвідна + Sine wave + Синусоїда - Op 2 Tremolo - ОП 2 Тремоло + Click for a sine-wave. + Генерувати гармонійний (синусоїдальний) сигнал. - Op 2 Vibrato - Оп 2 Вібрато + White noise wave + Білий шум - Op 2 Waveform - ОП 2 Хвиля + Click here for an exponential wave. + Генерувати експонентний сигнал. - FM - FM + Click here for white-noise. + Згенерувати білий шум. - Vibrato Depth - Глибина вібрато + Bandlimited saw wave + Зигзаг хвиля з обмеженою смугою - Tremolo Depth - Глибина тремоло + Click here for bandlimited saw wave. + Натисніть тут для пилкоподібної хвилі з обмеженою смугою. - - - opl2instrumentView - Attack - Вступ + Bandlimited square wave + Квадратна хвиля з обмеженою смугою - Decay - Згасання + Click here for bandlimited square wave. + Натисніть тут для квадратної хвилі з обмеженою смугою. - Release - Зменшення + Bandlimited triangle wave + Трикутна хвиля з обмеженою смугою - Frequency multiplier - Множник частоти + Click here for bandlimited triangle wave. + Натисніть тут для трикутної хвилі з обмеженою смугою. - - - organicInstrument - Distortion - Спотворення + Bandlimited moog saw wave + Муг-зигзаг хвиля з обмеженою смугою - Volume - Гучність + Click here for bandlimited moog saw wave. + Натисніть тут для муг-зигзаг хвилі з обмеженою смугою. - organicInstrumentView + malletsInstrument - Distortion: - Спотворення: + Hardness + Жорсткість - Volume: - Гучність: + Position + Положення - Randomise - Випадково + Modulator + Модулятор - Osc %1 waveform: - Форма сигналу осциллятора %1: + Crossfade + Перехід - Osc %1 volume: - Гучність осциллятора %1: + ADSR + ADSR - Osc %1 panning: - Баланс для осциллятора %1: + Pressure + Тиск - cents - соті + Motion + Рух - The distortion knob adds distortion to the output of the instrument. - Спотворення додає спотворення до виходу інструменту. + Speed + Швидкість - The volume knob controls the volume of the output of the instrument. It is cumulative with the instrument window's volume control. - Регулятор гучності виведення інструменту, підсумовується з регулятором гучності вікна інструменту. + Bowed + Нахил - The randomize button randomizes all knobs except the harmonics,main volume and distortion knobs. - Кнопка рандомізації випадково встановлює всі регулятори, крім гармонік, основної гучності і регулятора спотворень. + Spread + Розкид - Osc %1 stereo detuning - Осц %1 стерео расстройка + Marimba + Марімба - Osc %1 harmonic: - Осц %1 гармоніка: + Vibraphone + Віброфон - - - FreeBoyInstrument - Sweep time - Час поширення + Agogo + Дискотека - Sweep direction - Напрям поширення + Reso + Ресо - Sweep RtShift amount - Кіль-ть поширення зсуву вправо + Beats + Удари - Wave Pattern Duty - Робоча форма хвилі + Clump + Важка хода - Channel 1 volume - Гучність першого каналу + Glass + Скло - Volume sweep direction - Обсяг напрямку поширення + Vibrato gain + - Length of each step in sweep - Довжина кожного такту в поширенні + Vibrato frequency + - Channel 2 volume - Гучність другого каналу + Stick mix + - Channel 3 volume - Гучність третього каналу + LFO speed + Швидкість LFO - Channel 4 volume - Гучність четвертого каналу + LFO depth + - Right Output level - Вихідний рівень праворуч + Wood 1 + - Left Output level - Вихідний рівень зліва + Wood 2 + - Channel 1 to SO2 (Left) - Від першого каналу до SO2 (лівий канал) + Two fixed + - Channel 2 to SO2 (Left) - Від другого каналу до SO2 (лівий канал) + Tubular bells + - Channel 3 to SO2 (Left) - Від третього каналу до SO2 (лівий канал) + Uniform bar + - Channel 4 to SO2 (Left) - Від четвертого каналу до SO2 (лівий канал) + Tuned bar + - Channel 1 to SO1 (Right) - Від першого каналу до SO1 (правий канал) + Tibetan bowl + + + + malletsInstrumentView - Channel 2 to SO1 (Right) - Від другого каналу до SO1 (правий канал) + Instrument + Інструмент - Channel 3 to SO1 (Right) - Від третього каналу до SO1 (правий канал) + Spread + Розкид - Channel 4 to SO1 (Right) - Від четвертого каналу до SO1 (правий канал) + Spread: + Розкид: - Treble - Дискант + Hardness + Жорсткість - Bass - Бас + Hardness: + Жорсткість: - Shift Register width - Зміщення ширини регістра + Position + Положення - - - FreeBoyInstrumentView - Sweep Time: - Час розгортки: + Position: + Положення: - Sweep Time - Час розгортки + Modulator + Модулятор - Sweep RtShift amount: - Кіл-ть розгортки зміщення вправо: + Modulator: + Модулятор: - Sweep RtShift amount - Кіл-ть розгортки зсуву вправо + Crossfade + Перехід - Wave pattern duty: - Робоча форма хвилі: + Crossfade: + Перехід: - Wave Pattern Duty - Робоча форма хвилі + ADSR + ADSR - Square Channel 1 Volume: - Гучність квадратного каналу 1: + ADSR: + ADSR: - Length of each step in sweep: - Довжина кожного кроку в розгортці: + Pressure + Тиск - Length of each step in sweep - Довжина кожного кроку в розгортці + Pressure: + Тиск: - Wave pattern duty - Робоча форма хвилі + Speed + Швидкість - Square Channel 2 Volume: - Гучність квадратного каналу 2: + Speed: + Швидкість: - Square Channel 2 Volume - Гучність квадратного каналу 2 + Missing files + Відсутні файли - Wave Channel Volume: - Гучність хвильового каналу: + Your Stk-installation seems to be incomplete. Please make sure the full Stk-package is installed! + Схоже, що встановлені не всі пакети Stk. Вам слід це перевірити! - Wave Channel Volume - Гучність хвильового каналу + Vibrato gain + - Noise Channel Volume: - Гучність каналу шуму: + Vibrato gain: + - Noise Channel Volume - Гучність каналу шуму + Vibrato frequency + - SO1 Volume (Right): - Гучність SO1 (Правий): + Vibrato frequency: + - SO1 Volume (Right) - Гучність SO1 (Правий) + Stick mix + - SO2 Volume (Left): - Гучність SO2 (Лівий): + Stick mix: + - SO2 Volume (Left) - Гучність SO2 (Лівий) + LFO speed + Швидкість LFO - Treble: - Дискант: + LFO speed: + Швидкість LFO: - Treble - Дискант + LFO depth + - Bass: - Бас: + LFO depth: + + + + manageVSTEffectView - Bass - Бас + - VST parameter control + Управление VST параметрами - Sweep Direction - Напрямок розгортки + Automated + Автоматизовано - Volume Sweep Direction - Гучність напрямки розгортки + Close + Закрити - Shift Register Width - Зміщення ширини регістра + VST sync + + + + manageVestigeInstrumentView - Channel1 to SO1 (Right) - Канал1 в SO1 (Правий) + - VST plugin control + Управління VST плагіном - Channel2 to SO1 (Right) - Канал2 в SO1 (Правий) + VST Sync + VST синхронізація - Channel3 to SO1 (Right) - Канал3 в SO1 (Правий) + Automated + Автоматизовано - Channel4 to SO1 (Right) - Канал4 в SO1 (Правий) + Close + Закрити + + + organicInstrument - Channel1 to SO2 (Left) - Канал1 в SO2 (Лівий) + Distortion + Спотворення - Channel2 to SO2 (Left) - Канал2 в SO2 (Лівий) + Volume + Гучність + + + organicInstrumentView - Channel3 to SO2 (Left) - Канал3 в SO2 (Лівий) + Distortion: + Спотворення: - Channel4 to SO2 (Left) - Канал4 в SO2 (Лівий) + Volume: + Гучність: - Wave Pattern - Малюнок хвилі + Randomise + Випадково - The amount of increase or decrease in frequency - Кіл-ть збільшення або зменшення в частоті + Osc %1 waveform: + Форма сигналу осциллятора %1: - The rate at which increase or decrease in frequency occurs - Темп прояви збільшення або зниження в частоті + Osc %1 volume: + Гучність осциллятора %1: - The duty cycle is the ratio of the duration (time) that a signal is ON versus the total period of the signal. - Робочий цикл це коефіцієнт тривалості (часу) включеного сигналу відносно всього періоду сигналу. + Osc %1 panning: + Баланс для осциллятора %1: - Square Channel 1 Volume - Гучність квадратного каналу 1 + cents + соті - The delay between step change - Затримка між змінами кроку + Osc %1 stereo detuning + Осц %1 стерео расстройка - Draw the wave here - Малювати хвилю тут + Osc %1 harmonic: + Осц %1 гармоніка: @@ -9398,10 +4309,6 @@ Double clicking any of the plugins will bring up information on the ports. pluginBrowser - - no description - опис відсутній - Incomplete monophonic imitation tb303 Незавершена монофонічна імітація tb303 @@ -9578,11 +4485,11 @@ This chip was used in the Commodore 64 computer. Reverb algorithm by Sean Costello - + Mathematical expression parser - + @@ -9604,134 +4511,110 @@ This chip was used in the Commodore 64 computer. Луна - Reverb Roomsize - Об'єм луни + Chorus + Хор (Приспів) - Reverb Damping - Загасання луни + A soundfont %1 could not be loaded. + soundfont %1 не вдається завантажити. - Reverb Width - Довгота луни + Reverb room size + - Reverb Level - Рівень луни + Reverb damping + - Chorus - Хор (Приспів) + Reverb width + - Chorus Lines - Лінії хору + Reverb level + - Chorus Level - Рівень хору + Chorus voices + - Chorus Speed - Швидкість хору + Chorus level + - Chorus Depth - Глибина хору + Chorus speed + - A soundfont %1 could not be loaded. - soundfont %1 не вдається завантажити. + Chorus depth + sf2InstrumentView - - Open other SoundFont file - Відкрити інший файл SoundFront - - - Click here to open another SF2 file - Натисніть тут щоб відкрити інший файл SF2 - - - 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: - Розмір приміщення: + Apply chorus (if supported) + Створити ефект хору (якщо підтримується) - Reverb Damping: - Загасання луни: + Open SoundFont file + Відкрити файл SoundFront - Reverb Width: - Довгота луни: + Choose patch + - Reverb Level: - Рівень відлуння: + Gain: + Підсилення: - Apply chorus (if supported) - Створити ефект хору (якщо підтримується) + Room size: + - This button enables the chorus effect. This is useful for cool echo effects, but only works on files that support it. - Ця кнопка включає ефект хору. Це корисно для класних ефектів, але працює не для всіх файлів. + Damping: + - Chorus Lines: - Лінії хору: + Width: + Ширина: - Chorus Level: - Рівень хору: + Level: + - Chorus Speed: - Швидкість хору: + Voices: + - Chorus Depth: - Глибина хору: + Speed: + Швидкість: - Open SoundFont file - Відкрити файл SoundFront + Depth: + Глибина: - SoundFont2 Files (*.sf2) - Файли SoundFont2 (*.sf2) + SoundFont Files (*.sf2 *.sf3) + sfxrInstrument - Wave Form - Форма хвилі + Wave + sidInstrument - - Cutoff - Зріз - Resonance Підсилення @@ -9752,6 +4635,10 @@ This chip was used in the Commodore 64 computer. Chip model Модель чіпа + + Cutoff frequency + Зріз частоти + sidInstrumentView @@ -9767,22 +4654,6 @@ This chip was used in the Commodore 64 computer. Cutoff frequency: Частота зрізу: - - High-Pass filter - Вис.ЧФ - - - Band-Pass filter - Серед.ЧФ - - - Low-Pass filter - Низ.ЧФ - - - Voice3 Off - Голос 3 відкл - MOS6581 SID MOS6581 SID @@ -9795,109 +4666,89 @@ This chip was used in the Commodore 64 computer. Attack: Вступ: - - Attack rate determines how rapidly the output of Voice %1 rises from zero to peak amplitude. - Тривалість вступу визначає, наскільки швидко гучність %1-го голосу зростає від нуля до максимального значення. - 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. - Гучність %1-го голосу залишатиметься на рівні амплітуди витримки, поки триває нота. - Release: Зменшення: - - The output of of Voice %1 will fall from Sustain amplitude to zero amplitude at the selected Release rate. - Гучність %1-го голосу буде падати від залишкового рівня до нуля з вказаною тут швидкістю. - 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. - Тривалість імпульсу дозволяє м'яко регулювати проходження імпульсу без помітних збоїв. Імпульсна хвиля повинна бути обрана на осцилляторі %1, щоб отримати звучання. - Coarse: Грубість: - The Coarse detuning allows to detune Voice %1 one octave up or down. - Грубі налаштування дозволяють підлаштувати Голос %1 на одну октаву вгору або вниз. + Noise + Шум - Pulse Wave - Пульсуюча хвиля + Sync + Синхро - Triangle Wave - Трикутник + Filtered + Відфільтрований - SawTooth - Зигзаг + Test + Тест - Noise - Шум + High-pass filter + - Sync - Синхро + Band-pass filter + - Sync synchronizes the fundamental frequency of Oscillator %1 with the fundamental frequency of Oscillator %2 producing "Hard Sync" effects. - Синхро синхронізує фундаментальну частоту осцилляторів %1 фундаментальною частотою осциллятора %2, створюючи ефект "Залізної синхронізації". + Low-pass filter + - Ring-Mod - Круговий режим + Voice 3 off + - Ring-mod replaces the Triangle Waveform output of Oscillator %1 with a "Ring Modulated" combination of Oscillators %1 and %2. - Круговий режим замінює трикутні хвилі на виході осциллятора %1 "Круговою модуляцією" комбінацією осцилляторів %1 і %2. + Pulse wave + - Filtered - Відфільтрований + Triangle wave + - 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. - Якщо цей прапорець встановлено, то %1-й голос буде проходити через фільтр. Інакше голос № %1 буде подаватися прямо на вихід. + Saw wave + Зигзаг - Test - Тест + Ring modulation + - Test, when set, resets and locks Oscillator %1 at zero until Test is turned off. - Якщо «прапорець» встановлено, то %1-й осциллятор видає нульовий сигнал (поки прапорець не зніметься). + Pulse width: + stereoEnhancerControlDialog - - WIDE - ШИРШЕ - Width: Ширина: + + WIDTH + + stereoEnhancerControls @@ -9951,8 +4802,8 @@ This chip was used in the Commodore 64 computer. Завантаження модуля - Please wait while loading VST-plugin... - Будь ласка зачекайте поки завантажеться модуль VST... + Please wait while loading the VST plugin... + @@ -9974,179 +4825,60 @@ This chip was used in the Commodore 64 computer. Положення %1-го звукознімача - Pan %1 - Бал %1 + Impulse %1 + Імпульс %1 - Detune %1 - Підстроювання %1 + String %1 panning + - Fuzziness %1 - Нечіткість %1 + String %1 detune + - Length %1 - Довжина %1 + String %1 fuzziness + - Impulse %1 - Імпульс %1 + String %1 length + - Octave %1 - Октава %1 + String %1 + vibedView - - Volume: - Гучність: - - - The 'V' knob sets the volume of the selected string. - Регулятор 'V' встановлює гучність поточної струни. - 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. - Регулятор 'S' встановлює жорсткість поточної струни. Цей параметр відповідає за тривалість звучання струни (чим більше значення жорсткості, тим довше дзвенить струна). - 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. - Регулятор 'P' встановлює місце струни, де вона буде "притиснута". Чим нижче значення, тим ближче це місце буде до кобилки. - 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. - Регулятор 'PU' встановлює місце струни, звідки буде зніматися звук. Чим нижче значення, тим ближче це місце буде до мосту. - - - 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. - Перемикач "Imp" встановлює режим роботи струни: якщо він включений, то зазначена форма сигналу інтерпретується як початковий імпульс, інакше - як початкова форма струни. - 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. - Перемикач октав дозволяє вказати гармоніку основної частоти, на якій буде звучати струна. Наприклад, "-2" означає, що струна буде звучати двома октавами нижче основної частоти, "F" змусить струну дзвеніти на основній частоті інструменту, а "6" - на частоті, на шість октав більш високій, ніж основна. - 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. - -The 'S' button will smooth the waveform. - -The 'N' button will normalize the waveform. - Редактор форми дозволяє явно вказати профіль струни в початковий момент часу, або її початковий імпульс (в залежності від стану перемикача "Imp"). -Кнопки праворуч від малюнка дозволяють задавати деякі стандартні форми, причому кнопка '?' служить для задання форми з довільного звукового файлу (завантажуються перші 128 елементів вибірки). - -Також форма сигналу може бути просто намальована за допомогою миші. - -Кнопка 'S' згладить поточну форму. - -Кнопка 'N' нормалізує рівень. - - - 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. - -The 'V' knob controls the volume. The 'S' knob controls the string's stiffness. The 'P' knob controls the pick position. The 'PU' knob controls the pickup position. - -'Pan' and 'Detune' hopefully don't need explanation. The 'Slap' knob adds a bit of fuzz to the sound of the string. - -The 'Length' knob controls the length of the string. - -The LED in the lower right corner of the waveform editor determines whether the string is active in the current instrument. - Інструмент "Vibed" моделює до дев'яти незалежних одночасно звучних струн. - -Перемикач "Strings" дозволяє вибрати струну, чиї властивості редагуються. - -Перемикач "Imp" встановлює режим роботи струни: якщо він включений, то зазначена форма сигналу інтерпретується як початковий імпульс, інакше - як початкова форма струни. - -Перемикач "Octave" дозволяє вказати гармоніку основної частоти, на якій буде звучати струна. - -Редактор форми дозволяє явно вказати профіль струни в початковий момент часу, або її початковий імпульс. - -Ручка 'V' встановлює гучність поточної струни, 'S' - жорсткість, 'P' - місце, де притиснута струна, а 'PU' '- положення звукознімача. - -Ручка підстроювання і стереобалансу, сподіваємося не потребує пояснень. - -Ручка "Довжина" регулює довжину струни - -Індикатор-перемикач зліва внизу визначає, чи включена поточна струна. - 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. - Перемикач струн дозволяє вибрати струну, чиї властивості редагуються. Інструмент Vibed містить до дев'яти незалежно звучних струн, індикатор в лівому нижньому куті показує, активна чи поточна струна (тобто чи буде вона чутна). - Sine wave Синусоїда @@ -10164,52 +4896,48 @@ The LED in the lower right corner of the waveform editor determines whether the Квадратна хвиля - White noise wave - Білий шум - - - User defined wave - Користувацька + String volume: + - Smooth - Згладити + String panning: + - Click here to smooth waveform. - Клацніть щоб згладити форму сигналу. + String detune: + - Normalize - Нормалізувати + String fuzziness: + - Click here to normalize waveform. - Натисніть, щоб нормалізувати сигнал. + String length: + - Use a sine-wave for current oscillator. - Генерувати гармонійний (синусоїдальний) сигнал. + Impulse + - Use a triangle-wave for current oscillator. - Генерувати трикутний сигнал. + Enable/disable string + - Use a saw-wave for current oscillator. - Генерувати зигзагоподібний сигнал. + White noise + Білий шум - Use a square-wave for current oscillator. - Генерувати квадрат. + User-defined wave + - Use white-noise for current oscillator. - Генерувати білий шум. + Smooth waveform + Згладжений сигнал - Use a user-defined waveform for current oscillator. - Задати форму сигналу. + Normalize waveform + @@ -10278,44 +5006,28 @@ The LED in the lower right corner of the waveform editor determines whether the Вихідне підсилення: - 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 - Збільште амплітуди графа хвилі на 1дБ + Clip input + Зрізати вхідний сигнал - Click here to increase wavegraph amplitude by 1dB - Натисніть тут, щоб збільшити амплітуду графа хвилі на 1дБ + Reset wavegraph + - Decrease graph amplitude by 1dB - Зменшення амплітуди графа хвилі на 1дБ + Smooth wavegraph + - Click here to decrease wavegraph amplitude by 1dB - Натисніть тут, щоб зменшити амплітуду графа хвилі на 1дБ + Increase wavegraph amplitude by 1 dB + - Clip input - Зрізати вхідний сигнал + Decrease wavegraph amplitude by 1 dB + - Clip input signal to 0dB - Зрізати вхідний сигнал до 0дБ + Clip input signal to 0 dB + @@ -10329,4 +5041,4 @@ The LED in the lower right corner of the waveform editor determines whether the Вихідне підсилення - \ No newline at end of file + diff --git a/data/locale/zh_TW.ts b/data/locale/zh_TW.ts index d2209539eb3..15c0059bcae 100644 --- a/data/locale/zh_TW.ts +++ b/data/locale/zh_TW.ts @@ -1,71 +1,6 @@ - - - AboutDialog - - About LMMS - 關於LMMS - - - Version %1 (%2/%3, Qt %4, %5) - 版本 %1 (%2/%3, Qt %4, %5) - - - About - 關於 - - - LMMS - easy music production for everyone - LMMS - 人人都是作曲家 - - - Authors - 作者 - - - 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! - 當前語言是中文(台灣) - -翻譯人員: -TonyChyi <tonychee1989 at gmail.com> -Min Zhang <zm1990s at gmail.com> -Jeff Bai <jeffbaichina at gmail.com> -Mingye Wang <arthur2e5@aosc.xyz> -Zixing Liu <liushuyu@aosc.xyz> -BrLi <brli at chakraos.org> - -若你有興趣提高翻譯品質,請聯絡維護團隊 (https://github.com/AOSC-Dev/translations)、之前的譯者或本項目維護者! - - - License - 授權協議 - - - LMMS - LMMS - - - Involved - 參與者 - - - Contributors ordered by number of commits: - 貢獻者名單(以提交次數排序): - - - Copyright © %1 - 版權所有 © %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 @@ -120,94 +55,47 @@ BrLi <brli at chakraos.org> 右增益 - - AudioAlsaSetupWidget - - DEVICE - 裝置 - - - CHANNELS - 聲道數 - - 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. - 如果想打開另一個音訊檔,請點擊這裡。接著會出現檔案選擇視窗。諸如循環模式 (looping-mode),起始/結束點,放大率 (amplify-value) 之類的值不會被重置。因此聽起來會和取樣來源有差異。 - Reverse sample 反轉取樣 - - If you enable this button, the whole sample is reversed. This is useful for cool effects, e.g. a reversed crash. - 如果點擊此按鈕,整個取樣將會被反轉。能用於製作很酷的效果,例如 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!) - 此旋鈕用於調整放大比率。當設爲100% 時採樣不會變化。除此之外,不是放大就是減弱(原始的採樣文件不會被改變) - - - 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. - 點擊此按鈕後,Forwards-looping 會被打開,採樣將在終止點(End Point)和循環點(Loop Point)之間播放。 - - - This button enables ping-pong-looping. The sample loops backwards and forwards between the end point and the loop point. - 點擊此按鈕後,Ping-pong-looping 會被打開,採樣將在終止點 (End Point) 和循環點 (Loop Point) 之間來回播放。 + Loopback point: + 循環點: - With this knob you can set the point where AudioFileProcessor should begin playing your sample. - 調節此旋鈕,以告訴 AudioFileProcessor 在哪裏開始播放。 + Open sample + - With this knob you can set the point where AudioFileProcessor should stop playing your sample. - 調節此旋鈕,以告訴 AudioFileProcessor 在哪裏停止播放。 + Enable ping-pong loop + - Loopback point: - 循環點: + Start point: + - With this knob you can set the point where the loop starts. - 調節此旋鈕,以設置循環開始的地方。 + End point: + @@ -218,9111 +106,4170 @@ BrLi <brli at chakraos.org> - AudioJack + BassBoosterControlDialog - JACK client restarted - JACK客戶端已重啓 + FREQ + 頻率 - 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. - LMMS由於某些原因與JACK斷開連接,這可能是因爲LMMS的JACK後端重啓導致的,你需要手動重新連接。 + Frequency: + 頻率: - JACK server down - JACK服務崩潰 + GAIN + 增益 - 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. - JACK服務好像崩潰了而重開也失敗了,因此LMMS無法繼續執行。你需要儲存你的工作然後重啓JACK和LMMS。 + Gain: + 增益: - CLIENT-NAME - 客戶端名稱 + RATIO + 比率 - CHANNELS - 聲道數 + Ratio: + 比率: - AudioOss::setupWidget - - DEVICE - 設備 - + BassBoosterControls - CHANNELS - 聲道數 + Frequency + 頻率 - - - AudioPortAudio::setupWidget - BACKEND - 後端 + Gain + 增益 - DEVICE - 設備 + Ratio + 比率 - AudioPulseAudio::setupWidget + BitcrushControlDialog - DEVICE - 設備 + IN + 輸入 - CHANNELS - 聲道數 + OUT + 輸出 - - - AudioSdl::setupWidget - DEVICE - 設備 + GAIN + 增益 - - - AudioSndio::setupWidget - DEVICE - 裝置 + CLIP + 壓限 - CHANNELS - 聲道數 + Sample rate: + 採樣率: - - - AudioSoundIo::setupWidget - BACKEND - 後端 + Stereo difference: + 雙聲道差異: - DEVICE - 設備 + Levels: + 級別: + + + NOISE + - - - AutomatableModel - &Reset (%1%2) - 重置(%1%2)(&R) + FREQ + 頻率 - &Copy value (%1%2) - 複製值(%1%2)(&C) + STEREO + - &Paste value (%1%2) - 貼上值(%1%2)(&P) + QUANT + - Edit song-global automation - 編輯歌曲全局的自動控制裝置 + Input gain: + 輸入增益: - Connected to %1 - 連接到%1 + Input noise: + - Connected to controller - 連接到控制器 + Output gain: + 輸出增益: - Edit connection... - 編輯連接... + Output clip: + - Remove connection - 刪除連接 + Rate enabled + - Connect to controller... - 連接到控制器... + Enable sample-rate crushing + - Remove song-global automation - 刪除歌曲全局的自動控制裝置 + Depth enabled + - Remove all linked controls - 刪除所有已連接的控制器 + Enable bit-depth crushing + - AutomationEditor + BitcrushControls - Please open an automation pattern with the context menu of a control! - 請使用控制的上下文菜單打開一個自動控制樣式! + Input gain + 輸入增益 - Values copied - 值已複製 + Input noise + - All selected values were copied to the clipboard. - 所有選中的值已複製。 + Output gain + 輸出增益 - - - AutomationEditorWindow - Play/pause current pattern (Space) - 播放/暫停當前片段(空格) + Output clip + - 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. - 點擊這裏播放片段。編輯時很有用,片段會自動循環播放。 + Sample rate + - Stop playing of current pattern (Space) - 停止當前片段(空格) + Stereo difference + - Click here if you want to stop playing of the current pattern. - 點擊這裏停止播放片段。 + Levels + - Draw mode (Shift+D) - 繪製模式 (Shift+D) + Rate enabled + - Erase mode (Shift+E) - 擦除模式 (Shift+E) + Depth enabled + + + + CarlaInstrumentView - Flip vertically - 垂直翻轉 + Show GUI + 顯示圖形界面 + + + CrossoverEQControlDialog - Flip horizontally - 水平翻轉 + Band 1/2 crossover: + - Click here and the pattern will be inverted.The points are flipped in the y direction. - 點擊這裡來翻轉圖形 (pattern)。圖上的點會隨y軸翻轉。 + Band 2/3 crossover: + - Click here and the pattern will be reversed. The points are flipped in the x direction. - 點擊這裡來翻轉圖形 (pattern)。圖上的點會隨x軸翻轉。 + Band 3/4 crossover: + - 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. - 點擊這裏啓用繪製模式。在此模式下你可以增加或移動單個值。 大部分時間下默認使用此模式。你也可以按鍵盤上的 ‘Shift+D’激活此模式。 + Band 1 gain + - 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. - 點擊啓用擦除模式。此模式下你可以擦除單個值。你可以按鍵盤上的 'Shift+E' 啓用此模式。 + Band 1 gain: + - Discrete progression - 區間進程 (Discrete progression) + Band 2 gain + - Linear progression - 線性進程 (Linear progression) + Band 2 gain: + - Cubic Hermite progression - + Band 3 gain + - Tension value for spline - + Band 3 gain: + - 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. - + Band 4 gain + - 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. - + Band 4 gain: + - 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. - + Band 1 mute + - 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. - + Mute band 1 + - Cut selected values (%1+X) - 剪切選定值 (%1+X) + Band 2 mute + - Copy selected values (%1+C) - 複製選定值 (%1+C) + Mute band 2 + - Paste values from clipboard (%1+V) - 從剪貼簿貼上值 (%1+V) + Band 3 mute + - 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. - 點擊這裏,選擇的值將會被剪切到剪切板。你可以使用粘貼按鈕將它們粘貼到任意地方,存爲任意片段。 + Mute band 3 + - 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. - 點擊這裏,選擇的值將會被複制到剪切板。你可以使用粘貼按鈕將它們粘貼到任意地方,存爲任意片段。 + Band 4 mute + - Click here and the values from the clipboard will be pasted at the first visible measure. - 點擊這裏,選擇的值將從剪貼板粘貼到第一個可見的小節。 + Mute band 4 + + + + DelayControls - Tension: - + Feedback + - Automation Editor - no pattern - 自動控制編輯器 - 沒有片段 + Output gain + 輸出增益 - Automation Editor - %1 - 自動控制編輯器 - %1 + Delay samples + - Edit actions - 編輯功能 + LFO frequency + - Interpolation controls - 補間控制 + LFO amount + + + + DelayControlsDialog - Timeline controls - 時間線控制 + Gain + 增益 - Zoom controls - 縮放控制 + DELAY + - Quantization controls - + FDBK + - Model is already connected to this pattern. - 模型已連接到此片段。 + RATE + - Quantization - + AMNT + - 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. - + Delay time + - - - AutomationPattern - Drag a control while pressing <%1> - 按住<%1>拖動控制器 + Feedback amount + - - - AutomationPatternView - Open in Automation editor - 在自動編輯器(Automation editor)中打開 + LFO frequency + - Clear - 清除 + LFO amount + - Reset name - 重置名稱 + Out gain + + + + DualFilterControlDialog - Change name - 修改名稱 + Filter 1 enabled + 已啓用過濾器 1 - %1 Connections - %1個連接 + Filter 2 enabled + 已啓用過濾器 2 - Disconnect "%1" - 斷開“%1”的連接 + FREQ + 頻率 - Set/clear record - 設置/清除錄製 + Cutoff frequency + 切除頻率 - Flip Vertically (Visible) - 垂直翻轉 (可見) + RESO + - Flip Horizontally (Visible) - 水平翻轉 (可見) + Resonance + 共鳴 - Model is already connected to this pattern. - 模型已連接到此片段。 + GAIN + 增益 - - - AutomationTrack - Automation track - 自動控制軌道 + Gain + 增益 - - - BBEditor - Beat+Bassline Editor - 節拍+低音線編輯器 + MIX + - Play/pause current beat/bassline (Space) - 播放/暫停當前節拍/低音線(空格) + Mix + 混合 - Stop playback of current beat/bassline (Space) - 停止播放當前節拍/低音線(空格) + Enable/disable filter 1 + - Click here to play the current beat/bassline. The beat/bassline is automatically looped when its end is reached. - 點擊這裏停止播放當前節拍/低音線。當結束時節拍/低音線會自動循環播放。 + Enable/disable filter 2 + + + + DualFilterControls - Click here to stop playing of current beat/bassline. - 點擊這裏停止播發當前節拍/低音線。 + Filter 1 enabled + 過濾器1 已啓用 - Add beat/bassline - 添加節拍/低音線 + Filter 1 type + 過濾器 1 類型 - Add automation-track - 添加自動控制軌道 + Q/Resonance 1 + 濾波器 1 Q值 - Remove steps - 移除音階 + Gain 1 + 增益 1 - Add steps - 添加音階 + Mix + 混合 - Beat selector - 節拍選擇器 + Filter 2 enabled + 已啓用過濾器 2 - Track and step actions - + Filter 2 type + 過濾器 1 類型 {2 ?} - Clone Steps - + Q/Resonance 2 + 濾波器 2 Q值 - Add sample-track - 新增採樣音軌 + Gain 2 + 增益 2 - - - BBTCOView - Open in Beat+Bassline-Editor - 在節拍+Bassline編輯器中打開 + Notch + 凹口濾波器 - Reset name - 重置名稱 + Moog + Moog - Change name - 修改名稱 + 2x Moog + - Change color - 改變顏色 + SV Notch + - Reset color to default - 重置顏色 + Fast Formant + - - - BBTrack - Beat/Bassline %1 - 節拍/Bassline %1 + Tripole + - Clone of %1 - %1 的副本 + Cutoff frequency 1 + - - - BassBoosterControlDialog - FREQ - 頻率 + Cutoff frequency 2 + - Frequency: - 頻率: + Low-pass + - GAIN - 增益 + Hi-pass + - Gain: - 增益: + Band-pass csg + - RATIO - 比率 + Band-pass czpg + - Ratio: - 比率: + All-pass + - - - BassBoosterControls - Frequency - 頻率 + 2x Low-pass + - Gain - 增益 + RC Low-pass 12 dB/oct + - Ratio - 比率 + RC Band-pass 12 dB/oct + - - - BitcrushControlDialog - IN - 輸入 + RC High-pass 12 dB/oct + - OUT - 輸出 + RC Low-pass 24 dB/oct + - GAIN - 增益 + RC Band-pass 24 dB/oct + - Input Gain: - 輸入增益: + RC High-pass 24 dB/oct + - Input Noise: - 輸入噪音: + Vocal Formant + - Output Gain: - 輸出增益: + SV Low-pass + - CLIP - 壓限 + SV Band-pass + - Output Clip: - 輸出壓限: + SV High-pass + + + + EqControls - Rate Enabled - + Input gain + 輸入增益 - Enable samplerate-crushing - + Output gain + 輸出增益 - Depth Enabled - 深度已啓用 + Peak 1 gain + - Enable bitdepth-crushing - + Peak 2 gain + - Sample rate: - 採樣率: + Peak 3 gain + - Stereo difference: - 雙聲道差異: + Peak 4 gain + - Levels: - 級別: + HP res + - NOISE - + Peak 1 BW + - FREQ - 頻率 + Peak 2 BW + - STEREO - + Peak 3 BW + - QUANT - + Peak 4 BW + - - - CaptionMenu - &Help - 幫助(&H) + LP res + - Help (not available) - 幫助(不可用) + HP freq + - - - CarlaInstrumentView - Show GUI - 顯示圖形界面 + Peak 1 freq + - Click here to show or hide the graphical user interface (GUI) of Carla. - 點擊此處可以顯示或隱藏 Carla 的圖形界面。 + Peak 2 freq + - - - Controller - Controller %1 - 控制器%1 + Peak 3 freq + + + + Peak 4 freq + - - - ControllerConnectionDialog - Connection Settings - 連接設置 + LP freq + - MIDI CONTROLLER - MIDI控制器 + HP active + - Input channel - 輸入通道 + Peak 1 active + - CHANNEL - 通道 + Peak 2 active + - Input controller - 輸入控制器 + Peak 3 active + - CONTROLLER - 控制器 + Peak 4 active + - Auto Detect - 自動檢測 + LP active + - MIDI-devices to receive MIDI-events from - 用來接收 MIDI 事件的MIDI 設備 + LP 12 + - USER CONTROLLER - 用戶控制器 + LP 24 + - MAPPING FUNCTION - 映射函數 + LP 48 + - OK - 確定 + HP 12 + - Cancel - 取消 + HP 24 + - LMMS - LMMS + HP 48 + - Cycle Detected. - 檢測到環路。 + Analyse IN + - - - ControllerRackView - Controller Rack - 控制器機架 + Analyse OUT + - Add - 增加 + Low-shelf gain + - Confirm Delete - 刪除前確認 + High-shelf gain + - Confirm delete? There are existing connection(s) associated with this controller. There is no way to undo. - 確定要刪除嗎?此控制器仍處於被連接狀態。此操作不可撤銷。 + Low-shelf res + - - - ControllerView - Controls - 控制器 + High-shelf res + - Controllers are able to automate the value of a knob, slider, and other controls. - 控制器可以自動控制旋鈕,滑塊和其他控件的值。 + Low-shelf freq + - Rename controller - 重命名控制器 + High-shelf freq + - Enter the new name for this controller - 輸入這個控制器的新名稱 + Low-shelf active + - &Remove this controller - + High-shelf active + - Re&name this controller - + Low-pass type + - LFO - + High-pass type + - CrossoverEQControlDialog + EqControlsDialog - Band 1/2 Crossover: - + HP + - Band 2/3 Crossover: - + Peak 1 + - Band 3/4 Crossover: - + Peak 2 + - Band 1 Gain: - + Peak 3 + - Band 2 Gain: - + Peak 4 + - Band 3 Gain: - + LP + - Band 4 Gain: - + Gain + 增益 - Band 1 Mute - + Bandwidth: + - Mute Band 1 - + Resonance : + - Band 2 Mute - + Frequency: + 頻率: - Mute Band 2 - + Octave + - Band 3 Mute - + Low-shelf + - Mute Band 3 - + High-shelf + - Band 4 Mute - + Input gain + 輸入增益 - Mute Band 4 - + Output gain + 輸出增益 - - - DelayControls - Delay Samples - + LP group + - Feedback - + HP group + + + + EqHandle - Lfo Frequency - + Reso: + - Lfo Amount - + BW: + - Output gain - 輸出增益 + Freq: + - DelayControlsDialog + FlangerControls - Lfo Amt - + Seconds + - Delay Time - 延遲時間 + Regen + - Feedback Amount - + Noise + 噪音 - Lfo - + Invert + 反轉 - Out Gain - + Delay samples + - Gain - 增益 + LFO frequency + + + + FlangerControlsDialog DELAY - - - - FDBK - + RATE - + AMNT - + - - - DualFilterControlDialog - Filter 1 enabled - 已啓用過濾器 1 + Amount: + - Filter 2 enabled - 已啓用過濾器 2 + FDBK + - Click to enable/disable Filter 1 - 點擊啓用/禁用過濾器 1 + NOISE + - Click to enable/disable Filter 2 - 點擊啓用/禁用過濾器 2 + Invert + 反轉 - FREQ - 頻率 + Period: + - Cutoff frequency - 切除頻率 + Delay time: + - RESO - + Feedback amount: + - Resonance - 共鳴 + White noise amount: + + + + FreeBoyInstrument - GAIN - 增益 + Sweep time + - Gain - 增益 + Sweep direction + - MIX - + Channel 1 volume + - Mix - 混合 + Volume sweep direction + - - - DualFilterControls - Filter 1 enabled - 過濾器1 已啓用 + Length of each step in sweep + - Filter 1 type - 過濾器 1 類型 + Channel 2 volume + - Cutoff 1 frequency - 濾波器 1 截頻 + Channel 3 volume + - Q/Resonance 1 - 濾波器 1 Q值 + Channel 4 volume + - Gain 1 - 增益 1 + Channel 1 to SO2 (Left) + - Mix - 混合 + Channel 2 to SO2 (Left) + - Filter 2 enabled - 已啓用過濾器 2 + Channel 3 to SO2 (Left) + - Filter 2 type - 過濾器 1 類型 {2 ?} + Channel 4 to SO2 (Left) + - Cutoff 2 frequency - 濾波器 2 截頻 + Channel 1 to SO1 (Right) + - Q/Resonance 2 - 濾波器 2 Q值 + Channel 2 to SO1 (Right) + - Gain 2 - 增益 2 + Channel 3 to SO1 (Right) + - LowPass - 低通 + Channel 4 to SO1 (Right) + - HiPass - 高通 + Treble + - BandPass csg - 帶通 csg + Bass + 低音 - BandPass czpg - 帶通 czpg + Shift Register width + - Notch - 凹口濾波器 + Sweep rate shift amount + - Allpass - 全通 + Wave pattern duty cycle + - Moog - Moog + Right output level + - 2x LowPass - 2 個低通串聯 + Left output level + + + + FreeBoyInstrumentView - RC LowPass 12dB - RC 低通(12dB) + Length of each step in sweep: + - RC BandPass 12dB - RC 帶通(12dB) + Length of each step in sweep + - RC HighPass 12dB - RC 高通(12dB) + Treble: + - RC LowPass 24dB - RC 低通(24dB) + Treble + - RC BandPass 24dB - RC 帶通(24dB) + Bass: + - RC HighPass 24dB - RC 高通(24dB) + Bass + 低音 - Vocal Formant Filter - 人聲移除過濾器 + Sweep time: + - 2x Moog - + Sweep time + - SV LowPass - + Sweep rate shift amount: + - SV BandPass - + Sweep rate shift amount + - SV HighPass - + Wave pattern duty cycle: + - SV Notch - + Wave pattern duty cycle + - Fast Formant - + Square channel 1 volume: + - Tripole - + Square channel 1 volume + - - - Editor - Play (Space) - 播放(空格) + Square channel 2 volume: + - Stop (Space) - 停止(空格) + Square channel 2 volume + - Record - 錄音 + Wave pattern channel volume: + - Record while playing - 播放時錄音 + Wave pattern channel volume + - Transport controls - + Noise channel volume: + - - - Effect - Effect enabled - 啓用效果器 + Noise channel volume + - Wet/Dry mix - 幹/溼混合 + SO1 volume (Right): + - Gate - 門限 + SO1 volume (Right) + - Decay - 衰減 + SO2 volume (Left): + - - - EffectChain - Effects enabled - 啓用效果器 + SO2 volume (Left) + - - - EffectRackView - EFFECTS CHAIN - 效果器鏈 + Sweep direction + - Add effect - 增加效果器 + Volume sweep direction + - - - EffectSelectDialog - Add effect - 增加效果器 + Shift register width + - Name - 名稱 + Channel 1 to SO1 (Right) + - Type - 類型 + Channel 2 to SO1 (Right) + - Description - 描述 + Channel 3 to SO1 (Right) + - Author - + Channel 4 to SO1 (Right) + - - - EffectView - Toggles the effect on or off. - 打開或關閉效果. + Channel 1 to SO2 (Left) + - On/Off - 開/關 + Channel 2 to SO2 (Left) + - W/D - W/D + Channel 3 to SO2 (Left) + - Wet Level: - 效果度: + Channel 4 to SO2 (Left) + - The Wet/Dry knob sets the ratio between the input signal and the effect signal that forms the output. - 旋轉幹溼度旋鈕以調整原信號與有效果的信號的比例。 + Wave pattern graph + + + + GigInstrument - DECAY - 衰減 + Bank + - Time: - 時間: + Patch + 音色 - 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. - 衰減旋鈕控制在插件停止工作前,緩衝區中加入的靜音時常。較小的數值會降低CPU佔用率但是可能導致延遲或混響產生撕裂。 + Gain + 增益 + + + GigInstrumentView - GATE - 門限 + Open GIG file + 打開 GIG 文件 - Gate: - 門限: + GIG Files (*.gig) + GIG 文件 (*.gig) - The Gate knob controls the signal level that is considered to be 'silence' while deciding when to stop processing signals. - 門限旋鈕設置自動靜音時,被認爲是靜音的信號幅度。 + Choose patch + - Controls - 控制 + Gain: + 增益: + + + InstrumentTrack - 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. - -The Wet/Dry knob controls the balance between the input signal and the effected signal that is the resulting output from the effect. The input for the stage is the output from the previous stage. So, the 'dry' signal for effects lower in the chain contains all of the previous effects. - -The Decay knob controls how long the signal will continue to be processed after the notes have been released. The effect will stop processing signals when the volume has dropped below a given threshold for a given length of time. This knob sets the 'given length of time'. Longer times will require more CPU, so this number should be set low for most effects. It needs to be bumped up for effects that produce lengthy periods of silence, e.g. delays. - -The Gate knob controls the 'given threshold' for the effect's auto shutdown. The clock for the 'given length of time' will begin as soon as the processed signal level drops below the level specified with this knob. - -The Controls button opens a dialog for editing the effect's parameters. - -Right clicking will bring up a context menu where you can change the order in which the effects are processed or delete an effect altogether. - + Default preset + 預置 + + + LadspaControlDialog - Move &up - 向上移(&U) + Link Channels + 連接通道 - Move &down - 向下移(&D) + Channel + 通道 + + + LadspaEffect - &Remove this plugin - 移除此插件(&R) + Unknown LADSPA plugin %1 requested. + 已請求未知 LADSPA 插件 %1. - EnvelopeAndLfoParameters + MidiImport - Predelay - 預延遲 - + Setup incomplete + 設置不完整 + - Attack - 打進聲 + 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. + 你在編譯 LMMS 時沒有加入 SoundFont2 播放器支持, 此播放器默認用於添加導入的 MIDI 文件。因此在 MIDI 文件導入後, 將沒有聲音。 - Hold - 保持 + Track + 軌道 - Decay - 衰減 + You have not 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. + + + + MonstroInstrument - Sustain - 持續 + Osc 3 Stereo phase offset + - Release - 釋放 + Selected view + - Modulation - 調製 + Sine wave + 正弦波 - LFO Predelay - LFO 預延遲 + Bandlimited Triangle wave + - LFO Attack - LFO 打進聲(attack) + Bandlimited Saw wave + - LFO speed - LFO 速度 + Bandlimited Ramp wave + - LFO Modulation - LFO 調製 + Bandlimited Square wave + - LFO Wave Shape - LFO 波形形狀 + Bandlimited Moog saw wave + - Freq x 100 - 頻率 x 100 + Soft square wave + - Modulate Env-Amount - 調製所有包絡 + Absolute sine wave + - - - EnvelopeAndLfoView - DEL - DEL + Exponential wave + - Predelay: - 預延遲: + White noise + - Use this knob for setting predelay of the current envelope. The bigger this value the longer the time before start of actual envelope. - 使用預延遲旋鈕設定此包絡的預延遲,較大的值會加長包絡開始的時間。 + Digital Triangle wave + - ATT - ATT + Digital Saw wave + - Attack: - 打進聲: + Digital Ramp wave + - 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. - 使用起音旋鈕設定此包絡的起音時間,較大的值會讓包絡達到起音值的時間增加。爲鋼琴等樂器選擇小值而絃樂選擇大值。 + Digital Square wave + - HOLD - 持續 + Digital Moog saw wave + - Hold: - 持續: + Triangle wave + 三角波 - 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. - 使用持續旋鈕設定此包絡的持續時間。較大的值會在它衰減到持續值時,保持包絡在起音值更久。 + Saw wave + 鋸齒波 - DEC - 衰減 + Ramp wave + - Decay: - 衰減: + Square wave + 方波 - 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. - 使用衰減旋鈕設定此包絡的衰減值。較大的值會延長包絡從起音值衰減到持續值的時間。爲鋼琴等樂器選擇一個小值。 + Moog saw wave + - SUST - 持續 + Abs. sine wave + - Sustain: - 持續: + Random + 隨機 - 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. - 使用持續旋鈕設置此包絡的持續值,較大的值會增加釋放前,包絡在此保持的值。 + Random smooth + - REL - 釋音 + Osc 1 volume + - Release: - 釋音: + Osc 1 panning + - 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. - 使用釋音旋鈕設定此包絡的釋音時間,較大值會增加包絡衰減到零的時間。爲絃樂等樂器選擇一個大值。 + Osc 1 coarse detune + - AMT - + Osc 1 fine detune left + - Modulation amount: - 調製量: + Osc 1 fine detune right + - 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對此包絡的調製量,較大的值會對此包絡控制的值(如音量或截頻)影響更大。 + Osc 1 stereo phase offset + - LFO predelay: - LFO 預延遲: + Osc 1 pulse width + - Use this knob for setting predelay-time of the current LFO. The bigger this value the the time until the LFO starts to oscillate. - + Osc 1 sync send on rise + - LFO- attack: - + Osc 1 sync send on fall + - 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. - + Osc 2 volume + - SPD - + Osc 2 panning + - LFO speed: - + Osc 2 coarse detune + - 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. - + Osc 2 fine detune left + - 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. - + Osc 2 fine detune right + - Click here for a sine-wave. - 點擊這裡使用正弦波。 + Osc 2 stereo phase offset + - Click here for a triangle-wave. - 點擊這裡使用三角波。 + Osc 2 waveform + - Click here for a saw-wave for current. - 點擊這裡使用鋸齒波。 + Osc 2 sync hard + - Click here for a square-wave. - 點擊這裡使用方形波。 + Osc 2 sync reverse + - Click here for a user-defined wave. Afterwards, drag an according sample-file onto the LFO graph. - 點擊這裡使用自訂波形。之後請把所用波形的樣本檔案拖到LFO Graph上。 + Osc 3 volume + - FREQ x 100 - 頻率 x 100 + Osc 3 panning + - Click here if the frequency of this LFO should be multiplied by 100. - 點擊這裡把這個LFO的頻率乘以100。 + Osc 3 coarse detune + - multiply LFO-frequency by 100 - + Osc 3 sub-oscillator mix + - MODULATE ENV-AMOUNT - + Osc 3 waveform 1 + - Click here to make the envelope-amount controlled by this LFO. - + Osc 3 waveform 2 + - control envelope-amount by this LFO - + Osc 3 sync hard + - ms/LFO: - + Osc 3 Sync reverse + - Hint - 提示 + LFO 1 waveform + - Drag a sample from somewhere and drop it in this window. - 把樣本檔案拖到這個視窗上放開。 + LFO 1 attack + - Click here for random wave. - 點擊這裡使用隨機波形。 + LFO 1 rate + - - - EqControls - Input gain - 輸入增益 + LFO 1 phase + - Output gain - 輸出增益 + LFO 2 waveform + - Low shelf gain - + LFO 2 attack + - Peak 1 gain - + LFO 2 rate + - Peak 2 gain - + LFO 2 phase + - Peak 3 gain - + Env 1 pre-delay + - Peak 4 gain - + Env 1 attack + - High Shelf gain - + Env 1 hold + - HP res - + Env 1 decay + - Low Shelf res - + Env 1 sustain + - Peak 1 BW - + Env 1 release + - Peak 2 BW - + Env 1 slope + - Peak 3 BW - + Env 2 pre-delay + - Peak 4 BW - + Env 2 attack + - High Shelf res - + Env 2 hold + - LP res - + Env 2 decay + - HP freq - + Env 2 sustain + - Low Shelf freq - + Env 2 release + - Peak 1 freq - + Env 2 slope + - Peak 2 freq - + Osc 2+3 modulation + - Peak 3 freq - + Osc 1 - Vol env 1 + - Peak 4 freq - + Osc 1 - Vol env 2 + - High shelf freq - + Osc 1 - Vol LFO 1 + - LP freq - + Osc 1 - Vol LFO 2 + - HP active - + Osc 2 - Vol env 1 + - Low shelf active - + Osc 2 - Vol env 2 + - Peak 1 active - + Osc 2 - Vol LFO 1 + - Peak 2 active - + Osc 2 - Vol LFO 2 + - Peak 3 active - + Osc 3 - Vol env 1 + - Peak 4 active - + Osc 3 - Vol env 2 + - High shelf active - + Osc 3 - Vol LFO 1 + - LP active - + Osc 3 - Vol LFO 2 + - LP 12 - + Osc 1 - Phs env 1 + - LP 24 - + Osc 1 - Phs env 2 + - LP 48 - + Osc 1 - Phs LFO 1 + - HP 12 - + Osc 1 - Phs LFO 2 + - HP 24 - + Osc 2 - Phs env 1 + - HP 48 - + Osc 2 - Phs env 2 + - low pass type - + Osc 2 - Phs LFO 1 + - high pass type - + Osc 2 - Phs LFO 2 + - Analyse IN - + Osc 3 - Phs env 1 + - Analyse OUT - + Osc 3 - Phs env 2 + - - - EqControlsDialog - HP - + Osc 3 - Phs LFO 1 + - Low Shelf - + Osc 3 - Phs LFO 2 + - Peak 1 - + Osc 1 - Pit env 1 + - Peak 2 - + Osc 1 - Pit env 2 + - Peak 3 - + Osc 1 - Pit LFO 1 + - Peak 4 - + Osc 1 - Pit LFO 2 + - High Shelf - + Osc 2 - Pit env 1 + - LP - + Osc 2 - Pit env 2 + - In Gain - + Osc 2 - Pit LFO 1 + - Gain - 增益 + Osc 2 - Pit LFO 2 + - Out Gain - + Osc 3 - Pit env 1 + - Bandwidth: - + Osc 3 - Pit env 2 + - Resonance : - + Osc 3 - Pit LFO 1 + - Frequency: - 頻率: + Osc 3 - Pit LFO 2 + - lp grp - + Osc 1 - PW env 1 + - hp grp - + Osc 1 - PW env 2 + - Octave - + Osc 1 - PW LFO 1 + - - - EqHandle - Reso: - + Osc 1 - PW LFO 2 + - BW: - + Osc 3 - Sub env 1 + - Freq: - + Osc 3 - Sub env 2 + + + + Osc 3 - Sub LFO 1 + + + + Osc 3 - Sub LFO 2 + - ExportProjectDialog + MonstroView - Export project - 導出工程 + Operators view + - Output - 輸出 + Matrix view + 矩陣視圖 - File format: - 文件格式: + Volume + 音量 - Samplerate: - 採樣率: + Panning + 聲相 - 44100 Hz - 44100 Hz + Coarse detune + - 48000 Hz - 48000 Hz + semitones + 半音 - 88200 Hz - 88200 Hz + cents + - 96000 Hz - 96000 Hz + Stereo phase offset + - 192000 Hz - 192000 Hz + deg + - Bitrate: - 碼率: + Pulse width + - 64 KBit/s - 64 KBit/s + Send sync on pulse rise + - 128 KBit/s - 128 KBit/s + Send sync on pulse fall + - 160 KBit/s - 160 KBit/s + Hard sync oscillator 2 + - 192 KBit/s - 192 KBit/s + Reverse sync oscillator 2 + - 256 KBit/s - 256 KBit/s + Sub-osc mix + - 320 KBit/s - 320 KBit/s + Hard sync oscillator 3 + - Depth: - 位深: + Reverse sync oscillator 3 + - 16 Bit Integer - 16 位整形 + Attack + 打進聲 - 32 Bit Float - 32 位浮點型 + Rate + - Quality settings - 質量設置 + Phase + - Interpolation: - 補間: + Pre-delay + - Zero Order Hold - 零階保持 + Hold + 保持 - Sinc Fastest - 最快 Sinc 補間 + Decay + 衰減 - Sinc Medium (recommended) - 中等 Sinc 補間 (推薦) + Sustain + 持續 - Sinc Best (very slow!) - 最佳 Sinc 補間 (很慢!) + Release + 釋放 - Oversampling (use with care!): - 過採樣 (請謹慎使用!): + Slope + - 1x (None) - 1x (無) + Modulation amount + 調製量 - 2x - 2x + Fine tune left + - 4x - 4x + Fine tune right + - 8x - 8x + Mix osc 2 with osc 3 + - Start - 開始 + Modulate amplitude of osc 3 by osc 2 + - Cancel - 取消 + Modulate frequency of osc 3 by osc 2 + - Export as loop (remove end silence) - 導出爲迴環loop(移除結尾的靜音) + Modulate phase of osc 3 by osc 2 + + + + MultitapEchoControlDialog - Export between loop markers - 只導出迴環標記中間的部分 + Length + 長度 - Could not open file - 無法打開文件 + Step length: + 步進長度: - Export project to %1 - 導出項目到 %1 + Dry + 幹聲 - Error - 錯誤 + Stages + - Error while determining file-encoder device. Please try to choose a different output format. - 尋找文件編碼設備時出錯。請使用另外一種輸出格式。 + Swap inputs + - Rendering: %1% - 渲染中:%1% + Dry gain: + - 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! - + Low-pass stages: + - 24 Bit Integer - 24 位元整數 + Swap left and right input channels for reflections + + + + NesInstrument - Use variable bitrate - 使用可變位元率 + Channel 2 Coarse detune + - Stereo mode: - + Channel 2 Volume + - Stereo - + Master volume + 主音量 - Joint Stereo - + Vibrato + - Mono - + Channel 1 coarse detune + - Compression level: - + Channel 1 volume + - (fastest) - + Channel 1 envelope length + - (default) - + Channel 1 duty cycle + - (smallest) - + Channel 1 sweep amount + - - - Expressive - Selected graph - + Channel 1 sweep rate + - A1 - + Channel 2 envelope length + - A2 - + Channel 2 duty cycle + - A3 - + Channel 2 sweep amount + - W1 smoothing - + Channel 2 sweep rate + - W2 smoothing - + Channel 3 coarse detune + - W3 smoothing - + Channel 3 volume + - PAN1 - + Channel 4 volume + - PAN2 - + Channel 4 envelope length + - REL TRANS - + Channel 4 noise frequency + - - - Fader - Please enter a new value between %1 and %2: - 請輸入一個介於%1和%2之間的數值: + Channel 4 noise frequency sweep + - FileBrowser + NesInstrumentView - Browser - 瀏覽器 + Volume + 音量 - Search - + Coarse detune + - Refresh list - + Envelope length + - - - FileBrowserTreeWidget - Send to active instrument-track - 發送到活躍的樂器軌道 + Enable channel 1 + - Open in new instrument-track/B+B Editor - 在新樂器軌道/B+B 編輯器中打開 + Enable envelope 1 + - Loading sample - 加載採樣中 + Enable envelope 1 loop + - Please wait, loading sample for preview... - 請稍候,加載採樣中... + Enable sweep 1 + - --- Factory files --- - ---軟件自帶文件--- + Sweep amount + - Open in new instrument-track/Song Editor - 在新的樂器軌道/歌曲編輯器中打開 + Sweep rate + - Error - 錯誤 + 12.5% Duty cycle + - does not appear to be a valid - 並不是一個有效的 + 25% Duty cycle + - file - 文件 + 50% Duty cycle + - - - FlangerControls - Delay Samples - + 75% Duty cycle + - Lfo Frequency - + Enable channel 2 + - Seconds - + Enable envelope 2 + - Regen - + Enable envelope 2 loop + - Noise - 噪音 + Enable sweep 2 + - Invert - 反轉 + Enable channel 3 + - - - FlangerControlsDialog - Delay Time: - 延遲時間: + Noise Frequency + - Feedback Amount: - + Frequency sweep + - White Noise Amount: - 白噪音數量: + Enable channel 4 + - DELAY - + Enable envelope 4 + - RATE - + Enable envelope 4 loop + - AMNT - + Quantize noise frequency when using note frequency + - Amount: - + Use note frequency for noise + - FDBK - + Noise mode + - NOISE - - - - Invert - 反轉 + Vibrato + - Period: - + Master volume + 主音量 - FxLine + OpulenzInstrument - Channel send amount - 通道發送的數量 + Patch + 音色 - 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. - -In order to route the channel to another channel, select the FX channel and click on the "send" button on the channel you want to send to. The knob under the send button controls the level of signal that is sent to the channel. - -You can remove and move FX channels in the context menu, which is accessed by right-clicking the FX channel. - - + Op 1 attack + - Move &left - 向左移(&L) + Op 1 decay + - Move &right - 向右移(&R) + Op 1 sustain + - Rename &channel - 重命名通道(&C) + Op 1 release + - R&emove channel - 刪除通道(&E) + Op 1 level + - Remove &unused channels - 移除所有未用通道(&U) + Op 1 level scaling + - - - FxMixer - Master - 主控 + Op 1 frequency multiplier + - FX %1 - FX %1 + Op 1 feedback + - Volume - 音量 + Op 1 key scaling rate + - Mute - 靜音 + Op 1 percussive envelope + - Solo - 獨奏 + Op 1 tremolo + - - - FxMixerView - FX-Mixer - 效果混合器 + Op 1 vibrato + - FX Fader %1 - FX 衰減器 %1 + Op 1 waveform + - Mute - 靜音 + Op 2 attack + - Mute this FX channel - 靜音此效果通道 + Op 2 decay + - Solo - 獨奏 + Op 2 sustain + - Solo FX channel - 獨奏效果通道 + Op 2 release + - - - FxRoute - Amount to send from channel %1 to channel %2 - 從通道 %1 發送到通道 %2 的量 + Op 2 level + - - - GigInstrument - Bank - + Op 2 level scaling + - Patch - 音色 + Op 2 frequency multiplier + - Gain - 增益 + Op 2 key scaling rate + - - - GigInstrumentView - Open other GIG file - 打開另外的 GIG 文件 + Op 2 percussive envelope + - Click here to open another GIG file - 點擊這裏打開另外一個 GIG 文件 + Op 2 tremolo + - Choose the patch - 選擇路徑 + Op 2 vibrato + - Click here to change which patch of the GIG file to use - 點擊這裏選擇另一種 GIG 音色 + Op 2 waveform + - Change which instrument of the GIG file is being played - 更換正在使用的 GIG 文件中的樂器 + FM + - Which GIG file is currently being used - 哪一個 GIG 文件正在被使用 + Vibrato depth + - Which patch of the GIG file is currently being used - GIG 文件的哪一個音色正在被使用 + Tremolo depth + + + + OpulenzInstrumentView - Gain - 增益 + Attack + 打進聲 - Factor to multiply samples by - + Decay + 衰減 - Open GIG file - 打開 GIG 文件 + Release + 釋放 - GIG Files (*.gig) - GIG 文件 (*.gig) + Frequency multiplier + - GuiApplication - - Working directory - 工作目錄 - + OscillatorObject - The LMMS working directory %1 does not exist. Create it now? You can change the directory later via Edit -> Settings. - LMMS工作目錄%1不存在,現在新建一個嗎?你可以稍後在 編輯 -> 設置 中更改此設置。 + Osc %1 volume + Osc %1 音量 - Preparing UI - 正在準備界面 + Osc %1 panning + Osc %1 聲像 - Preparing song editor - 正在準備歌曲編輯器 + Osc %1 coarse detuning + - Preparing mixer - 正在準備混音器 + Osc %1 fine detuning left + - Preparing controller rack - 正在準備控制機架 + Osc %1 fine detuning right + - Preparing project notes - 正在準備工程註釋 + Osc %1 phase-offset + - Preparing beat/bassline editor - 正在準備節拍/低音線編輯器 + Osc %1 stereo phase-detuning + - Preparing piano roll - 正在準備鋼琴窗 + Osc %1 wave shape + - Preparing automation editor - 正在準備自動編輯器 + Modulation type %1 + - - - InstrumentFunctionArpeggio - Arpeggio - + Osc %1 waveform + Osc %1 波形 - Arpeggio type - + Osc %1 harmonic + + + + PatchesDialog - Arpeggio range - + Qsynth: Channel Preset + Qsynth: 通道預設 - Arpeggio time - + Bank selector + 音色選擇器 - Arpeggio gate - + Bank + - Arpeggio direction - + Program selector + - Arpeggio mode - + Patch + 音色 - Up - 向上 + Name + 名稱 - Down - 向下 + OK + 確定 - Up and down - 上和下 + Cancel + 取消 + + + PatmanView - Random - 隨機 + Loop + 循環 - Free - 自由 + Loop mode + 循環模式 - Sort - 排序 + Tune + 調音 - Sync - 同步 + Tune mode + 調音模式 - Down and up - 下和上 + No file selected + 未選擇文件 - Skip rate - + Open patch file + 打開音色文件 - Miss rate - + Patch-Files (*.pat) + 音色文件 (*.pat) - Cycle steps - + Open patch + - InstrumentFunctionArpeggioView + PeakControllerEffectControlDialog - ARPEGGIO - 琶音 + BASE + 基準 - 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. - + Modulation amount: + 調製量: - RANGE - 範圍 + Attack: + 打擊聲: - Arpeggio range: - + Release: + 釋音: - octave(s) - + AMNT + - Use this knob for setting the arpeggio range in octaves. The selected arpeggio will be played within specified number of octaves. - + MULT + - TIME - 時長 + ATCK + 打擊 - Arpeggio time: - + DCAY + - ms - 毫秒 + Treshold: + - Use this knob for setting the arpeggio time in milliseconds. The arpeggio time specifies how long each arpeggio-tone should be played. - + TRSH + - GATE - 門限 + Base: + - Arpeggio gate: - + Amount multiplicator: + - % - % + Mute output + 輸出靜音 - 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. - + Absolute value + + + + PeakControllerEffectControls - Chord: - 和絃: + Base value + 基準值 - Direction: - 方向: + Modulation amount + 調製量 - Mode: - 模式: + Mute output + 輸出靜音 - SKIP - + Attack + 打進聲 - Skip rate: - + Release + 釋放 - 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. - + Treshold + 閥值 - MISS - + Absolute value + - Miss rate: - + Amount multiplicator + + + + QWidget - The miss function will make the arpeggiator miss the intended note. - + Name: + 名稱: - CYCLE - + Maker: + 製作者: - Cycle notes: - + Copyright: + 版權: - note(s) - + Requires Real Time: + 要求實時: - 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. - + Yes + - - - InstrumentFunctionNoteStacking - octave - octave + No + - Major - Major + Real Time Capable: + 是否支持實時: - Majb5 - Majb5 + In Place Broken: + - minor - minor + Channels In: + 輸入通道: - minb5 - minb5 + Channels Out: + 輸出通道: - sus2 - sus2 + File: + 文件: - sus4 - sus4 + File: %1 + 文件:%1 + + + ReverbSCControlDialog - aug - aug + Input + 輸入 - augsus4 - augsus4 + Size + - tri - tri + Size: + - 6 - 6 + Color + - 6sus4 - 6sus4 + Color: + - 6add9 - 6add9 + Output + 輸出 - m6 - m6 + Input gain: + 輸入增益: - m6add9 - m6add9 + Output gain: + 輸出增益: + + + ReverbSCControls - 7 - 7 + Size + - 7sus4 - 7sus4 + Color + - 7#5 - 7#5 + Input gain + 輸入增益 - 7b5 - 7b5 + Output gain + 輸出增益 + + + SpectrumAnalyzerControlDialog - 7#9 - 7#9 + Linear spectrum + 線性頻譜圖 - 7b9 - 7b9 + Linear Y axis + 線性 Y 軸 + + + SpectrumAnalyzerControls - 7#5#9 - 7#5#9 + Linear spectrum + 線性頻譜圖 - 7#5b9 - 7#5b9 + Linear Y axis + 線性 Y 軸 - 7b5b9 - 7b5b9 + Channel mode + 通道模式 + + + TrackContainer - 7add11 - 7add11 + Cancel + 取消 - 7add13 - 7add13 + Please wait... + 請稍等... - 7#11 - 7#11 + Importing MIDI-file... + 正在導入 MIDI-文件... + + + TripleOscillatorView - Maj7 - Maj7 + Synchronize oscillator 1 with oscillator 2 + - Maj7b5 - Maj7b5 + Synchronize oscillator 2 with oscillator 3 + - Maj7#5 - Maj7#5 + Osc %1 volume: + - Maj7#11 - Maj7#11 + Osc %1 panning: + - Maj7add13 - Maj7add13 + Osc %1 coarse detuning: + - m7 - m7 + semitones + - m7b5 - m7b5 + Osc %1 fine detuning left: + - m7b9 - m7b9 + cents + 音分 cents - m7add11 - m7add11 + Osc %1 fine detuning right: + - m7add13 - m7add13 + Osc %1 phase-offset: + - m-Maj7 - m-Maj7 + degrees + - m-Maj7add11 - m-Maj7add11 + Osc %1 stereo phase-detuning: + - m-Maj7add13 - m-Maj7add13 + Modulate phase of oscillator 1 by oscillator 2 + - 9 - 9 + Modulate amplitude of oscillator 1 by oscillator 2 + - 9sus4 - 9sus4 + Mix output of oscillators 1 & 2 + - add9 - add9 + Modulate frequency of oscillator 1 by oscillator 2 + - 9#5 - 9#5 + Modulate phase of oscillator 2 by oscillator 3 + - 9b5 - 9b5 + Modulate amplitude of oscillator 2 by oscillator 3 + - 9#11 - 9#11 + Mix output of oscillators 2 & 3 + - 9b13 - 9b13 + Modulate frequency of oscillator 2 by oscillator 3 + - Maj9 - Maj9 + Sine wave + 正弦波 - Maj9sus4 - Maj9sus4 + Triangle wave + 三角波 - Maj9#5 - Maj9#5 + Saw wave + 鋸齒波 - Maj9#11 - Maj9#11 + Square wave + 方波 - m9 - m9 + Moog-like saw wave + - madd9 - madd9 + Exponential wave + - m9b5 - m9b5 + White noise + - m9-Maj7 - m9-Maj7 + User-defined wave + + + + VestigeInstrumentView - 11 - 11 + Show/hide GUI + 顯示/隱藏界面 - 11b9 - 11b9 + Turn off all notes + 全部靜音 - Maj11 - Maj11 + DLL-files (*.dll) + DLL-文件 (*.dll) - m11 - m11 + EXE-files (*.exe) + EXE-文件 (*.exe) - m-Maj11 - m-Maj11 + Previous (-) + 上一個 (-) - 13 - 13 + Save preset + 保存預置 - 13#9 - 13#9 + Next (+) + 下一個 (+) - 13b9 - 13b9 + Preset + 預置 - 13b5b9 - 13b5b9 + by + - Maj13 - Maj13 + - VST plugin control + - VST插件控制 - m13 - m13 + Open VST plugin + - m-Maj13 - m-Maj13 + Control VST plugin from LMMS host + - Harmonic minor - Harmonic minor + Open VST plugin preset + - Melodic minor - Melodic minor + No VST plugin loaded + + + + VstEffectControlDialog - Whole tone - + Show/hide + 顯示/隱藏 - Diminished - Diminished + Previous (-) + 上一個 (-) - Major pentatonic - Major pentatonic - - - Minor pentatonic - Minor pentatonic - - - Jap in sen - Jap in sen + Next (+) + 下一個 (+) - Major bebop - Major bebop + Save preset + 保存預置 - Dominant bebop - Dominant bebop + Effect by: + - Blues - Blues + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /> + - Arabic - Arabic + Control VST plugin from LMMS host + - Enigmatic - Enigmatic + Open VST plugin preset + + + + VstPlugin - Neopolitan - Neopolitan + Loading plugin + 載入插件 - Neopolitan minor - Neopolitan minor + Open Preset + 打開預置 - Hungarian minor - Hungarian minor + Vst Plugin Preset (*.fxp *.fxb) + VST插件預置文件(*.fxp *.fxb) - Dorian - Dorian + : default + : 默認 - Phrygolydian - + " + " - Lydian - Lydian + ' + ' - Mixolydian - Mixolydian + Save Preset + 保存預置 - Aeolian - Aeolian + .fxp + .fxp - Locrian - Locrian + .FXP + .FXP - Chords - Chords + .FXB + .FXB - Chord type - Chord type + .fxb + .fxb - Chord range - Chord range + Please wait while loading VST plugin... + 正在載入VST插件,請稍候…… - Minor - Minor + The VST plugin %1 could not be loaded. + 無法載入VST插件 %1。 + + + WatsynInstrument - Chromatic - Chromatic + Volume A1 + - Half-Whole Diminished - + Volume A2 + - 5 - 5 + Volume B1 + - Phrygian dominant - + Volume B2 + - Persian - + Panning A1 + - - - InstrumentFunctionNoteStackingView - RANGE - 範圍 + Panning A2 + - Chord range: - 和絃範圍: + Panning B1 + - octave(s) - + Panning B2 + - Use this knob for setting the chord range in octaves. The selected chord will be played within specified number of octaves. - + Freq. multiplier A1 + - STACKING - 堆疊 + Freq. multiplier A2 + - Chord: - 和絃: + Freq. multiplier B1 + - - - InstrumentMidiIOView - ENABLE MIDI INPUT - 啓用MIDI輸入 + Freq. multiplier B2 + - CHANNEL - 通道 + Left detune A1 + - VELOCITY - 力度 + Left detune A2 + - ENABLE MIDI OUTPUT - 啓用MIDI輸出 + Left detune B1 + - PROGRAM - 樂器 + Left detune B2 + - MIDI devices to receive MIDI events from - 用於接收 MIDI 事件的 MIDI 設備 + Right detune A1 + - MIDI devices to send MIDI events to - 用於發送 MIDI 事件的 MIDI 設備 + Right detune A2 + - NOTE - 音符 + Right detune B1 + - CUSTOM BASE VELOCITY - 自定義基準力度 + Right detune B2 + - Specify the velocity normalization base for MIDI-based instruments at 100% note velocity - + A-B Mix + - BASE VELOCITY - 基準力度 + A-B Mix envelope amount + - - - InstrumentMiscView - MASTER PITCH - 主音高 + A-B Mix envelope attack + - Enables the use of Master Pitch - 啓用主音高 + A-B Mix envelope hold + - - - InstrumentSoundShaping - VOLUME - 音量 + A-B Mix envelope decay + - Volume - 音量 + A1-B2 Crosstalk + - CUTOFF - 切除 + A2-A1 modulation + - Cutoff frequency - 切除頻率 + B2-B1 modulation + - RESO - + Selected graph + + + + WatsynView - Resonance - 共鳴 + Select oscillator A1 + - Envelopes/LFOs - 壓限/低頻振盪 + Select oscillator A2 + - Filter type - 過濾器類型 + Select oscillator B1 + - Q/Resonance - + Select oscillator B2 + - LowPass - 低通 + Mix output of A2 to A1 + - HiPass - 高通 + Mix output of B2 to B1 + - BandPass csg - 帶通 csg + Draw your own waveform here by dragging your mouse on this graph. + - BandPass czpg - 帶通 czpg + Load waveform + 載入波形 - Notch - 凹口濾波器 + Phase left + - Allpass - 全通 + Phase right + - Moog - Moog + Normalize + 標準化 - 2x LowPass - 2 個低通串聯 + Invert + 反轉 - RC LowPass 12dB - RC 低通(12dB) + Smooth + 平滑 - RC BandPass 12dB - RC 帶通(12dB) + Sine wave + 正弦波 - RC HighPass 12dB - RC 高通(12dB) + Triangle wave + 三角波 - RC LowPass 24dB - RC 低通(24dB) + Square wave + 方波 - RC BandPass 24dB - RC 帶通(24dB) + Volume + 音量 - RC HighPass 24dB - RC 高通(24dB) + Panning + 聲相 - Vocal Formant Filter - 人聲移除過濾器 + Freq. multiplier + - 2x Moog - + Left detune + - SV LowPass - + cents + - SV BandPass - + Right detune + - SV HighPass - + A-B Mix + - SV Notch - + Mix envelope amount + - Fast Formant - + Mix envelope attack + - Tripole - + Mix envelope hold + - - - InstrumentSoundShapingView - TARGET - 目標 + Mix envelope decay + - 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...! - + Crosstalk + - FILTER - + Modulate amplitude of A1 by output of A2 + - 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. - + Ring modulate A1 and A2 + - Hz - Hz + Modulate phase of A1 by output of A2 + - 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... - + Modulate amplitude of B1 by output of B2 + - RESO - + Ring modulate B1 and B2 + - Resonance: - 共鳴: + Modulate phase of B1 by output of B2 + - 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. - + Load a waveform from a sample file + - FREQ - 頻率 + Shift phase by -15 degrees + - cutoff frequency: - + Shift phase by +15 degrees + - Envelopes, LFOs and filters are not supported by the current instrument. - 包絡和低頻振盪 (LFO) 不被當前樂器支持。 + Saw wave + 鋸齒波 - InstrumentTrack + Xpressive - unnamed_track - 未命名軌道 + Selected graph + - Volume - 音量 + A1 + - Panning - 聲相 + A2 + - Pitch - 音高 + A3 + - FX channel - 效果通道 + W1 smoothing + - Default preset - 預置 + W2 smoothing + - With this knob you can set the volume of the opened channel. - 使用此旋鈕可以設置開放通道的音量。 + W3 smoothing + - Base note - 基本音 + Panning 1 + - Pitch range - 音域範圍 + Panning 2 + - Master Pitch - 主音高 + Rel trans + - InstrumentTrackView + XpressiveView - Volume - 音量 + Draw your own waveform here by dragging your mouse on this graph. + - Volume: - 音量: + Select oscillator W1 + - VOL - VOL + Select oscillator W2 + - Panning - 聲相 + Select oscillator W3 + - Panning: - 聲相: + Select output O1 + - PAN - PAN + Select output O2 + - MIDI - MIDI + Open help window + - Input - 輸入 + Sine wave + 正弦波 - Output - 輸出 + Moog-saw wave + - FX %1: %2 - 效果 %1: %2 + Exponential wave + - - - InstrumentTrackWindow - GENERAL SETTINGS - 常規設置 + Saw wave + 鋸齒波 - Instrument volume - 樂器音量 + User-defined wave + - Volume: - 音量: + Triangle wave + 三角波 - VOL - VOL + Square wave + 方波 - Panning - 聲相 + White noise + - Panning: - 聲相: + WaveInterpolate + - PAN - PAN + ExpressionValid + - Pitch - 音高 + General purpose 1: + - Pitch: - 音高: + General purpose 2: + - cents - 音分 cents + General purpose 3: + - PITCH - + O1 panning: + - FX channel - 效果通道 + O2 panning: + - FX - 效果 + Release transition: + - Save preset - 保存預置 + Smoothness + + + + ZynAddSubFxInstrument - XML preset file (*.xpf) - XML 預設文件 (*.xpf) + Portamento + - Pitch range (semitones) - 音域範圍(半音) + Bandwidth + 帶寬 - RANGE - 範圍 + Filter frequency + - Save current instrument track settings in a preset file - 保存當前樂器軌道設置到預設文件 + Filter resonance + - 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. - 如果你想保存當前樂器軌道設置到預設文件, 請點擊這裏。稍後你可以在預設瀏覽器中雙擊以使用它。 + FM gain + - Use these controls to view and edit the next/previous track in the song editor. - 使用這些控制選項來查看和編輯在歌曲編輯器中的上個/下個軌道。 + Resonance center frequency + - SAVE - 保存 + Resonance bandwidth + - Envelope, filter & LFO - + Forward MIDI control change events + + + + ZynAddSubFxView - Chord stacking & arpeggio - + Show GUI + 顯示圖形界面 - Effects - + Portamento: + - MIDI settings - MIDI設置 + PORT + - Miscellaneous - + FREQ + 頻率 - Plugin - + RES + - - - Knob - Set linear - 設置爲線性 + Bandwidth: + 帶寬: - Set logarithmic - 設置爲對數 + BW + - Please enter a new value between %1 and %2: - 請輸入一個介於%1和%2之間的數值: + FM GAIN + - Please enter a new value between -96.0 dBFS and 6.0 dBFS: - + Resonance center frequency: + - - - LadspaControl - Link channels - 關聯通道 + RES CF + - - - LadspaControlDialog - Link Channels - 連接通道 + Resonance bandwidth: + - Channel - 通道 + RES BW + - - - LadspaControlView - Link channels - 連接通道 + Filter frequency: + - Value: - 值: + Filter resonance: + - Sorry, no help available. - 啊哦,這個沒有幫助文檔。 + FM gain: + - - - LadspaEffect - Unknown LADSPA plugin %1 requested. - 已請求未知 LADSPA 插件 %1. + Forward MIDI control changes + - LcdSpinBox + audioFileProcessor - Please enter a new value between %1 and %2: - 請輸入一個介於%1和%2之間的數值: + Amplify + 增益 - - - LeftRightNav - Previous - 上個 + Start of sample + 採樣起始 - Next - 下個 + End of sample + 採樣結尾 - Previous (%1) - 上 (%1) + Reverse sample + 反轉採樣 - Next (%1) - 下 (%1) + Stutter + - - - LfoController - LFO Controller - LFO 控制器 + Loopback point + 循環點 - Base value - 基準值 + Loop mode + 循環模式 - Oscillator speed - 振動速度 + Interpolation mode + 補間方式 - Oscillator amount - + None + - Oscillator phase - + Linear + 線性插補 - Oscillator waveform - 振動波形 + Sinc + 辛格(Sinc)插補 - Frequency Multiplier - + Sample not found: %1 + 採樣未找到: %1 - LfoControllerDialog + bitInvader - LFO - + Sample length + + + + bitInvaderView - LFO Controller - LFO 控制器 + Sine wave + 正弦波 - BASE - 基準 + Triangle wave + 三角波 - Base amount: - 基礎值: + Saw wave + 鋸齒波 - todo - + Square wave + 方波 - SPD - + Interpolation + - LFO-speed: - + Normalize + 標準化 - Use this knob for setting speed of the LFO. The bigger this value the faster the LFO oscillates and the faster the effect. - + Draw your own waveform here by dragging your mouse on this graph. + - Modulation amount: - 調製量: + Sample length + - 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. - + White noise + - PHS - + User-defined wave + - Phase offset: - + Smooth waveform + 平滑波形 + + + dynProcControlDialog - degrees - + INPUT + 輸入 - 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. - + Input gain: + 輸入增益: - Click here for a sine-wave. - 點擊這裡使用正弦波。 + OUTPUT + 輸出 - Click here for a triangle-wave. - 點擊這裡使用三角波。 + Output gain: + 輸出增益: - Click here for a saw-wave. - + ATTACK + - Click here for a square-wave. - 點擊這裡使用方形波。 + Peak attack time: + - Click here for an exponential wave. - + RELEASE + - Click here for white-noise. - + Peak release time: + - Click here for a user-defined shape. -Double click to pick a file. - + Process based on the maximum of both stereo channels + - Click here for a moog saw-wave. - + Process based on the average of both stereo channels + - AMNT - + Process each stereo channel independently + - - - LmmsCore - Generating wavetables - 正在生成波形表 + Reset wavegraph + - Initializing data structures - 正在初始化數據結構 + Smooth wavegraph + - Opening audio and midi devices - 正在啓動音頻和 MIDI 設備 + Increase wavegraph amplitude by 1 dB + - Launching mixer threads - 生在啓動混音器線程 + Decrease wavegraph amplitude by 1 dB + + + + Stereo mode: maximum + - - - MainWindow - &New - 新建(&N) + Stereo mode: average + - &Open... - 打開(&O)... + Stereo mode: unlinked + + + + dynProcControls - &Save - 保存(&S) + Input gain + 輸入增益 - Save &As... - 另存爲(&A)... + Output gain + 輸出增益 - Import... - 導入... + Attack time + - E&xport... - 導出(&E)... + Release time + - &Quit - 退出(&Q) + Stereo mode + + + + kickerInstrument - &Edit - 編輯(&E) + Start frequency + 起始頻率 - Settings - 設置 + End frequency + 結束頻率 - &Tools - 工具(&T) + Gain + 增益 - &Help - 幫助(&H) + Length + 長度 - Help - 幫助 + Noise + 噪音 - What's this? - 這是什麼? + Click + 力度 - About - 關於 + Start from note + 從哪個音符開始 - Create new project - 新建工程 + End to note + 到哪個音符結束 - Create new project from template - 從模版新建工程 + Start distortion + - Open existing project - 打開已有工程 + End distortion + - Recently opened projects - 最近打開的工程 + Envelope slope + - Save current project - 保存當前工程 + Frequency slope + + + + kickerInstrumentView - Export current project - 導出當前工程 + Start frequency: + 起始頻率: - Song Editor - 顯示/隱藏歌曲編輯器 + End frequency: + 結束頻率: - 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. - 點擊這個按鈕, 你可以顯示/隱藏歌曲編輯器。在歌曲編輯器的幫助下, 你可以編輯歌曲播放列表並且設置哪個音軌在哪個時間播放。你還可以在播放列表中直接插入和移動採樣(如 RAP 採樣)。 + Gain: + 增益: - Beat+Bassline Editor - 顯示/隱藏節拍+旋律編輯器 + Click: + 力度: - 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. - + Noise: + 噪音: - Piano Roll - 顯示/隱藏鋼琴窗 + Frequency slope: + - Click here to show or hide the Piano-Roll. With the help of the Piano-Roll you can edit melodies in an easy way. - 點擊這裏顯示或隱藏鋼琴窗。在鋼琴窗的幫助下, 你可以很容易地編輯旋律。 + Envelope length: + - Automation Editor - 顯示/隱藏自動控制編輯器 + Envelope slope: + - 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. - 點擊這裏顯示或隱藏自動控制編輯器。在自動控制編輯器的幫助下, 你可以很簡單地控制動態數值。 + Start distortion: + - FX Mixer - 顯示/隱藏混音器 + End distortion: + + + + ladspaBrowserView - 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. - 點擊這裏顯示或隱藏 FX 混音器。FX 混音器是管理你歌曲中不同音效的強大工具。你可以向不同的通道添加不同的效果。 + Available Effects + 可用效果器 - Project Notes - 顯示/隱藏工程註釋 + Unavailable Effects + 不可用效果器 - Click here to show or hide the project notes window. In this window you can put down your project notes. - 點擊這裏顯示或隱藏工程註釋窗。在此窗口中你可以寫下工程的註釋。 + Instruments + 樂器插件 - Controller Rack - 顯示/隱藏控制器機架 + Analysis Tools + 分析工具 - Untitled - 未標題 + Don't know + 未知 - LMMS %1 - LMMS %1 + Type: + 類型: + + + ladspaDescription - Project not saved - 工程未保存 + Plugins + 插件 - The current project was modified since last saving. Do you want to save it now? - 此工程自上次保存後有了修改,你想保存嗎? + Description + 描述 + + + ladspaPortDialog - Help not available - 幫助不可用 + Ports + - Currently there's no help available in LMMS. -Please visit http://lmms.sf.net/wiki for documentation on LMMS. - LMMS現在沒有可用的幫助 -請訪問 http://lmms.sf.net/wiki 瞭解LMMS的相關文檔。 + Name + 名稱 - LMMS (*.mmp *.mmpz) - LMMS (*.mmp *.mmpz) + Rate + - Version %1 - 版本 %1 + Direction + 方向 - Configuration file - 配置文件 + Type + 類型 - Error while parsing configuration file at line %1:%2: %3 - 解析配置文件發生錯誤(行%1:%2:%3) + Min < Default < Max + 最小 < 默認 < 最大 - Volumes - 音量 + Logarithmic + 對數 - Undo - 撤銷 + SR Dependent + - Redo - 重做 + Audio + 音頻 - My Projects - 我的工程 + Control + 控制 - My Samples - 我的採樣 + Input + 輸入 - My Presets - 我的預設 + Output + 輸出 - My Home - 我的主目錄 + Toggled + - My Computer - 我的電腦 + Integer + 整型 - &File - 文件(&F) + Float + 浮點 - &Recently Opened Projects - 最近打開的工程(&R) + Yes + + + + lb302Synth - Save as New &Version - 保存爲新版本(&V) + VCF Cutoff Frequency + - E&xport Tracks... - 導出音軌(&X)... + VCF Resonance + - Online Help - 在線幫助 + VCF Envelope Mod + - What's This? - 這是什麼? + VCF Envelope Decay + - Open Project - 打開工程 + Distortion + 失真 - Save Project - 保存工程 + Waveform + 波形 - Project recovery - 工程恢復 + Slide Decay + - 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? - 發現了一個恢復文件。看上去上個會話沒有正常結束或者其他的 LMMS 進程已經運行。你想要恢復這個項目嗎? + Slide + - Recover - 恢復 + Accent + - Recover the file. Please don't run multiple instances of LMMS when you do this. - 恢復文件。請不要在恢復文件時運行多個 LMMS 程序。 + Dead + - Discard - 丟棄 + 24dB/oct Filter + + + + lb302SynthView - Launch a default session and delete the restored files. This is not reversible. - 運行一個新的默認會話並且刪除恢復文件。此操作無法撤銷。 + Cutoff Freq: + - Preparing plugin browser - 正在準備插件瀏覽器 + Resonance: + 共鳴: - Preparing file browsers - 正在準備文件瀏覽器 + Env Mod: + - Root directory - 根目錄 + Decay: + 衰減: - Loading background artwork - 正在加載背景圖案 + 303-es-que, 24dB/octave, 3 pole filter + - New from template - 從模版新建工程 + Slide Decay: + - Save as default template - 保存爲默認模板 + DIST: + - &View - 視圖 (&V) + Saw wave + 鋸齒波 - Toggle metronome - 開啓/關閉節拍器 + Click here for a saw-wave. + - Show/hide Song-Editor - 顯示/隱藏歌曲編輯器 + Triangle wave + 三角波 - Show/hide Beat+Bassline Editor - 顯示/隱藏節拍+旋律編輯器 + Click here for a triangle-wave. + 點擊這裡使用三角波。 - Show/hide Piano-Roll - 顯示/隱藏鋼琴窗 + Square wave + 方波 - Show/hide Automation Editor - 顯示/隱藏自動控制編輯器 + Click here for a square-wave. + 點擊這裡使用方形波。 - Show/hide FX Mixer - 顯示/隱藏混音器 + Rounded square wave + - Show/hide project notes - 顯示/隱藏工程註釋 + Click here for a square-wave with a rounded end. + - Show/hide controller rack - 顯示/隱藏控制器機架 + Moog wave + - Recover session. Please save your work! - 恢復會話。請保存你的工作! + Click here for a moog-like wave. + - Recovered project not saved - 恢復的工程沒有保存 + Sine wave + 正弦波 - 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? - 這個工程已從上一個會話中恢復。它現在沒有被保存, 並且如果你不保存, 它將會丟失。你現在想保存它嗎? + Click for a sine-wave. + - LMMS Project - LMMS 工程 + White noise wave + 白噪音 - LMMS Project Template - LMMS 工程模板 + Click here for an exponential wave. + - Overwrite default template? - 覆蓋默認的模板? + Click here for white-noise. + - This will overwrite your current default template. - 這將會覆蓋你的當前默認模板。 + Bandlimited saw wave + - Smooth scroll - 平滑滾動 + Click here for bandlimited saw wave. + - Enable note labels in piano roll - 在鋼琴窗中顯示音號 + Bandlimited square wave + - Save project template - + Click here for bandlimited square wave. + - Volume as dBFS - + Bandlimited triangle wave + - Could not open file - 無法打開文件 + Click here for bandlimited triangle wave. + - 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! - + Bandlimited moog saw wave + - Export &MIDI... - 導出 MIDI (&M)... + Click here for bandlimited moog saw wave. + - MeterDialog + malletsInstrument - Meter Numerator - + Hardness + - Meter Denominator - + Position + - TIME SIG - 拍子記號 + Modulator + - - - MeterModel - Numerator - + Crossfade + - Denominator - + ADSR + - - - MidiController - MIDI Controller - MIDI控制器 + Pressure + - unnamed_midi_controller - - - - - 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. - 你還沒有在設置(在編輯->設置)中設置默認的 Soundfont。因此在導入此 MIDI 文件後將會沒有聲音。你需要下載一個通用 MIDI (GM) 的 Soundfont, 並且在設置對話框中選中後再試一次。 - - - 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. - 你在編譯 LMMS 時沒有加入 SoundFont2 播放器支持, 此播放器默認用於添加導入的 MIDI 文件。因此在 MIDI 文件導入後, 將沒有聲音。 - - - Track - 軌道 - - - - MidiJack - - JACK server down - When JACK(JACK Audio Connection Kit) disconnects, it will show the following message (title) - JACK服務崩潰 - - - The JACK server seems to be shuted down. - When JACK(JACK Audio Connection Kit) disconnects, it will show the following message (dialog message) - - - - - MidiPort - - Input channel - 輸入通道 - - - Output channel - 輸出通道 - - - Input controller - 輸入控制器 - - - Output controller - 輸出控制器 - - - Fixed input velocity - - - - Fixed output velocity - - - - Output MIDI program - - - - Receive MIDI-events - 接受 MIDI 事件 - - - Send MIDI-events - 發送 MIDI 事件 - - - Fixed output note - - - - Base velocity - 基準力度 - - - - MidiSetupWidget - - DEVICE - 設備 - - - - 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 - - - - - 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. - -Each modulation target has 4 knobs, one for each modulator. By default the knobs are at 0, which means no modulation. Turning a knob to 1 causes that modulator to affect the modulation target as much as possible. Turning it to -1 does the same, but the modulation is inversed. - - - - 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 - 調製量 - - - - MultitapEchoControlDialog - - Length - 長度 - - - Step length: - 步進長度: - - - Dry - 幹聲 - - - Dry Gain: - 幹聲增益: - - - Stages - - - - Lowpass stages: - - - - Swap inputs - - - - Swap left and right input channel for reflections - - - - - 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 - - - - - 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 - - - - - OscillatorObject - - Osc %1 volume - Osc %1 音量 - - - Osc %1 panning - Osc %1 聲像 - - - 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 波形 - - - Osc %1 harmonic - - - - - PatchesDialog - - Qsynth: Channel Preset - Qsynth: 通道預設 - - - Bank selector - 音色選擇器 - - - Bank - - - - Program selector - - - - Patch - 音色 - - - Name - 名稱 - - - OK - 確定 - - - Cancel - 取消 - - - - 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. - 在這裏你可以開關循環模式。如果啓用,PatMan 會使用文件中的循環信息。 - - - Tune - 調音 - - - Tune mode - 調音模式 - - - Here you can toggle the Tune mode. If enabled, PatMan will tune the sample to match the note's frequency. - 這裏可以開關調音模式。如果啓用,PatMan 會將採樣調成和音符一樣的頻率。 - - - No file selected - 未選擇文件 - - - Open patch file - 打開音色文件 - - - Patch-Files (*.pat) - 音色文件 (*.pat) - - - - PatternView - - Open in piano-roll - 在鋼琴窗中打開 - - - Clear all notes - 清除所有音符 - - - Reset name - 重置名稱 - - - Change name - 修改名稱 - - - Add steps - 添加音階 - - - Remove steps - 移除音階 - - - Clone Steps - - - - - PeakController - - Peak Controller - 峯值控制器 - - - Peak Controller Bug - 峯值控制器 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. - 在老版本的 LMMS 中, 峯值控制器因爲有 bug 而可能沒有正確連接。請確保峯值控制器正常連接後再次保存次文件。我們對給你造成的不便深表歉意。 - - - - PeakControllerDialog - - PEAK - - - - LFO Controller - LFO 控制器 - - - - PeakControllerEffectControlDialog - - BASE - 基準 - - - Base amount: - 基礎值: - - - Modulation amount: - 調製量: - - - Attack: - 打擊聲: - - - Release: - 釋音: - - - AMNT - - - - MULT - - - - Amount Multiplicator: - - - - ATCK - 打擊 - - - DCAY - - - - Treshold: - - - - TRSH - - - - - PeakControllerEffectControls - - Base value - 基準值 - - - Modulation amount - 調製量 - - - Mute output - 輸出靜音 - - - Attack - 打進聲 - - - Release - 釋放 - - - 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% - 音量:%1% - - - Panning: %1% left - 聲相:%1% 偏左 - - - Panning: %1% right - 聲相:%1% 偏右 - - - Panning: center - 聲相:居中 - - - Please enter a new value between %1 and %2: - 請輸入一個介於 %1 和 %2 的值: - - - Mark/unmark all corresponding octave semitones - - - - Select all notes on this key - 選中所有相同音調的音符 - - - - PianoRollWindow - - Play/pause current pattern (Space) - 播放/暫停當前片段(空格) - - - Record notes from MIDI-device/channel-piano - 從 MIDI 設備/通道鋼琴(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) - 繪製模式 (Shift+D) - - - Erase mode (Shift+E) - 擦除模式 (Shift+E) - - - Select mode (Shift+S) - 選擇模式 (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. - 點擊啓用擦除模式。此模式下你可以擦除音符。你可以按鍵盤上的 'Shift+E' 啓用此模式。 - - - 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) - 剪切選定音符 (%1+X) - - - Copy selected notes (%1+C) - 複製選定音符 (%1+C) - - - Paste notes from clipboard (%1+V) - 從剪貼板粘貼音符 (%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 - 編輯功能 - - - Copy paste controls - - - - Timeline controls - 時間線控制 - - - Zoom and note controls - - - - Piano-Roll - %1 - 鋼琴窗 - %1 - - - Piano-Roll - no pattern - 鋼琴窗 - 沒有片段 - - - Quantize - - - - - PianoView - - Base note - 基本音 - - - - Plugin - - Plugin not found - 未找到插件 - - - The plugin "%1" wasn't found or could not be loaded! -Reason: "%2" - 插件“%1”無法找到或無法載入! -原因:%2 - - - Error while loading plugin - 載入插件時發生錯誤 - - - Failed to load plugin "%1"! - 載入插件“%1”失敗! - - - - PluginBrowser - - 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! - - - - - ProjectNotes - - Edit Actions - 編輯功能 - - - &Undo - 撤銷(&U) - - - %1+Z - %1+Z - - - &Redo - 重做(&R) - - - %1+Y - %1+Y - - - &Copy - 複製(&C) - - - %1+C - %1+C - - - Cu&t - 剪切(&T) - - - %1+X - %1+X - - - &Paste - 粘貼(&P) - - - %1+V - %1+V - - - Format Actions - 格式功能 - - - &Bold - 加粗(&B) - - - %1+B - %1+B - - - &Italic - 斜體(&I) - - - %1+I - %1+I - - - &Underline - 下劃線(&U) - - - %1+U - %1+U - - - &Left - 左對齊(&L) - - - %1+L - %1+L - - - C&enter - 居中(&E) - - - %1+E - %1+E - - - &Right - 右對齊(&R) - - - %1+R - %1+R - - - &Justify - 勻齊(&J) - - - %1+J - %1+J - - - &Color... - 顏色(&C)... - - - Project Notes - 顯示/隱藏工程註釋 - - - Enter project notes here - - - - - ProjectRenderer - - WAV-File (*.wav) - WAV-文件 (*.wav) - - - Compressed OGG-File (*.ogg) - 壓縮的 OGG 文件(*.ogg) - - - FLAC-File (*.flac) - - - - 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 - 文件:%1 - - - - RenameDialog - - Rename... - 重命名... - - - - ReverbSCControlDialog - - Input - 輸入 - - - Input Gain: - 輸入增益: - - - Size - - - - Size: - - - - Color - - - - Color: - - - - Output - 輸出 - - - Output Gain: - 輸出增益: - - - - ReverbSCControls - - Input Gain - - - - Size - - - - Color - - - - Output Gain - - - - - SampleBuffer - - Open audio file - 打開音頻文件 - - - Wave-Files (*.wav) - Wave波形文件 (*.wav) - - - OGG-Files (*.ogg) - OGG-文件 (*.ogg) - - - DrumSynth-Files (*.ds) - DrumSynth-文件 (*.ds) - - - FLAC-Files (*.flac) - FLAC-文件 (*.flac) - - - SPEEX-Files (*.spx) - SPEEX-文件 (*.spx) - - - VOC-Files (*.voc) - VOC-文件 (*.voc) - - - AIFF-Files (*.aif *.aiff) - AIFF-文件 (*.aif *.aiff) - - - AU-Files (*.au) - AU-文件 (*.au) - - - RAW-Files (*.raw) - RAW-文件 (*.raw) - - - All Audio-Files (*.wav *.ogg *.ds *.flac *.spx *.voc *.aif *.aiff *.au *.raw) - 所有音頻文件 (*.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 - - - - - SampleTCOView - - double-click to select sample - 雙擊選擇採樣 - - - Delete (middle mousebutton) - 刪除 (鼠標中鍵) - - - Cut - 剪切 - - - Copy - 複製 - - - Paste - 粘貼 - - - Mute/unmute (<%1> + middle click) - 靜音/取消靜音 (<%1> + 鼠標中鍵) - - - - SampleTrack - - Sample track - 採樣軌道 - - - Volume - 音量 - - - Panning - 聲相 - - - - SampleTrackView - - Track volume - 軌道音量 - - - Channel volume: - 通道音量: - - - VOL - VOL - - - Panning - 聲相 - - - Panning: - 聲相: - - - PAN - PAN - - - - SetupDialog - - Setup LMMS - 設置LMMS - - - General settings - 常規設置 - - - BUFFER SIZE - 緩衝區大小 - - - Reset to default-value - 重置爲默認值 - - - MISC - 雜項 - - - Enable tooltips - 啓用工具提示 - - - Show restart warning after changing settings - 在改變設置後顯示重啓警告 - - - 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 - 同步 VST 插件和主機回放 - - - Enable note labels in piano roll - 在鋼琴窗中顯示音號 - - - Enable waveform display by default - 默認啓用波形圖 - - - Keep effects running even without input - 在沒有輸入時也運行音頻效果 - - - Create backup file when saving a project - 保存工程時建立備份 - - - LANGUAGE - 語言 - - - Paths - 路徑 - - - LMMS working directory - LMMS工作目錄 - - - VST-plugin directory - VST插件目錄 - - - Background artwork - 背景圖片 - - - STK rawwave directory - STK rawwave 目錄 - - - Default Soundfont File - 默認 SoundFont 文件 - - - Performance settings - 性能設置 - - - UI effects vs. performance - 界面特效 vs 性能 - - - Smooth scroll in Song Editor - 歌曲編輯器中啓用平滑滾動 - - - Show playback cursor in AudioFileProcessor - 在 AudioFileProcessor 中顯示回放光標 - - - Audio settings - 音頻設置 - - - AUDIO INTERFACE - 音頻接口 - - - MIDI settings - MIDI設置 - - - MIDI INTERFACE - MIDI接口 - - - OK - 確定 - - - Cancel - 取消 - - - Restart LMMS - 重啓LMMS - - - Please note that most changes won't take effect until you restart LMMS! - 請注意很多設置需要重啓LMMS纔可生效! - - - Frames: %1 -Latency: %2 ms - 幀數: %1 -延遲: %2 毫秒 - - - 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. - 在這裏,你可以設置 LMMS 所用緩衝區的大小。緩衝區越小,延遲越小,但聲音質量和性能可能會受影響。 - - - Choose LMMS working directory - 選擇 LMMS 工作目錄 - - - Choose your VST-plugin directory - 選擇 VST 插件目錄 - - - Choose artwork-theme directory - 選擇插圖目錄 - - - Choose LADSPA plugin directory - 選擇 LADSPA 插件目錄 - - - Choose STK rawwave directory - 選擇 STK rawwave 目錄 - - - Choose default SoundFont - 選擇默認的 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. - 在這裏你可以選擇你想要的音頻接口。取決於你的系統和編譯時的設置, 你可以選擇 ALSA, JACK, OSS 等選項。在下面的方框中你可以設置音頻接口的控制項目。 - - - 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. - 在這裏你可以選擇你想要的 MIDI 接口。取決於你的系統和編譯時的設置, 你可以選擇 ALSA, OSS 等選項。在下面的方框中你可以設置 MIDI 接口的控制項目。 - - - Reopen last project on start - 啓動時打開最近的項目 - - - Directories - 目錄 - - - Themes directory - 主題文件目錄 - - - GIG directory - GIG 目錄 - - - SF2 directory - SF2 目錄 - - - LADSPA plugin directories - LADSPA 插件目錄 - - - Auto save - 自動保存 - - - Choose your GIG directory - 選擇 GIG 目錄 - - - Choose your SF2 directory - 選擇 SF2 目錄 - - - 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. - - - - - Song - - Tempo - 節奏 - - - Master volume - 主音量 - - - Master pitch - 主音高 - - - Project saved - 工程已保存 - - - The project %1 is now saved. - 工程 %1 已保存。 - - - Project NOT saved. - 工程 **沒有** 保存。 - - - The project %1 was not saved! - 工程%1沒有保存! - - - Import file - 導入文件 - - - MIDI sequences - MIDI 音序器 - - - Hydrogen projects - Hydrogen工程 - - - 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) - MIDI 文件 (*.mid) - - - LMMS Error report - LMMS錯誤報告 - - - Save project - - - - - 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. - 無法打開 %1 。或許沒有權限讀此文件。 -請確保您擁有對此文件的讀權限,然後重試。 - - - Error in file - 文件錯誤 - - - The file %1 seems to contain errors and therefore can't be loaded. - 文件 %1 似乎包含錯誤,無法被加載。 - - - Tempo - 節奏 - - - TEMPO/BPM - 節奏/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% - 值: %1% - - - Value: %1 semitones - 值: %1 半音程 - - - 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. - 無法打開 %1 寫入數據。或許沒有權限修改此文件。請確保您擁有對此文件的寫權限,然後重試。 - - - template - - - - project - - - - Version difference - - - - This %1 was created with LMMS %2. - - - - - SongEditorWindow - - Song-Editor - 歌曲編輯器 - - - Play song (Space) - 播放歌曲(空格) - - - Record samples from Audio-device - 從音頻設備錄製樣本 - - - Record samples from Audio-device while playing song or BB track - 在播放歌曲或BB軌道時從音頻設備錄入樣本 - - - Stop song (Space) - 停止歌曲(空格) - - - Add beat/bassline - 添加節拍/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 - 軌道動作 - - - Edit actions - 編輯動作 - - - Timeline controls - 時間線控制 - - - Zoom controls - 縮放控制 - - - - SpectrumAnalyzerControlDialog - - Linear spectrum - 線性頻譜圖 - - - Linear Y axis - 線性 Y 軸 - - - - SpectrumAnalyzerControls - - Linear spectrum - 線性頻譜圖 - - - Linear Y axis - 線性 Y 軸 - - - Channel mode - 通道模式 - - - - SubWindow - - Close - - - - Maximize - - - - Restore - - - - - TabWidget - - Settings for %1 - %1 的設定 - - - - 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 - - - - - TimeDisplayWidget - - click to change time units - 點擊改變時間單位 - - - MIN - - - - SEC - - - - MSEC - - - - BAR - - - - BEAT - - - - TICK - - - - - 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. - 按住 <%1> 禁用磁性吸附。 - - - Hold <Shift> to move the begin loop point; Press <%1> to disable magnetic loop points. - 按住 <Shift> 移動起始循環點;按住 <%1> 禁用磁性吸附。 - - - - Track - - Mute - 靜音 - - - Solo - 獨奏 - - - - 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. - 無法找到導入文件 %1 的導入器 -你需要使用其他軟件將此文件轉換成 LMMS 支持的格式。 - - - 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! - 無法讀取文件 %1 -請確認你有對該文件及其目錄的讀取權限後再試! - - - Loading project... - 正在加載工程... - - - Cancel - 取消 - - - Please wait... - 請稍等... - - - Importing MIDI-file... - 正在導入 MIDI-文件... - - - Loading Track %1 (%2/Total %3) - - - - - TrackContentObject - - Mute - 靜音 - - - - TrackContentObjectView - - Current position - 當前位置 - - - Hint - 提示 - - - Press <%1> and drag to make a copy. - 按住 <%1> 並拖動以創建副本。 - - - Current length - 當前長度 - - - Press <%1> for free resizing. - 按住 <%1> 自由調整大小。 - - - %1:%2 (%3:%4 to %5:%6) - %1:%2 (%3:%4 到 %5:%6) - - - Delete (middle mousebutton) - 刪除 (鼠標中鍵) - - - Cut - 剪切 - - - Copy - 複製 - - - Paste - 粘貼 - - - Mute/unmute (<%1> + middle click) - 靜音/取消靜音 (<%1> + 鼠標中鍵) - - - - 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 - 效果 %1: %2 - - - 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 - 音分 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. - 爲當前振盪器使用用戶自定波形。 - - - - VersionedSaveDialog - - Increment version number - 遞增版本號 - - - Decrement version number - 遞減版本號 - - - already exists. Do you want to replace it? - - - - - VestigeInstrumentView - - Open other VST-plugin - 打開其他的VST插件 - - - 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. - 點此顯示/隱藏VST插件的界面。 - - - Turn off all notes - 全部靜音 - - - Open VST-plugin - 打開VST插件 - - - DLL-files (*.dll) - DLL-文件 (*.dll) - - - EXE-files (*.exe) - EXE-文件 (*.exe) - - - No VST-plugin loaded - 未載入VST插件 - - - Control VST-plugin from LMMS host - 從 LMMS 宿主控制 VST-插件 - - - Click here, if you want to control VST-plugin from host. - - - - Open VST-plugin preset - 打開 VST-插件預設 - - - 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. - 點擊這裏, 如果你想保存當前 VST-插件預設。 - - - Next (+) - 下一個 (+) - - - Click here to select presets that are currently loaded in VST. - - - - Preset - 預置 - - - by - - - - - VST plugin control - - VST插件控制 - - - - VisualizationWidget - - click to enable/disable visualization of master-output - 點擊啓用/禁用視覺化主輸出 - - - Click to enable - 點擊啓用 - - - - VstEffectControlDialog - - Show/hide - 顯示/隱藏 - - - Control VST-plugin from LMMS host - 從 LMMS 宿主控制 VST-插件 - - - Click here, if you want to control VST-plugin from host. - - - - Open VST-plugin preset - 打開 VST-插件預設 - - - 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. - 點擊這裏, 如果你想保存當前 VST-插件預設。 - - - Effect by: - - - - &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /> - - - - - VstPlugin - - Loading plugin - 載入插件 - - - Open Preset - 打開預置 - - - Vst Plugin Preset (*.fxp *.fxb) - VST插件預置文件(*.fxp *.fxb) - - - : default - : 默認 - - - " - " - - - ' - ' - - - Save Preset - 保存預置 - - - .fxp - .fxp - - - .FXP - .FXP - - - .FXB - .FXB - - - .fxb - .fxb - - - Please wait while loading VST plugin... - 正在載入VST插件,請稍候…… - - - The VST plugin %1 could not be loaded. - 無法載入VST插件 %1。 - - - - 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 - - - - - 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 - - - - - ZynAddSubFxInstrument - - Portamento - - - - Filter Frequency - - - - Filter Resonance - - - - Bandwidth - 帶寬 - - - FM Gain - FM 增益 - - - Resonance Center Frequency - - - - Resonance Bandwidth - - - - Forward MIDI Control Change Events - - - - - 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 - - - - - audioFileProcessor - - Amplify - 增益 - - - Start of sample - 採樣起始 - - - End of sample - 採樣結尾 - - - Reverse sample - 反轉採樣 - - - Stutter - - - - Loopback point - 循環點 - - - Loop mode - 循環模式 - - - Interpolation mode - 補間方式 - - - None - - - - Linear - 線性插補 - - - Sinc - 辛格(Sinc)插補 - - - Sample not found: %1 - 採樣未找到: %1 - - - - bitInvader - - Samplelength - 採樣長度 - - - - 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. - - - - Click 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 white-noise. - - - - Click here for a user-defined shape. - - - - - 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 - - - - - dynProcControls - - Input gain - 輸入增益 - - - Output gain - 輸出增益 - - - Attack time - - - - Release time - - - - Stereo mode - - - - - expressiveView - - Select oscillator W1 - - - - Select oscillator W2 - - - - Select oscillator W3 - - - - Select OUTPUT 1 - - - - Select OUTPUT 2 - - - - Open help window - - - - Sine wave - 正弦波 - - - Click for a sine-wave. - - - - Moog-Saw wave - - - - Click for a Moog-Saw-wave. - - - - Exponential wave - - - - Click for an exponential wave. - - - - Saw wave - 鋸齒波 - - - Click here for a saw-wave. - - - - User defined wave - 用戶自定義波形 - - - Click here for a user-defined shape. - - - - Triangle wave - 三角波 - - - Click here for a triangle-wave. - 點擊這裡使用三角波。 - - - Square wave - 方波 - - - Click here for a square-wave. - 點擊這裡使用方形波。 - - - White noise wave - 白噪音 - - - Click here for white-noise. - - - - WaveInterpolate - - - - ExpressionValid - - - - General purpose 1: - - - - General purpose 2: - - - - General purpose 3: - - - - O1 panning: - - - - O2 panning: - - - - Release transition: - - - - Smoothness - - - - - fxLineLcdSpinBox - - Assign to: - 分配給: - - - New FX Channel - 新的效果通道 - - - - graphModel - - Graph - 圖形 - - - - kickerInstrument - - Start frequency - 起始頻率 - - - End frequency - 結束頻率 - - - Gain - 增益 - - - Length - 長度 - - - Distortion Start - 起始失真度 - - - Distortion End - 結束失真度 - - - Envelope Slope - 包絡線傾斜度 - - - Noise - 噪音 - - - Click - 力度 - - - Frequency Slope - 頻率傾斜度 - - - Start from note - 從哪個音符開始 - - - End to note - 到哪個音符結束 - - - - kickerInstrumentView - - Start frequency: - 起始頻率: - - - End frequency: - 結束頻率: - - - Gain: - 增益: - - - Frequency Slope: - 頻率傾斜度: - - - Envelope Length: - 包絡長度: - - - Envelope Slope: - 包絡線傾斜度: - - - Click: - 力度: - - - Noise: - 噪音: - - - Distortion Start: - 起始失真度: - - - Distortion End: - 結束失真度: - - - - 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. - -Unavailable Effects are those that were identified as effects, but either didn't have the same number of input and output channels or weren't real time capable. - -Instruments are plugins for which only output channels were identified. - -Analysis Tools are plugins for which only input channels were identified. - -Don't Knows are plugins for which no input or output channels were identified. - -Double clicking any of the plugins will bring up information on the ports. - 這個對話框顯示 LMMS 找到的所有 LADSPA 插件信息。這些插件根據接口類型和名字被分爲五個類別。 - -"可用效果" 是指可以被 LMMS 使用的插件。爲了讓 LMMS 可以開啓效果, 首先, 這個插件需要是有效果的。也就是說, 這個插件需要有輸入和輸出通道。LMMS 會將音頻接口名稱中有 ‘in’ 的接口識別爲輸入接口, 將音頻接口名稱中有 ‘out’ 的接口識別爲輸出接口。並且, 效果插件需要有相同的輸入輸出通道, 還要能支持實時處理。 - -"不可用效果" 是指被識別爲效果插件的插件, 但是輸入輸出通道數不同或者不支持實時音頻處理。 - -"樂器" 是指只檢測到有輸出通道的插件。 - -"分析工具" 是指只檢測到有輸入通道的插件。 - -"未知" 是指沒有檢測到任何輸出或輸出通道的插件。 - -雙擊任意插件將會顯示接口信息。 - - - Type: - 類型: - - - - ladspaDescription - - Plugins - 插件 - - - Description - 描述 - - - - ladspaPortDialog - - Ports - - - - Name - 名稱 - - - Rate - - - - Direction - 方向 - - - Type - 類型 - - - Min < Default < Max - 最小 < 默認 < 最大 - - - Logarithmic - 對數 - - - SR Dependent - - - - Audio - 音頻 - - - Control - 控制 - - - Input - 輸入 - - - Output - 輸出 - - - Toggled - - - - Integer - 整型 - - - Float - 浮點 - - - Yes - - - - - lb302Synth - - VCF Cutoff Frequency - - - - VCF Resonance - - - - VCF Envelope Mod - - - - VCF Envelope Decay - - - - Distortion - 失真 - - - Waveform - 波形 - - - Slide Decay - - - - Slide - - - - Accent - - - - Dead - - - - 24dB/oct Filter - - - - - 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. - - - - - 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 - - - - - 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: - + Motion + Speed - - - - Speed: - - - - Missing files - - - - Your Stk-installation seems to be incomplete. Please make sure the full Stk-package is installed! - - - - - manageVSTEffectView - - - VST parameter control - - VST 參數控制 - - - VST Sync - VST 同步 - - - Click here if you want to synchronize all parameters with VST plugin. - 點擊這裏, 如果你想與 VST 插件同步所有參數。 - - - Automated - 自動 - - - Click here if you want to display automated parameters only. - - - - Close - 關閉 - - - Close VST effect knob-controller window. - - - - - manageVestigeInstrumentView - - - VST plugin control - - VST插件控制 - - - VST Sync - VST 同步 - - - Click here if you want to synchronize all parameters with VST plugin. - 點擊這裏, 如果你想與 VST 插件同步所有參數。 - - - Automated - 自動 - - - Click here if you want to display automated parameters only. - - - - Close - 關閉 - - - Close VST plugin knob-controller window. - - - - - 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 - - - - - opl2instrumentView - - Attack - 打進聲 - - - Decay - 衰減 - - - Release - 釋放 - - - Frequency multiplier - - - - - organicInstrument - - Distortion - 失真 - - - Volume - 音量 - - - - organicInstrumentView - - Distortion: - 失真: - - - Volume: - 音量: - - - Randomise - 隨機 - - - Osc %1 waveform: - - - - Osc %1 volume: - - - - Osc %1 panning: - - - - cents - 音分 cents - - - The distortion knob adds distortion to the output of the instrument. - - - - The volume knob controls the volume of the output of the instrument. It is cumulative with the instrument window's volume control. - + Bowed + - The randomize button randomizes all knobs except the harmonics,main volume and distortion knobs. - + Spread + - Osc %1 stereo detuning - + Marimba + - Osc %1 harmonic: - + Vibraphone + - - - FreeBoyInstrument - Sweep time - + Agogo + - Sweep direction - + Reso + - Sweep RtShift amount - + Beats + - Wave Pattern Duty - + Clump + - Channel 1 volume - + Glass + - Volume sweep direction - + Vibrato gain + - Length of each step in sweep - + Vibrato frequency + - Channel 2 volume - + Stick mix + - Channel 3 volume - + LFO speed + LFO 速度 - Channel 4 volume - + LFO depth + - Right Output level - 右聲道輸出電平 + Wood 1 + - Left Output level - + Wood 2 + - Channel 1 to SO2 (Left) - + Two fixed + - Channel 2 to SO2 (Left) - + Tubular bells + - Channel 3 to SO2 (Left) - + Uniform bar + - Channel 4 to SO2 (Left) - + Tuned bar + - Channel 1 to SO1 (Right) - + Tibetan bowl + + + + malletsInstrumentView - Channel 2 to SO1 (Right) - + Instrument + - Channel 3 to SO1 (Right) - + Spread + - Channel 4 to SO1 (Right) - + Spread: + - Treble - + Hardness + - Bass - 低音 + Hardness: + - Shift Register width - + Position + - - - FreeBoyInstrumentView - Sweep Time: - + Position: + - Sweep Time - + Modulator + - Sweep RtShift amount: - + Modulator: + - Sweep RtShift amount - + Crossfade + - Wave pattern duty: - + Crossfade: + - Wave Pattern Duty - + ADSR + - Square Channel 1 Volume: - + ADSR: + - Length of each step in sweep: - + Pressure + - Length of each step in sweep - + Pressure: + - Wave pattern duty - + Speed + - Square Channel 2 Volume: - + Speed: + - Square Channel 2 Volume - + Missing files + - Wave Channel Volume: - + Your Stk-installation seems to be incomplete. Please make sure the full Stk-package is installed! + - Wave Channel Volume - + Vibrato gain + - Noise Channel Volume: - + Vibrato gain: + - Noise Channel Volume - + Vibrato frequency + - SO1 Volume (Right): - + Vibrato frequency: + - SO1 Volume (Right) - + Stick mix + - SO2 Volume (Left): - + Stick mix: + - SO2 Volume (Left) - + LFO speed + LFO 速度 - Treble: - + LFO speed: + - Treble - + LFO depth + - Bass: - + LFO depth: + + + + manageVSTEffectView - Bass - 低音 + - VST parameter control + - VST 參數控制 - Sweep Direction - + Automated + 自動 - Volume Sweep Direction - + Close + 關閉 - Shift Register Width - + VST sync + + + + manageVestigeInstrumentView - Channel1 to SO1 (Right) - + - VST plugin control + - VST插件控制 - Channel2 to SO1 (Right) - + VST Sync + VST 同步 - Channel3 to SO1 (Right) - + Automated + 自動 - Channel4 to SO1 (Right) - + Close + 關閉 + + + organicInstrument - Channel1 to SO2 (Left) - + Distortion + 失真 - Channel2 to SO2 (Left) - + Volume + 音量 + + + organicInstrumentView - Channel3 to SO2 (Left) - + Distortion: + 失真: - Channel4 to SO2 (Left) - + Volume: + 音量: - Wave Pattern - + Randomise + 隨機 - The amount of increase or decrease in frequency - + Osc %1 waveform: + - The rate at which increase or decrease in frequency occurs - + Osc %1 volume: + - The duty cycle is the ratio of the duration (time) that a signal is ON versus the total period of the signal. - + Osc %1 panning: + - Square Channel 1 Volume - + cents + 音分 cents - The delay between step change - + Osc %1 stereo detuning + - Draw the wave here - + Osc %1 harmonic: + @@ -9341,7 +4288,7 @@ Double clicking any of the plugins will bring up information on the ports. Program selector - + Patch @@ -9362,25 +4309,21 @@ Double clicking any of the plugins will bring up information on the ports. pluginBrowser - - no description - 沒有描述 - Incomplete monophonic imitation tb303 - + Plugin for freely manipulating stereo output - + Plugin for controlling knobs with sound peaks - + Plugin for enhancing stereo separation of a stereo input file - + List installed LADSPA plugins @@ -9392,11 +4335,11 @@ Double clicking any of the plugins will bring up information on the ports. Additive Synthesizer for organ-like sounds - + Tuneful things to bang on - + VST-host for using VST(i)-plugins within LMMS @@ -9404,7 +4347,7 @@ Double clicking any of the plugins will bring up information on the ports. Vibrating string modeler - + plugin for using arbitrary LADSPA-effects inside LMMS. @@ -9412,7 +4355,7 @@ Double clicking any of the plugins will bring up information on the ports. Filter for importing MIDI-files into LMMS - + Emulation of the MOS6581 and MOS8580 SID. @@ -9438,7 +4381,7 @@ This chip was used in the Commodore 64 computer. 2-operator FM Synth - + Filter for importing Hydrogen files into LMMS @@ -9450,11 +4393,11 @@ This chip was used in the Commodore 64 computer. Monstrous 3-oscillator synth with modulation matrix - + Three powerful oscillators you can modulate in several ways - + A native amplifier plugin @@ -9466,15 +4409,15 @@ This chip was used in the Commodore 64 computer. 4-oscillator modulatable wavetable synth - + plugin for waveshaping - + Boost your bass the fast and simple way - + Versatile drum synthesizer @@ -9486,7 +4429,7 @@ This chip was used in the Commodore 64 computer. plugin for processing dynamics in a flexible way - + Carla Patchbay Instrument @@ -9494,7 +4437,7 @@ This chip was used in the Commodore 64 computer. plugin for using arbitrary VST effects inside LMMS. - + Graphical spectrum analyzer plugin @@ -9514,7 +4457,7 @@ This chip was used in the Commodore 64 computer. A multitap echo delay plugin - + A native flanger plugin @@ -9522,7 +4465,7 @@ This chip was used in the Commodore 64 computer. An oversampling bitcrusher - + A native eq plugin @@ -9530,23 +4473,23 @@ This chip was used in the Commodore 64 computer. A 4-band Crossover Equalizer - + A Dual filter plugin - + Filter for exporting MIDI-files from LMMS - + Reverb algorithm by Sean Costello - + Mathematical expression parser - + @@ -9568,134 +4511,110 @@ This chip was used in the Commodore 64 computer. 混響 - Reverb Roomsize - 混響空間大小 + Chorus + 合唱 - Reverb Damping - 混響阻尼 + A soundfont %1 could not be loaded. + 無法載入Soundfont %1。 - Reverb Width - 混響寬度 + Reverb room size + - Reverb Level - 混響級別 + Reverb damping + - Chorus - 合唱 + Reverb width + - Chorus Lines - 合唱聲部 + Reverb level + - Chorus Level - 合唱電平 + Chorus voices + - Chorus Speed - 合唱速度 + Chorus level + - Chorus Depth - 合唱深度 + Chorus speed + - A soundfont %1 could not be loaded. - 無法載入Soundfont %1。 + Chorus depth + sf2InstrumentView - - Open other SoundFont file - 打開其他SoundFont文件 - - - Click here to open another SF2 file - 點擊此處打開另一個SF2文件 - - - 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: - 混響空間大小: + Apply chorus (if supported) + 應用合唱 (如果支持) - Reverb Damping: - 混響阻尼: + Open SoundFont file + 打開SoundFont文件 - Reverb Width: - 混響寬度: + Choose patch + - Reverb Level: - 混響級別: + Gain: + 增益: - Apply chorus (if supported) - 應用合唱 (如果支持) + Room size: + - This button enables the chorus effect. This is useful for cool echo effects, but only works on files that support it. - 此按鈕會啓用合唱效果器。 + Damping: + - Chorus Lines: - 合唱聲部: + Width: + 寬度: - Chorus Level: - 合唱級別: + Level: + - Chorus Speed: - 合唱速度: + Voices: + - Chorus Depth: - 合唱深度: + Speed: + - Open SoundFont file - 打開SoundFont文件 + Depth: + 位深: - SoundFont2 Files (*.sf2) - SoundFont2 Files (*.sf2) + SoundFont Files (*.sf2 *.sf3) + sfxrInstrument - Wave Form - 波形 + Wave + sidInstrument - - Cutoff - 切除 - Resonance 共鳴 @@ -9716,6 +4635,10 @@ This chip was used in the Commodore 64 computer. Chip model 芯片型號 + + Cutoff frequency + 切除頻率 + sidInstrumentView @@ -9731,22 +4654,6 @@ This chip was used in the Commodore 64 computer. Cutoff frequency: 頻譜刀頻率: - - High-Pass filter - 高通濾波器 - - - Band-Pass filter - 帶通濾波器 - - - Low-Pass filter - 低通濾波器 - - - Voice3 Off - 聲音 3 關 - MOS6581 SID MOS6581 SID @@ -9759,109 +4666,89 @@ This chip was used in the Commodore 64 computer. 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. - + Noise + 噪音 - Pulse Wave - + Sync + 同步 - Triangle Wave - + Filtered + - SawTooth - + Test + 測試 - Noise - 噪音 + High-pass filter + - Sync - 同步 + Band-pass filter + - Sync synchronizes the fundamental frequency of Oscillator %1 with the fundamental frequency of Oscillator %2 producing "Hard Sync" effects. - + Low-pass filter + - Ring-Mod - + Voice 3 off + - Ring-mod replaces the Triangle Waveform output of Oscillator %1 with a "Ring Modulated" combination of Oscillators %1 and %2. - + Pulse wave + - Filtered - + Triangle wave + 三角波 - 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. - + Saw wave + 鋸齒波 - Test - 測試 + Ring modulation + - Test, when set, resets and locks Oscillator %1 at zero until Test is turned off. - + Pulse width: + stereoEnhancerControlDialog - - WIDE - - Width: 寬度: + + WIDTH + + stereoEnhancerControls @@ -9915,178 +4802,82 @@ This chip was used in the Commodore 64 computer. 載入插件 - Please wait while loading VST-plugin... - 請等待VST插件加載完成... + Please wait while loading the VST plugin... + vibed String %1 volume - + String %1 stiffness - + Pick %1 position - + Pickup %1 position - + - Pan %1 - 聲相 %1 + Impulse %1 + - Detune %1 - 去諧 %1 + String %1 panning + - Fuzziness %1 - 模糊度 %1 + String %1 detune + - Length %1 - 長度 %1 + String %1 fuzziness + - Impulse %1 - + String %1 length + - Octave %1 - 八度音 %1 + String %1 + 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. - -The 'S' button will smooth the waveform. - -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. - -The 'V' knob controls the volume. The 'S' knob controls the string's stiffness. The 'P' knob controls the pick position. The 'PU' knob controls the pickup position. - -'Pan' and 'Detune' hopefully don't need explanation. The 'Slap' knob adds a bit of fuzz to the sound of the string. - -The 'Length' knob controls the length of the string. - -The LED in the lower right corner of the waveform editor determines whether the string is active in the current instrument. - + 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 @@ -10105,79 +4896,75 @@ The LED in the lower right corner of the waveform editor determines whether the 方波 - White noise wave - 白噪音 - - - User defined wave - 用戶自定義波形 + String volume: + - Smooth - 平滑 + String panning: + - Click here to smooth waveform. - 點擊這裏平滑波形。 + String detune: + - Normalize - 標準化 + String fuzziness: + - Click here to normalize waveform. - 點擊這裏標準化波形。 + String length: + - Use a sine-wave for current oscillator. - 爲當前振盪器使用正弦波。 + Impulse + - Use a triangle-wave for current oscillator. - 爲當前振盪器使用三角波。 + Enable/disable string + - Use a saw-wave for current oscillator. - 爲當前振盪器使用鋸齒波。 + White noise + - Use a square-wave for current oscillator. - 爲當前振盪器使用方波。 + User-defined wave + - Use white-noise for current oscillator. - 爲當前振盪器使用白噪音。 + Smooth waveform + 平滑波形 - Use a user-defined waveform for current oscillator. - 爲當前振盪器使用用戶自定波形。 + 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 @@ -10189,11 +4976,11 @@ The LED in the lower right corner of the waveform editor determines whether the Voice %1 ring modulate - + Voice %1 filtered - + Voice %1 test @@ -10219,44 +5006,28 @@ The LED in the lower right corner of the waveform editor determines whether the 輸出增益: - 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 - + Clip input + 輸入壓限 - Click here to increase wavegraph amplitude by 1dB - + Reset wavegraph + - Decrease graph amplitude by 1dB - + Smooth wavegraph + - Click here to decrease wavegraph amplitude by 1dB - + Increase wavegraph amplitude by 1 dB + - Clip input - 輸入壓限 + Decrease wavegraph amplitude by 1 dB + - Clip input signal to 0dB - 將輸入信號限制到 0dB + Clip input signal to 0 dB + @@ -10270,4 +5041,4 @@ The LED in the lower right corner of the waveform editor determines whether the 輸出增益 - \ No newline at end of file + diff --git a/data/themes/default/splash.png b/data/themes/default/splash.png index f95733e957786f53442b1acf5a82936055f69048..74f9fdef48c184532b0bdcbc6cb6a36b9d113771 100644 GIT binary patch literal 112040 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 TMdh(J2>9qcHGEQ~4vG3dU@Q{+ literal 113394 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 W4ut+*1*Vt)0000= ${source:Version}), ${shlibs:Depends}, ${misc:Depends}, stk -Recommends: calf-ladspa, tap-plugins, caps, - lmms-vst-server:i386 (>= ${source:Version}) +Recommends: tap-plugins, caps, + lmms-vst-server:i386 (>= ${source:Version}), + lmms-vst-server:amd64 (>= ${source:Version}) Suggests: fil-plugins, mcp-plugins, omins, freepats, fluid-soundfont-gm, ladspa-plugin Replaces: lmms-common (<< 1.0.0-1) @@ -63,7 +67,7 @@ Description: Linux Multimedia Studio - minimal installation Package: lmms Architecture: any -Depends: calf-ladspa, lmms-bin, ${misc:Depends} +Depends: lmms-bin, ${misc:Depends} Description: Linux Multimedia Studio LMMS aims to be a free alternative to popular (but commercial and closed- source) programs like FruityLoops, Cubase and Logic giving you the ability of @@ -96,23 +100,8 @@ Description: Linux Multimedia Studio - common files and some example projects. Package: lmms-vst-server -Architecture: i386 -# Order matters to avoid wine64 -Depends: wine32, wine, ${shlibs:Depends}, ${misc:Depends} +Architecture: amd64 i386 +Depends: wine64 [amd64] | wine64-development [amd64] | wine32 [i386] | wine32-development [i386], ${shlibs:Depends}, ${misc:Depends} Recommends: lmms-bin:any Description: Linux Multimedia Studio - VST server This package contains a helper application that loads VST plugins. - -Package: calf-ladspa -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Replaces: calf-plugins (<< 0.0.19) -Provides: ladspa-plugin -Description: Linux Multimedia Studio - Calf LADSPA plugins - Calf is a pack of audio plugins - effects and instruments. The goal is to - create a set of plugins using decent algorithms and parameter settings, - available in a form which is compatible with as many open source applications - as possible. - . - These plugins are distributed as part of Linux Multimedia Studio, but may be - used by other applications. diff --git a/debian/lmms-bin.install b/debian/lmms-bin.install index 5d19a3103ac..229fa02e315 100644 --- a/debian/lmms-bin.install +++ b/debian/lmms-bin.install @@ -1,7 +1,4 @@ usr/bin/lmms -usr/lib/*/lmms/ladspa/[a-b]* -usr/lib/*/lmms/ladspa/caps.so -usr/lib/*/lmms/ladspa/c[b-z]* -usr/lib/*/lmms/ladspa/[d-z]* +usr/lib/*/lmms/ladspa/* usr/lib/*/lmms/lib* usr/lib/*/lmms/RemoteZynAddSubFx diff --git a/debian/lmms-vst-server.install b/debian/lmms-vst-server.install index 1b520479d01..60efaed7b08 100644 --- a/debian/lmms-vst-server.install +++ b/debian/lmms-vst-server.install @@ -1 +1 @@ -usr/lib/*/lmms/RemoteVstPlugin* +usr/lib/*/lmms/{32/,}RemoteVstPlugin* diff --git a/debian/rules b/debian/rules index 5e8345845f9..aed094c2253 100755 --- a/debian/rules +++ b/debian/rules @@ -6,6 +6,7 @@ DH_CMAKE_BUILD_DIR=obj -${DEB_BUILD_GNU_TYPE} DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS) +DEB_HOST_ARCH_BIT ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_BITS) CMAKE_OPTS= -DCONTRIBUTORS=$(CURDIR)/doc/CONTRIBUTORS -DFORCE_VERSION=internal \ -DWANT_QT5=1 @@ -13,13 +14,18 @@ ifneq ($(DEB_HOST_ARCH_OS),linux) CMAKE_OPTS+= -DWANT_ALSA=0 endif -ifeq ($(DEB_HOST_ARCH),i386) +ifeq ($(DEB_HOST_ARCH),amd64) export PATH := $(PATH):/usr/lib/wine WINE_PATH := /usr/lib/$(DEB_HOST_MULTIARCH)/wine -CMAKE_OPTS+= -DWINE_CXX_FLAGS=-Wl,--enable-new-dtags,-rpath=$(WINE_PATH) +CMAKE_OPTS+= -DWANT_VST_32=OFF -DREMOTE_VST_PLUGIN_FILEPATH_32=../../i386-linux-gnu/lmms/32/RemoteVstPlugin32 \ + -DWINE_CXX_FLAGS=-Wl,--enable-new-dtags,-rpath=$(WINE_PATH) +else ifeq ($(DEB_HOST_ARCH),i386) +export PATH := $(PATH):/usr/lib/wine +WINE_PATH := /usr/lib/$(DEB_HOST_MULTIARCH)/wine +CMAKE_OPTS+= -DWANT_VST_64=OFF -DREMOTE_VST_PLUGIN_FILEPATH_64=../../x86_64-linux-gnu/lmms/RemoteVstPlugin64 \ + -DWINE_CXX_FLAGS=-Wl,--enable-new-dtags,-rpath=$(WINE_PATH) else -CMAKE_OPTS+= -DWANT_VST_NOWINE=1 \ - -DREMOTE_VST_PLUGIN_FILEPATH=../../i386-linux-gnu/lmms/RemoteVstPlugin +CMAKE_OPTS+= -DWANT_VST=OFF endif # Define NDEBUG. This helps with reproducible builds. diff --git a/doc/wiki b/doc/wiki index 42193f98f37..19179c6f6af 160000 --- a/doc/wiki +++ b/doc/wiki @@ -1 +1 @@ -Subproject commit 42193f98f37d6b69f47edbdfd50a20090193e70a +Subproject commit 19179c6f6afb422cf8376ed3b4a498a6396fc12f diff --git a/include/AutomatableModel.h b/include/AutomatableModel.h index 78f4882b423..3e0b6143da3 100644 --- a/include/AutomatableModel.h +++ b/include/AutomatableModel.h @@ -33,6 +33,7 @@ #include "MidiTime.h" #include "ValueBuffer.h" #include "MemoryManager.h" +#include "ModelVisitor.h" // simple way to map a property of a view to a model #define mapPropertyFromModelPtr(type,getfunc,setfunc,modelname) \ @@ -59,6 +60,11 @@ modelname.setValue( (float) val ); \ } +// use this to make subclasses visitable +#define MODEL_IS_VISITABLE \ + void accept(ModelVisitor& v) override { v.visit(*this); } \ + void accept(ConstModelVisitor& v) const override { v.visit(*this); } + class ControllerConnection; @@ -68,6 +74,7 @@ class LMMS_EXPORT AutomatableModel : public Model, public JournallingObject Q_OBJECT MM_OPERATORS public: + typedef QVector AutoModelVector; enum ScaleType @@ -80,6 +87,35 @@ class LMMS_EXPORT AutomatableModel : public Model, public JournallingObject virtual ~AutomatableModel(); + // Implement those by using the MODEL_IS_VISITABLE macro + virtual void accept(ModelVisitor& v) = 0; + virtual void accept(ConstModelVisitor& v) const = 0; + +public: + /** + @brief Return this class casted to Target + @test AutomatableModelTest.cpp + @param doThrow throw an assertion if the cast fails, instead of + returning a nullptr + @return the casted class if Target is the exact or a base class of + *this, nullptr otherwise + */ + template + Target* dynamicCast(bool doThrow = false) + { + DCastVisitor vis; accept(vis); + if (doThrow && !vis.result) { Q_ASSERT(false); } + return vis.result; + } + + //! const overload, see overloaded function + template + const Target* dynamicCast(bool doThrow = false) const + { + ConstDCastVisitor vis; accept(vis); + if (doThrow && !vis.result) { Q_ASSERT(false); } + return vis.result; + } bool isAutomated() const; bool isAutomatedOrControlled() const @@ -283,6 +319,22 @@ public slots: private: + // dynamicCast implementation + template + struct DCastVisitor : public ModelVisitor + { + Target* result = nullptr; + void visit(Target& tar) { result = &tar; } + }; + + // dynamicCast implementation + template + struct ConstDCastVisitor : public ConstModelVisitor + { + const Target* result = nullptr; + void visit(const Target& tar) { result = &tar; } + }; + static bool mustQuoteName(const QString &name); virtual void saveSettings( QDomDocument& doc, QDomElement& element ) @@ -382,6 +434,7 @@ template class LMMS_EXPORT TypedAutomatableModel : public Automatab class LMMS_EXPORT FloatModel : public TypedAutomatableModel { Q_OBJECT + MODEL_IS_VISITABLE public: FloatModel( float val = 0, float min = 0, float max = 0, float step = 0, Model * parent = NULL, @@ -399,6 +452,7 @@ class LMMS_EXPORT FloatModel : public TypedAutomatableModel class LMMS_EXPORT IntModel : public TypedAutomatableModel { Q_OBJECT + MODEL_IS_VISITABLE public: IntModel( int val = 0, int min = 0, int max = 0, Model* parent = NULL, @@ -414,6 +468,7 @@ class LMMS_EXPORT IntModel : public TypedAutomatableModel class LMMS_EXPORT BoolModel : public TypedAutomatableModel { Q_OBJECT + MODEL_IS_VISITABLE public: BoolModel( const bool val = false, Model* parent = NULL, diff --git a/include/BasicFilters.h b/include/BasicFilters.h index 684596c4d7e..c3a76d36e0d 100644 --- a/include/BasicFilters.h +++ b/include/BasicFilters.h @@ -39,7 +39,6 @@ #include #include "lmms_basics.h" -#include "templates.h" #include "lmms_constants.h" #include "interpolation.h" #include "MemoryManager.h" diff --git a/include/ComboBoxModel.h b/include/ComboBoxModel.h index ad3603759ad..82c01e69e94 100644 --- a/include/ComboBoxModel.h +++ b/include/ComboBoxModel.h @@ -36,6 +36,7 @@ class LMMS_EXPORT ComboBoxModel : public IntModel { Q_OBJECT + MODEL_IS_VISITABLE public: ComboBoxModel( Model* parent = NULL, const QString& displayName = QString(), diff --git a/include/Controller.h b/include/Controller.h index d4fb9473160..f1e71ad8f59 100644 --- a/include/Controller.h +++ b/include/Controller.h @@ -31,7 +31,6 @@ #include "Engine.h" #include "Model.h" #include "JournallingObject.h" -#include "templates.h" #include "ValueBuffer.h" class ControllerDialog; @@ -112,7 +111,7 @@ class LMMS_EXPORT Controller : public Model, public JournallingObject inline static float fittedValue( float _val ) { - return tLimit( _val, 0.0f, 1.0f ); + return qBound( 0.0f, _val, 1.0f ); } static long runningPeriods() diff --git a/include/DspEffectLibrary.h b/include/DspEffectLibrary.h index 76296da0b51..bf175df6d7c 100644 --- a/include/DspEffectLibrary.h +++ b/include/DspEffectLibrary.h @@ -27,7 +27,6 @@ #define DSP_EFFECT_LIBRARY_H #include "lmms_math.h" -#include "templates.h" #include "lmms_constants.h" #include "lmms_basics.h" diff --git a/include/Editor.h b/include/Editor.h index ca4f7415e0b..26b70ec8791 100644 --- a/include/Editor.h +++ b/include/Editor.h @@ -47,6 +47,7 @@ class Editor : public QMainWindow DropToolBar * addDropToolBar(Qt::ToolBarArea whereToAdd, QString const & windowTitle); DropToolBar * addDropToolBar(QWidget * parent, Qt::ToolBarArea whereToAdd, QString const & windowTitle); + virtual void closeEvent( QCloseEvent * _ce ); protected slots: virtual void play() {} virtual void record() {} diff --git a/include/Effect.h b/include/Effect.h index d6aa04d9710..4dc50e8a478 100644 --- a/include/Effect.h +++ b/include/Effect.h @@ -148,11 +148,6 @@ class LMMS_EXPORT Effect : public Plugin m_noRun = _state; } - inline const Descriptor::SubPluginFeatures::Key & key() const - { - return m_key; - } - EffectChain * effectChain() const { return m_parent; @@ -166,6 +161,13 @@ class LMMS_EXPORT Effect : public Plugin protected: + /** + Effects should call this at the end of audio processing + + If the setting "Keep effects running even without input" is disabled, + after "decay" ms of a signal below "gate", the effect is turned off + and won't be processed again until it receives new audio input + */ void checkGate( double _out_sum ); virtual PluginView * instantiateView( QWidget * ); @@ -201,8 +203,6 @@ class LMMS_EXPORT Effect : public Plugin sampleFrame * _dst_buf, sample_rate_t _dst_sr, const f_cnt_t _frames ); - Descriptor::SubPluginFeatures::Key m_key; - ch_cnt_t m_processors; bool m_okay; diff --git a/include/Engine.h b/include/Engine.h index fc25479969b..f4ff72fb2fb 100644 --- a/include/Engine.h +++ b/include/Engine.h @@ -31,6 +31,7 @@ #include "lmms_export.h" +#include "lmms_basics.h" class BBTrackContainer; class DummyTrackContainer; @@ -100,6 +101,9 @@ class LMMS_EXPORT LmmsCore : public QObject { return s_framesPerTick; } + + static float framesPerTick(sample_rate_t sample_rate); + static void updateFramesPerTick(); static inline LmmsCore * inst() @@ -111,6 +115,9 @@ class LMMS_EXPORT LmmsCore : public QObject return s_instanceOfMe; } + static void setDndPluginKey(void* newKey); + static void* pickDndPluginKey(); + signals: void initProgress(const QString &msg); @@ -137,6 +144,7 @@ class LMMS_EXPORT LmmsCore : public QObject static DummyTrackContainer * s_dummyTC; static Ladspa2LMMS * s_ladspaManager; + static void* s_dndPluginKey; // even though most methods are static, an instance is needed for Qt slots/signals static LmmsCore * s_instanceOfMe; diff --git a/include/FadeButton.h b/include/FadeButton.h index 95753ecea90..8f56a77b22e 100644 --- a/include/FadeButton.h +++ b/include/FadeButton.h @@ -35,8 +35,10 @@ class FadeButton : public QAbstractButton { Q_OBJECT public: - FadeButton( const QColor & _normal_color, const QColor & - _activated_color, QWidget * _parent ); + FadeButton( const QColor & _normal_color, + const QColor & _activated_color, + const QColor & _hold_color, + QWidget * _parent ); virtual ~FadeButton(); void setActiveColor( const QColor & activated_color ); @@ -44,6 +46,7 @@ class FadeButton : public QAbstractButton public slots: void activate(); + void noteEnd(); protected: @@ -53,13 +56,20 @@ public slots: private: QTime m_stateTimer; + QTime m_releaseTimer; + + // the default color of the widget QColor m_normalColor; + // the color on note play QColor m_activatedColor; + // the color after the "play" fade is done but a note is still playing + QColor m_holdColor; + int activeNotes; void signalUpdate(); + QColor fadeToColor(QColor, QColor, QTime, float); } ; #endif - diff --git a/include/FileBrowser.h b/include/FileBrowser.h index 7e0482ce36f..4b92dd5496d 100644 --- a/include/FileBrowser.h +++ b/include/FileBrowser.h @@ -55,7 +55,7 @@ class FileBrowser : public SideBarWidget private slots: void reloadTree( void ); - void expandItems( QTreeWidgetItem * item=NULL ); + void expandItems( QTreeWidgetItem * item=NULL, QList expandedDirs = QList() ); // call with item=NULL to filter the entire tree bool filterItems( const QString & filter, QTreeWidgetItem * item=NULL ); void giveFocusToFilter(); @@ -87,6 +87,10 @@ class FileBrowserTreeWidget : public QTreeWidget FileBrowserTreeWidget( QWidget * parent ); virtual ~FileBrowserTreeWidget() = default; + //! This method returns a QList with paths (QString's) of all directories + //! that are expanded in the tree. + QList expandedDirs( QTreeWidgetItem * item = nullptr ) const; + protected: virtual void contextMenuEvent( QContextMenuEvent * e ); diff --git a/include/templates.h b/include/FxLineLcdSpinBox.h similarity index 54% rename from include/templates.h rename to include/FxLineLcdSpinBox.h index 50a14a6b8a6..fa001b2bbe8 100644 --- a/include/templates.h +++ b/include/FxLineLcdSpinBox.h @@ -1,7 +1,7 @@ /* - * templates.h - miscellanous templates and algorithms + * FxLineLcdSpinBox.h - a specialization of LcdSpnBox for setting FX channels * - * Copyright (c) 2004-2008 Tobias Doerffel + * Copyright (c) 2004-2014 Tobias Doerffel * * This file is part of LMMS - https://lmms.io * @@ -22,18 +22,32 @@ * */ +#ifndef FX_LINE_LCD_SPIN_BOX_H +#define FX_LINE_LCD_SPIN_BOX_H -#ifndef TEMPLATES_H -#define TEMPLATES_H +#include "LcdSpinBox.h" -#include +class TrackView; -template -inline T tLimit( const T x, const T x1, const T x2 ) +class FxLineLcdSpinBox : public LcdSpinBox { - return qBound( x1, x, x2 ); -} + Q_OBJECT +public: + FxLineLcdSpinBox(int numDigits, QWidget * parent, const QString& name, TrackView * tv = NULL) : + LcdSpinBox(numDigits, parent, name), m_tv(tv) + {} + virtual ~FxLineLcdSpinBox() {} + void setTrackView(TrackView * tv); + +protected: + virtual void mouseDoubleClickEvent(QMouseEvent* event); + virtual void contextMenuEvent(QContextMenuEvent* event); + +private: + TrackView * m_tv; + +}; #endif diff --git a/include/Graph.h b/include/Graph.h index 4827bda4026..1bee05c4118 100644 --- a/include/Graph.h +++ b/include/Graph.h @@ -44,13 +44,18 @@ class LMMS_EXPORT Graph : public QWidget, public ModelView public: enum graphStyle { - NearestStyle, - LinearStyle, - LinearNonCyclicStyle, - BarStyle, + NearestStyle, //!< draw as stairs + LinearStyle, //!< connect each 2 samples with a line, with wrapping + LinearNonCyclicStyle, //!< LinearStyle without wrapping + BarStyle, //!< draw thick bars NumGraphStyles }; + /** + * @brief Constructor + * @param _width Pixel width of widget + * @param _height Pixel height of widget + */ Graph( QWidget * _parent, graphStyle _style = Graph::LinearStyle, int _width = 132, int _height = 104 @@ -111,10 +116,24 @@ protected slots: } ; +/** + @brief 2 dimensional function plot + + Function plot graph with discrete x scale and continous y scale + This makes it possible to display "#x" samples +*/ class LMMS_EXPORT graphModel : public Model { Q_OBJECT public: + /** + * @brief Constructor + * @param _min Minimum y value to display + * @param _max Maximum y value to display + * @param _size Number of samples (e.g. x value) + * @param _step Step size on y axis where values snap to, or 0.0f + * for "no snapping" + */ graphModel( float _min, float _max, int _size, @@ -146,14 +165,21 @@ class LMMS_EXPORT graphModel : public Model return( m_samples.data() ); } - void convolve(const float *convolution, const int convolutionLength, const int centerOffset); + //! Make cyclic convolution + //! @param convolution Samples to convolve with + //! @param convolutionLength Number of samples to take for each sum + //! @param centerOffset Offset for resulting values + void convolve(const float *convolution, + const int convolutionLength, const int centerOffset); public slots: + //! Set range of y values void setRange( float _min, float _max ); void setLength( int _size ); - + //! Update one sample void setSampleAt( int x, float val ); + //! Update samples array void setSamples( const float * _value ); void setWaveToSine(); diff --git a/include/Instrument.h b/include/Instrument.h index a373ae4ac47..2179a1f721f 100644 --- a/include/Instrument.h +++ b/include/Instrument.h @@ -55,14 +55,17 @@ class LMMS_EXPORT Instrument : public Plugin Q_DECLARE_FLAGS(Flags, Flag); - Instrument( InstrumentTrack * _instrument_track, - const Descriptor * _descriptor ); + Instrument(InstrumentTrack * _instrument_track, + const Descriptor * _descriptor, + const Descriptor::SubPluginFeatures::Key * key = nullptr); virtual ~Instrument() = default; // -------------------------------------------------------------------- // functions that can/should be re-implemented: // -------------------------------------------------------------------- + virtual bool hasNoteInput() const { return true; } + // if the plugin doesn't play each note, it can create an instrument- // play-handle and re-implement this method, so that it mixes its // output buffer only once per mixer-period @@ -113,10 +116,12 @@ class LMMS_EXPORT Instrument : public Plugin // provided functions: // -------------------------------------------------------------------- - // instantiate instrument-plugin with given name or return NULL - // on failure - static Instrument * instantiate( const QString & _plugin_name, - InstrumentTrack * _instrument_track ); + //! instantiate instrument-plugin with given name or return NULL + //! on failure + static Instrument * instantiate(const QString & _plugin_name, + InstrumentTrack * _instrument_track, + const Plugin::Descriptor::SubPluginFeatures::Key* key, + bool keyFromDnd = false); virtual bool isFromTrack( const Track * _track ) const; diff --git a/include/InstrumentTrack.h b/include/InstrumentTrack.h index fb12e825a41..72e0d04cc44 100644 --- a/include/InstrumentTrack.h +++ b/include/InstrumentTrack.h @@ -36,6 +36,7 @@ #include "Piano.h" #include "PianoView.h" #include "Pitch.h" +#include "Plugin.h" #include "Track.h" @@ -52,6 +53,7 @@ class InstrumentTrackWindow; class InstrumentMidiIOView; class InstrumentMiscView; class Knob; +class FxLineLcdSpinBox; class LcdSpinBox; class LeftRightNav; class midiPortMenu; @@ -146,7 +148,9 @@ class LMMS_EXPORT InstrumentTrack : public Track, public MidiEventProcessor // load instrument whose name matches given one - Instrument * loadInstrument( const QString & _instrument_name ); + Instrument * loadInstrument(const QString & _instrument_name, + const Plugin::Descriptor::SubPluginFeatures::Key* key = nullptr, + bool keyFromDnd = false); AudioPort * audioPort() { @@ -217,6 +221,7 @@ class LMMS_EXPORT InstrumentTrack : public Track, public MidiEventProcessor void midiNoteOff( const Note& ); void nameChanged(); void newNote(); + void endNote(); protected: @@ -427,6 +432,9 @@ protected slots: private: virtual void modelChanged(); void viewInstrumentInDirection(int d); + //! adjust size of any child widget of the main tab + //! required to keep the old look when using a variable sized tab widget + void adjustTabSize(QWidget *w); InstrumentTrack * m_track; InstrumentTrackView * m_itv; @@ -440,7 +448,7 @@ protected slots: QLabel * m_pitchLabel; LcdSpinBox* m_pitchRangeSpinBox; QLabel * m_pitchRangeLabel; - LcdSpinBox * m_effectChannelNumber; + FxLineLcdSpinBox * m_effectChannelNumber; diff --git a/include/Knob.h b/include/Knob.h index 319b38184f9..b8d460f4593 100644 --- a/include/Knob.h +++ b/include/Knob.h @@ -30,7 +30,6 @@ #include #include "AutomatableModelView.h" -#include "templates.h" class QPixmap; @@ -74,6 +73,7 @@ class LMMS_EXPORT Knob : public QWidget, public FloatModelView public: Knob( knobTypes _knob_num, QWidget * _parent = NULL, const QString & _name = QString() ); Knob( QWidget * _parent = NULL, const QString & _name = QString() ); //!< default ctor + Knob( const Knob& other ) = delete; virtual ~Knob(); // TODO: remove diff --git a/include/Ladspa2LMMS.h b/include/Ladspa2LMMS.h index 14899487cf9..28fa25b894c 100644 --- a/include/Ladspa2LMMS.h +++ b/include/Ladspa2LMMS.h @@ -30,6 +30,8 @@ #include "LadspaManager.h" +//! Class responsible for sorting found plugins (by LadspaManager) +//! into categories class LMMS_EXPORT Ladspa2LMMS : public LadspaManager { public: diff --git a/include/Mixer.h b/include/Mixer.h index e91cd15c25b..69ea0d12d86 100644 --- a/include/Mixer.h +++ b/include/Mixer.h @@ -171,7 +171,10 @@ class LMMS_EXPORT Mixer : public QObject return m_audioDevStartFailed; } + //! Set new audio device. Old device will be deleted, + //! unless it's stored using storeAudioDevice void setAudioDevice( AudioDevice * _dev , bool startNow ); + //! See overloaded function void setAudioDevice( AudioDevice * _dev, const struct qualitySettings & _qs, bool _needs_fifo, @@ -312,6 +315,7 @@ class LMMS_EXPORT Mixer : public QObject inline bool isMetronomeActive() const { return m_metronomeActive; } inline void setMetronomeActive(bool value = true) { m_metronomeActive = value; } + //! Block until a change in model can be done (i.e. wait for audio thread) void requestChangeInModel(); void doneChangeInModel(); @@ -363,6 +367,8 @@ class LMMS_EXPORT Mixer : public QObject void clearInternal(); + //! Called by the audio thread to give control to other threads, + //! such that they can do changes in the model (like e.g. removing effects) void runChangesInModel(); bool m_renderOnly; @@ -402,6 +408,7 @@ class LMMS_EXPORT Mixer : public QObject bool m_isProcessing; // audio device stuff + void doSetAudioDevice( AudioDevice *_dev ); AudioDevice * m_audioDev; AudioDevice * m_oldAudioDev; QString m_audioDevName; diff --git a/include/Model.h b/include/Model.h index bc9f5c04646..b40c21029de 100644 --- a/include/Model.h +++ b/include/Model.h @@ -41,10 +41,6 @@ class LMMS_EXPORT Model : public QObject m_displayName( _display_name ), m_defaultConstructed( _default_constructed ) { -#if QT_VERSION < 0x050000 - connect( this, SIGNAL( dataChanged() ), this, - SLOT( thisDataChanged() ), Qt::DirectConnection ); -#endif } virtual ~Model() @@ -89,19 +85,6 @@ class LMMS_EXPORT Model : public QObject // emitted if properties of the model (e.g. ranges) have changed void propertiesChanged(); -#if QT_VERSION < 0x050000 - // emitted along with dataChanged(), but with this model as an argument - // workaround for when QObject::sender() and Qt5 are unavailable - void dataChanged( Model * ); - -private slots: - void thisDataChanged() - { - emit dataChanged( this ); - } - -signals: -#endif } ; diff --git a/include/ModelVisitor.h b/include/ModelVisitor.h new file mode 100644 index 00000000000..f9d156e30f4 --- /dev/null +++ b/include/ModelVisitor.h @@ -0,0 +1,64 @@ +/* + * ModelVisitor.h - visitors for automatable models + * + * Copyright (c) 2019-2019 Johannes Lorenz + * + * This file is part of LMMS - https://lmms.io + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program (see COPYING); if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + */ + +#ifndef MODELVISITOR_H +#define MODELVISITOR_H + +class AutomatableModel; +class BoolModel; +class IntModel; +class FloatModel; +class ComboBoxModel; +class TempoSyncKnobModel; + +class ModelVisitor +{ + template + void up(ModelType& m) { visit(static_cast(m)); } +public: + virtual void visit(AutomatableModel& ) {} + virtual void visit(BoolModel& m); + virtual void visit(IntModel& m); + virtual void visit(FloatModel& m); + virtual void visit(ComboBoxModel& m); + virtual void visit(TempoSyncKnobModel& m); + virtual ~ModelVisitor(); +}; + +class ConstModelVisitor +{ + template + void up(const ModelType& m) { + visit(static_cast(m)); } +public: + virtual void visit(const AutomatableModel& ) {} + virtual void visit(const BoolModel& m); + virtual void visit(const IntModel& m); + virtual void visit(const FloatModel& m); + virtual void visit(const ComboBoxModel& m); + virtual void visit(const TempoSyncKnobModel& m); + virtual ~ConstModelVisitor(); +}; + +#endif // MODELVISITOR_H diff --git a/include/NotePlayHandle.h b/include/NotePlayHandle.h index c94a69c2ce1..ae55c9ebb6a 100644 --- a/include/NotePlayHandle.h +++ b/include/NotePlayHandle.h @@ -303,6 +303,7 @@ class LMMS_EXPORT NotePlayHandle : public PlayHandle, public Note NotePlayHandleList m_subNotes; // used for chords and arpeggios volatile bool m_released; // indicates whether note is released bool m_releaseStarted; + bool m_hasMidiNote; bool m_hasParent; // indicates whether note has parent NotePlayHandle * m_parent; // parent note bool m_hadChildren; diff --git a/include/PianoRoll.h b/include/PianoRoll.h index b4115b054d6..4451a07c5c4 100644 --- a/include/PianoRoll.h +++ b/include/PianoRoll.h @@ -296,6 +296,8 @@ protected slots: void testPlayNote( Note * n ); void testPlayKey( int _key, int _vol, int _pan ); void pauseTestNotes(bool pause = true ); + void playChordNotes(int key, int velocity=-1); + void pauseChordNotes(int key); QList getAllOctavesForKey( int keyToMirror ) const; diff --git a/include/Plugin.h b/include/Plugin.h index a2cc7d696ab..af42b0f1028 100644 --- a/include/Plugin.h +++ b/include/Plugin.h @@ -40,7 +40,27 @@ class PixmapLoader; class PluginView; class AutomatableModel; +/** + Abstract representation of a plugin + Such a plugin can be an Instrument, Effect, Tool plugin etc. + + Plugins have descriptors, containing meta info, which is used especially + by PluginFactory and friends. + + There are also Plugin keys (class Key, confusingly under + SubPluginFeatures), which contain pointers to the plugin descriptor. + + Some plugins have sub plugins, e.g. there is one CALF Plugin and for + each CALF effect, there is a CALF sub plugin. For those plugins, there + are keys for each sub plugin. These keys also link to the superior + Plugin::Descriptor. Additionally, they contain attributes that help the + superior Plugin saving them and recognizing them when loading. + + In case of sub plugins, the Descriptor has SubPluginFeatures. Those + are a bit like values to the sub plugins' keys (in terms of a key-value- + map). +*/ class LMMS_EXPORT Plugin : public Model, public JournallingObject { MM_OPERATORS @@ -59,9 +79,9 @@ class LMMS_EXPORT Plugin : public Model, public JournallingObject Undefined = 255 } ; - // descriptor holds information about a plugin - every external plugin - // has to instantiate such a descriptor in an extern "C"-section so that - // the plugin-loader is able to access information about the plugin + //! Descriptor holds information about a plugin - every external plugin + //! has to instantiate such a Descriptor in an extern "C"-section so that + //! the plugin-loader is able to access information about the plugin struct Descriptor { const char * name; @@ -71,23 +91,49 @@ class LMMS_EXPORT Plugin : public Model, public JournallingObject int version; PluginTypes type; const PixmapLoader * logo; - const char * supportedFileTypes; + const char * supportedFileTypes; //!< csv list of extensions inline bool supportsFileType( const QString& extension ) const { return QString( supportedFileTypes ).split( QChar( ',' ) ).contains( extension ); } + /** + Access to non-key-data of a sub plugin + + If you consider sub plugin keys as keys in a + key-value-map, this is the lookup for the corresponding + values. In order to have flexibility between different + plugin APIs, this is rather an array of fixed data, + but a bunch of virtual functions taking the key and + returning some values (or modifying objects of other + classes). + */ class LMMS_EXPORT SubPluginFeatures { public: + /** + Key reference a Plugin::Descriptor, and, + if the plugin has sub plugins, also reference + its sub plugin (using the attributes). + When keys are saved, those attributes are + written to XML in order to find the right sub + plugin when realoading. + + @note Any data that is not required to reference + the right Plugin or sub plugin should + not be here (but rather in + SubPluginFeatures, which are like values + in a key-value map). + */ struct Key { typedef QMap AttributeMap; inline Key( const Plugin::Descriptor * desc = NULL, - const QString & name = QString(), - const AttributeMap & am = AttributeMap() ) + const QString & name = QString(), + const AttributeMap & am = AttributeMap() + ) : desc( desc ), name( name ), @@ -101,12 +147,28 @@ class LMMS_EXPORT Plugin : public Model, public JournallingObject inline bool isValid() const { - return desc != NULL && name.isNull() == false; + return desc != nullptr; } + //! Key to subplugin: reference to parent descriptor + //! Key to plugin: reference to its descriptor const Plugin::Descriptor* desc; + //! Descriptive name like "Calf Phaser". + //! Not required for key lookup and not saved + //! only used sometimes to temporary store descriptive names + //! @todo This is a bug, there should be a function + //! in SubPluginFeatures (to get the name) instead QString name; + //! Attributes that make up the key and identify + //! the sub plugin. They are being loaded and saved AttributeMap attributes; + + // helper functions to retrieve data that is + // not part of the key, but mapped via desc->subPluginFeatures + QString additionalFileExtensions() const; + QString displayName() const; + QString description() const; + const PixmapLoader* logo() const; } ; typedef QList KeyList; @@ -125,11 +187,40 @@ class LMMS_EXPORT Plugin : public Model, public JournallingObject { } + //! While PluginFactory only collects the plugins, + //! this function is used by widgets like EffectSelectDialog + //! to find all possible sub plugins virtual void listSubPluginKeys( const Plugin::Descriptor *, KeyList & ) const { } + private: + // You can add values mapped by "Key" below + // The defaults are sane, i.e. redirect to sub plugin's + // supererior descriptor + + virtual QString additionalFileExtensions(const Key&) const + { + return QString(); + } + + virtual QString displayName(const Key& k) const + { + return k.isValid() ? k.name : QString(); + } + + virtual QString description(const Key& k) const + { + return k.isValid() ? k.desc->description : QString(); + } + + virtual const PixmapLoader* logo(const Key& k) const + { + Q_ASSERT(k.desc); + return k.desc->logo; + } + protected: const Plugin::PluginTypes m_type; } ; @@ -140,48 +231,66 @@ class LMMS_EXPORT Plugin : public Model, public JournallingObject // typedef a list so we can easily work with list of plugin descriptors typedef QList DescriptorList; - // contructor of a plugin - Plugin( const Descriptor * descriptor, Model * parent ); + //! Constructor of a plugin + //! @param key Sub plugins must pass a key here, optional otherwise. + //! See the key() function + Plugin(const Descriptor * descriptor, Model * parent, + const Descriptor::SubPluginFeatures::Key *key = nullptr); virtual ~Plugin(); - // returns display-name out of descriptor - virtual QString displayName() const - { - return Model::displayName().isEmpty() - ? m_descriptor->displayName - : Model::displayName(); - } + //! Return display-name out of sub plugin or descriptor + virtual QString displayName() const; + + //! Return logo out of sub plugin or descriptor + const PixmapLoader *logo() const; - // return plugin-type + //! Return plugin type inline PluginTypes type( void ) const { return m_descriptor->type; } - // return plugin-descriptor for further information + //! Return plugin Descriptor inline const Descriptor * descriptor() const { return m_descriptor; } - // can be called if a file matching supportedFileTypes should be - // loaded/processed with the help of this plugin + //! Return the key referencing this plugin. If the Plugin has no + //! sub plugin features, the key is pretty useless. If it has, + //! this key will also contain the sub plugin attributes, and will be + //! a key to those SubPluginFeatures. + inline const Descriptor::SubPluginFeatures::Key & key() const + { + return m_key; + } + + //! Can be called if a file matching supportedFileTypes should be + //! loaded/processed with the help of this plugin virtual void loadFile( const QString & file ); - // Called if external source needs to change something but we cannot - // reference the class header. Should return null if not key not found. + //! Called if external source needs to change something but we cannot + //! reference the class header. Should return null if not key not found. virtual AutomatableModel* childModel( const QString & modelName ); - // returns an instance of a plugin whose name matches to given one - // if specified plugin couldn't be loaded, it creates a dummy-plugin - static Plugin * instantiate( const QString& pluginName, Model * parent, void * data ); + //! Overload if the argument passed to the plugin is a subPluginKey + //! If you can not pass the key and are aware that it's stored in + //! Engine::pickDndPluginKey(), use this function, too + static Plugin * instantiateWithKey(const QString& pluginName, Model * parent, + const Descriptor::SubPluginFeatures::Key *key, + bool keyFromDnd = false); - // create a view for the model - PluginView * createView( QWidget * parent ); + //! Return an instance of a plugin whose name matches to given one + //! if specified plugin couldn't be loaded, it creates a dummy-plugin + //! @param data Anything the plugin expects. If this is a pointer to a sub plugin key, + //! use instantiateWithKey instead + static Plugin * instantiate(const QString& pluginName, Model * parent, void *data); + //! Create a view for the model + PluginView * createView( QWidget * parent ); protected: - // create a view for the model + //! Create a view for the model virtual PluginView* instantiateView( QWidget * ) = 0; void collectErrorForUI( QString errMsg ); @@ -189,6 +298,8 @@ class LMMS_EXPORT Plugin : public Model, public JournallingObject private: const Descriptor * m_descriptor; + Descriptor::SubPluginFeatures::Key m_key; + // pointer to instantiation-function in plugin typedef Plugin * ( * InstantiationHook )( Model * , void * ); diff --git a/include/PluginBrowser.h b/include/PluginBrowser.h index 75c7cd2919b..3cc54c6e47a 100644 --- a/include/PluginBrowser.h +++ b/include/PluginBrowser.h @@ -31,6 +31,10 @@ #include "SideBarWidget.h" #include "Plugin.h" +class QLineEdit; +class QTreeWidget; +class QTreeWidgetItem; + class PluginBrowser : public SideBarWidget { @@ -39,18 +43,18 @@ class PluginBrowser : public SideBarWidget PluginBrowser( QWidget * _parent ); virtual ~PluginBrowser() = default; -private: - QWidget * m_view; -}; - - +private slots: + void onFilterChanged( const QString & filter ); +private: + void addPlugins(); + void updateRootVisibility( int index ); + void updateRootVisibilities(); -class PluginDescList : public QWidget -{ - Q_OBJECT -public: - PluginDescList(QWidget* parent); + QWidget * m_view; + QTreeWidget * m_descTree; + QTreeWidgetItem * m_lmmsRoot; + QTreeWidgetItem * m_lv2Root; }; @@ -60,7 +64,9 @@ class PluginDescWidget : public QWidget { Q_OBJECT public: - PluginDescWidget( const Plugin::Descriptor & _pd, QWidget * _parent ); + typedef Plugin::Descriptor::SubPluginFeatures::Key PluginKey; + PluginDescWidget( const PluginKey & _pk, QWidget * _parent ); + QString name() const; protected: @@ -72,7 +78,7 @@ class PluginDescWidget : public QWidget private: constexpr static int DEFAULT_HEIGHT{24}; - const Plugin::Descriptor & m_pluginDescriptor; + PluginKey m_pluginKey; QPixmap m_logo; bool m_mouseOver; diff --git a/include/PluginFactory.h b/include/PluginFactory.h index 56d32c4e421..17b178108f0 100644 --- a/include/PluginFactory.h +++ b/include/PluginFactory.h @@ -26,10 +26,13 @@ #define PLUGINFACTORY_H #include +#include #include #include #include +#include +#include #include "lmms_export.h" #include "Plugin.h" @@ -41,12 +44,10 @@ class LMMS_EXPORT PluginFactory public: struct PluginInfo { - PluginInfo() : library(nullptr), descriptor(nullptr) {} - const QString name() const; QFileInfo file; - std::shared_ptr library; - Plugin::Descriptor* descriptor; + std::shared_ptr library = nullptr; + Plugin::Descriptor* descriptor = nullptr; bool isNull() const {return ! library;} }; @@ -56,6 +57,8 @@ class LMMS_EXPORT PluginFactory PluginFactory(); ~PluginFactory(); + static void setupSearchPaths(); + /// Returns the singleton instance of PluginFactory. You won't need to call /// this directly, use pluginFactory instead. static PluginFactory* instance(); @@ -64,10 +67,17 @@ class LMMS_EXPORT PluginFactory const Plugin::DescriptorList descriptors() const; const Plugin::DescriptorList descriptors(Plugin::PluginTypes type) const; + struct PluginInfoAndKey + { + PluginInfo info; + Plugin::Descriptor::SubPluginFeatures::Key key; + bool isNull() const { return info.isNull(); } + }; + /// Returns a list of all found plugins' PluginFactory::PluginInfo objects. const PluginInfoList& pluginInfos() const; /// Returns a plugin that support the given file extension - const PluginInfo pluginSupportingExtension(const QString& ext); + const PluginInfoAndKey pluginSupportingExtension(const QString& ext); /// Returns the PluginInfo object of the plugin with the given name. /// If the plugin is not found, an empty PluginInfo is returned (use @@ -84,7 +94,9 @@ public slots: private: DescriptorMap m_descriptors; PluginInfoList m_pluginInfos; - QMap m_pluginByExt; + + QMap m_pluginByExt; + QVector m_garbage; //!< cleaned up at destruction QHash m_errors; diff --git a/include/PluginIssue.h b/include/PluginIssue.h new file mode 100644 index 00000000000..c009458056e --- /dev/null +++ b/include/PluginIssue.h @@ -0,0 +1,66 @@ +/* + * PluginIssue.h - PluginIssue class + * + * Copyright (c) 2019 Johannes Lorenz + * + * This file is part of LMMS - https://lmms.io + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program (see COPYING); if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + */ + +#ifndef PLUGINISSUE_H +#define PLUGINISSUE_H + +#include +#include + +//! Types of issues that can cause LMMS to not load a plugin +//! LMMS Plugins should use this to indicate errors +enum PluginIssueType +{ + unknownPortFlow, + unknownPortType, + tooManyInputChannels, + tooManyOutputChannels, + noOutputChannel, + portHasNoDef, + portHasNoMin, + portHasNoMax, + featureNotSupported, //!< plugin requires functionality LMMS can't offer + badPortType, //!< port type not supported + noIssue +}; + +//! Issue type bundled with informational string +class PluginIssue +{ + static const char* msgFor(const PluginIssueType& it); + + PluginIssueType m_issueType; + std::string m_info; + +public: + PluginIssue(PluginIssueType it, std::string msg = std::string()) + : m_issueType(it), m_info(msg) + { + } + friend QDebug operator<<(QDebug stream, const PluginIssue& iss); +}; + +QDebug operator<<(QDebug stream, const PluginIssue& iss); + +#endif // PLUGINISSUE_H diff --git a/include/ProjectJournal.h b/include/ProjectJournal.h index e0e738b707c..cb487617b52 100644 --- a/include/ProjectJournal.h +++ b/include/ProjectJournal.h @@ -34,6 +34,7 @@ class JournallingObject; +//! @warning many parts of this class may be rewritten soon class ProjectJournal { public: @@ -76,7 +77,9 @@ class ProjectJournal reallocID( _id, NULL ); } + //! hack, not used when saving a file static jo_id_t idToSave( jo_id_t id ); + //! hack, not used when loading a savefile static jo_id_t idFromSave( jo_id_t id ); void clearJournal(); diff --git a/include/SampleBuffer.h b/include/SampleBuffer.h index 26dda70a9fe..26e85602508 100644 --- a/include/SampleBuffer.h +++ b/include/SampleBuffer.h @@ -265,6 +265,8 @@ public slots: void sampleRateChanged(); private: + static sample_rate_t mixerSampleRate(); + void update( bool _keep_settings = false ); void convertIntToFloat ( int_sample_t * & _ibuf, f_cnt_t _frames, int _channels); diff --git a/include/SampleTrack.h b/include/SampleTrack.h index decf52f3f15..9469669a17b 100644 --- a/include/SampleTrack.h +++ b/include/SampleTrack.h @@ -26,13 +26,19 @@ #define SAMPLE_TRACK_H #include +#include #include "AudioPort.h" +#include "FxMixer.h" +#include "FxLineLcdSpinBox.h" #include "Track.h" class EffectRackView; class Knob; class SampleBuffer; +class SampleTrackWindow; +class TrackLabelButton; +class QLineEdit; class SampleTCO : public TrackContentObject @@ -133,13 +139,18 @@ class SampleTrack : public Track virtual bool play( const MidiTime & _start, const fpp_t _frames, const f_cnt_t _frame_base, int _tco_num = -1 ); virtual TrackView * createView( TrackContainerView* tcv ); - virtual TrackContentObject * createTCO( const MidiTime & _pos ); + virtual TrackContentObject * createTCO(const MidiTime & pos); virtual void saveTrackSpecificSettings( QDomDocument & _doc, QDomElement & _parent ); virtual void loadTrackSpecificSettings( const QDomElement & _this ); + inline IntModel * effectChannelModel() + { + return &m_effectChannelModel; + } + inline AudioPort * audioPort() { return &m_audioPort; @@ -153,15 +164,18 @@ class SampleTrack : public Track public slots: void updateTcos(); void setPlayingTcos( bool isPlaying ); + void updateEffectChannel(); private: FloatModel m_volumeModel; FloatModel m_panningModel; + IntModel m_effectChannelModel; AudioPort m_audioPort; friend class SampleTrackView; + friend class SampleTrackWindow; } ; @@ -174,6 +188,24 @@ class SampleTrackView : public TrackView SampleTrackView( SampleTrack* Track, TrackContainerView* tcv ); virtual ~SampleTrackView(); + SampleTrackWindow * getSampleTrackWindow() + { + return m_window; + } + + SampleTrack * model() + { + return castModel(); + } + + const SampleTrack * model() const + { + return castModel(); + } + + + virtual QMenu * createFxMenu( QString title, QString newFxLabel ); + public slots: void showEffects(); @@ -186,13 +218,80 @@ public slots: return "SampleTrackView"; } + void dragEnterEvent(QDragEnterEvent *dee); + void dropEvent(QDropEvent *de); + +private slots: + void assignFxLine( int channelIndex ); + void createFxLine(); + private: - EffectRackView * m_effectRack; - QWidget * m_effWindow; + SampleTrackWindow * m_window; Knob * m_volumeKnob; Knob * m_panningKnob; + TrackLabelButton * m_tlb; + + + friend class SampleTrackWindow; + +} ; + + + +class SampleTrackWindow : public QWidget, public ModelView, public SerializingObjectHook +{ + Q_OBJECT +public: + SampleTrackWindow(SampleTrackView * tv); + virtual ~SampleTrackWindow(); + + SampleTrack * model() + { + return castModel(); + } + + const SampleTrack * model() const + { + return castModel(); + } + + void setSampleTrackView(SampleTrackView * tv); + + SampleTrackView *sampleTrackView() + { + return m_stv; + } + + +public slots: + void textChanged(const QString & new_name); + void toggleVisibility(bool on); + void updateName(); + + +protected: + // capture close-events for toggling sample-track-button + virtual void closeEvent(QCloseEvent * ce); + + virtual void saveSettings(QDomDocument & doc, QDomElement & element); + virtual void loadSettings(const QDomElement & element); + +private: + virtual void modelChanged(); + + SampleTrack * m_track; + SampleTrackView * m_stv; + + // widgets on the top of an sample-track-window + QLineEdit * m_nameLineEdit; + Knob * m_volumeKnob; + Knob * m_panningKnob; + FxLineLcdSpinBox * m_effectChannelNumber; + + EffectRackView * m_effectRack; + } ; diff --git a/include/SetupDialog.h b/include/SetupDialog.h index d9665bbbc94..272ba7b093f 100644 --- a/include/SetupDialog.h +++ b/include/SetupDialog.h @@ -122,6 +122,9 @@ private slots: void toggleDisplayWaveform( bool en ); void toggleDisableAutoquit( bool en ); + void vstEmbedMethodChanged(); + void toggleVSTAlwaysOnTop( bool en ); + void setLanguage( int lang ); @@ -203,6 +206,8 @@ private slots: QComboBox* m_vstEmbedComboBox; QString m_vstEmbedMethod; + LedCheckBox * m_vstAlwaysOnTopCheckBox; + bool m_vstAlwaysOnTop; } ; diff --git a/include/Song.h b/include/Song.h index d88a59e2b40..32ead7181f5 100644 --- a/include/Song.h +++ b/include/Song.h @@ -65,6 +65,17 @@ class LMMS_EXPORT Song : public TrackContainer Mode_Count } ; + struct SaveOptions { + /** + * Should we discard MIDI ControllerConnections from project files? + */ + BoolModel discardMIDIConnections{false}; + + void setDefaultOptions() { + discardMIDIConnections.setValue(false); + } + }; + void clearErrors(); void collectError( const QString error ); bool hasErrors(); @@ -322,6 +333,11 @@ class LMMS_EXPORT Song : public TrackContainer void exportProjectMidi(QString const & exportFileName) const; inline void setLoadOnLauch(bool value) { m_loadOnLaunch = value; } + SaveOptions &getSaveOptions() { + return m_saveOptions; + } + + bool isSavingProject() const; public slots: void playSong(); @@ -419,9 +435,12 @@ private slots: volatile bool m_playing; volatile bool m_paused; + bool m_savingProject; bool m_loadingProject; bool m_isCancelled; + SaveOptions m_saveOptions; + QStringList m_errors; PlayModes m_playMode; diff --git a/include/TabWidget.h b/include/TabWidget.h index dacd2648b9c..11e4da40a02 100644 --- a/include/TabWidget.h +++ b/include/TabWidget.h @@ -36,7 +36,10 @@ class TabWidget : public QWidget { Q_OBJECT public: - TabWidget( const QString & _caption, QWidget * _parent, bool usePixmap = false ); + //! @param resizable If true, the widget resizes to fit the size of all tabs + //! If false, all child widget will be cut down to the TabWidget's size + TabWidget( const QString & _caption, QWidget * _parent, + bool usePixmap = false, bool resizable = false ); virtual ~TabWidget() = default; void addTab( QWidget * w, const QString & name, const char *pixmap = NULL, int idx = -1 ); @@ -74,7 +77,7 @@ class TabWidget : public QWidget virtual void paintEvent( QPaintEvent * _pe ); virtual void resizeEvent( QResizeEvent * _re ); virtual void wheelEvent( QWheelEvent * _we ); - + virtual QSize minimumSizeHint() const; private: struct widgetDesc @@ -88,6 +91,7 @@ class TabWidget : public QWidget widgetStack m_widgets; + bool m_resizable; int m_activeTab; QString m_caption; // Tab caption, used as the tooltip text on icon tabs quint8 m_tabbarHeight; // The height of the tab bar diff --git a/include/TempoSyncKnobModel.h b/include/TempoSyncKnobModel.h index 9a8ad619c11..9aaf48fea8b 100644 --- a/include/TempoSyncKnobModel.h +++ b/include/TempoSyncKnobModel.h @@ -33,6 +33,7 @@ class QAction; class LMMS_EXPORT TempoSyncKnobModel : public FloatModel { Q_OBJECT + MODEL_IS_VISITABLE public: enum TempoSyncMode { @@ -51,10 +52,10 @@ class LMMS_EXPORT TempoSyncKnobModel : public FloatModel const float _max, const float _step, const float _scale, Model * _parent, const QString & _display_name = QString() ); - virtual ~TempoSyncKnobModel(); + virtual ~TempoSyncKnobModel() override; - void saveSettings( QDomDocument & _doc, QDomElement & _this, const QString& name ); - void loadSettings( const QDomElement & _this, const QString& name ); + void saveSettings( QDomDocument & _doc, QDomElement & _this, const QString& name ) override; + void loadSettings( const QDomElement & _this, const QString& name ) override; TempoSyncMode syncMode() const { diff --git a/include/Track.h b/include/Track.h index 302dcb5cc1d..1267d2ef742 100644 --- a/include/Track.h +++ b/include/Track.h @@ -352,7 +352,7 @@ class TrackContentWidget : public QWidget, public JournallingObject } } - bool canPasteSelection( MidiTime tcoPos, const QMimeData * mimeData ); + bool canPasteSelection( MidiTime tcoPos, const QDropEvent *de ); bool pasteSelection( MidiTime tcoPos, QDropEvent * de ); MidiTime endPosition( const MidiTime & posStart ); @@ -675,6 +675,10 @@ class TrackView : public QWidget, public ModelView, public JournallingObject virtual void update(); + // Create a menu for assigning/creating channels for this track + // Currently instrument track and sample track supports it + virtual QMenu * createFxMenu(QString title, QString newFxLabel); + public slots: virtual bool close(); diff --git a/include/VersionedSaveDialog.h b/include/VersionedSaveDialog.h index 781c6b71cb6..2e30e9f095c 100644 --- a/include/VersionedSaveDialog.h +++ b/include/VersionedSaveDialog.h @@ -29,15 +29,25 @@ #define VERSIONEDSAVEDIALOG_H #include "FileDialog.h" +#include "Song.h" class QLineEdit; +class LedCheckBox; +class SaveOptionsWidget : public QWidget { +public: + SaveOptionsWidget(Song::SaveOptions &saveOptions); + +private: + LedCheckBox *m_discardMIDIConnectionsCheckbox; +}; class VersionedSaveDialog : public FileDialog { Q_OBJECT public: explicit VersionedSaveDialog( QWidget *parent = 0, + QWidget *saveOptionsWidget = nullptr, const QString &caption = QString(), const QString &directory = QString(), const QString &filter = QString() ); diff --git a/include/VstSyncData.h b/include/VstSyncData.h index f9696252a42..6c2f1bbd2a6 100644 --- a/include/VstSyncData.h +++ b/include/VstSyncData.h @@ -41,10 +41,10 @@ struct VstSyncData { - bool isPlaying; double ppqPos; int timeSigNumer; int timeSigDenom; + bool isPlaying; bool isCycle; bool hasSHM; float cycleStart; diff --git a/include/panning.h b/include/panning.h index 5f10433ce4b..8668ddf88a8 100644 --- a/include/panning.h +++ b/include/panning.h @@ -28,7 +28,6 @@ #include "lmms_basics.h" #include "volume.h" -#include "templates.h" #include "panning_constants.h" #include "Midi.h" diff --git a/plugins/Eq/EqControlsDialog.cpp b/plugins/Eq/EqControlsDialog.cpp index af2378a2c9f..00c8eaaa796 100644 --- a/plugins/Eq/EqControlsDialog.cpp +++ b/plugins/Eq/EqControlsDialog.cpp @@ -55,10 +55,10 @@ EqControlsDialog::EqControlsDialog( EqControls *controls ) : EqSpectrumView * inSpec = new EqSpectrumView( &controls->m_inFftBands, this ); inSpec->move( 26, 17 ); - inSpec->setColor( QColor( 54, 45, 142, 150 ) ); + inSpec->setColor( QColor( 77, 101, 242, 150 ) ); EqSpectrumView * outSpec = new EqSpectrumView( &controls->m_outFftBands, this ); - outSpec->setColor( QColor( 9, 166, 156, 150 ) ); + outSpec->setColor( QColor( 0, 255, 239, 150 ) ); outSpec->move( 26, 17 ); m_parameterWidget = new EqParameterWidget( this , controls ); diff --git a/plugins/Eq/EqSpectrumView.cpp b/plugins/Eq/EqSpectrumView.cpp index 959578499fb..e9e0043dea4 100644 --- a/plugins/Eq/EqSpectrumView.cpp +++ b/plugins/Eq/EqSpectrumView.cpp @@ -45,11 +45,11 @@ EqAnalyser::EqAnalyser() : const float a2 = 0.14128; const float a3 = 0.01168; - for(int i = 0; i < FFT_BUFFER_SIZE; i++) + for (int i = 0; i < FFT_BUFFER_SIZE; i++) { - m_fftWindow[i] = ( a0 - a1 * cosf( 2 * F_PI * i / (float)FFT_BUFFER_SIZE - 1 ) - + a2 * cosf( 4 * F_PI * i / (float)FFT_BUFFER_SIZE-1) - - a3 * cos( 6 * F_PI * i / (float)FFT_BUFFER_SIZE - 1.0 )); + m_fftWindow[i] = (a0 - a1 * cos(2 * F_PI * i / ((float)FFT_BUFFER_SIZE - 1.0)) + + a2 * cos(4 * F_PI * i / ((float)FFT_BUFFER_SIZE - 1.0)) + - a3 * cos(6 * F_PI * i / ((float)FFT_BUFFER_SIZE - 1.0))); } clear(); } diff --git a/plugins/FreeBoy/FreeBoy.cpp b/plugins/FreeBoy/FreeBoy.cpp index dd05444a69c..8647e7f4b27 100644 --- a/plugins/FreeBoy/FreeBoy.cpp +++ b/plugins/FreeBoy/FreeBoy.cpp @@ -109,11 +109,11 @@ FreeBoyInstrument::FreeBoyInstrument( InstrumentTrack * _instrument_track ) : m_ch1So1Model( true, this, tr( "Channel 1 to SO2 (Left)" ) ), m_ch2So1Model( true, this, tr( "Channel 2 to SO2 (Left)" ) ), m_ch3So1Model( true, this, tr( "Channel 3 to SO2 (Left)" ) ), - m_ch4So1Model( true, this, tr( "Channel 4 to SO2 (Left)" ) ), + m_ch4So1Model( false, this, tr( "Channel 4 to SO2 (Left)" ) ), m_ch1So2Model( true, this, tr( "Channel 1 to SO1 (Right)" ) ), m_ch2So2Model( true, this, tr( "Channel 2 to SO1 (Right)" ) ), m_ch3So2Model( true, this, tr( "Channel 3 to SO1 (Right)" ) ), - m_ch4So2Model( true, this, tr( "Channel 4 to SO1 (Right)" ) ), + m_ch4So2Model( false, this, tr( "Channel 4 to SO1 (Right)" ) ), m_trebleModel( -20.0f, -100.0f, 200.0f, 1.0f, this, tr( "Treble" ) ), m_bassModel( 461.0f, -1.0f, 600.0f, 1.0f, this, tr( "Bass" ) ), @@ -728,10 +728,10 @@ extern "C" { // necessary for getting instance out of shared lib -PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *, void * _data ) +PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *m, void * ) { return( new FreeBoyInstrument( - static_cast( _data ) ) ); + static_cast( m ) ) ); } diff --git a/plugins/GigPlayer/GigPlayer.cpp b/plugins/GigPlayer/GigPlayer.cpp index bf599025216..200439dae92 100644 --- a/plugins/GigPlayer/GigPlayer.cpp +++ b/plugins/GigPlayer/GigPlayer.cpp @@ -1390,9 +1390,9 @@ extern "C" { // necessary for getting instance out of shared lib -PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *, void * _data ) +PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *m, void * ) { - return new GigInstrument( static_cast( _data ) ); + return new GigInstrument( static_cast( m ) ); } } diff --git a/plugins/LadspaEffect/LadspaControls.cpp b/plugins/LadspaEffect/LadspaControls.cpp index 1a2f26a352b..028394d309e 100644 --- a/plugins/LadspaEffect/LadspaControls.cpp +++ b/plugins/LadspaEffect/LadspaControls.cpp @@ -36,7 +36,8 @@ LadspaControls::LadspaControls( LadspaEffect * _eff ) : { connect( &m_stereoLinkModel, SIGNAL( dataChanged() ), - this, SLOT( updateLinkStatesFromGlobal() ) ); + this, SLOT( updateLinkStatesFromGlobal() ), + Qt::DirectConnection ); multi_proc_t controls = m_effect->getPortControls(); m_controlCount = controls.count(); @@ -59,7 +60,8 @@ LadspaControls::LadspaControls( LadspaEffect * _eff ) : if( linked_control ) { connect( (*it)->control, SIGNAL( linkChanged( int, bool ) ), - this, SLOT( linkPort( int, bool ) ) ); + this, SLOT( linkPort( int, bool ) ), + Qt::DirectConnection ); } } } @@ -153,6 +155,9 @@ void LadspaControls::linkPort( int _port, bool _state ) { first->unlinkControls( m_controls[proc][_port] ); } + + // m_stereoLinkModel.setValue() will call updateLinkStatesFromGlobal() + // m_noLink will make sure that this will not unlink any other ports m_noLink = true; m_stereoLinkModel.setValue( false ); } diff --git a/plugins/LadspaEffect/LadspaSubPluginFeatures.cpp b/plugins/LadspaEffect/LadspaSubPluginFeatures.cpp index e9344e9438f..4cefa90b5f6 100644 --- a/plugins/LadspaEffect/LadspaSubPluginFeatures.cpp +++ b/plugins/LadspaEffect/LadspaSubPluginFeatures.cpp @@ -44,6 +44,16 @@ LadspaSubPluginFeatures::LadspaSubPluginFeatures( Plugin::PluginTypes _type ) : +QString LadspaSubPluginFeatures::displayName(const Plugin::Descriptor::SubPluginFeatures::Key &k) const +{ + const ladspa_key_t & lkey = subPluginKeyToLadspaKey(&k); + Ladspa2LMMS * lm = Engine::getLADSPAManager(); + return lm->getName(lkey); +} + + + + void LadspaSubPluginFeatures::fillDescriptionWidget( QWidget * _parent, const Key * _key ) const { diff --git a/plugins/LadspaEffect/LadspaSubPluginFeatures.h b/plugins/LadspaEffect/LadspaSubPluginFeatures.h index 904c8133bbb..3f47734f9c8 100644 --- a/plugins/LadspaEffect/LadspaSubPluginFeatures.h +++ b/plugins/LadspaEffect/LadspaSubPluginFeatures.h @@ -25,8 +25,8 @@ * */ -#ifndef _LADSPA_SUBPLUGIN_FEATURES_H -#define _LADSPA_SUBPLUGIN_FEATURES_H +#ifndef LADSPA_SUBPLUGIN_FEATURES_H +#define LADSPA_SUBPLUGIN_FEATURES_H #include "LadspaManager.h" #include "Plugin.h" @@ -37,11 +37,13 @@ class LadspaSubPluginFeatures : public Plugin::Descriptor::SubPluginFeatures public: LadspaSubPluginFeatures( Plugin::PluginTypes _type ); - virtual void fillDescriptionWidget( QWidget * _parent, - const Key * _key ) const; + QString displayName(const Key& k) const override; + void fillDescriptionWidget( QWidget * _parent, + const Key * _key ) const override; virtual void listSubPluginKeys( const Plugin::Descriptor * _desc, - KeyList & _kl ) const; + KeyList & _kl ) const override; + static ladspa_key_t subPluginKeyToLadspaKey( const Key * _key ); diff --git a/plugins/OpulenZ/OpulenZ.cpp b/plugins/OpulenZ/OpulenZ.cpp index d8d5f3e263a..8e5b7f098ca 100644 --- a/plugins/OpulenZ/OpulenZ.cpp +++ b/plugins/OpulenZ/OpulenZ.cpp @@ -79,9 +79,9 @@ Plugin::Descriptor PLUGIN_EXPORT opulenz_plugin_descriptor = }; // necessary for getting instance out of shared lib -PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *, void * _data ) +PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *m, void * ) { - return( new OpulenzInstrument( static_cast( _data ) ) ); + return( new OpulenzInstrument( static_cast( m ) ) ); } } diff --git a/plugins/VstEffect/VstEffect.cpp b/plugins/VstEffect/VstEffect.cpp index cbb30e2fe4e..80f209a7b1c 100644 --- a/plugins/VstEffect/VstEffect.cpp +++ b/plugins/VstEffect/VstEffect.cpp @@ -145,9 +145,6 @@ void VstEffect::openPlugin( const QString & _plugin ) return; } - VstPlugin::connect( Engine::getSong(), SIGNAL( tempoChanged( bpm_t ) ), m_plugin.data(), SLOT( setTempo( bpm_t ) ) ); - m_plugin->setTempo( Engine::getSong()->getTempo() ); - delete tf; m_key.attributes["file"] = _plugin; diff --git a/plugins/VstEffect/VstEffectControls.cpp b/plugins/VstEffect/VstEffectControls.cpp index d92717d3781..a0f97ce715e 100644 --- a/plugins/VstEffect/VstEffectControls.cpp +++ b/plugins/VstEffect/VstEffectControls.cpp @@ -90,13 +90,8 @@ void VstEffectControls::loadSettings( const QDomElement & _this ) knobFModel[ i ]->setInitValue(LocaleHelper::toFloat(s_dumpValues.at(2))); } -#if QT_VERSION < 0x050000 - connect( knobFModel[i], SIGNAL( dataChanged( Model * ) ), - this, SLOT( setParameter( Model * ) ), Qt::DirectConnection ); -#else connect( knobFModel[i], &FloatModel::dataChanged, this, [this, i]() { setParameter( knobFModel[i] ); }, Qt::DirectConnection); -#endif } } @@ -383,13 +378,8 @@ manageVSTEffectView::manageVSTEffectView( VstEffect * _eff, VstEffectControls * } FloatModel * model = m_vi->knobFModel[i]; -#if QT_VERSION < 0x050000 - connect( model, SIGNAL( dataChanged( Model * ) ), this, - SLOT( setParameter( Model * ) ), Qt::DirectConnection ); -#else connect( model, &FloatModel::dataChanged, this, [this, model]() { setParameter( model ); }, Qt::DirectConnection); -#endif vstKnobs[ i ] ->setModel( model ); } diff --git a/plugins/Xpressive/Xpressive.cpp b/plugins/Xpressive/Xpressive.cpp index cb02937106e..f0154f75b02 100644 --- a/plugins/Xpressive/Xpressive.cpp +++ b/plugins/Xpressive/Xpressive.cpp @@ -877,8 +877,8 @@ void XpressiveView::helpClicked() { extern "C" { // necessary for getting instance out of shared lib -PLUGIN_EXPORT Plugin * lmms_plugin_main(Model *, void * _data) { - return (new Xpressive(static_cast(_data))); +PLUGIN_EXPORT Plugin * lmms_plugin_main(Model *m, void *) { + return (new Xpressive(static_cast(m))); } } diff --git a/plugins/audio_file_processor/audio_file_processor.cpp b/plugins/audio_file_processor/audio_file_processor.cpp index 6c080f7c9ac..c1cd725c10e 100644 --- a/plugins/audio_file_processor/audio_file_processor.cpp +++ b/plugins/audio_file_processor/audio_file_processor.cpp @@ -505,7 +505,7 @@ AudioFileProcessorView::AudioFileProcessorView( Instrument * _instrument, "loop_pingpong_on" ) ); m_loopPingPongButton->setInactiveGraphic( PLUGIN_NAME::getIconPixmap( "loop_pingpong_off" ) ); - ToolTip::add( m_loopPingPongButton, tr( "Enable loop" ) ); + ToolTip::add( m_loopPingPongButton, tr( "Enable ping-pong loop" ) ); m_loopGroup = new automatableButtonGroup( this ); m_loopGroup->addButton( m_loopOffButton ); @@ -753,6 +753,7 @@ AudioFileProcessorWaveView::AudioFileProcessorWaveView( QWidget * _parent, int _ m_graph.fill( Qt::transparent ); update(); + updateCursor(); } @@ -769,7 +770,7 @@ void AudioFileProcessorWaveView::isPlaying( f_cnt_t _current_frame ) void AudioFileProcessorWaveView::enterEvent( QEvent * _e ) { - QApplication::setOverrideCursor( Qt::OpenHandCursor ); + updateCursor(); } @@ -777,10 +778,7 @@ void AudioFileProcessorWaveView::enterEvent( QEvent * _e ) void AudioFileProcessorWaveView::leaveEvent( QEvent * _e ) { - while( QApplication::overrideCursor() ) - { - QApplication::restoreOverrideCursor(); - } + updateCursor(); } @@ -808,7 +806,7 @@ void AudioFileProcessorWaveView::mousePressEvent( QMouseEvent * _me ) else { m_draggingType = wave; - QApplication::setOverrideCursor( Qt::ClosedHandCursor ); + updateCursor(_me); } } @@ -820,7 +818,7 @@ void AudioFileProcessorWaveView::mouseReleaseEvent( QMouseEvent * _me ) m_isDragging = false; if( m_draggingType == wave ) { - QApplication::restoreOverrideCursor(); + updateCursor(_me); } } @@ -831,22 +829,7 @@ void AudioFileProcessorWaveView::mouseMoveEvent( QMouseEvent * _me ) { if( ! m_isDragging ) { - const bool is_size_cursor = - QApplication::overrideCursor()->shape() == Qt::SizeHorCursor; - - if( isCloseTo( _me->x(), m_startFrameX ) || - isCloseTo( _me->x(), m_endFrameX ) || - isCloseTo( _me->x(), m_loopFrameX ) ) - { - if( ! is_size_cursor ) - { - QApplication::setOverrideCursor( Qt::SizeHorCursor ); - } - } - else if( is_size_cursor ) - { - QApplication::restoreOverrideCursor(); - } + updateCursor(_me); return; } @@ -1219,6 +1202,24 @@ void AudioFileProcessorWaveView::reverse() +void AudioFileProcessorWaveView::updateCursor( QMouseEvent * _me ) +{ + bool const waveIsDragged = m_isDragging && (m_draggingType == wave); + bool const pointerCloseToStartEndOrLoop = (_me != nullptr ) && + ( isCloseTo( _me->x(), m_startFrameX ) || + isCloseTo( _me->x(), m_endFrameX ) || + isCloseTo( _me->x(), m_loopFrameX ) ); + + if( !m_isDragging && pointerCloseToStartEndOrLoop) + setCursor(Qt::SizeHorCursor); + else if( waveIsDragged ) + setCursor(Qt::ClosedHandCursor); + else + setCursor(Qt::OpenHandCursor); +} + + + void AudioFileProcessorWaveView::knob::slideTo( double _v, bool _check_bound ) { @@ -1277,10 +1278,9 @@ extern "C" { // necessary for getting instance out of shared lib -PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *, void * _data ) +PLUGIN_EXPORT Plugin * lmms_plugin_main(Model * model, void *) { - return new audioFileProcessor( - static_cast( _data ) ); + return new audioFileProcessor(static_cast(model)); } diff --git a/plugins/audio_file_processor/audio_file_processor.h b/plugins/audio_file_processor/audio_file_processor.h index 150807686e9..d17be147c0c 100644 --- a/plugins/audio_file_processor/audio_file_processor.h +++ b/plugins/audio_file_processor/audio_file_processor.h @@ -211,7 +211,6 @@ class AudioFileProcessorWaveView : public QWidget private: bool checkBound( double _v ) const; - } ; @@ -276,6 +275,7 @@ public slots: void updateGraph(); void reverse(); + void updateCursor( QMouseEvent * _me = nullptr ); static bool isCloseTo( int _a, int _b ) { diff --git a/plugins/bit_invader/bit_invader.cpp b/plugins/bit_invader/bit_invader.cpp index 6680ed5d6fd..0d62bc2e612 100644 --- a/plugins/bit_invader/bit_invader.cpp +++ b/plugins/bit_invader/bit_invader.cpp @@ -36,7 +36,6 @@ #include "NotePlayHandle.h" #include "Oscillator.h" #include "PixmapButton.h" -#include "templates.h" #include "ToolTip.h" #include "Song.h" #include "interpolation.h" @@ -566,9 +565,9 @@ extern "C" { // necessary for getting instance out of shared lib -PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *, void * _data ) +PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *m, void * ) { - return( new bitInvader( static_cast( _data ) ) ); + return( new bitInvader( static_cast( m ) ) ); } diff --git a/plugins/carlapatchbay/carlapatchbay.cpp b/plugins/carlapatchbay/carlapatchbay.cpp index 69c71ce68c8..ac00630d44d 100644 --- a/plugins/carlapatchbay/carlapatchbay.cpp +++ b/plugins/carlapatchbay/carlapatchbay.cpp @@ -25,6 +25,7 @@ #include "carla.h" #include "embed.h" +#include "InstrumentTrack.h" extern "C" { @@ -43,9 +44,9 @@ Plugin::Descriptor PLUGIN_EXPORT carlapatchbay_plugin_descriptor = NULL } ; -PLUGIN_EXPORT Plugin* lmms_plugin_main(Model*, void* data) +PLUGIN_EXPORT Plugin* lmms_plugin_main(Model* m, void*) { - return new CarlaInstrument(static_cast(data), &carlapatchbay_plugin_descriptor, true); + return new CarlaInstrument(static_cast(m), &carlapatchbay_plugin_descriptor, true); } } diff --git a/plugins/carlarack/carlarack.cpp b/plugins/carlarack/carlarack.cpp index 8bc7d372dd9..c0a39f9c258 100644 --- a/plugins/carlarack/carlarack.cpp +++ b/plugins/carlarack/carlarack.cpp @@ -25,6 +25,7 @@ #include "carla.h" #include "embed.h" +#include "InstrumentTrack.h" extern "C" { @@ -43,9 +44,9 @@ Plugin::Descriptor PLUGIN_EXPORT carlarack_plugin_descriptor = NULL } ; -PLUGIN_EXPORT Plugin* lmms_plugin_main(Model*, void* data) +PLUGIN_EXPORT Plugin* lmms_plugin_main(Model* m, void*) { - return new CarlaInstrument(static_cast(data), &carlarack_plugin_descriptor, false); + return new CarlaInstrument(static_cast(m), &carlarack_plugin_descriptor, false); } } diff --git a/plugins/kicker/kicker.cpp b/plugins/kicker/kicker.cpp index 2087cf88068..d204babab23 100644 --- a/plugins/kicker/kicker.cpp +++ b/plugins/kicker/kicker.cpp @@ -367,9 +367,9 @@ extern "C" { // necessary for getting instance out of shared lib -PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *, void * _data ) +PLUGIN_EXPORT Plugin * lmms_plugin_main( Model * m, void * ) { - return new kickerInstrument( static_cast( _data ) ); + return new kickerInstrument( static_cast( m ) ); } diff --git a/plugins/lb302/lb302.cpp b/plugins/lb302/lb302.cpp index d32f14e8840..91e811276d3 100644 --- a/plugins/lb302/lb302.cpp +++ b/plugins/lb302/lb302.cpp @@ -41,7 +41,6 @@ #include "NotePlayHandle.h" #include "Oscillator.h" #include "PixmapButton.h" -#include "templates.h" #include "ToolTip.h" #include "BandLimitedWave.h" @@ -1029,11 +1028,11 @@ extern "C" { // necessary for getting instance out of shared lib -PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *, void * _data ) +PLUGIN_EXPORT Plugin * lmms_plugin_main( Model * m, void * ) { return( new lb302Synth( - static_cast( _data ) ) ); + static_cast( m ) ) ); } diff --git a/plugins/monstro/Monstro.cpp b/plugins/monstro/Monstro.cpp index baee242bb78..4ea679347de 100644 --- a/plugins/monstro/Monstro.cpp +++ b/plugins/monstro/Monstro.cpp @@ -28,7 +28,6 @@ #include "Monstro.h" #include "Engine.h" #include "InstrumentTrack.h" -#include "templates.h" #include "gui_templates.h" #include "ToolTip.h" #include "Song.h" @@ -1828,9 +1827,9 @@ extern "C" { // necessary for getting instance out of shared lib -PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *, void * _data ) +PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *m, void * ) { - return new MonstroInstrument( static_cast( _data ) ); + return new MonstroInstrument( static_cast( m ) ); } diff --git a/plugins/monstro/exp.png b/plugins/monstro/exp.png index 9fe634881a8d4c47b380b1963604c840b40a623f..acb7a55cbc2671ed17d4cb0e8ae080028f1160a2 100644 GIT binary patch literal 539 zcmV+$0_6RPP)AHt5#EFVf5n0=;+-!GkA{9z&r^f&L9)_o9nLkQOoK2y##( z1Vt#AKgRbU2x^Bdx9^?~wb*2neW~a4Ja3-Y^M2srf&U(=VsARt(VTO3Rhwxi-pL)r z5q!XaXV~EH1rU(L8z<-q1~b^mdV6ZuJ;9dftwvrEU(^%qDzU$VdWd^-R;HTD`(4BK zhf*5Du&NXRq|VH}*Lwq9!5T1gzfbMHRMmGFEcaUfLOWPmT(hM##$*7><@0DL7>d=^ zS_j}lZs#8i?sjxm%X$n@N1tp@#*3fEhc-Z00o2d))Xs5#TiDJz&qOti%J)zv{IsF_ zrS=Hbf{2clPpWHUua5d!*0yubBCw2#i{&Qs$s1eE4vCLW#H#CiL1I8&+@BA((l__b z-K?_&ECaZvI(r!e_>v4CUT9?+)dFCigP)e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00DAIL_t(2&z+DzOI%SD#D8<| zeJ<>3wDB3N6wIa(QdPH-TTJE z^$)T(p5}0dGiTEmyj!;+TFXJ8AskT{N!uQ?NdWx*EaZ!S6L{NXC)%ohUhF{_9sW9@ZOo^U_>c$u2(B@Z5$C`T4R%`vy>Ey7Zx!@tunX)U&Ly(Jw{hTwGnzPHT>t<8 M07*qoM6N<$g8hfkK>z>% diff --git a/plugins/monstro/moog.png b/plugins/monstro/moog.png index 6d9005966f448c6da2cd4003fc4f06d6c4e2af7e..f206bd0da044290a77383c72779c5c414d340b26 100644 GIT binary patch literal 498 zcmVpP^PU6$`RsJX4)30IxMk)iSo}_+Rp#>oM>FLm6{cI| zEt|tfcU>5gUc+0$&)w}Qg&r^1RXda}Mu6x~`*3YmztzxHss9NMW{N8!I;Q9iIKPKO zXAc3(ND@HaH1;QLwW=wQPE_`Dk-)*PVLMZr6e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00F;AL_t(2&vnp0Z;f#j2k_5% zp66cGmXHvGGWZk!a;Hi}B0|C-NJR7%SWFVH0PlcJ;vKk46Tx6022)KmmZk>8U_i80 zz4!SYLxl>y<4Haz-*dv6OwMGze$1veTn{ei>iBM5x!LUXX*oj?lx7aj7SHh z(O@akt1O0F*DU{qrurhj>t;F~VNZr{nHEuoU8(;MG(RPhb-@8_305L3XDAl^kp|qz zXy!E0+KnC}`Ho?vIl7LXYf9FhxTX9+KB4o)Ee}0t7;{TCdXs-o|!CeB@cq_5iZsP`8#3?<)KYSFKc8*)#)0SPN0{}C?3VQ#dQllDegpgfD0vEEnjUs zGpDXfIwwrxW$>(!&dUAW?-IgKdX)OSb-TwtSF*0)jqY*$<>f`z1&c8z9qs2?r=R~#` z*NCM-T32K4yF1waY^tVf`179MAj!ueY|%_Jre!E6y=yU5|7!JAvIwJ&Yi zPv_S`9MW%Q*WxdV^#C2CvquH4Bi0Cj*f#)ty)4SE@|$P{(l$~|i_i_=MS~uIk_2}E z)bv0oOQ!)Wa2>1fJp46?M67>Jlk~J@KORz*G=NpYdFMY&p5Q9|$mN-D3-n8YM-ST3~V zMKzfz91*i5CWVPq(|}Wduu8#GOukn9>r!Dn)wDmC+Utu-uH5W89ZR*mcVfL*&sp~4`6~#bT&^`1}v}zfB=p9025uYC+j9q85B5{JKda5WM+PrdoYVg zrN=8;TJYG0V$n^>&UE002ovPDHLkV1i(}F8Tlf literal 563 zcmV-30?hr1P)e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00EmxL_t(2&ppw-Zd_Fq#qr-h z_s$IC4>^`i5vAb;Kp;^eA)&kjrCS;v$&V7cbdgY`G?9|HM8L=b#t?h%$DB=vJOfBeT2UBN~TNnQpK?1$)9hnzWb275_};Yp(fi%r>Zk_ z5+Q^iYUj;d{9$t43l~^o2)Fdh=n1z>t%`#}?Bzd5aLS{%riF1B#Zfaf$kjuajkYAo! zl$xTDRH@+Z7pm`*nO9mdC$RY&0|TRsr;B5V#`&Y?>^+zgWsZG(|9hTUYIdXE*<9D_ zj)EzNc^xNT2{UnxHVKQiaEms%m6cq7K+%U^$-pUUQK03N7BfZD_kXuu`8Ut|{5Kx? zABXnmZo70t;_9mu1 z=B)fk_mCwmvE~`EQOOOrvVPrinb?0J^w6~E+}OzEhA6Y*{I*BTvaFWdFYTLIJ#C5T zKi!Hq*0u5(8mifT+he14{GPMn5X0A_FMnMRsA(}@8aeUG0+Zs~GdCS#Sby`&?w6hY iC%T0`9t&<3I>2w`k#~xF+qZU57<#(;xvX6vrPa102y>e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00D4GL_t(2&vnwhOVx1{$MM(s z-m8fZA+=^xL+DrzZmprAi|x@=5R_|6YXlNS1pNyxMx_u$e}QdMLtD@iSw8E1_?-s5 zSb6W6&zsLV?{i}6b1p`>1=6dmJZ|jUT)P@=J*q_bj>M=i8O2buPfcd@gs_7j*pwzS z+#MY@a{a3s-NAx(rUo{J4QaY{=*D)#(8RjZ4J;5LlWn|@5LrB^in;S=40i*I`3w0b!xpGJ7rzUi;`YXGMo&TeJ6ssos15p(EJ@!mQ_6|a(&K)) zv1_ld?ll%2>AT-C+8tVAeO&eP&`zl=Cr^)6Ei_wZdnFN(>l3Pxe!ErWO{RAl#)6x@ zp(8R^FKM^-Y^i%5e86-;1MSW`WnDEfFaJ(lyQ0-7er0%qhkpP>51QPMrc!7C0000< KMNUMnLSTYBVbo0k diff --git a/plugins/monstro/saw.png b/plugins/monstro/saw.png index 56c077f2c529fea4f55046656dcc36e66c5bc71c..3122b082f8dbabcfde52d71584a8ec3712f45fab 100644 GIT binary patch literal 489 zcmVfBv=d#2GYbp#6Tn_i9sSUh{PaeqDe{G zPA?S$yU+AtHM{p15MQmnXK}Z4@A)O?o^yczI`kLRc5oR9)gU5*!mh)srf_X24FEC- zv@cF&1z_l-I z=ZgKPLYkPu(0a>_*AIMtFN>r3+d+W#0RYVFZlZDYdrnDgXCKB4mOB6dg;h7+Fi|S+ z2ae|MCP8`=0HCqxI_7k_>cm%AoH1amy@j)G!kqi9C*tFe#d!m?0sxvZ<@T6Ml_ntp zAeO&h7R<@l=3u-KH#hvuU&gYJLxNQj0JKuW1;^Ue zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00DVPL_t(2&xMh_YE)qmhM#xN zmo;XSxL|9nEF=pyA&8x=Bq3?yB?tV$LR*<;hlL#{HJE#xo8~cgo0a$D*$mMVXHqvp`eMF1zLcQfUHX&C|cu8 zSX{%*0zZH+=`f((A-W~aEEW)Rh|OU*WgG^aJjQqqmK@xa5b(;-mGHi#i*M0DjP)xP zB~}DD^H70g&RhSAxNW7=GzM^1unbHA>nT{r?4sdVs++p-nY7!ZMR3(-UgEI}?)NKp zLgc@rQ8$&lOlET(Sdw@_<`E^|M@OmZ3q{>j1Pj1C=96Ky7-QqqH093L-n*l2N^k=( zaCao}baR{DpMEbinP~Pa7J(H&hI^5D^7R*6ooOLs>jclXBZ4a53XdhCh^STbs2nnKSNbdXfNZB8)TbOVgT?P^azou T!DIAa00000NkvXXu0mjfI`-7i diff --git a/plugins/monstro/sin.png b/plugins/monstro/sin.png index acabd5a171a9fc5ccefec61c360de9c09629563b..3ac3c9afa238aec201672993437ba6406c79a551 100644 GIT binary patch literal 596 zcmV-a0;~OrP)6+beFTQ+BPvC_e&4mI^- zv>??WeWODZ#DZgo4k9r|$# z=jH$~dvB)I#@Uf-8tedc*TxN;n=>#oz92Gz%iNhGY#2lq|_p!)b#rSKLYu&w(5B62zv_V{A=y#7aAu8h4ibX!Dk5EtRC4E3 zew9|rhZo`(e8-vq1Tq%aPu9bG7!RfvTh|=GN_q6dKP_ck1e@!D1K~iFj{oYC{}GWL_4#}|6<$75tf5-Nqyz4fi0o6e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00F8=L_t(2&u!65i;V#o2k_tX zzVA7VTP~e(X`(EI5xHcc>{y76Vj~~H);GY1VK1|h`$FV4LXk`oGiB1rQiZAR{9SdCIrJ=`DtfA^hyo6WkenX*~z6=7S1)tUAL6T*{X z`L}zsGDjM**bC#y?qEkQ9_+_TG)Fa1;~l&7|ZWTwZ_xSf6dzs?7?(f_%- QUjP6A07*qoM6N<$f=v?tU;qFB diff --git a/plugins/monstro/sinabs.png b/plugins/monstro/sinabs.png index 2216224e69d09e64184be0033f77821712ea0c58..e28d1ec21d4a3b3ef6ed2c7e26f5acbfdc9220ac 100644 GIT binary patch literal 530 zcmV+t0`2{YP)Wzp=8_llFDr zOHHrePhI|e>J8xfi-Swy!r=n$RRE+NDbyO%rCNDo?yWb5F+rVQVU)vhN>=8haCK{E(V2afYJeZyU z$gTSB*3fN0l(PUdo>f``G-pJ6F{t!r7V+o2>ou{99#xyOkLRyu!|}7 zE*tTbbf}eo@3e@wmElbh{37MC04d&VzhvKAjsDDg_w1Y`47f*D z1aMi~;~@Lm+Q(tuC*oK3OVsa@6#x{sPxeSJ0W1mY{ENx@mr?$Ma((|H=bR<}0-%(L UDvD>tcK`qY07*qoM6N<$g6{q6e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00BHnL_t(2&+W{=YEy9-fZ^vm z`I(p@LQ}y%xC&MfD+LEZbP)%q&h}CqI&|)R=p6_SwnOcp1dDXlEZSzULnTd4a?a(49qBkbTornl0zupQw!MwwpqTA$A^TvTPKUl*GZcCn7{II8I2 z=x?t_*sY7rGSn}nb|u-u!(=Zw5q2_c;SOFWli-Q;vTD35$&2I$zTizF(!Jz%aGYTu zlGWg*#1(WFb+J=b6DFUZ$$G1qSF%ecW zT`R#V&N7{-)EX70`R6{>T4YBXtsl}^gsYV_&$J&L^cu5X*GxE!@Jl%Cb89rc7 zTEyey9Jr+IPc7=7mYz~R>7MtL!Q67Wq4u8cP^m8~^QH9PKllx$f`URePxCGS0000< KMNUMnLSTYeH^UwP diff --git a/plugins/monstro/sqr.png b/plugins/monstro/sqr.png index 83d5e4869038b5d02b01cf876afb598e62036928..d5d3c211c6e109e02863df08a81c1f60ac721135 100644 GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^{6H+o!3HFmxV|j}Qfx`y?k)`fL2$v|<&%LToCO|{ z#S9GG!XV7ZFl&wkP>{XE)7O>#F$*sPy9i(De{GT_i(`nz>Er|njRP5VFDBY6x~ji@VwNPFp7`gm z(*OCbiAs9C|Nk4`Nl!>PuugJaN8>}e!~g$Jf9RK#^dRZS`4?U1T?@|k{QsYCnW;aQ z|MBa$H49Ii{P|wa?yS!gmKz5$(<~pVn4Zk}pRD+7KF{Qit0~+57cvVAA66A(V`FOz z?%TwBB+KMhv48)>nLGd4Ge2IsP%5D%_K|E^c|Vd;Ir8L`7~m+2du4sipy zW6=|L7__l;ZvMdWO2v)$aCQCe1fIhWoK}>UhL)BdzxaGrL8}&1D@T0S_1c$@e@_on z;xdYOu%<#gRZpuV%Yn>SAU@e{pYL05`Z_f9U(|(dcdcec-M`~-CHMC3;HUr1 zxBNE0Vc%9)BjB~@=+parN1M&8Rut5q?LW)@{Y~)Jz0W)!OSGr%EsQb$$E+?KWp-8Z S`F~&-GI+ZBxvXrkk diff --git a/plugins/monstro/sqrsoft.png b/plugins/monstro/sqrsoft.png index 2e5626d20538b8aaca92137852baa9687602a89b..037fcab12bf443e946f6682723d10159b1d5adf8 100644 GIT binary patch literal 453 zcmV;$0XqJPP)^!sl=%!CVuPt=E?i#c|;52XW@b$86P0Bgq4}}1wSBwOfg)M@wOzAU(2ri z@vilo*;FY`zz4u+RU&EO&^WyUI7OqvWIf-m0kHzg9zCY&3BL-eT}>y`t;OJ^`YfY9 zr?=tj+~D1J0;cVL(gT3!x_je#48P=$3IwOM<)9cA0Q~aYK&|PAj*;7x=M4p=``v$k z#Dsun9?diQCIuYNYK1m8t%HMRubx>O68wlJekQi0a#P v`o78IFkSb$#yl7GM8>&Fap!e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00DzZL_t(2&yCW*YE)qmhVkEg z=j^T_0f~(kk@zQ|g4ie`R)UQ}3L9_0I}ij@T8Y?r2e}8a(9*_En;=9a5ReEKN)V#U z?%8w3W`mo=!grWvhKG4)n7FZ-XM;x(Rx!vl!mFyy^%USsY)F*~V5_#$iz?=yU>(wk}Tvhc9! zS=ifB4nW9hw54b#J)IO1sZ@>HAss3FOT!&x#w-*Fq10nBi9-wY7%r)R??#U+s*Z$hJiXG*Udk^%DvyT6g0r=!Iy}yAHt&nbRm|RFvIk80o6W~V zVbAjdfJj`;JgWjY^~(Rnx%I;wCO5%OZNdxp<}=ShJ_vH%ZyY@wh|^oN zw*m3#P)WvXpVFuV-7bY^+q(;wL&H7_dLv)&-0O>Ha^nGT-W>JaV&u4F^FDkK))z?h91poj507*qoM6N<$ Eg8o4HO#lD@ literal 602 zcmV-g0;Te zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00F{DL_t(2&t1|zOO*i_#_`|% zc+PX|&`^S#6i&Wy93r97MaZG`nWC)^qFU(mzd|FK&(uagQ#+ae z6&lr|xY^!9`;{mzl)_wu`}i5*zA#r@DEF)Xq0E@v(}==srjC@!fs~m#QJ9_F(~udr zP}LR9OHH98JP=NTo^W#AJIzbYs_PocjMHhwFtn4ENK4p?@CsXzmXeiWXrE4B?Te}_ zhErM!Ytpi?gUuZKj!j`lT2@#aPH9zLQS4VjTPs-*X7DA`=ZSEZ=`+3vGs%Ls)_x_5 z$vq8Yvq1-vo~DEId-|FVk{$#d<0~P>tpFZM$H8u#8Th7-GlO7PI>y5rA;q}iuC#(B zVN30O`NLrQvAX;#)-I-fpOi^%Cyb(zkCP5ufgTq&KwQKsH# z!l+wG=vHzxVU($dqX;w7Vj-*sC64NJ*q<{NSH~2Q{W;@09ZE+@DLidR?=TiVX!^aq oq4rO( _data ) ) ); + return( new NesInstrument( static_cast( m ) ) ); } diff --git a/plugins/organic/organic.cpp b/plugins/organic/organic.cpp index b6d45c8d36c..de5f08ff7f0 100644 --- a/plugins/organic/organic.cpp +++ b/plugins/organic/organic.cpp @@ -37,7 +37,6 @@ #include "NotePlayHandle.h" #include "Oscillator.h" #include "PixmapButton.h" -#include "templates.h" #include "ToolTip.h" #include "embed.h" @@ -636,9 +635,9 @@ extern "C" { // necessary for getting instance out of shared lib -PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *, void * _data ) +PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *m, void * ) { - return( new organicInstrument( static_cast( _data ) ) ); + return( new organicInstrument( static_cast( m ) ) ); } diff --git a/plugins/patman/patman.cpp b/plugins/patman/patman.cpp index 6ab7adce719..0ea9968dae7 100644 --- a/plugins/patman/patman.cpp +++ b/plugins/patman/patman.cpp @@ -66,9 +66,9 @@ Plugin::Descriptor PLUGIN_EXPORT patman_plugin_descriptor = // necessary for getting instance out of shared lib -PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *, void * _data ) +PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *m, void * ) { - return new patmanInstrument( static_cast( _data ) ); + return new patmanInstrument( static_cast( m ) ); } } diff --git a/plugins/sf2_player/sf2_player.cpp b/plugins/sf2_player/sf2_player.cpp index 4bf75777ce8..138e8165d17 100644 --- a/plugins/sf2_player/sf2_player.cpp +++ b/plugins/sf2_player/sf2_player.cpp @@ -1150,9 +1150,9 @@ extern "C" { // necessary for getting instance out of shared lib -PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *, void * _data ) +PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *m, void * ) { - return new sf2Instrument( static_cast( _data ) ); + return new sf2Instrument( static_cast( m ) ); } diff --git a/plugins/sfxr/sfxr.cpp b/plugins/sfxr/sfxr.cpp index c99f46f88cf..cdace1a30e2 100644 --- a/plugins/sfxr/sfxr.cpp +++ b/plugins/sfxr/sfxr.cpp @@ -45,7 +45,6 @@ float frnd(float range) #include "Knob.h" #include "NotePlayHandle.h" #include "PixmapButton.h" -#include "templates.h" #include "ToolTip.h" #include "Song.h" #include "MidiEvent.h" @@ -1122,9 +1121,9 @@ extern "C" { // necessary for getting instance out of shared lib -PLUGIN_EXPORT Plugin * lmms_plugin_main( Model*, void* data ) +PLUGIN_EXPORT Plugin * lmms_plugin_main( Model* m, void* ) { - return new sfxrInstrument( static_cast( data ) ); + return new sfxrInstrument( static_cast( m ) ); } diff --git a/plugins/sid/sid_instrument.cpp b/plugins/sid/sid_instrument.cpp index e671d4f0521..fcb0b82a790 100644 --- a/plugins/sid/sid_instrument.cpp +++ b/plugins/sid/sid_instrument.cpp @@ -794,10 +794,9 @@ extern "C" { // necessary for getting instance out of shared lib -PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *, void * _data ) +PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *m, void * ) { - return( new sidInstrument( - static_cast( _data ) ) ); + return( new sidInstrument( static_cast( m ) ) ); } diff --git a/plugins/stk/mallets/mallets.cpp b/plugins/stk/mallets/mallets.cpp index 7111bcdaa51..ee1e1fbc371 100644 --- a/plugins/stk/mallets/mallets.cpp +++ b/plugins/stk/mallets/mallets.cpp @@ -756,9 +756,9 @@ extern "C" { // necessary for getting instance out of shared lib -PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *, void * _data ) +PLUGIN_EXPORT Plugin * lmms_plugin_main( Model * m, void * ) { - return new malletsInstrument( static_cast( _data ) ); + return new malletsInstrument( static_cast( m ) ); } diff --git a/plugins/triple_oscillator/TripleOscillator.cpp b/plugins/triple_oscillator/TripleOscillator.cpp index 6b644fd468b..a883f75fa32 100644 --- a/plugins/triple_oscillator/TripleOscillator.cpp +++ b/plugins/triple_oscillator/TripleOscillator.cpp @@ -723,9 +723,9 @@ extern "C" { // necessary for getting instance out of shared lib -PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *, void * _data ) +PLUGIN_EXPORT Plugin * lmms_plugin_main( Model* model, void * ) { - return new TripleOscillator( static_cast( _data ) ); + return new TripleOscillator( static_cast( model ) ); } } diff --git a/plugins/vestige/vestige.cpp b/plugins/vestige/vestige.cpp index f4aabd265e0..82d4d0407b6 100644 --- a/plugins/vestige/vestige.cpp +++ b/plugins/vestige/vestige.cpp @@ -82,11 +82,11 @@ Plugin::Descriptor Q_DECL_EXPORT vestige_plugin_descriptor = } -class vstSubWin : public QMdiSubWindow +class vstSubWin : public SubWindow { public: vstSubWin( QWidget * _parent ) : - QMdiSubWindow( _parent ) + SubWindow( _parent ) { setAttribute( Qt::WA_DeleteOnClose, false ); setWindowFlags( Qt::WindowCloseButtonHint ); @@ -186,7 +186,13 @@ vestigeInstrument::~vestigeInstrument() void vestigeInstrument::loadSettings( const QDomElement & _this ) { - loadFile( _this.attribute( "plugin" ) ); + QString plugin = _this.attribute( "plugin" ); + if( plugin.isEmpty() ) + { + return; + } + + loadFile( plugin ); m_pluginMutex.lock(); if( m_plugin != NULL ) { @@ -217,13 +223,8 @@ void vestigeInstrument::loadSettings( const QDomElement & _this ) knobFModel[ i ]->setInitValue(LocaleHelper::toFloat(s_dumpValues.at(2))); } -#if QT_VERSION < 0x050000 - connect( knobFModel[i], SIGNAL( dataChanged( Model * ) ), - this, SLOT( setParameter( Model * ) ), Qt::DirectConnection ); -#else connect( knobFModel[i], &FloatModel::dataChanged, this, [this, i]() { setParameter( knobFModel[i] ); }, Qt::DirectConnection); -#endif } } m_pluginMutex.unlock(); @@ -978,13 +979,8 @@ manageVestigeInstrumentView::manageVestigeInstrumentView( Instrument * _instrume } FloatModel * model = m_vi->knobFModel[i]; -#if QT_VERSION < 0x050000 - connect( model, SIGNAL( dataChanged( Model * ) ), this, - SLOT( setParameter( Model * ) ), Qt::DirectConnection ); -#else connect( model, &FloatModel::dataChanged, this, [this, model]() { setParameter( model ); }, Qt::DirectConnection); -#endif vstKnobs[i] ->setModel( model ); } @@ -1180,9 +1176,9 @@ extern "C" { // necessary for getting instance out of shared lib -Q_DECL_EXPORT Plugin * lmms_plugin_main( Model *, void * _data ) +Q_DECL_EXPORT Plugin * lmms_plugin_main( Model *m, void * ) { - return new vestigeInstrument( static_cast( _data ) ); + return new vestigeInstrument( static_cast( m ) ); } diff --git a/plugins/vestige/vestige.h b/plugins/vestige/vestige.h index 3b92eea8ffc..e4ef11fce52 100644 --- a/plugins/vestige/vestige.h +++ b/plugins/vestige/vestige.h @@ -29,14 +29,13 @@ #include #include -#include #include #include "Instrument.h" #include "InstrumentView.h" #include "Note.h" #include "Knob.h" - +#include "SubWindow.h" #include "AutomatableModel.h" diff --git a/plugins/vibed/vibed.cpp b/plugins/vibed/vibed.cpp index f33a9042853..94f640ff32f 100644 --- a/plugins/vibed/vibed.cpp +++ b/plugins/vibed/vibed.cpp @@ -35,7 +35,6 @@ #include "CaptionMenu.h" #include "Oscillator.h" #include "string_container.h" -#include "templates.h" #include "volume.h" #include "Song.h" @@ -682,9 +681,9 @@ extern "C" { // necessary for getting instance out of shared lib -PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *, void * _data ) +PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *m, void * ) { - return( new vibed( static_cast( _data ) ) ); + return( new vibed( static_cast( m ) ) ); } diff --git a/plugins/vibed/vibrating_string.cpp b/plugins/vibed/vibrating_string.cpp index c3220271704..14a666bbdd3 100644 --- a/plugins/vibed/vibrating_string.cpp +++ b/plugins/vibed/vibrating_string.cpp @@ -24,7 +24,6 @@ #include #include "vibrating_string.h" -#include "templates.h" #include "interpolation.h" #include "Mixer.h" #include "Engine.h" @@ -145,9 +144,9 @@ void vibratingString::resample( float *_src, f_cnt_t _src_frames, _dst_frames; const float frac_pos = src_frame_float - static_cast( src_frame_float ); - const f_cnt_t src_frame = tLimit( - static_cast( src_frame_float ), - 1, _src_frames - 3 ); + const f_cnt_t src_frame = qBound( + 1, static_cast( src_frame_float ), + _src_frames - 3 ); m_impulse[frame] = cubicInterpolate( _src[src_frame - 1], _src[src_frame + 0], diff --git a/plugins/vst_base/CMakeLists.txt b/plugins/vst_base/CMakeLists.txt index 314d5fc18e4..44ed0dcb3be 100644 --- a/plugins/vst_base/CMakeLists.txt +++ b/plugins/vst_base/CMakeLists.txt @@ -5,11 +5,11 @@ ENDIF() INCLUDE(BuildPlugin) INCLUDE(ExternalProject) -ADD_SUBDIRECTORY(vstbase) +# These variables are not meant to be used normally, except packaging +SET(REMOTE_VST_PLUGIN_FILEPATH_32 "32/RemoteVstPlugin32" CACHE STRING "Relative file path to RemoteVstPlugin32") +SET(REMOTE_VST_PLUGIN_FILEPATH_64 "RemoteVstPlugin64" CACHE STRING "Relative file path to RemoteVstPlugin64") -IF(LMMS_BUILD_LINUX AND WANT_VST_NOWINE) - RETURN() -ENDIF() +ADD_SUBDIRECTORY(vstbase) SET(LMMS_BINARY_DIR ${CMAKE_BINARY_DIR}) SET(LMMS_SOURCE_DIR ${CMAKE_SOURCE_DIR}) @@ -29,6 +29,10 @@ SET(EXTERNALPROJECT_CMAKE_ARGS ) # build 32 bit version of RemoteVstPlugin -INCLUDE("${CMAKE_CURRENT_LIST_DIR}/RemoteVstPlugin32.cmake") +IF(WANT_VST_32) + INCLUDE("${CMAKE_CURRENT_LIST_DIR}/RemoteVstPlugin32.cmake") +ENDIF() # build 64 bit version of RemoteVstPlugin -INCLUDE("${CMAKE_CURRENT_LIST_DIR}/RemoteVstPlugin64.cmake") +IF(WANT_VST_64) + INCLUDE("${CMAKE_CURRENT_LIST_DIR}/RemoteVstPlugin64.cmake") +ENDIF() diff --git a/plugins/vst_base/RemoteVstPlugin.cpp b/plugins/vst_base/RemoteVstPlugin.cpp index a9ed335f0c2..48ab137438b 100644 --- a/plugins/vst_base/RemoteVstPlugin.cpp +++ b/plugins/vst_base/RemoteVstPlugin.cpp @@ -791,10 +791,6 @@ void RemoteVstPlugin::initEditor() SWP_NOMOVE | SWP_NOZORDER ); pluginDispatch( effEditTop ); - if (! EMBED) { - showEditor(); - } - #ifdef LMMS_BUILD_LINUX m_windowID = (intptr_t) GetProp( m_window, "__wine_x11_whole_window" ); #else @@ -1966,7 +1962,8 @@ DWORD WINAPI RemoteVstPlugin::processingThread( LPVOID _param ) { if( m.id == IdStartProcessing || m.id == IdMidiEvent - || m.id == IdVstSetParameter ) + || m.id == IdVstSetParameter + || m.id == IdVstSetTempo ) { _this->processMessage( m ); } diff --git a/plugins/vst_base/RemoteVstPlugin/CMakeLists.txt b/plugins/vst_base/RemoteVstPlugin/CMakeLists.txt index 2a9f84076b0..59dd19a0aa6 100644 --- a/plugins/vst_base/RemoteVstPlugin/CMakeLists.txt +++ b/plugins/vst_base/RemoteVstPlugin/CMakeLists.txt @@ -18,6 +18,7 @@ if(IS_WIN64 OR CMAKE_SIZEOF_VOID_P EQUAL 8) set(BITNESS 64) else() set(BITNESS 32) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/32") endif() FOREACH( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} ) diff --git a/plugins/vst_base/RemoteVstPlugin32.cmake b/plugins/vst_base/RemoteVstPlugin32.cmake index fa8255afe33..9a8f0452948 100644 --- a/plugins/vst_base/RemoteVstPlugin32.cmake +++ b/plugins/vst_base/RemoteVstPlugin32.cmake @@ -1,32 +1,39 @@ IF(LMMS_BUILD_WIN32 AND NOT LMMS_BUILD_WIN64) ADD_SUBDIRECTORY(RemoteVstPlugin) + IF(MSVC) + SET(VCPKG_ROOT "${CMAKE_FIND_ROOT_PATH}") + INSTALL(FILES "${VCPKG_ROOT}/bin/Qt5Core.dll" DESTINATION "${PLUGIN_DIR}/32") + INSTALL(FILES "${VCPKG_ROOT}/bin/zlib1.dll" DESTINATION "${PLUGIN_DIR}/32") + ELSE(MSVC) + INSTALL(FILES "${MINGW_PREFIX}/bin/Qt5Core.dll" DESTINATION "${PLUGIN_DIR}/32") + INSTALL(FILES "${MINGW_PREFIX}/bin/zlib1.dll" DESTINATION "${PLUGIN_DIR}/32") + ENDIF(MSVC) + INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../32/RemoteVstPlugin32.exe" DESTINATION "${PLUGIN_DIR}/32") ELSEIF(LMMS_BUILD_WIN64 AND MSVC) SET(MSVC_VER ${CMAKE_CXX_COMPILER_VERSION}) - IF(NOT CMAKE_GENERATOR_32) - IF(MSVC_VER VERSION_GREATER 19.0 OR MSVC_VER VERSION_EQUAL 19.0) - SET(CMAKE_GENERATOR_32 "Visual Studio 14 2015") - SET(MSVC_YEAR 2015) - ELSEIF(MSVC_VER VERSION_EQUAL 19.10 OR MSVC_VER VERSION_EQUAL 19.10) + IF(NOT CMAKE_GENERATOR_32) + IF(MSVC_VER VERSION_GREATER 19.10 OR MSVC_VER VERSION_EQUAL 19.10) SET(CMAKE_GENERATOR_32 "Visual Studio 15 2017") SET(MSVC_YEAR 2017) + ELSEIF(MSVC_VER VERSION_GREATER 19.0 OR MSVC_VER VERSION_EQUAL 19.0) + SET(CMAKE_GENERATOR_32 "Visual Studio 14 2015") + SET(MSVC_YEAR 2015) ELSE() MESSAGE(SEND_WARNING "Can't build RemoteVstPlugin32, unknown MSVC version ${MSVC_VER} and no CMAKE_GENERATOR_32 set") RETURN() ENDIF() ENDIF() - IF(NOT QT_32_PREFIX AND NOT USING_VCPKG) + IF(NOT QT_32_PREFIX) GET_FILENAME_COMPONENT(QT_BIN_DIR ${QT_QMAKE_EXECUTABLE} DIRECTORY) SET(QT_32_PREFIX "${QT_BIN_DIR}/../../msvc${MSVC_YEAR}") ENDIF() - IF(NOT QT_32_PREFIX) - MESSAGE(WARNING "Can't build RemoteVstPlugin32, QT_32_PREFIX not set") - RETURN() - ELSEIF(NOT (IS_DIRECTORY ${QT_32_PREFIX} AND EXISTS ${QT_32_PREFIX}/bin/qmake.exe)) - MESSAGE(WARNING "Can't build RemoteVstPlugin32, no Qt 32 bit installation found at ${QT_32_PREFIX}") - RETURN() + #TODO: qt5 installed using vcpkg: I don't know how to detect if the user built the x86 version of qt5 from here. At least not cleanly. + #So for the moment, we'll allow the built. + IF(NOT (IS_DIRECTORY ${QT_32_PREFIX} AND EXISTS ${QT_32_PREFIX}/bin/qmake.exe)) + MESSAGE(WARNING "No Qt 32 bit installation found at ${QT_32_PREFIX}. If you're using VCPKG you can ignore this message if you've built x86-windows version of qt5") ENDIF() ExternalProject_Add(RemoteVstPlugin32 @@ -38,8 +45,25 @@ ELSEIF(LMMS_BUILD_WIN64 AND MSVC) "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}" "-DCMAKE_PREFIX_PATH=${QT_32_PREFIX}" ) + + INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../32/RemoteVstPlugin32.exe" DESTINATION "${PLUGIN_DIR}/32") + + #TODO: find a solution when not using vcpkg for qt + SET(VCPKG_ROOT_32 "${CMAKE_FIND_ROOT_PATH}/../x86-windows") + + INSTALL(FILES "${VCPKG_ROOT_32}/bin/zlib1.dll" DESTINATION "${PLUGIN_DIR}/32") + INSTALL(FILES "${VCPKG_ROOT_32}/bin/pcre2-16.dll" DESTINATION "${PLUGIN_DIR}/32") + INSTALL(FILES "${VCPKG_ROOT_32}/bin/double-conversion.dll" DESTINATION "${PLUGIN_DIR}/32") + INSTALL(FILES "${VCPKG_ROOT_32}/bin/qt5core.dll" DESTINATION "${PLUGIN_DIR}/32") + ELSEIF(LMMS_BUILD_LINUX) # Use winegcc + INCLUDE(CheckWineGcc) + CheckWineGcc(32 "${WINEGCC}" WINEGCC_WORKING) + IF(NOT WINEGCC_WORKING) + MESSAGE(WARNING "winegcc fails to complie 32-bit binaries, please make sure you have 32-bit GCC libraries") + RETURN() + ENDIF() ExternalProject_Add(RemoteVstPlugin32 "${EXTERNALPROJECT_ARGS}" CMAKE_ARGS @@ -47,6 +71,9 @@ ELSEIF(LMMS_BUILD_LINUX) "-DCMAKE_CXX_COMPILER=${WINEGCC}" "-DCMAKE_CXX_FLAGS=-m32" ) + + INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../32/RemoteVstPlugin32" "${CMAKE_CURRENT_BINARY_DIR}/../32/RemoteVstPlugin32.exe.so" DESTINATION "${PLUGIN_DIR}/32") + ELSEIF(CMAKE_TOOLCHAIN_FILE_32) ExternalProject_Add(RemoteVstPlugin32 "${EXTERNALPROJECT_ARGS}" @@ -55,13 +82,11 @@ ELSEIF(CMAKE_TOOLCHAIN_FILE_32) "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH_32}" "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE_32}" ) + INSTALL(FILES "${CMAKE_PREFIX_PATH_32}/bin/Qt5Core.dll" DESTINATION "${PLUGIN_DIR}/32") + INSTALL(FILES "${CMAKE_PREFIX_PATH_32}/bin/zlib1.dll" DESTINATION "${PLUGIN_DIR}/32") + INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../32/RemoteVstPlugin32.exe" DESTINATION "${PLUGIN_DIR}/32") ELSE() - message(WARNING "Can't build RemoteVstPlugin32, unknown environment. Please supply CMAKE_TOOLCHAIN_FILE_32 and optionally CMAKE_PREFIX_PATH_32") + MESSAGE(WARNING "Can't build RemoteVstPlugin32, unknown environment. Please supply CMAKE_TOOLCHAIN_FILE_32 and optionally CMAKE_PREFIX_PATH_32") RETURN() ENDIF() -IF(LMMS_BUILD_LINUX) - INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../RemoteVstPlugin32" "${CMAKE_CURRENT_BINARY_DIR}/../RemoteVstPlugin32.exe.so" DESTINATION "${PLUGIN_DIR}") -ELSEIF(LMMS_BUILD_WIN32) - INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../RemoteVstPlugin32.exe" DESTINATION "${PLUGIN_DIR}") -ENDIF() diff --git a/plugins/vst_base/RemoteVstPlugin64.cmake b/plugins/vst_base/RemoteVstPlugin64.cmake index f802bc4b902..4b02bf8abf4 100644 --- a/plugins/vst_base/RemoteVstPlugin64.cmake +++ b/plugins/vst_base/RemoteVstPlugin64.cmake @@ -2,6 +2,12 @@ IF(LMMS_BUILD_WIN64) ADD_SUBDIRECTORY(RemoteVstPlugin) INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../RemoteVstPlugin64.exe" DESTINATION "${PLUGIN_DIR}") ELSEIF(LMMS_BUILD_LINUX) + INCLUDE(CheckWineGcc) + CheckWineGcc(64 "${WINEGCC}" WINEGCC_WORKING) + IF(NOT WINEGCC_WORKING) + MESSAGE(WARNING "winegcc fails to compile 64-bit binaries, please make sure you have 64-bit GCC libraries") + RETURN() + ENDIF() ExternalProject_Add(RemoteVstPlugin64 "${EXTERNALPROJECT_ARGS}" CMAKE_ARGS diff --git a/plugins/vst_base/VstPlugin.cpp b/plugins/vst_base/VstPlugin.cpp index 5138a58a69d..8d86f576f33 100644 --- a/plugins/vst_base/VstPlugin.cpp +++ b/plugins/vst_base/VstPlugin.cpp @@ -60,7 +60,6 @@ #include "MainWindow.h" #include "Mixer.h" #include "Song.h" -#include "templates.h" #include "FileDialog.h" #ifdef LMMS_BUILD_LINUX @@ -149,10 +148,10 @@ VstPlugin::VstPlugin( const QString & _plugin ) : switch(machineType) { case PE::MachineType::amd64: - tryLoad( "RemoteVstPlugin64" ); + tryLoad( REMOTE_VST_PLUGIN_FILEPATH_64 ); // Default: RemoteVstPlugin64 break; case PE::MachineType::i386: - tryLoad( "RemoteVstPlugin32" ); + tryLoad( REMOTE_VST_PLUGIN_FILEPATH_32 ); // Default: 32/RemoteVstPlugin32 break; default: m_failed = true; @@ -162,7 +161,7 @@ VstPlugin::VstPlugin( const QString & _plugin ) : setTempo( Engine::getSong()->getTempo() ); connect( Engine::getSong(), SIGNAL( tempoChanged( bpm_t ) ), - this, SLOT( setTempo( bpm_t ) ) ); + this, SLOT( setTempo( bpm_t ) ), Qt::DirectConnection ); connect( Engine::mixer(), SIGNAL( sampleRateChanged() ), this, SLOT( updateSampleRate() ) ); @@ -386,7 +385,9 @@ bool VstPlugin::processMessage( const message & _m ) { case IdVstPluginWindowID: m_pluginWindowID = _m.getInt(); - if( m_embedMethod == "none" ) + if( m_embedMethod == "none" + && ConfigManager::inst()->value( + "ui", "vstalwaysontop" ).toInt() ) { #ifdef LMMS_BUILD_WIN32 // We're changing the owner, not the parent, diff --git a/plugins/vst_base/vstbase/CMakeLists.txt b/plugins/vst_base/vstbase/CMakeLists.txt index 28c09edb380..bd5f98b561e 100644 --- a/plugins/vst_base/vstbase/CMakeLists.txt +++ b/plugins/vst_base/vstbase/CMakeLists.txt @@ -1,3 +1,6 @@ +ADD_DEFINITIONS(-DREMOTE_VST_PLUGIN_FILEPATH_32="${REMOTE_VST_PLUGIN_FILEPATH_32}") +ADD_DEFINITIONS(-DREMOTE_VST_PLUGIN_FILEPATH_64="${REMOTE_VST_PLUGIN_FILEPATH_64}") + BUILD_PLUGIN(vstbase ../vst_base.cpp ../VstPlugin.cpp ../VstPlugin.h ../communication.h MOCFILES ../VstPlugin.h diff --git a/plugins/watsyn/Watsyn.cpp b/plugins/watsyn/Watsyn.cpp index 0122b293a23..5c47b7a7aac 100644 --- a/plugins/watsyn/Watsyn.cpp +++ b/plugins/watsyn/Watsyn.cpp @@ -28,7 +28,6 @@ #include "base64.h" #include "Engine.h" #include "InstrumentTrack.h" -#include "templates.h" #include "ToolTip.h" #include "Song.h" #include "lmms_math.h" @@ -1279,9 +1278,9 @@ extern "C" { // necessary for getting instance out of shared lib -PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *, void * _data ) +PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *m, void * ) { - return( new WatsynInstrument( static_cast( _data ) ) ); + return( new WatsynInstrument( static_cast( m ) ) ); } diff --git a/plugins/zynaddsubfx/ZynAddSubFx.cpp b/plugins/zynaddsubfx/ZynAddSubFx.cpp index 85e5b0118b4..277c22596a6 100644 --- a/plugins/zynaddsubfx/ZynAddSubFx.cpp +++ b/plugins/zynaddsubfx/ZynAddSubFx.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -290,6 +291,7 @@ void ZynAddSubFxInstrument::loadSettings( const QDomElement & _this ) emit settingsChanged(); } + emit instrumentTrack()->pitchModel()->dataChanged(); } @@ -659,10 +661,9 @@ extern "C" { // necessary for getting instance out of shared lib -PLUGIN_EXPORT Plugin * lmms_plugin_main( Model *, void * _data ) +PLUGIN_EXPORT Plugin * lmms_plugin_main(Model * m, void *) { - - return new ZynAddSubFxInstrument( static_cast( _data ) ); + return new ZynAddSubFxInstrument(static_cast(m)); } diff --git a/plugins/zynaddsubfx/zynaddsubfx b/plugins/zynaddsubfx/zynaddsubfx index c22acd61eb5..ccac06336b3 160000 --- a/plugins/zynaddsubfx/zynaddsubfx +++ b/plugins/zynaddsubfx/zynaddsubfx @@ -1 +1 @@ -Subproject commit c22acd61eb5d074988acea5fc1b6930151345c42 +Subproject commit ccac06336b363b9afe7ff4aea02bfa2d48187e1a diff --git a/src/3rdparty/CMakeLists.txt b/src/3rdparty/CMakeLists.txt index b40f7c3cde0..473e7702f09 100644 --- a/src/3rdparty/CMakeLists.txt +++ b/src/3rdparty/CMakeLists.txt @@ -3,7 +3,7 @@ set(CMAKE_CXX_FLAGS "") set(CMAKE_C_FLAGS_DEBUG "") set(CMAKE_CXX_FLAGS_DEBUG "") -IF(LMMS_BUILD_LINUX) +IF(LMMS_BUILD_LINUX AND WANT_VST) set(BUILD_SHARED_LIBS OFF) add_subdirectory(qt5-x11embed) ENDIF() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 37da8f414f9..4ac6bf1332f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -45,7 +45,7 @@ INCLUDE(GenQrc) ADD_GEN_QRC(LMMS_RCC_OUT lmms.qrc "${CMAKE_SOURCE_DIR}/doc/AUTHORS" "${CMAKE_SOURCE_DIR}/LICENSE.txt" - "${CMAKE_BINARY_DIR}/CONTRIBUTORS" + "${CONTRIBUTORS}" ) # Paths relative to lmms executable diff --git a/src/core/AutomatableModel.cpp b/src/core/AutomatableModel.cpp index 1780da5e186..6055598f704 100644 --- a/src/core/AutomatableModel.cpp +++ b/src/core/AutomatableModel.cpp @@ -31,6 +31,7 @@ #include "LocaleHelper.h" #include "Mixer.h" #include "ProjectJournal.h" +#include "Song.h" long AutomatableModel::s_periodCounter = 0; @@ -131,8 +132,15 @@ void AutomatableModel::saveSettings( QDomDocument& doc, QDomElement& element, co } } - if( m_controllerConnection && m_controllerConnection->getController()->type() - != Controller::DummyController ) + // Skip saving MIDI connections if we're saving project and + // the discardMIDIConnections option is true. + auto controllerType = m_controllerConnection + ? m_controllerConnection->getController()->type() + : Controller::DummyController; + bool skipMidiController = Engine::getSong()->isSavingProject() + && Engine::getSong()->getSaveOptions().discardMIDIConnections.value(); + if (m_controllerConnection && controllerType != Controller::DummyController + && !(skipMidiController && controllerType == Controller::MidiController)) { QDomElement controllerElement; @@ -431,7 +439,7 @@ void AutomatableModel::setStep( const float step ) float AutomatableModel::fittedValue( float value ) const { - value = tLimit( value, m_minValue, m_maxValue ); + value = qBound( m_minValue, value, m_maxValue ); if( m_step != 0 && m_hasStrictStepSize ) { diff --git a/src/core/AutomationPattern.cpp b/src/core/AutomationPattern.cpp index 937be570f67..e36838d807a 100644 --- a/src/core/AutomationPattern.cpp +++ b/src/core/AutomationPattern.cpp @@ -781,6 +781,16 @@ void AutomationPattern::resolveAllIDs() { a->addObject( dynamic_cast( o ), false ); } + else + { + // FIXME: Remove this block once the automation system gets fixed + // This is a temporary fix for https://github.com/LMMS/lmms/issues/4781 + o = Engine::projectJournal()->journallingObject(ProjectJournal::idToSave(*k)); + if( o && dynamic_cast( o ) ) + { + a->addObject( dynamic_cast( o ), false ); + } + } } } a->m_idsToResolve.clear(); diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 7870415f971..ba41e089c7a 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -40,6 +40,7 @@ set(LMMS_SRCS core/MixerWorkerThread.cpp core/MixHelpers.cpp core/Model.cpp + core/ModelVisitor.cpp core/Note.cpp core/NotePlayHandle.cpp core/Oscillator.cpp @@ -48,6 +49,7 @@ set(LMMS_SRCS core/Piano.cpp core/PlayHandle.cpp core/Plugin.cpp + core/PluginIssue.cpp core/PluginFactory.cpp core/PresetPreviewPlayHandle.cpp core/ProjectJournal.cpp diff --git a/src/core/ConfigManager.cpp b/src/core/ConfigManager.cpp index 9d6781f7ce7..d8c783dd235 100644 --- a/src/core/ConfigManager.cpp +++ b/src/core/ConfigManager.cpp @@ -511,8 +511,9 @@ void ConfigManager::loadConfigFile( const QString & configFile ) cfg_file.close(); } - + // Plugins are searched recursively, blacklist problematic locations if( m_vstDir.isEmpty() || m_vstDir == QDir::separator() || m_vstDir == "/" || + m_vstDir == ensureTrailingSlash( QDir::homePath() ) || !QDir( m_vstDir ).exists() ) { #ifdef LMMS_BUILD_WIN32 diff --git a/src/core/ControllerConnection.cpp b/src/core/ControllerConnection.cpp index 45e36e12fc0..e08f15b6348 100644 --- a/src/core/ControllerConnection.cpp +++ b/src/core/ControllerConnection.cpp @@ -211,7 +211,9 @@ void ControllerConnection::loadSettings( const QDomElement & _this ) m_controllerId = -1; } - if (!Engine::getSong()->isLoadingProject() && m_controllerId != -1) + if (!Engine::getSong()->isLoadingProject() + && m_controllerId != -1 + && m_controllerId < Engine::getSong()->controllers().size()) { setController( Engine::getSong()-> controllers().at( m_controllerId ) ); diff --git a/src/core/DrumSynth.cpp b/src/core/DrumSynth.cpp index cfa85ceb6c0..c41de1fd4d0 100644 --- a/src/core/DrumSynth.cpp +++ b/src/core/DrumSynth.cpp @@ -124,7 +124,10 @@ void DrumSynth::GetEnv(int env, const char *sec, const char *key, QString ini) char en[256], s[8]; int i=0, o=0, ep=0; GetPrivateProfileString(sec, key, "0,0 100,0", en, sizeof(en), ini); - en[255]=0; //be safe! + + //be safe! + en[255]=0; + s[0]=0; while(en[i]!=0) { diff --git a/src/core/Effect.cpp b/src/core/Effect.cpp index 8cdcc9c600a..c842977532f 100644 --- a/src/core/Effect.cpp +++ b/src/core/Effect.cpp @@ -36,9 +36,8 @@ Effect::Effect( const Plugin::Descriptor * _desc, Model * _parent, const Descriptor::SubPluginFeatures::Key * _key ) : - Plugin( _desc, _parent ), + Plugin( _desc, _parent, _key ), m_parent( NULL ), - m_key( _key ? *_key : Descriptor::SubPluginFeatures::Key() ), m_processors( 1 ), m_okay( true ), m_noRun( false ), @@ -117,7 +116,7 @@ Effect * Effect::instantiate( const QString& pluginName, Model * _parent, Descriptor::SubPluginFeatures::Key * _key ) { - Plugin * p = Plugin::instantiate( pluginName, _parent, _key ); + Plugin * p = Plugin::instantiateWithKey( pluginName, _parent, _key ); // check whether instantiated plugin is an effect if( dynamic_cast( p ) != NULL ) { diff --git a/src/core/Engine.cpp b/src/core/Engine.cpp index a53abbe5d45..d2b4a9cc2aa 100644 --- a/src/core/Engine.cpp +++ b/src/core/Engine.cpp @@ -29,6 +29,7 @@ #include "FxMixer.h" #include "Ladspa2LMMS.h" #include "Mixer.h" +#include "Plugin.h" #include "PresetPreviewPlayHandle.h" #include "ProjectJournal.h" #include "Song.h" @@ -41,6 +42,7 @@ BBTrackContainer * LmmsCore::s_bbTrackContainer = NULL; Song * LmmsCore::s_song = NULL; ProjectJournal * LmmsCore::s_projectJournal = NULL; Ladspa2LMMS * LmmsCore::s_ladspaManager = NULL; +void* LmmsCore::s_dndPluginKey = nullptr; DummyTrackContainer * LmmsCore::s_dummyTC = NULL; @@ -103,6 +105,12 @@ void LmmsCore::destroy() delete ConfigManager::inst(); } +float LmmsCore::framesPerTick(sample_rate_t sample_rate) +{ + return sample_rate * 60.0f * 4 / + DefaultTicksPerTact / s_song->getTempo(); +} + @@ -112,4 +120,24 @@ void LmmsCore::updateFramesPerTick() DefaultTicksPerTact / s_song->getTempo(); } + + + +void LmmsCore::setDndPluginKey(void *newKey) +{ + Q_ASSERT(static_cast(newKey)); + s_dndPluginKey = newKey; +} + + + + +void *LmmsCore::pickDndPluginKey() +{ + return s_dndPluginKey; +} + + + + LmmsCore * LmmsCore::s_instanceOfMe = NULL; diff --git a/src/core/EnvelopeAndLfoParameters.cpp b/src/core/EnvelopeAndLfoParameters.cpp index 9001cd796de..27a73b2c1a5 100644 --- a/src/core/EnvelopeAndLfoParameters.cpp +++ b/src/core/EnvelopeAndLfoParameters.cpp @@ -131,32 +131,32 @@ EnvelopeAndLfoParameters::EnvelopeAndLfoParameters( instances()->add( this ); connect( &m_predelayModel, SIGNAL( dataChanged() ), - this, SLOT( updateSampleVars() ) ); + this, SLOT( updateSampleVars() ), Qt::DirectConnection ); connect( &m_attackModel, SIGNAL( dataChanged() ), - this, SLOT( updateSampleVars() ) ); + this, SLOT( updateSampleVars() ), Qt::DirectConnection ); connect( &m_holdModel, SIGNAL( dataChanged() ), - this, SLOT( updateSampleVars() ) ); + this, SLOT( updateSampleVars() ), Qt::DirectConnection ); connect( &m_decayModel, SIGNAL( dataChanged() ), - this, SLOT( updateSampleVars() ) ); + this, SLOT( updateSampleVars() ), Qt::DirectConnection ); connect( &m_sustainModel, SIGNAL( dataChanged() ), - this, SLOT( updateSampleVars() ) ); + this, SLOT( updateSampleVars() ), Qt::DirectConnection ); connect( &m_releaseModel, SIGNAL( dataChanged() ), - this, SLOT( updateSampleVars() ) ); + this, SLOT( updateSampleVars() ), Qt::DirectConnection ); connect( &m_amountModel, SIGNAL( dataChanged() ), - this, SLOT( updateSampleVars() ) ); + this, SLOT( updateSampleVars() ), Qt::DirectConnection ); connect( &m_lfoPredelayModel, SIGNAL( dataChanged() ), - this, SLOT( updateSampleVars() ) ); + this, SLOT( updateSampleVars() ), Qt::DirectConnection ); connect( &m_lfoAttackModel, SIGNAL( dataChanged() ), - this, SLOT( updateSampleVars() ) ); + this, SLOT( updateSampleVars() ), Qt::DirectConnection ); connect( &m_lfoSpeedModel, SIGNAL( dataChanged() ), - this, SLOT( updateSampleVars() ) ); + this, SLOT( updateSampleVars() ), Qt::DirectConnection ); connect( &m_lfoAmountModel, SIGNAL( dataChanged() ), - this, SLOT( updateSampleVars() ) ); + this, SLOT( updateSampleVars() ), Qt::DirectConnection ); connect( &m_lfoWaveModel, SIGNAL( dataChanged() ), - this, SLOT( updateSampleVars() ) ); + this, SLOT( updateSampleVars() ), Qt::DirectConnection ); connect( &m_x100Model, SIGNAL( dataChanged() ), - this, SLOT( updateSampleVars() ) ); + this, SLOT( updateSampleVars() ), Qt::DirectConnection ); connect( Engine::mixer(), SIGNAL( sampleRateChanged() ), this, SLOT( updateSampleVars() ) ); diff --git a/src/core/FxMixer.cpp b/src/core/FxMixer.cpp index 0e5f200d6d5..032090bf1d5 100644 --- a/src/core/FxMixer.cpp +++ b/src/core/FxMixer.cpp @@ -32,6 +32,7 @@ #include "Song.h" #include "InstrumentTrack.h" +#include "SampleTrack.h" #include "BBTrackContainer.h" FxRoute::FxRoute( FxChannel * from, FxChannel * to, float amount ) : @@ -305,6 +306,22 @@ void FxMixer::deleteChannel( int index ) inst->effectChannelModel()->setValue(val-1); } } + else if( t->type() == Track::SampleTrack ) + { + SampleTrack* strk = dynamic_cast( t ); + int val = strk->effectChannelModel()->value(0); + if( val == index ) + { + // we are deleting this track's fx send + // send to master + strk->effectChannelModel()->setValue(0); + } + else if( val > index ) + { + // subtract 1 to make up for the missing channel + strk->effectChannelModel()->setValue(val-1); + } + } } FxChannel * ch = m_fxChannels[index]; @@ -379,6 +396,19 @@ void FxMixer::moveChannelLeft( int index ) inst->effectChannelModel()->setValue(a); } } + else if( trackList[i]->type() == Track::SampleTrack ) + { + SampleTrack * strk = (SampleTrack *) trackList[i]; + int val = strk->effectChannelModel()->value(0); + if( val == a ) + { + strk->effectChannelModel()->setValue(b); + } + else if( val == b ) + { + strk->effectChannelModel()->setValue(a); + } + } } } @@ -780,4 +810,3 @@ void FxMixer::validateChannelName( int index, int oldIndex ) m_fxChannels[index]->m_name = tr( "FX %1" ).arg( index ); } } - diff --git a/src/core/Instrument.cpp b/src/core/Instrument.cpp index 534bb783a23..ba608da14a2 100644 --- a/src/core/Instrument.cpp +++ b/src/core/Instrument.cpp @@ -27,9 +27,10 @@ #include "DummyInstrument.h" -Instrument::Instrument( InstrumentTrack * _instrument_track, - const Descriptor * _descriptor ) : - Plugin( _descriptor, NULL/* _instrument_track*/ ), +Instrument::Instrument(InstrumentTrack * _instrument_track, + const Descriptor * _descriptor, + const Descriptor::SubPluginFeatures::Key *key) : + Plugin(_descriptor, NULL/* _instrument_track*/, key), m_instrumentTrack( _instrument_track ) { } @@ -56,19 +57,15 @@ f_cnt_t Instrument::beatLen( NotePlayHandle * ) const -Instrument * Instrument::instantiate( const QString & _plugin_name, - InstrumentTrack * _instrument_track ) +Instrument *Instrument::instantiate(const QString &_plugin_name, + InstrumentTrack *_instrument_track, const Descriptor::SubPluginFeatures::Key *key, bool keyFromDnd) { - Plugin * p = Plugin::instantiate( _plugin_name, _instrument_track, - _instrument_track ); - // check whether instantiated plugin is an instrument - if( dynamic_cast( p ) != NULL ) - { - // everything ok, so return pointer - return dynamic_cast( p ); - } - - // not quite... so delete plugin and return dummy instrument + if(keyFromDnd) + Q_ASSERT(!key); + // copy from above // TODO! common cleaner func + Plugin * p = Plugin::instantiateWithKey(_plugin_name, _instrument_track, key, keyFromDnd); + if(dynamic_cast(p)) + return dynamic_cast(p); delete p; return( new DummyInstrument( _instrument_track ) ); } diff --git a/src/core/LadspaControl.cpp b/src/core/LadspaControl.cpp index cf8c6e4680b..731241b8541 100644 --- a/src/core/LadspaControl.cpp +++ b/src/core/LadspaControl.cpp @@ -42,7 +42,8 @@ LadspaControl::LadspaControl( Model * _parent, port_desc_t * _port, if( m_link ) { connect( &m_linkEnabledModel, SIGNAL( dataChanged() ), - this, SLOT( linkStateChanged() ) ); + this, SLOT( linkStateChanged() ), + Qt::DirectConnection ); } switch( m_port->data_type ) diff --git a/src/core/LadspaManager.cpp b/src/core/LadspaManager.cpp index 4336e50a5d8..febbe5a9192 100644 --- a/src/core/LadspaManager.cpp +++ b/src/core/LadspaManager.cpp @@ -40,7 +40,7 @@ LadspaManager::LadspaManager() { // Make sure plugin search paths are set up - PluginFactory::instance(); + PluginFactory::setupSearchPaths(); QStringList ladspaDirectories = QString( getenv( "LADSPA_PATH" ) ). split( LADSPA_PATH_SEPERATOR ); diff --git a/src/core/LfoController.cpp b/src/core/LfoController.cpp index c1c81119f64..2b2db2f1471 100644 --- a/src/core/LfoController.cpp +++ b/src/core/LfoController.cpp @@ -49,12 +49,12 @@ LfoController::LfoController( Model * _parent ) : { setSampleExact( true ); connect( &m_waveModel, SIGNAL( dataChanged() ), - this, SLOT( updateSampleFunction() ) ); + this, SLOT( updateSampleFunction() ), Qt::DirectConnection ); connect( &m_speedModel, SIGNAL( dataChanged() ), - this, SLOT( updateDuration() ) ); + this, SLOT( updateDuration() ), Qt::DirectConnection ); connect( &m_multiplierModel, SIGNAL( dataChanged() ), - this, SLOT( updateDuration() ) ); + this, SLOT( updateDuration() ), Qt::DirectConnection ); connect( Engine::mixer(), SIGNAL( sampleRateChanged() ), this, SLOT( updateDuration() ) ); diff --git a/src/core/MeterModel.cpp b/src/core/MeterModel.cpp index 87b1b950afb..30db26d9b71 100644 --- a/src/core/MeterModel.cpp +++ b/src/core/MeterModel.cpp @@ -33,9 +33,9 @@ MeterModel::MeterModel( ::Model * _parent ) : m_denominatorModel( 4, 1, 32, this, tr( "Denominator" ) ) { connect( &m_numeratorModel, SIGNAL( dataChanged() ), - this, SIGNAL( dataChanged() ) ); + this, SIGNAL( dataChanged() ), Qt::DirectConnection ); connect( &m_denominatorModel, SIGNAL( dataChanged() ), - this, SIGNAL( dataChanged() ) ); + this, SIGNAL( dataChanged() ), Qt::DirectConnection ); } diff --git a/src/core/MixHelpers.cpp b/src/core/MixHelpers.cpp index 7ff8dea1e0a..de1c5cfc3a8 100644 --- a/src/core/MixHelpers.cpp +++ b/src/core/MixHelpers.cpp @@ -23,9 +23,14 @@ */ #include "MixHelpers.h" + +#include + #include "lmms_math.h" #include "ValueBuffer.h" +#include + static bool s_NaNHandler; diff --git a/src/core/Mixer.cpp b/src/core/Mixer.cpp index e0ac414c25b..2550b072e76 100644 --- a/src/core/Mixer.cpp +++ b/src/core/Mixer.cpp @@ -186,8 +186,8 @@ Mixer::~Mixer() } delete m_fifo; - delete m_audioDev; delete m_midiClient; + delete m_audioDev; for( int i = 0; i < 3; i++ ) { @@ -577,21 +577,35 @@ void Mixer::changeQuality( const struct qualitySettings & _qs ) -void Mixer::setAudioDevice( AudioDevice * _dev, - bool startNow ) +void Mixer::doSetAudioDevice( AudioDevice * _dev ) { - stopProcessing(); + // TODO: Use shared_ptr here in the future. + // Currently, this is safe, because this is only called by + // ProjectRenderer, and after ProjectRenderer calls this function, + // it does not access the old device anymore. + if( m_audioDev != m_oldAudioDev ) {delete m_audioDev;} - if( _dev == NULL ) + if( _dev ) { - printf( "param _dev == NULL in Mixer::setAudioDevice(...). " - "Trying any working audio-device\n" ); - m_audioDev = tryAudioDevices(); + m_audioDev = _dev; } else { - m_audioDev = _dev; + printf( "param _dev == NULL in Mixer::setAudioDevice(...). " + "Trying any working audio-device\n" ); + m_audioDev = tryAudioDevices(); } +} + + + + +void Mixer::setAudioDevice( AudioDevice * _dev, + bool startNow ) +{ + stopProcessing(); + + doSetAudioDevice( _dev ); emit sampleRateChanged(); @@ -601,26 +615,16 @@ void Mixer::setAudioDevice( AudioDevice * _dev, -void Mixer::setAudioDevice( AudioDevice * _dev, +void Mixer::setAudioDevice(AudioDevice * _dev, const struct qualitySettings & _qs, bool _needs_fifo, - bool startNow ) + bool startNow) { - // don't delete the audio-device stopProcessing(); m_qualitySettings = _qs; - if( _dev == NULL ) - { - printf( "param _dev == NULL in Mixer::setAudioDevice(...). " - "Trying any working audio-device\n" ); - m_audioDev = tryAudioDevices(); - } - else - { - m_audioDev = _dev; - } + doSetAudioDevice( _dev ); emit qualitySettingsChanged(); emit sampleRateChanged(); @@ -827,7 +831,9 @@ void Mixer::runChangesInModel() if( m_changesSignal ) { m_waitChangesMutex.lock(); + // allow changes in the model from other threads ... m_changesRequestCondition.wakeOne(); + // ... and wait until they are done m_changesMixerCondition.wait( &m_waitChangesMutex ); m_waitChangesMutex.unlock(); } diff --git a/src/core/ModelVisitor.cpp b/src/core/ModelVisitor.cpp new file mode 100644 index 00000000000..4036f56e0a3 --- /dev/null +++ b/src/core/ModelVisitor.cpp @@ -0,0 +1,44 @@ +/* + * ModelVisitor.cpp - visitors for automatable models + * + * Copyright (c) 2019-2019 Johannes Lorenz + * + * This file is part of LMMS - https://lmms.io + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program (see COPYING); if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + */ + +#include "ModelVisitor.h" + +#include "AutomatableModel.h" +#include "ComboBoxModel.h" +#include "TempoSyncKnobModel.h" + +void ModelVisitor::visit(BoolModel &m) { up(m); } +void ModelVisitor::visit(IntModel &m) { up(m); } +void ModelVisitor::visit(FloatModel &m) { up(m); } +void ModelVisitor::visit(ComboBoxModel &m) { up(m); } +void ModelVisitor::visit(TempoSyncKnobModel &m) { up(m); } + +void ConstModelVisitor::visit(const BoolModel &m) { up(m); } +void ConstModelVisitor::visit(const IntModel &m) { up(m); } +void ConstModelVisitor::visit(const FloatModel &m) { up(m); } +void ConstModelVisitor::visit(const ComboBoxModel &m) { up(m); } +void ConstModelVisitor::visit(const TempoSyncKnobModel &m) { up(m); } + +ModelVisitor::~ModelVisitor() {} +ConstModelVisitor::~ConstModelVisitor() {} diff --git a/src/core/NotePlayHandle.cpp b/src/core/NotePlayHandle.cpp index 8c838f13655..0039f935a5d 100644 --- a/src/core/NotePlayHandle.cpp +++ b/src/core/NotePlayHandle.cpp @@ -62,6 +62,7 @@ NotePlayHandle::NotePlayHandle( InstrumentTrack* instrumentTrack, m_subNotes(), m_released( false ), m_releaseStarted( false ), + m_hasMidiNote( false ), m_hasParent( parent != NULL ), m_parent( parent ), m_hadChildren( false ), @@ -105,17 +106,6 @@ NotePlayHandle::NotePlayHandle( InstrumentTrack* instrumentTrack, m_instrumentTrack->midiNoteOn( *this ); } - if( hasParent() || ! m_instrumentTrack->isArpeggioEnabled() ) - { - const int baseVelocity = m_instrumentTrack->midiPort()->baseVelocity(); - - // send MidiNoteOn event - m_instrumentTrack->processOutEvent( - MidiEvent( MidiNoteOn, midiChannel(), midiKey(), midiVelocity( baseVelocity ) ), - MidiTime::fromFrames( offset(), Engine::framesPerTick() ), - offset() ); - } - if( m_instrumentTrack->instrument()->flags() & Instrument::IsSingleStreamed ) { setUsesBuffer( false ); @@ -205,6 +195,21 @@ void NotePlayHandle::play( sampleFrame * _working_buffer ) } lock(); + + if( m_totalFramesPlayed == 0 && !m_hasMidiNote + && ( hasParent() || ! m_instrumentTrack->isArpeggioEnabled() ) ) + { + m_hasMidiNote = true; + + const int baseVelocity = m_instrumentTrack->midiPort()->baseVelocity(); + + // send MidiNoteOn event + m_instrumentTrack->processOutEvent( + MidiEvent( MidiNoteOn, midiChannel(), midiKey(), midiVelocity( baseVelocity ) ), + MidiTime::fromFrames( offset(), Engine::framesPerTick() ), + offset() ); + } + if( m_frequencyNeedsUpdate ) { updateFrequency(); @@ -357,8 +362,10 @@ void NotePlayHandle::noteOff( const f_cnt_t _s ) m_framesBeforeRelease = _s; m_releaseFramesToDo = qMax( 0, actualReleaseFramesToDo() ); - if( hasParent() || ! m_instrumentTrack->isArpeggioEnabled() ) + if( m_hasMidiNote ) { + m_hasMidiNote = false; + // send MidiNoteOff event m_instrumentTrack->processOutEvent( MidiEvent( MidiNoteOff, midiChannel(), midiKey(), 0 ), @@ -567,13 +574,9 @@ NotePlayHandle * NotePlayHandleManager::acquire( InstrumentTrack* instrumentTrac int midiEventChannel, NotePlayHandle::Origin origin ) { - if( s_availableIndex < 0 ) - { - s_mutex.lockForWrite(); - if( s_availableIndex < 0 ) extend( NPH_CACHE_INCREMENT ); - s_mutex.unlock(); - } - s_mutex.lockForRead(); + // TODO: use some lockless data structures + s_mutex.lockForWrite(); + if (s_availableIndex < 0) { extend(NPH_CACHE_INCREMENT); } NotePlayHandle * nph = s_available[s_availableIndex--]; s_mutex.unlock(); diff --git a/src/core/PeakController.cpp b/src/core/PeakController.cpp index 9e5e654a660..b2e3bc92132 100644 --- a/src/core/PeakController.cpp +++ b/src/core/PeakController.cpp @@ -53,8 +53,10 @@ PeakController::PeakController( Model * _parent, this, SLOT( handleDestroyedEffect( ) ) ); } connect( Engine::mixer(), SIGNAL( sampleRateChanged() ), this, SLOT( updateCoeffs() ) ); - connect( m_peakEffect->attackModel(), SIGNAL( dataChanged() ), this, SLOT( updateCoeffs() ) ); - connect( m_peakEffect->decayModel(), SIGNAL( dataChanged() ), this, SLOT( updateCoeffs() ) ); + connect( m_peakEffect->attackModel(), SIGNAL( dataChanged() ), + this, SLOT( updateCoeffs() ), Qt::DirectConnection ); + connect( m_peakEffect->decayModel(), SIGNAL( dataChanged() ), + this, SLOT( updateCoeffs() ), Qt::DirectConnection ); m_coeffNeedsUpdate = true; } diff --git a/src/core/Plugin.cpp b/src/core/Plugin.cpp index b479d7d8da6..411f6fe5899 100644 --- a/src/core/Plugin.cpp +++ b/src/core/Plugin.cpp @@ -22,12 +22,14 @@ * */ +#include "Plugin.h" + +#include #include #include #include #include -#include "Plugin.h" #include "embed.h" #include "Engine.h" #include "GuiApplication.h" @@ -53,10 +55,12 @@ static Plugin::Descriptor dummyPluginDescriptor = -Plugin::Plugin( const Descriptor * descriptor, Model * parent ) : - Model( parent ), +Plugin::Plugin(const Descriptor * descriptor, Model * parent, const + Descriptor::SubPluginFeatures::Key* key) : + Model(parent), JournallingObject(), - m_descriptor( descriptor ) + m_descriptor(descriptor), + m_key(key ? *key : Descriptor::SubPluginFeatures::Key(m_descriptor)) { if( m_descriptor == NULL ) { @@ -74,6 +78,97 @@ Plugin::~Plugin() +template +T use_this_or(T this_param, T or_param) +{ + return this_param ? this_param : or_param; +} + + + + +QString use_this_or(QString this_param, QString or_param) +{ + return this_param.isNull() ? or_param : this_param; +} + + + + +QString Plugin::displayName() const +{ + return Model::displayName().isEmpty() // currently always empty + ? (m_descriptor->subPluginFeatures && m_key.isValid()) + // get from sub plugin + ? m_key.displayName() + // get from plugin + : m_descriptor->displayName + : Model::displayName(); +} + + + + +const PixmapLoader* Plugin::logo() const +{ + return (m_descriptor->subPluginFeatures && m_key.isValid()) + ? m_key.logo() + : m_descriptor->logo; +} + + + + +QString Plugin::Descriptor::SubPluginFeatures::Key::additionalFileExtensions() const +{ + Q_ASSERT(isValid()); + return desc->subPluginFeatures + // get from sub plugin + ? desc->subPluginFeatures->additionalFileExtensions(*this) + // no sub plugin, so no *additional* file extensions + : QString(); +} + + + + +QString Plugin::Descriptor::SubPluginFeatures::Key::displayName() const +{ + Q_ASSERT(isValid()); + return desc->subPluginFeatures + // get from sub plugin + ? use_this_or(desc->subPluginFeatures->displayName(*this), + QString::fromUtf8(desc->displayName)) + // get from plugin + : desc->displayName; +} + + + + +const PixmapLoader* Plugin::Descriptor::SubPluginFeatures::Key::logo() const +{ + Q_ASSERT(isValid()); + return desc->subPluginFeatures + ? use_this_or(desc->subPluginFeatures->logo(*this), desc->logo) + : desc->logo; +} + + + + +QString Plugin::Descriptor::SubPluginFeatures::Key::description() const +{ + Q_ASSERT(isValid()); + return desc->subPluginFeatures + ? use_this_or(desc->subPluginFeatures->description(*this), + QString::fromUtf8(desc->description)) + : desc->description; +} + + + + void Plugin::loadFile( const QString & ) { } @@ -90,10 +185,38 @@ AutomatableModel * Plugin::childModel( const QString & ) #include "PluginFactory.h" -Plugin * Plugin::instantiate( const QString& pluginName, Model * parent, - void * data ) +Plugin * Plugin::instantiateWithKey(const QString& pluginName, Model * parent, + const Descriptor::SubPluginFeatures::Key *key, + bool keyFromDnd) { + if(keyFromDnd) + Q_ASSERT(!key); + const Descriptor::SubPluginFeatures::Key *keyPtr = keyFromDnd + ? static_cast(Engine::pickDndPluginKey()) + : key; const PluginFactory::PluginInfo& pi = pluginFactory->pluginInfo(pluginName.toUtf8()); + if(keyPtr) + { + // descriptor is not yet set when loading - set it now + Descriptor::SubPluginFeatures::Key keyCopy = *keyPtr; + keyCopy.desc = pi.descriptor; + return Plugin::instantiate(pluginName, parent, &keyCopy); + } + else + return Plugin::instantiate(pluginName, parent, + // the keys are never touched anywhere + const_cast(keyPtr)); +} + + + + +Plugin * Plugin::instantiate(const QString& pluginName, Model * parent, + void *data) +{ + const PluginFactory::PluginInfo& pi = pluginFactory->pluginInfo(pluginName.toUtf8()); + + Plugin* inst; if( pi.isNull() ) { if( gui ) @@ -104,23 +227,31 @@ Plugin * Plugin::instantiate( const QString& pluginName, Model * parent, arg( pluginName ).arg( pluginFactory->errorString(pluginName) ), QMessageBox::Ok | QMessageBox::Default ); } - return new DummyPlugin(); + inst = new DummyPlugin(); } - - InstantiationHook instantiationHook = ( InstantiationHook ) pi.library->resolve( "lmms_plugin_main" ); - if( instantiationHook == NULL ) + else { - if( gui ) + InstantiationHook instantiationHook; + if ((instantiationHook = ( InstantiationHook ) pi.library->resolve( "lmms_plugin_main" ))) { - QMessageBox::information( NULL, - tr( "Error while loading plugin" ), - tr( "Failed to load plugin \"%1\"!").arg( pluginName ), - QMessageBox::Ok | QMessageBox::Default ); + inst = instantiationHook(parent, data); + if(!inst) { + inst = new DummyPlugin(); + } + } + else + { + if( gui ) + { + QMessageBox::information( NULL, + tr( "Error while loading plugin" ), + tr( "Failed to load plugin \"%1\"!").arg( pluginName ), + QMessageBox::Ok | QMessageBox::Default ); + } + inst = new DummyPlugin(); } - return new DummyPlugin(); } - Plugin * inst = instantiationHook( parent, data ); return inst; } diff --git a/src/core/PluginFactory.cpp b/src/core/PluginFactory.cpp index a87e492702d..abf6421229e 100644 --- a/src/core/PluginFactory.cpp +++ b/src/core/PluginFactory.cpp @@ -28,8 +28,11 @@ #include #include #include +#include "lmmsconfig.h" #include "ConfigManager.h" +#include "Plugin.h" +#include "embed.h" #ifdef LMMS_BUILD_WIN32 QStringList nameFilters("*.dll"); @@ -45,6 +48,16 @@ qint64 qHash(const QFileInfo& fi) std::unique_ptr PluginFactory::s_instance; PluginFactory::PluginFactory() +{ + setupSearchPaths(); + discoverPlugins(); +} + +PluginFactory::~PluginFactory() +{ +} + +void PluginFactory::setupSearchPaths() { // Adds a search path relative to the main executable if the path exists. auto addRelativeIfExists = [](const QString & path) { @@ -76,12 +89,6 @@ PluginFactory::PluginFactory() QDir::addSearchPath("plugins", env_path); QDir::addSearchPath("plugins", ConfigManager::inst()->workingDir() + "plugins"); - - discoverPlugins(); -} - -PluginFactory::~PluginFactory() -{ } PluginFactory* PluginFactory::instance() @@ -107,9 +114,9 @@ const PluginFactory::PluginInfoList& PluginFactory::pluginInfos() const return m_pluginInfos; } -const PluginFactory::PluginInfo PluginFactory::pluginSupportingExtension(const QString& ext) +const PluginFactory::PluginInfoAndKey PluginFactory::pluginSupportingExtension(const QString& ext) { - return m_pluginByExt.value(ext, PluginInfo()); + return m_pluginByExt.value(ext, PluginInfoAndKey()); } const PluginFactory::PluginInfo PluginFactory::pluginInfo(const char* name) const @@ -150,42 +157,78 @@ void PluginFactory::discoverPlugins() for (const QFileInfo& file : files) { auto library = std::make_shared(file.absoluteFilePath()); - if (! library->load()) { m_errors[file.baseName()] = library->errorString(); qWarning("%s", library->errorString().toLocal8Bit().data()); continue; } - if (library->resolve("lmms_plugin_main") == nullptr) { - continue; - } - QString descriptorName = file.baseName() + "_plugin_descriptor"; - if( descriptorName.left(3) == "lib" ) + Plugin::Descriptor* pluginDescriptor = nullptr; + if (library->resolve("lmms_plugin_main")) { - descriptorName = descriptorName.mid(3); + QString descriptorName = file.baseName() + "_plugin_descriptor"; + if( descriptorName.left(3) == "lib" ) + { + descriptorName = descriptorName.mid(3); + } + + pluginDescriptor = reinterpret_cast(library->resolve(descriptorName.toUtf8().constData())); + if(pluginDescriptor == nullptr) + { + qWarning() << qApp->translate("PluginFactory", "LMMS plugin %1 does not have a plugin descriptor named %2!"). + arg(file.absoluteFilePath()).arg(descriptorName); + continue; + } } - Plugin::Descriptor* pluginDescriptor = reinterpret_cast(library->resolve(descriptorName.toUtf8().constData())); - if(pluginDescriptor == nullptr) + if(pluginDescriptor) { - qWarning() << qApp->translate("PluginFactory", "LMMS plugin %1 does not have a plugin descriptor named %2!"). - arg(file.absoluteFilePath()).arg(descriptorName); - continue; + PluginInfo info; + info.file = file; + info.library = library; + info.descriptor = pluginDescriptor; + pluginInfos << info; + + auto addSupportedFileTypes = + [this](QString supportedFileTypes, + const PluginInfo& info, + const Plugin::Descriptor::SubPluginFeatures::Key* key = nullptr) + { + if(!supportedFileTypes.isNull()) + { + for (const QString& ext : supportedFileTypes.split(',')) + { + //qDebug() << "Plugin " << info.name() + // << "supports" << ext; + PluginInfoAndKey infoAndKey; + infoAndKey.info = info; + infoAndKey.key = key + ? *key + : Plugin::Descriptor::SubPluginFeatures::Key(); + m_pluginByExt.insert(ext, infoAndKey); + } + } + }; + + if (info.descriptor->supportedFileTypes) + addSupportedFileTypes(QString(info.descriptor->supportedFileTypes), info); + + if (info.descriptor->subPluginFeatures) + { + Plugin::Descriptor::SubPluginFeatures::KeyList + subPluginKeys; + info.descriptor->subPluginFeatures->listSubPluginKeys( + info.descriptor, + subPluginKeys); + for(const Plugin::Descriptor::SubPluginFeatures::Key& key + : subPluginKeys) + { + addSupportedFileTypes(key.additionalFileExtensions(), info, &key); + } + } + + descriptors.insert(info.descriptor->type, info.descriptor); } - - PluginInfo info; - info.file = file; - info.library = library; - info.descriptor = pluginDescriptor; - pluginInfos << info; - - for (const QString& ext : QString(info.descriptor->supportedFileTypes).split(',')) - { - m_pluginByExt.insert(ext, info); - } - - descriptors.insert(info.descriptor->type, info.descriptor); } m_pluginInfos = pluginInfos; diff --git a/src/core/PluginIssue.cpp b/src/core/PluginIssue.cpp new file mode 100644 index 00000000000..4a8b2ee5b4e --- /dev/null +++ b/src/core/PluginIssue.cpp @@ -0,0 +1,72 @@ +/* + * PluginIssue.h - PluginIssue class + * + * Copyright (c) 2019 Johannes Lorenz + * + * This file is part of LMMS - https://lmms.io + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program (see COPYING); if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + */ + +#include + +#include "PluginIssue.h" + +const char *PluginIssue::msgFor(const PluginIssueType &it) +{ + switch (it) + { + case unknownPortFlow: + return "unknown port flow for mandatory port"; + case unknownPortType: + return "unknown port type for mandatory port"; + case tooManyInputChannels: + return "too many audio input channels"; + case tooManyOutputChannels: + return "too many audio output channels"; + case noOutputChannel: + return "no audio output channel"; + case portHasNoDef: + return "port is missing default value"; + case portHasNoMin: + return "port is missing min value"; + case portHasNoMax: + return "port is missing max value"; + case featureNotSupported: + return "required feature not supported"; + case badPortType: + return "unsupported port type"; + case noIssue: + return nullptr; + } + return nullptr; +} + + + + +QDebug operator<<(QDebug stream, const PluginIssue &iss) +{ + stream << PluginIssue::msgFor(iss.m_issueType); + if (iss.m_info.length()) + { + stream.nospace() << ": " << iss.m_info.c_str(); + } + return stream; +} + + diff --git a/src/core/PresetPreviewPlayHandle.cpp b/src/core/PresetPreviewPlayHandle.cpp index dc36819b7d7..ca0e5219499 100644 --- a/src/core/PresetPreviewPlayHandle.cpp +++ b/src/core/PresetPreviewPlayHandle.cpp @@ -137,8 +137,10 @@ PresetPreviewPlayHandle::PresetPreviewPlayHandle( const QString & _preset_file, suffix().toLower(); if( i == NULL || !i->descriptor()->supportsFileType( ext ) ) { + const PluginFactory::PluginInfoAndKey& infoAndKey = + pluginFactory->pluginSupportingExtension(ext); i = s_previewTC->previewInstrumentTrack()-> - loadInstrument(pluginFactory->pluginSupportingExtension(ext).name()); + loadInstrument(infoAndKey.info.name(), &infoAndKey.key); } if( i != NULL ) { diff --git a/src/core/ProjectJournal.cpp b/src/core/ProjectJournal.cpp index ce811dbc595..e3cd362cb66 100644 --- a/src/core/ProjectJournal.cpp +++ b/src/core/ProjectJournal.cpp @@ -29,6 +29,8 @@ #include "JournallingObject.h" #include "Song.h" +//! Avoid clashes between loaded IDs (have the bit cleared) +//! and newly created IDs (have the bit set) static const int EO_ID_MSB = 1 << 23; const int ProjectJournal::MAX_UNDO_STATES = 100; // TODO: make this configurable in settings diff --git a/src/core/SampleBuffer.cpp b/src/core/SampleBuffer.cpp index 0f58e756007..7795925297b 100644 --- a/src/core/SampleBuffer.cpp +++ b/src/core/SampleBuffer.cpp @@ -73,7 +73,7 @@ SampleBuffer::SampleBuffer() : m_amplification( 1.0f ), m_reversed( false ), m_frequency( BaseFreq ), - m_sampleRate( Engine::mixer()->baseSampleRate() ) + m_sampleRate( mixerSampleRate () ) { connect( Engine::mixer(), SIGNAL( sampleRateChanged() ), this, SLOT( sampleRateChanged() ) ); @@ -143,6 +143,11 @@ void SampleBuffer::sampleRateChanged() update( true ); } +sample_rate_t SampleBuffer::mixerSampleRate() +{ + return Engine::mixer()->processingSampleRate(); +} + void SampleBuffer::update( bool _keep_settings ) { @@ -178,7 +183,7 @@ void SampleBuffer::update( bool _keep_settings ) int_sample_t * buf = NULL; sample_t * fbuf = NULL; ch_cnt_t channels = DEFAULT_CHANNELS; - sample_rate_t samplerate = Engine::mixer()->baseSampleRate(); + sample_rate_t samplerate = mixerSampleRate(); m_frames = 0; const QFileInfo fileInfo( file ); @@ -366,10 +371,10 @@ void SampleBuffer::normalizeSampleRate( const sample_rate_t _src_sr, bool _keep_settings ) { // do samplerate-conversion to our default-samplerate - if( _src_sr != Engine::mixer()->baseSampleRate() ) + if( _src_sr != mixerSampleRate() ) { SampleBuffer * resampled = resample( _src_sr, - Engine::mixer()->baseSampleRate() ); + mixerSampleRate() ); MM_FREE( m_data ); m_frames = resampled->frames(); m_data = MM_ALLOC( sampleFrame, m_frames ); @@ -931,7 +936,7 @@ void SampleBuffer::visualize( QPainter & _p, const QRect & _dr, const float y_space = h*0.5f; const int nb_frames = focus_on_range ? _to_frame - _from_frame : m_frames; - const int fpp = tLimit( nb_frames / w, 1, 20 ); + const int fpp = qBound( 1, nb_frames / w, 20 ); QPointF * l = new QPointF[nb_frames / fpp + 1]; QPointF * r = new QPointF[nb_frames / fpp + 1]; int n = 0; diff --git a/src/core/SamplePlayHandle.cpp b/src/core/SamplePlayHandle.cpp index cae2f3cde01..77a254cce46 100644 --- a/src/core/SamplePlayHandle.cpp +++ b/src/core/SamplePlayHandle.cpp @@ -141,7 +141,7 @@ bool SamplePlayHandle::isFromTrack( const Track * _track ) const f_cnt_t SamplePlayHandle::totalFrames() const { - return ( m_sampleBuffer->endFrame() - m_sampleBuffer->startFrame() ) * ( Engine::mixer()->processingSampleRate() / Engine::mixer()->baseSampleRate() ); + return ( m_sampleBuffer->endFrame() - m_sampleBuffer->startFrame() ) * ( Engine::mixer()->processingSampleRate() / m_sampleBuffer->sampleRate() ); } diff --git a/src/core/Song.cpp b/src/core/Song.cpp index 2f57b51c3f5..336aa3df273 100644 --- a/src/core/Song.cpp +++ b/src/core/Song.cpp @@ -92,18 +92,18 @@ Song::Song() : { for(int i = 0; i < Mode_Count; ++i) m_elapsedMilliSeconds[i] = 0; connect( &m_tempoModel, SIGNAL( dataChanged() ), - this, SLOT( setTempo() ) ); + this, SLOT( setTempo() ), Qt::DirectConnection ); connect( &m_tempoModel, SIGNAL( dataUnchanged() ), - this, SLOT( setTempo() ) ); + this, SLOT( setTempo() ), Qt::DirectConnection ); connect( &m_timeSigModel, SIGNAL( dataChanged() ), - this, SLOT( setTimeSignature() ) ); + this, SLOT( setTimeSignature() ), Qt::DirectConnection ); connect( Engine::mixer(), SIGNAL( sampleRateChanged() ), this, SLOT( updateFramesPerTick() ) ); connect( &m_masterVolumeModel, SIGNAL( dataChanged() ), - this, SLOT( masterVolumeChanged() ) ); + this, SLOT( masterVolumeChanged() ), Qt::DirectConnection ); /* connect( &m_masterPitchModel, SIGNAL( dataChanged() ), this, SLOT( masterPitchChanged() ) );*/ @@ -1212,6 +1212,7 @@ void Song::loadProject( const QString & fileName ) bool Song::saveProjectFile( const QString & filename ) { DataFile dataFile( DataFile::SongProject ); + m_savingProject = true; m_tempoModel.saveSettings( dataFile, dataFile.head(), "bpm" ); m_timeSigModel.saveSettings( dataFile, dataFile.head(), "timesig" ); @@ -1233,6 +1234,8 @@ bool Song::saveProjectFile( const QString & filename ) saveControllerStates( dataFile, dataFile.content() ); + m_savingProject = false; + return dataFile.writeFile( filename ); } @@ -1265,7 +1268,11 @@ bool Song::guiSaveProjectAs( const QString & _file_name ) m_oldFileName = m_fileName; setProjectFileName(_file_name); - if(!guiSaveProject()) + bool saveResult = guiSaveProject(); + // After saving as, restore default save options. + m_saveOptions.setDefaultOptions(); + + if(!saveResult) { // Saving failed. Restore old filenames. setProjectFileName(m_oldFileName); @@ -1434,3 +1441,7 @@ QString Song::errorSummary() return errors; } + +bool Song::isSavingProject() const { + return m_savingProject; +} diff --git a/src/core/TempoSyncKnobModel.cpp b/src/core/TempoSyncKnobModel.cpp index e94c6e42446..a85ca2e9ff8 100644 --- a/src/core/TempoSyncKnobModel.cpp +++ b/src/core/TempoSyncKnobModel.cpp @@ -42,7 +42,8 @@ TempoSyncKnobModel::TempoSyncKnobModel( const float _val, const float _min, m_custom( _parent ) { connect( Engine::getSong(), SIGNAL( tempoChanged( bpm_t ) ), - this, SLOT( calculateTempoSyncTime( bpm_t ) ) ); + this, SLOT( calculateTempoSyncTime( bpm_t ) ), + Qt::DirectConnection ); } @@ -154,7 +155,8 @@ void TempoSyncKnobModel::setSyncMode( TempoSyncMode _new_mode ) if( _new_mode == SyncCustom ) { connect( &m_custom, SIGNAL( dataChanged() ), - this, SLOT( updateCustom() ) ); + this, SLOT( updateCustom() ), + Qt::DirectConnection ); } } calculateTempoSyncTime( Engine::getSong()->getTempo() ); diff --git a/src/core/Track.cpp b/src/core/Track.cpp index 5e6758fdecb..64c17c9e8ec 100644 --- a/src/core/Track.cpp +++ b/src/core/Track.cpp @@ -328,8 +328,8 @@ TrackContentObjectView::~TrackContentObjectView() /*! \brief Update a TrackContentObjectView * - * TCO's get drawn only when needed, - * and when a TCO is updated, + * TCO's get drawn only when needed, + * and when a TCO is updated, * it needs to be redrawn. * */ @@ -525,7 +525,7 @@ void TrackContentObjectView::dragEnterEvent( QDragEnterEvent * dee ) { TrackContentWidget * tcw = getTrackView()->getTrackContentWidget(); MidiTime tcoPos = MidiTime( m_tco->startPosition().getTact(), 0 ); - if( tcw->canPasteSelection( tcoPos, dee->mimeData() ) == false ) + if( tcw->canPasteSelection( tcoPos, dee ) == false ) { dee->ignore(); } @@ -598,9 +598,9 @@ void TrackContentObjectView::dropEvent( QDropEvent * de ) */ void TrackContentObjectView::leaveEvent( QEvent * e ) { - while( QApplication::overrideCursor() != NULL ) + if( cursor().shape() != Qt::BitmapCursor ) { - QApplication::restoreOverrideCursor(); + setCursor( QCursor( embed::getIconPixmap( "hand" ), 3, 3 ) ); } if( e != NULL ) { @@ -630,9 +630,12 @@ DataFile TrackContentObjectView::createTCODataFiles( it != tcoViews.end(); ++it ) { // Insert into the dom under the "tcos" element - int trackIndex = tc->tracks().indexOf( ( *it )->m_trackView->getTrack() ); + Track* tcoTrack = ( *it )->m_trackView->getTrack(); + int trackIndex = tc->tracks().indexOf( tcoTrack ); QDomElement tcoElement = dataFile.createElement( "tco" ); tcoElement.setAttribute( "trackIndex", trackIndex ); + tcoElement.setAttribute( "trackType", tcoTrack->type() ); + tcoElement.setAttribute( "trackName", tcoTrack->name() ); ( *it )->m_tco->saveState( dataFile, tcoElement ); tcoParent.appendChild( tcoElement ); } @@ -649,6 +652,7 @@ DataFile TrackContentObjectView::createTCODataFiles( QDomElement metadata = dataFile.createElement( "copyMetadata" ); // initialTrackIndex is the index of the track that was touched metadata.setAttribute( "initialTrackIndex", initialTrackIndex ); + metadata.setAttribute( "trackContainerId", tc->id() ); // grabbedTCOPos is the pos of the tact containing the TCO we grabbed metadata.setAttribute( "grabbedTCOPos", m_tco->startPosition() ); @@ -742,20 +746,17 @@ void TrackContentObjectView::mousePressEvent( QMouseEvent * me ) && !m_tco->getAutoResize() ) { m_action = ResizeLeft; - QCursor c( Qt::SizeHorCursor ); - QApplication::setOverrideCursor( c ); + setCursor( Qt::SizeHorCursor ); } else if( me->x() < width() - RESIZE_GRIP_WIDTH ) { m_action = Move; - QCursor c( Qt::SizeAllCursor ); - QApplication::setOverrideCursor( c ); + setCursor( Qt::SizeAllCursor ); } else if( !m_tco->getAutoResize() ) { m_action = Resize; - QCursor c( Qt::SizeHorCursor ); - QApplication::setOverrideCursor( c ); + setCursor( Qt::SizeHorCursor ); } if( m_action == Move ) @@ -1003,17 +1004,7 @@ void TrackContentObjectView::mouseMoveEvent( QMouseEvent * me ) if( ( me->x() > width() - RESIZE_GRIP_WIDTH && !me->buttons() && !m_tco->getAutoResize() ) || ( me->x() < RESIZE_GRIP_WIDTH && !me->buttons() && sTco && !m_tco->getAutoResize() ) ) { - if( QApplication::overrideCursor() != NULL && - QApplication::overrideCursor()->shape() != - Qt::SizeHorCursor ) - { - while( QApplication::overrideCursor() != NULL ) - { - QApplication::restoreOverrideCursor(); - } - } - QCursor c( Qt::SizeHorCursor ); - QApplication::setOverrideCursor( c ); + setCursor( Qt::SizeHorCursor ); } else { @@ -1190,7 +1181,7 @@ void TrackContentWidget::updateBackground() // draw lines // vertical lines - pmp.setPen( QPen( gridColor(), 1 ) ); + pmp.setPen( QPen( gridColor(), 1 ) ); for( float x = 0; x < w * 2; x += ppt ) { pmp.drawLine( QLineF( x, 0.0, x, h ) ); @@ -1201,9 +1192,9 @@ void TrackContentWidget::updateBackground() { pmp.drawLine( QLineF( x, 0.0, x, h ) ); } - + // horizontal line - pmp.setPen( QPen( gridColor(), 1 ) ); + pmp.setPen( QPen( gridColor(), 1 ) ); pmp.drawLine( 0, h-1, w*2, h-1 ); pmp.end(); @@ -1386,8 +1377,8 @@ MidiTime TrackContentWidget::getPosition( int mouseX ) */ void TrackContentWidget::dragEnterEvent( QDragEnterEvent * dee ) { - MidiTime tcoPos = MidiTime( getPosition( dee->pos().x() ).getTact(), 0 ); - if( canPasteSelection( tcoPos, dee->mimeData() ) == false ) + MidiTime tcoPos = getPosition( dee->pos().x() ); + if( canPasteSelection( tcoPos, dee ) == false ) { dee->ignore(); } @@ -1406,8 +1397,10 @@ void TrackContentWidget::dragEnterEvent( QDragEnterEvent * dee ) * \param tcoPos the position of the TCO slot being pasted on * \param de the DropEvent generated */ -bool TrackContentWidget::canPasteSelection( MidiTime tcoPos, const QMimeData * mimeData ) +bool TrackContentWidget::canPasteSelection( MidiTime tcoPos, const QDropEvent* de ) { + const QMimeData * mimeData = de->mimeData(); + Track * t = getTrack(); QString type = StringPairDrag::decodeMimeKey( mimeData ); QString value = StringPairDrag::decodeMimeValue( mimeData ); @@ -1437,7 +1430,9 @@ bool TrackContentWidget::canPasteSelection( MidiTime tcoPos, const QMimeData * m const int currentTrackIndex = tracks.indexOf( t ); // Don't paste if we're on the same tact - if( tcoPos == grabbedTCOTact && currentTrackIndex == initialTrackIndex ) + auto sourceTrackContainerId = metadata.attributeNode( "trackContainerId" ).value().toUInt(); + if( de->source() && sourceTrackContainerId == t->trackContainer()->id() && + tcoPos == grabbedTCOTact && currentTrackIndex == initialTrackIndex ) { return false; } @@ -1460,9 +1455,9 @@ bool TrackContentWidget::canPasteSelection( MidiTime tcoPos, const QMimeData * m } // Track must be of the same type - Track * startTrack = tracks.at( trackIndex ); + auto startTrackType = tcoElement.attributeNode("trackType").value().toInt(); Track * endTrack = tracks.at( finalTrackIndex ); - if( startTrack->type() != endTrack->type() ) + if( startTrackType != endTrack->type() ) { return false; } @@ -1478,7 +1473,7 @@ bool TrackContentWidget::canPasteSelection( MidiTime tcoPos, const QMimeData * m */ bool TrackContentWidget::pasteSelection( MidiTime tcoPos, QDropEvent * de ) { - if( canPasteSelection( tcoPos, de->mimeData() ) == false ) + if( canPasteSelection( tcoPos, de ) == false ) { return false; } @@ -1548,7 +1543,8 @@ bool TrackContentWidget::pasteSelection( MidiTime tcoPos, QDropEvent * de ) } //check tco name, if the same as source track name dont copy - if( tco->name() == tracks[trackIndex]->name() ) + QString sourceTrackName = outerTCOElement.attributeNode( "trackName" ).value(); + if( tco->name() == sourceTrackName ) { tco->setName( "" ); } @@ -1919,18 +1915,20 @@ void TrackOperationsWidget::updateMenu() toMenu->addAction( embed::getIconPixmap( "cancel", 16, 16 ), tr( "Remove this track" ), this, SLOT( removeTrack() ) ); - + if( ! m_trackView->trackContainerView()->fixedTCOs() ) { toMenu->addAction( tr( "Clear this track" ), this, SLOT( clearTrack() ) ); } - if( InstrumentTrackView * trackView = dynamic_cast( m_trackView ) ) + if (QMenu *fxMenu = m_trackView->createFxMenu(tr("FX %1: %2"), tr("Assign to new FX Channel"))) { - QMenu *fxMenu = trackView->createFxMenu( tr( "FX %1: %2" ), tr( "Assign to new FX Channel" )); toMenu->addMenu(fxMenu); + } + if (InstrumentTrackView * trackView = dynamic_cast(m_trackView)) + { toMenu->addSeparator(); - toMenu->addMenu( trackView->midiMenu() ); + toMenu->addMenu(trackView->midiMenu()); } if( dynamic_cast( m_trackView ) ) { @@ -2613,7 +2611,7 @@ TrackView::TrackView( Track * track, TrackContainerView * tcv ) : &m_trackContentWidget, SLOT( update() ) ); connect( &m_track->m_soloModel, SIGNAL( dataChanged() ), - m_track, SLOT( toggleSolo() ) ); + m_track, SLOT( toggleSolo() ), Qt::DirectConnection ); // create views for already existing TCOs for( Track::tcoVector::iterator it = m_track->m_trackContentObjects.begin(); @@ -2677,6 +2675,19 @@ void TrackView::update() +/*! \brief Create a menu for assigning/creating channels for this track. + * + */ +QMenu * TrackView::createFxMenu(QString title, QString newFxLabel) +{ + Q_UNUSED(title) + Q_UNUSED(newFxLabel) + return NULL; +} + + + + /*! \brief Close this track View. * */ @@ -2847,12 +2858,12 @@ void TrackView::mouseMoveEvent( QMouseEvent * me ) else if( m_action == MoveTrack ) { // look which track-widget the mouse-cursor is over - const int yPos = + const int yPos = m_trackContainerView->contentWidget()->mapFromGlobal( me->globalPos() ).y(); const TrackView * trackAtY = m_trackContainerView->trackViewAt( yPos ); -// debug code -// qDebug( "y position %d", yPos ); + // debug code + // qDebug( "y position %d", yPos ); // a track-widget not equal to ourself? if( trackAtY != NULL && trackAtY != this ) diff --git a/src/core/audio/AudioAlsa.cpp b/src/core/audio/AudioAlsa.cpp index 45abe677673..b866757061a 100644 --- a/src/core/audio/AudioAlsa.cpp +++ b/src/core/audio/AudioAlsa.cpp @@ -37,10 +37,10 @@ AudioAlsa::AudioAlsa( bool & _success_ful, Mixer* _mixer ) : - AudioDevice( tLimit( + AudioDevice( qBound( + DEFAULT_CHANNELS, ConfigManager::inst()->value( "audioalsa", "channels" ).toInt(), - DEFAULT_CHANNELS, SURROUND_CHANNELS ), - _mixer ), + SURROUND_CHANNELS ), _mixer ), m_handle( NULL ), m_hwParams( NULL ), m_swParams( NULL ), diff --git a/src/core/audio/AudioFileMP3.cpp b/src/core/audio/AudioFileMP3.cpp index cce7ec8e4ce..a00cdf6112d 100644 --- a/src/core/audio/AudioFileMP3.cpp +++ b/src/core/audio/AudioFileMP3.cpp @@ -120,6 +120,7 @@ bool AudioFileMP3::initEncoder() lame_set_brate(m_lame, bitRate); // Add a comment + id3tag_init(m_lame); id3tag_set_comment(m_lame, "Created with LMMS"); return lame_init_params(m_lame) != -1; diff --git a/src/core/audio/AudioJack.cpp b/src/core/audio/AudioJack.cpp index bca41356b93..e149f5cbd96 100644 --- a/src/core/audio/AudioJack.cpp +++ b/src/core/audio/AudioJack.cpp @@ -32,7 +32,6 @@ #include "Engine.h" #include "GuiApplication.h" -#include "templates.h" #include "gui_templates.h" #include "ConfigManager.h" #include "LcdSpinBox.h" @@ -44,10 +43,10 @@ AudioJack::AudioJack( bool & _success_ful, Mixer* _mixer ) : - AudioDevice( tLimit( ConfigManager::inst()->value( - "audiojack", "channels" ).toInt(), - DEFAULT_CHANNELS, SURROUND_CHANNELS ), - _mixer ), + AudioDevice( qBound( + DEFAULT_CHANNELS, + ConfigManager::inst()->value( "audiojack", "channels" ).toInt(), + SURROUND_CHANNELS ), _mixer ), m_client( NULL ), m_active( false ), m_midiClient( NULL ), diff --git a/src/core/audio/AudioOss.cpp b/src/core/audio/AudioOss.cpp index 21f495dca61..c9ad01801b2 100644 --- a/src/core/audio/AudioOss.cpp +++ b/src/core/audio/AudioOss.cpp @@ -69,10 +69,10 @@ AudioOss::AudioOss( bool & _success_ful, Mixer* _mixer ) : - AudioDevice( tLimit( + AudioDevice( qBound( + DEFAULT_CHANNELS, ConfigManager::inst()->value( "audiooss", "channels" ).toInt(), - DEFAULT_CHANNELS, SURROUND_CHANNELS ), - _mixer ), + SURROUND_CHANNELS ), _mixer ), m_convertEndian( false ) { _success_ful = false; diff --git a/src/core/audio/AudioPortAudio.cpp b/src/core/audio/AudioPortAudio.cpp index 5566d7a3634..61dca4a2271 100644 --- a/src/core/audio/AudioPortAudio.cpp +++ b/src/core/audio/AudioPortAudio.cpp @@ -48,16 +48,15 @@ void AudioPortAudioSetupUtil::updateChannels() #include "Engine.h" #include "ConfigManager.h" #include "gui_templates.h" -#include "templates.h" #include "ComboBox.h" #include "Mixer.h" AudioPortAudio::AudioPortAudio( bool & _success_ful, Mixer * _mixer ) : - AudioDevice( tLimit( + AudioDevice( qBound( + DEFAULT_CHANNELS, ConfigManager::inst()->value( "audioportaudio", "channels" ).toInt(), - DEFAULT_CHANNELS, SURROUND_CHANNELS ), - _mixer ), + SURROUND_CHANNELS ), _mixer ), m_paStream( NULL ), m_wasPAInitError( false ), m_outBuf( new surroundSampleFrame[mixer()->framesPerPeriod()] ), diff --git a/src/core/audio/AudioPulseAudio.cpp b/src/core/audio/AudioPulseAudio.cpp index 20a106ed116..050086c603e 100644 --- a/src/core/audio/AudioPulseAudio.cpp +++ b/src/core/audio/AudioPulseAudio.cpp @@ -45,10 +45,10 @@ static void stream_write_callback(pa_stream *s, size_t length, void *userdata) AudioPulseAudio::AudioPulseAudio( bool & _success_ful, Mixer* _mixer ) : - AudioDevice( tLimit( + AudioDevice( qBound( + DEFAULT_CHANNELS, ConfigManager::inst()->value( "audiopa", "channels" ).toInt(), - DEFAULT_CHANNELS, SURROUND_CHANNELS ), - _mixer ), + SURROUND_CHANNELS ), _mixer ), m_s( NULL ), m_quit( false ), m_convertEndian( false ) diff --git a/src/core/audio/AudioSndio.cpp b/src/core/audio/AudioSndio.cpp index 3145eb21868..853d734d5e2 100644 --- a/src/core/audio/AudioSndio.cpp +++ b/src/core/audio/AudioSndio.cpp @@ -36,7 +36,6 @@ #include "Mixer.h" #include "Engine.h" #include "gui_templates.h" -#include "templates.h" #ifdef LMMS_HAVE_UNISTD_H #include @@ -50,10 +49,11 @@ AudioSndio::AudioSndio(bool & _success_ful, Mixer * _mixer) : - AudioDevice( tLimit( - ConfigManager::inst()->value( "audiosndio", "channels" ).toInt(), - DEFAULT_CHANNELS, SURROUND_CHANNELS ), _mixer ), - m_convertEndian ( false ) + AudioDevice( qBound( + DEFAULT_CHANNELS, + ConfigManager::inst()->value( "audiosndio", "channels" ).toInt(), + SURROUND_CHANNELS ), _mixer ), + m_convertEndian ( false ) { _success_ful = false; diff --git a/src/core/audio/AudioSoundIo.cpp b/src/core/audio/AudioSoundIo.cpp index f6c6241274e..cde14a1c5a3 100644 --- a/src/core/audio/AudioSoundIo.cpp +++ b/src/core/audio/AudioSoundIo.cpp @@ -33,14 +33,14 @@ #include "debug.h" #include "ConfigManager.h" #include "gui_templates.h" -#include "templates.h" #include "ComboBox.h" #include "Mixer.h" AudioSoundIo::AudioSoundIo( bool & outSuccessful, Mixer * _mixer ) : - AudioDevice( tLimit( - ConfigManager::inst()->value( "audiosoundio", "channels" ).toInt(), DEFAULT_CHANNELS, SURROUND_CHANNELS ), - _mixer ) + AudioDevice( qBound( + DEFAULT_CHANNELS, + ConfigManager::inst()->value( "audiosoundio", "channels" ).toInt(), + SURROUND_CHANNELS ), _mixer ) { outSuccessful = false; m_soundio = NULL; diff --git a/src/core/midi/MidiAlsaSeq.cpp b/src/core/midi/MidiAlsaSeq.cpp index be1e623de95..e420ebc084c 100644 --- a/src/core/midi/MidiAlsaSeq.cpp +++ b/src/core/midi/MidiAlsaSeq.cpp @@ -100,7 +100,7 @@ MidiAlsaSeq::MidiAlsaSeq() : snd_seq_start_queue( m_seqHandle, m_queueID, NULL ); changeQueueTempo( Engine::getSong()->getTempo() ); connect( Engine::getSong(), SIGNAL( tempoChanged( bpm_t ) ), - this, SLOT( changeQueueTempo( bpm_t ) ) ); + this, SLOT( changeQueueTempo( bpm_t ) ), Qt::DirectConnection ); // initial list-update updatePortList(); diff --git a/src/core/midi/MidiJack.cpp b/src/core/midi/MidiJack.cpp index cea7f7381e7..568b6dae164 100644 --- a/src/core/midi/MidiJack.cpp +++ b/src/core/midi/MidiJack.cpp @@ -61,6 +61,7 @@ static void JackMidiShutdown(void *arg) MidiJack::MidiJack() : MidiClientRaw(), + m_jackClient( nullptr ), m_input_port( NULL ), m_output_port( NULL ), m_quit( false ) diff --git a/src/core/midi/MidiPort.cpp b/src/core/midi/MidiPort.cpp index 9e3cdb13d83..52e0a522362 100644 --- a/src/core/midi/MidiPort.cpp +++ b/src/core/midi/MidiPort.cpp @@ -63,9 +63,12 @@ MidiPort::MidiPort( const QString& name, m_readableModel.setValue( m_mode == Input || m_mode == Duplex ); m_writableModel.setValue( m_mode == Output || m_mode == Duplex ); - connect( &m_readableModel, SIGNAL( dataChanged() ), this, SLOT( updateMidiPortMode() ) ); - connect( &m_writableModel, SIGNAL( dataChanged() ), this, SLOT( updateMidiPortMode() ) ); - connect( &m_outputProgramModel, SIGNAL( dataChanged() ), this, SLOT( updateOutputProgram() ) ); + connect( &m_readableModel, SIGNAL( dataChanged() ), + this, SLOT( updateMidiPortMode() ), Qt::DirectConnection ); + connect( &m_writableModel, SIGNAL( dataChanged() ), + this, SLOT( updateMidiPortMode() ), Qt::DirectConnection ); + connect( &m_outputProgramModel, SIGNAL( dataChanged() ), + this, SLOT( updateOutputProgram() ), Qt::DirectConnection ); // when using with non-raw-clients we can provide buttons showing diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index d5ff6461237..f17ef105fb5 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -56,6 +56,7 @@ SET(LMMS_SRCS gui/widgets/FadeButton.cpp gui/widgets/Fader.cpp gui/widgets/FxLine.cpp + gui/widgets/FxLineLcdSpinBox.cpp gui/widgets/Graph.cpp gui/widgets/GroupBox.cpp gui/widgets/InstrumentFunctionViews.cpp diff --git a/src/gui/EffectSelectDialog.cpp b/src/gui/EffectSelectDialog.cpp index 64b180d4817..79e40427b28 100644 --- a/src/gui/EffectSelectDialog.cpp +++ b/src/gui/EffectSelectDialog.cpp @@ -27,6 +27,7 @@ #include "ui_EffectSelectDialog.h" #include "gui_templates.h" +#include "DummyEffect.h" #include "embed.h" #include "PluginFactory.h" @@ -53,11 +54,6 @@ EffectSelectDialog::EffectSelectDialog( QWidget * _parent ) : if( desc->subPluginFeatures ) { desc->subPluginFeatures->listSubPluginKeys( - // as iterators are always stated to be not - // equal with pointers, we dereference the - // iterator and take the address of the item, - // so we're on the safe side and the compiler - // likely will reduce that to just "it" desc, subPluginEffectKeys ); } @@ -79,14 +75,14 @@ EffectSelectDialog::EffectSelectDialog( QWidget * _parent ) : { QString name; QString type; - if( ( *it ).desc->subPluginFeatures ) + if( it->desc->subPluginFeatures ) { - name = ( *it ).name; - type = ( *it ).desc->displayName; + name = it->displayName(); + type = it->desc->displayName; } else { - name = ( *it ).desc->displayName; + name = it->desc->displayName; type = "LMMS"; } m_sourceModel.setItem( row, 0, new QStandardItem( name ) ); @@ -147,12 +143,17 @@ EffectSelectDialog::~EffectSelectDialog() Effect * EffectSelectDialog::instantiateSelectedPlugin( EffectChain * _parent ) { - if( !m_currentSelection.name.isEmpty() && m_currentSelection.desc ) + Effect* result = nullptr; + if(!m_currentSelection.name.isEmpty() && m_currentSelection.desc) { - return Effect::instantiate( m_currentSelection.desc->name, - _parent, &m_currentSelection ); + result = Effect::instantiate(m_currentSelection.desc->name, + _parent, &m_currentSelection); } - return NULL; + if(!result) + { + result = new DummyEffect(_parent, QDomElement()); + } + return result; } @@ -184,62 +185,63 @@ void EffectSelectDialog::rowChanged( const QModelIndex & _idx, { m_currentSelection = m_effectKeys[m_model.mapToSource( _idx ).row()]; } - if( m_currentSelection.desc ) + if( m_currentSelection.desc ) { m_descriptionWidget = new QWidget; - QHBoxLayout *hbox = new QHBoxLayout( m_descriptionWidget ); - - Plugin::Descriptor const & descriptor = *( m_currentSelection.desc ); - - if ( descriptor.logo ) - { - QLabel *logoLabel = new QLabel( m_descriptionWidget ); - logoLabel->setPixmap( descriptor.logo->pixmap() ); - logoLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); - - hbox->addWidget( logoLabel ); - hbox->setAlignment( logoLabel, Qt::AlignTop); - } - - QWidget *textualInfoWidget = new QWidget( m_descriptionWidget ); - - hbox->addWidget(textualInfoWidget); - - QVBoxLayout * textWidgetLayout = new QVBoxLayout( textualInfoWidget); - textWidgetLayout->setMargin( 4 ); - textWidgetLayout->setSpacing( 0 ); - - if ( m_currentSelection.desc->subPluginFeatures ) - { - QWidget *subWidget = new QWidget(textualInfoWidget); - QVBoxLayout * subLayout = new QVBoxLayout( subWidget ); - subLayout->setMargin( 4 ); - subLayout->setSpacing( 0 ); - m_currentSelection.desc->subPluginFeatures-> - fillDescriptionWidget( subWidget, &m_currentSelection ); - for( QWidget * w : subWidget->findChildren() ) - { - if( w->parent() == subWidget ) - { - subLayout->addWidget( w ); - } - } - - textWidgetLayout->addWidget(subWidget); - } - else - { - QLabel *label = new QLabel(m_descriptionWidget); - QString labelText = "