From a7b37f44a3277f7f29ff7da27368e0dce36b9943 Mon Sep 17 00:00:00 2001 From: Tobias Doerffel Date: Tue, 7 Mar 2006 15:34:27 +0000 Subject: [PATCH] bugfixes and small improvements git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@99 0778d3d1-df1d-0410-868b-ea421aaaa00d --- ChangeLog | 23 + TODO | 10 +- configure.in | 4 +- data/locale/ru.qm | Bin 59081 -> 61733 bytes data/locale/ru.ts | 760 +++++++++++++----- include/sample_buffer.h | 8 +- include/track.h | 1 + .../audio_file_processor.cpp | 2 +- src/core/config_mgr.cpp | 8 + src/core/envelope_tab_widget.cpp | 2 +- src/core/track.cpp | 14 + src/lib/sample_buffer.cpp | 34 +- src/tracks/sample_track.cpp | 13 +- src/widgets/knob.cpp | 4 + 14 files changed, 664 insertions(+), 219 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2f559ad97d..4bbbfff56f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,26 @@ +2006-03-07 Tobias Doerffel + + * src/widgets/knob.cpp: + when moving mouse while having shift pressed, increase/decrease by + single steps + + * src/core/envelope_tab_widget.cpp: + use 10 KHz as filter-maximum instead of 16 KHz + + * include/track.h: + * src/core/track.cpp: + added HACK to avoid crash because of bug in Qt (< 3.3.5) when removing + track + + * src/core/config_mgr.cpp: + - use default-theme-path if theme-path from config-file doesn't exist + - add "/" to theme-path if missing + +2006-03-06 Alexey Kouznetsov + + * locale/ru.ts: + updated Russian translation + 2006-03-05 Tobias Doerffel * src/core/main_window.cpp: diff --git a/TODO b/TODO index 4e1c6d75ed..084d4d889f 100644 --- a/TODO +++ b/TODO @@ -1,9 +1,11 @@ -to be done as soon as possible: - +- add support for panes-interface (like blender) (instead of MDI etc.) +- message when importing unsupported MIDI-file (track-count = 0) +- volume-knobs for each sample-track +- AMS-bindings - recording-functionality - show loading-vst-hint when cloning vestige-track - do not hang when saving while loading VST-plugin -- tempo-recogn. and sync of beat-sample +- tempo-recogn. and sync of beat-samples - do not quantize when importing from MIDI-file - KNOB-setValue!!! - separate GUI and data/sound-processing-code @@ -37,8 +39,6 @@ to be done as soon as possible: - ... - -to be done somewhen in the future: - effect-board -> live-fx from input - event/automation-system - chord-editor? diff --git a/configure.in b/configure.in index 382fd19bfc..093bf7ca8f 100644 --- a/configure.in +++ b/configure.in @@ -2,8 +2,8 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.50) -AC_INIT(lmms, 0.1.4-cvs20060304, tobydox/at/users/dot/sourceforge/dot/net) -AM_INIT_AUTOMAKE(lmms, 0.1.4-cvs20060304) +AC_INIT(lmms, 0.1.4-cvs20060307, tobydox/at/users/dot/sourceforge/dot/net) +AM_INIT_AUTOMAKE(lmms, 0.1.4-cvs20060307) AM_CONFIG_HEADER(config.h) diff --git a/data/locale/ru.qm b/data/locale/ru.qm index 8670553ad499febe543962b939fb12d75670c836..ed2f5992b74f4aae11c58a950b652fbee5ebdeb1 100755 GIT binary patch delta 7095 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 diff --git a/data/locale/ru.ts b/data/locale/ru.ts index 5f943ac29c..82cd71a2cc 100755 --- a/data/locale/ru.ts +++ b/data/locale/ru.ts @@ -410,7 +410,7 @@ http://lmms.sourceforge.net Direction: - Направление: + Направление: arpeggio direction = none = no arpeggio @@ -554,11 +554,27 @@ http://lmms.sourceforge.net DIRECTION: - НАПРАВЛЕНИЕ: + НАПРАВЛЕНИЕ: SORT-MODE - СОРТИРОВАТЬ + СОРТИРОВАТЬ + + + Mode: + Режим: + + + Free + + + + Sort + + + + Sync + @@ -679,7 +695,11 @@ http://lmms.sourceforge.net Beat+Bassline Editor - Редактор ритма/басов + Редактор ритма/басов + + + Beat+Baseline Editor + Редактор ритма/лейтмотива @@ -698,14 +718,65 @@ http://lmms.sourceforge.net Open in Beat+Bassline-Editor - Открыть в редакторе ритма/басов + Открыть в редакторе ритма/басов + + + Open in Beat+Baseline-Editor + Открыть в редакторе ритма/лейтмотива bbTrack Beat/Bassline %1 - Ритм/басы %1 + Ритм/басы %1 + + + Beat/Baseline %1 + Лейтмотив %1 + + + + bitInvader + + Samplelength + + + + Sample Length + Длительность образца + + + Click here if you want a sine-wave for current oscillator. + Сгенерировать гармонический (синусоидальный) сигнал. + + + Click here if you want a triangle-wave for current oscillator. + Сгенерировать треугольный сигнал. + + + Click here if you want a saw-wave for current oscillator. + Сгенерировать пилообразный сигнал. + + + Click here if you want a square-wave for current oscillator. + Сгенерировать меандр. + + + Click here if you want a white-noise for current oscillator. + Сгенерировать белый шум. + + + Click here if you want a user-defined wave-shape for current oscillator. + Задать форму сигнала из файла. + + + Click here to smooth waveform. + Щёлкните чтобы сгладить форму сигнала. + + + Draw your own waveform hereby dragging your mouse onto this graph + Здесь вы можете рисовать собственный сигнал @@ -1283,7 +1354,7 @@ LMMS-working-directory. Run the setup-wizard now? Q/Resonance: - Усиление + Усиление: Use this knob for setting Q/Resonance for the selected filter. Q/Resonance tells the filter, how much it should amplify frequencies near Cutoff-frequency. @@ -1291,7 +1362,7 @@ LMMS-working-directory. Run the setup-wizard now? Q/Resonance - Усиление + Усиление 2x LowPass @@ -1479,7 +1550,256 @@ Make sure, you have write access to the selected file/device! Setting up main-window and workspace... - Создаю рабочее пространство... + Создаю рабочее пространство... + + + Creating new song... + Создаю композицию... + + + Creating GUI... + Создаю GUI... + + + Show/Hide EffectBoard + Показать/скрыть панель эффектов + + + &New + &Новый + + + &Open... + &Открыть... + + + &Save + &Сохранить + + + Save &As... + Сохранить &как... + + + E&xport + &Экспорт + + + &Quit + &Выйти + + + Help + Справка + + + About + О программе + + + &Help + &О программе + + + Show/Hide Piano-Roll + Показать/скрыть синтезатор + + + What's this? + Что это? + + + Show/Hide Beat+Bassline Editor + Показать/скрыть редактор ритма/басов + + + By pressing this button, you can show or hide the Beat+Bassline Editor. The Beat+Bassline Editor is needed for setting beats, opening, adding and removing channels, cutting, copying and pasting beat- and bassline-patterns and other things like that. + По нажатию этой кнопки запускается редактор ритма/басов. Он необходим для установки ритма, добавления и удаления каналов, вырезания, копирования и вставки шаблонов ритма и басов и т. п. + + + Show/Hide Song-Editor + Показать/скрыть редактор мелодии + + + By pressing this button, you can show or hide the Song-Editor. With the Song-Editor you can edit the song and set when and which track should be played. You can also insert and move samples (e.g. rap-samples) directly in the playlist. + По нажатию этой кнопки запускается редактор мелодии. С его помощью вы можеет редактировать композицию, устанавливать время воспроизведения для всех дорожек. Также вы можете вставлять и передвигать образцы непосредственно в списке воспроизведения. + + + My samples + Мои образцы + + + My presets + Мои предустановки + + + My projects + Мои проекты + + + Loading song... + Загружаю композицию... + + + &Settings + &Настройка + + + Show setup wizard + Запустить мастер настройки + + + MultiMedia Project (*.xml) + Мультимедийный проект (*.xml) + + + Show/Hide Project notes + Показать/скрыть комментарий + + + By pressing this button, you can show or hide the project notes window. In this window you can put down your project notes. + Эта кнопка показывает/прячет окно с заметками. В этом окне вы можете помещать любые комментарии к своей композиции. + + + By pressing this button, you can show or hide the EffectBoard. The EffectBoard is a very powerful tool for managing effects for your song. You can insert effects into different effect-channels. + Эта кнопка показывает/прячет панель эффектов. Эта панель является мощным инструментом управления эффектами, которые Вы можете вставлять в особый канал (канал эффектов). + + + Create new project + Создать новый проект + + + Ctrl+N + Ctrl+N + + + Open existing project + Открыть существующий проект + + + Ctrl+O + Ctrl+O + + + Save current project + Сохранить текущий проект + + + Export current project + Экспортировать проект в звуковой файл + + + By pressing this button, you can show or hide the Piano-Roll. With the help of the Piano-Roll you can edit melody-patterns in an easy way. + По нажатию этой кнопки запускается синтезатор LMMS. С его помощью вы можете легко редактировать шблоны мелодии. + + + &Project + &Проект + + + Open project + Открыть проект + + + Save project + Сохранить проект + + + Song management + Управление композициями + + + Import file + Импорт файла + + + My home + Домашний каталог + + + Root directory + Корневой каталог + + + Show settings dialog + Показать окно настройки + + + Help not available + Справка недоступна + + + Currently there's no help available in LMMS. +Please visit http://lmms.sourceforge.net and click on "Documentation". +There hopefully you'll find the stuff you want to know... + Пока что справка для LMMS не написана. +Зайдите на сайт http://lmms.sourceforge.net и пройдите по ссылке "Documentation". +Надеемся, Вы найдёте там нужные материалы... + + + Show/hide Beat+Bassline Editor + Показать/скрыть редактор ритма/басов + + + Show/hide Piano-Roll + Показать/скрыть синтезатор + + + Show/hide Song-Editor + Показать/скрыть редактор мелодии + + + By pressing this button, you can show or hide the Song-Editor. With the help of the Song-Editor you can edit song-playlist and specify when which track should be played. You can also insert and move samples (e.g. rap-samples) directly into the playlist. + По нажатию этой кнопки запускается редактор мелодии. С его помощью вы можеет редактировать композицию, устанавливать время воспроизведения для всех дорожек. Также вы можете вставлять и передвигать образцы непосредственно в списке воспроизведения. + + + Show/hide EffectBoard + Показать/скрыть панель эффектов + + + Show/hide project notes + Показать/скрыть заметки к проекту + + + MultiMedia Project (*.mmp *.xml) + Мультимедийный проект (*.mmp *.xml) + + + MultiMedia Project (*.mmp);;MultiMedia Project Template (*.mpt) + Мультимедийный проект (*.mmp);;Шаблон мультимедийного проекта (*.mpt) + + + Currently there's no help available in LMMS. +Please visit http://wiki.mindrules.net for documentation on LMMS. + Пока что справка для LMMS не написана. +Вероятно, Вы сможете найти нужные материалы на http://wiki.mindrules.net. + + + + mainWindow + + My projects + Мои проекты + + + My samples + Мои образцы + + + My presets + Мои предустановки + + + My home + Домашний каталог + + + Root directory + Корневой каталог + + + Loading song... + Загружаю композицию... Creating new song... @@ -1487,11 +1807,59 @@ Make sure, you have write access to the selected file/device! Creating GUI... - Создаю GUI... + Создаю графический интерфейс... - Show/Hide EffectBoard - Показать/скрыть панель эффектов + Create new project + Создать новый проект + + + Open existing project + Открыть существующий проект + + + Save current project + Сохранить текущий проект + + + Export current project + Экспортировать проект в звуковой файл + + + Show/hide Beat+Bassline Editor + Показать/скрыть редактор ритма/басов + + + By pressing this button, you can show or hide the Beat+Bassline Editor. The Beat+Bassline Editor is needed for setting beats, opening, adding and removing channels, cutting, copying and pasting beat- and bassline-patterns and other things like that. + По нажатию этой кнопки запускается редактор ритма/басов. Он необходим для установки ритма, добавления и удаления каналов, вырезания, копирования и вставки шаблонов ритма и басов и т. п. + + + Show/hide Piano-Roll + Показать/скрыть синтезатор + + + By pressing this button, you can show or hide the Piano-Roll. With the help of the Piano-Roll you can edit melody-patterns in an easy way. + По нажатию этой кнопки запускается синтезатор LMMS. С его помощью вы можете легко редактировать шблоны мелодии. + + + Show/hide Song-Editor + Показать/скрыть редактор мелодии + + + By pressing this button, you can show or hide the Song-Editor. With the help of the Song-Editor you can edit song-playlist and specify when which track should be played. You can also insert and move samples (e.g. rap-samples) directly into the playlist. + По нажатию этой кнопки запускается редактор мелодии. С его помощью вы можеет редактировать композицию, устанавливать время воспроизведения для всех дорожек. Также вы можете вставлять и передвигать образцы непосредственно в списке воспроизведения. + + + Show/hide project notes + Показать/скрыть заметки к проекту + + + By pressing this button, you can show or hide the project notes window. In this window you can put down your project notes. + Эта кнопка показывает/прячет окно с заметками. В этом окне вы можете помещать любые комментарии к своей композиции. + + + &Project + &Проект &New @@ -1509,6 +1877,10 @@ Make sure, you have write access to the selected file/device! Save &As... Сохранить &как... + + Import file + Импорт файла + E&xport &Экспорт @@ -1517,145 +1889,53 @@ Make sure, you have write access to the selected file/device! &Quit &Выйти - - Help - Справка - - - About - О программе - - - &Help - &О программе - - - Show/Hide Piano-Roll - Показать/скрыть синтезатор - - - What's this? - Что это? - - - Show/Hide Beat+Bassline Editor - Показать/скрыть редактор ритма/басов - - - By pressing this button, you can show or hide the Beat+Bassline Editor. The Beat+Bassline Editor is needed for setting beats, opening, adding and removing channels, cutting, copying and pasting beat- and bassline-patterns and other things like that. - По нажатию этой кнопки запускается редактор ритма/басов. Он необходим для установки ритма, добавления и удаления каналов, вырезания, копирования и вставки шаблонов ритма и басов и т. п. - - - Show/Hide Song-Editor - Показать/скрыть редактор мелодии - - - By pressing this button, you can show or hide the Song-Editor. With the Song-Editor you can edit the song and set when and which track should be played. You can also insert and move samples (e.g. rap-samples) directly in the playlist. - По нажатию этой кнопки запускается редактор мелодии. С его помощью вы можеет редактировать композицию, устанавливать время воспроизведения для всех дорожек. Также вы можете вставлять и передвигать образцы непосредственно в списке воспроизведения. - - - My samples - Мои образцы - - - My presets - Мои предустановки - - - My projects - Мои проекты - - - Loading song... - Загружаю композицию... - &Settings &Настройка - - Show setup wizard - Запустить мастер настройки - - - MultiMedia Project (*.xml) - Мультимедийный проект (*.xml) - - - Show/Hide Project notes - Показать/скрыть комментарий - - - By pressing this button, you can show or hide the project notes window. In this window you can put down your project notes. - Эта кнопка показывает/прячет окно с заметками. В этом окне вы можете помещать любые комментарии к своей композиции. - - - By pressing this button, you can show or hide the EffectBoard. The EffectBoard is a very powerful tool for managing effects for your song. You can insert effects into different effect-channels. - Эта кнопка показывает/прячет панель эффектов. Эта панель является мощным инструментом управления эффектами, которые Вы можете вставлять в особый канал (канал эффектов). - - - Create new project - Создать новый проект - - - Ctrl+N - Ctrl+N - - - Open existing project - Открыть существующий проект - - - Ctrl+O - Ctrl+O - - - Save current project - Сохранить текущий проект - - - Export current project - Экспортировать проект в звуковой файл - - - By pressing this button, you can show or hide the Piano-Roll. With the help of the Piano-Roll you can edit melody-patterns in an easy way. - По нажатию этой кнопки запускается синтезатор LMMS. С его помощью вы можете легко редактировать шблоны мелодии. - - - &Project - &Проект - - - Open project - Открыть проект - - - Save project - Сохранить проект - - - Song management - Управление композициями - - - Import file - Импорт файла - - - My home - Домашний каталог - - - Root directory - Корневой каталог - Show settings dialog Показать окно настройки + + Show setup wizard + Запустить мастер настройки + + + &Help + &Справка + + + Help + Справка + + + What's this? + Что это? + + + About + О программе + LMMS %1 - + LMMS %1 + + + Open project + Открыть проект + + + MultiMedia Project (*.mmp *.xml) + Мультимедийный проект (*.mmp *.xml) + + + Save project + Сохранить проект + + + MultiMedia Project (*.mmp);;MultiMedia Project Template (*.mpt) + Мультимедийный проект (*.mmp);;Шаблон мультимедийного проекта (*.mpt) Help not available @@ -1663,50 +1943,22 @@ Make sure, you have write access to the selected file/device! Currently there's no help available in LMMS. -Please visit http://lmms.sourceforge.net and click on "Documentation". -There hopefully you'll find the stuff you want to know... - Пока что справка для LMMS не написана. -Зайдите на сайт http://lmms.sourceforge.net и пройдите по ссылке "Documentation". -Надеемся, Вы найдёте там нужные материалы... - - - Show/hide Beat+Bassline Editor - Показать/скрыть редактор ритма/басов - - - Show/hide Piano-Roll - Показать/скрыть синтезатор - - - Show/hide Song-Editor - Показать/скрыть редактор мелодии - - - By pressing this button, you can show or hide the Song-Editor. With the help of the Song-Editor you can edit song-playlist and specify when which track should be played. You can also insert and move samples (e.g. rap-samples) directly into the playlist. - По нажатию этой кнопки запускается редактор мелодии. С его помощью вы можеет редактировать композицию, устанавливать время воспроизведения для всех дорожек. Также вы можете вставлять и передвигать образцы непосредственно в списке воспроизведения. - - - Show/hide EffectBoard - Показать/скрыть панель эффектов - - - Show/hide project notes - Показать/скрыть заметки к проекту - - - MultiMedia Project (*.mmp *.xml) - Мультимедийный проект (*.mmp *.xml) - - - MultiMedia Project (*.mmp);;MultiMedia Project Template (*.mpt) - Мультимедийный проект (*.mmp);;Шаблон мультимедийного проекта (*.mpt) - - - Currently there's no help available in LMMS. Please visit http://wiki.mindrules.net for documentation on LMMS. Пока что справка для LMMS не написана. Вероятно, Вы сможете найти нужные материалы на http://wiki.mindrules.net. + + Setting up main-window and workspace... + Создаю рабочее пространство... + + + Show/hide Beat+Baseline Editor + Показать/скрыть редактор ритма/лейтмотива + + + By pressing this button, you can show or hide the Beat+Baseline Editor. The Beat+Baseline Editor is needed for creating beats, opening, adding and removing channels, cutting, copying and pasting beat- and baseline-patterns and other things like that. + По нажатию этой кнопки запускается редактор ритма/лейтмотива произведения. Он необходим для установки ритма, добавления и удаления каналов, вырезания, копирования и вставки шаблонов и т. п. + midiClient @@ -1748,11 +2000,11 @@ Please visit http://wiki.mindrules.net for documentation on LMMS. RECEIVE MIDI-EVENTS - ПРИНИМАТЬ СОБЫТИЯ MIDI + ПРИНИМАТЬ СОБЫТИЯ MIDI SEND MIDI-EVENTS - ОТПРАВЛЯТЬ СОБЫТИЯ MIDI + ОТПРАВЛЯТЬ СОБЫТИЯ MIDI SEND RECEIVED MIDI-EVENTS @@ -1766,6 +2018,14 @@ Please visit http://wiki.mindrules.net for documentation on LMMS. MIDI-devices to send MIDI-events to Устройства MIDI, на которые нужно отправлять события + + Receive MIDI-events + Принимать события MIDI + + + Send MIDI-events + Отправлять события MIDI + mixer @@ -1786,6 +2046,60 @@ Please visit http://wiki.mindrules.net for documentation on LMMS. Ошибка загрузки модуля "%1"! + + nameLabel + + Select icon + Выбор пиктограммы + + + All images (*.png *.jpg *.jpeg *.gif *.bmp) + Изображения (*.png *.jpg *.jpeg *.gif *.bmp) + + + + organicInstrument + + Osc %1 waveform + Форма сигнала для генератора %1 + + + Osc %1 waveform: + Форма сигнала для генератора %1: + + + Osc %1 volume + Громкость генератора %1 + + + Osc %1 volume: + Громкость генератора %1: + + + Osc %1 panning + Стереобаланс для генератора %1 + + + Osc %1 panning: + Стереобаланс для генератора %1: + + + Osc %1 fine detuning left + Расстройка левого канала генератора %1 + + + Osc %1 fine detuning left: + Расстройка левого канала генератора %1: + + + cents + центов + + + FX1 + + + pattern @@ -2000,6 +2314,10 @@ use mouse wheel to set volume of a step All selected notes were copied to the clipboard. Все выделенные ноты скопированы в буфер обмена. + + Last note + Вручную + pluckedStringSynth @@ -2032,7 +2350,7 @@ use mouse wheel to set volume of a step You can drag an instrument-plugin into either the Song-Editor, the Beat+Bassline Editor or just into a channel-window or on the corresponding channel-button. - Вы можете переносить нужные вам инструменты из этой панели в редактор мелодии или в редактор ритма/басов. Отпускайте кнопку мыши прямо в окне, чтобы создать новый канал, или на кнопке нужного канала для замены типа канала на выбранный инструмент. + Вы можете переносить нужные вам инструменты из этой панели в редактор мелодии или в редактор ритма/басов. Отпускайте кнопку мыши прямо в окне, чтобы создать новый канал, или на кнопке нужного канала для замены типа канала на выбранный инструмент. cheap synthesis of guitar/harp-like sounds @@ -2062,6 +2380,18 @@ use mouse wheel to set volume of a step VST-host for using VST(i)-plugins within LMMS Поддержка модулей VST(i) в LMMS + + Rough & Dirty Wavetable Synthesizer. + Тяп-ляп синтезатор сигнала. + + + You can drag an instrument-plugin into either the Song-Editor, the Beat+Baseline Editor or just into a channel-window or on the corresponding channel-button. + Вы можете переносить нужные вам инструменты из этой панели в редактор мелодии или в редактор лейтмотива. Отпускайте кнопку мыши прямо в окне, чтобы создать новый канал, или на кнопке нужного канала для замены типа канала на выбранный инструмент. + + + Additive Synthesizer for organ-like sounds + Синтезатор звуков вроде органа + projectNotes @@ -2311,7 +2641,7 @@ use mouse wheel to set volume of a step FRAMES: %1 LATENCY: %2 ms - ФРАГМЕНТОВ: %1 + ФРАГМЕНТОВ: %1 ОТКЛИК: %2 мс @@ -2358,6 +2688,36 @@ LATENCY: %2 ms Do not show message after closing this dialog Не показывать предупреждения после закрытия этого окна + + Performance settings + Параметры производительности + + + UI effects vs. performance + Визуальные эффекты/производительность + + + Disable channel activity indicators + Отключить индикаторы активности каналов + + + Only press keys on channel-piano manually + Кнопки на "рояле" нажимаются только вручную + + + Frames: %1 +Latency: %2 ms + Фрагментов: %1 +Отклик: %2 + + + Artwork directory + Каталог с элементами оформления + + + Choose artwork-theme directory + Выбор каталога с темой оформления для LMMS + setupWidget @@ -2595,19 +2955,19 @@ Please make sure you have at least read-access to the file and try again. Insert bar (Shift+Insert) - Вставить такт (Shift + Insert) + Вставить такт (Shift + Insert) Remove bar (Shift+Delete) - Удалить такт (Shift + Delete) + Удалить такт (Shift + Delete) If you click here, a bar will be inserted at the current bar. - При нажатии на эту кнопку, в начало композиции вставится один такт. + При нажатии на эту кнопку, в начало композиции вставится один такт. If you click here, the current bar will be removed. - При нажатии на эту кнопку, из начала композиции удалится один такт. + При нажатии на эту кнопку, из начала композиции удалится один такт. master volume @@ -2651,6 +3011,14 @@ Please make sure you have write-access to the file and try again. The project %1 was not saved! Проект %1 не сохранён! + + Draw mode + Режим рисования + + + Edit mode (select and move) + Правка (выделение/перемещение) + soundGenerator @@ -2878,6 +3246,18 @@ Please make sure you have write-permission to the file and the directory contain %1:%2 (%3:%4 to %5:%6) %1:%2 (от %3:%4 до %5:%6) + + Hint + Подсказка + + + Press <Ctrl> for free positioning. + Для свободного перемещения нажмите <Ctrl>. + + + Press <Ctrl> for free resizing. + Для свободного перемещения нажмите <Ctrl>. + trackOperationsWidget @@ -2965,7 +3345,7 @@ right click = mute all other tracks (solo) cents - % + центов degrees diff --git a/include/sample_buffer.h b/include/sample_buffer.h index e4e81168cd..00d574c81d 100644 --- a/include/sample_buffer.h +++ b/include/sample_buffer.h @@ -83,8 +83,14 @@ public: const bool _looped = FALSE, void * * _resampling_data = NULL ); - void FASTCALL drawWaves( QPainter & _p, QRect _dr, + void FASTCALL visualize( QPainter & _p, const QRect & _dr, + const QRect & _clip, drawMethods _dm = LINE_CONNECT ); + inline void visualize( QPainter & _p, const QRect & _dr, + drawMethods _dm = LINE_CONNECT ) + { + visualize( _p, _dr, _dr, _dm ); + } inline const QString & audioFile( void ) const { diff --git a/include/track.h b/include/track.h index d83bbcb9db..d0ef77eb18 100644 --- a/include/track.h +++ b/include/track.h @@ -239,6 +239,7 @@ protected: private slots: void cloneTrack( void ); void removeTrack( void ); + void removeTrackTimer( void ); void muteBtnRightClicked( void ); diff --git a/plugins/audio_file_processor/audio_file_processor.cpp b/plugins/audio_file_processor/audio_file_processor.cpp index 80db32c99c..db91980a85 100644 --- a/plugins/audio_file_processor/audio_file_processor.cpp +++ b/plugins/audio_file_processor/audio_file_processor.cpp @@ -552,7 +552,7 @@ void audioFileProcessor::sampleUpdated( void ) QPainter p( &m_graph ); #endif p.setPen( QColor( 64, 255, 160 ) ); - m_sampleBuffer.drawWaves( p, QRect( 2, 2, m_graph.width() - 4, + m_sampleBuffer.visualize( p, QRect( 2, 2, m_graph.width() - 4, m_graph.height() - 4 ), m_drawMethod ); update(); diff --git a/src/core/config_mgr.cpp b/src/core/config_mgr.cpp index 84383d7160..20e953f4fd 100644 --- a/src/core/config_mgr.cpp +++ b/src/core/config_mgr.cpp @@ -809,6 +809,14 @@ bool configManager::loadConfigFile( void ) if( value( "paths", "artwork" ) != "" ) { m_artworkDir = value( "paths", "artwork" ); + if( QDir( m_artworkDir ).exists() == FALSE ) + { + m_artworkDir = m_dataDir + DEFAULT_THEME_PATH; + } + if( m_artworkDir.right( 1 ) != QDir::separator() ) + { + m_artworkDir += QDir::separator(); + } } m_workingDir = value( "paths", "workingdir" ); m_vstDir = value( "paths", "vstdir" ); diff --git a/src/core/envelope_tab_widget.cpp b/src/core/envelope_tab_widget.cpp index e532c01073..337e043b51 100644 --- a/src/core/envelope_tab_widget.cpp +++ b/src/core/envelope_tab_widget.cpp @@ -178,7 +178,7 @@ envelopeTabWidget::envelopeTabWidget( channelTrack * _channel_track ) : m_filterCutKnob = new knob( knobBright_26, m_filterGroupBox, tr( "cutoff-frequency" ), eng() ); m_filterCutKnob->setLabel( tr( "CUTOFF" ) ); - m_filterCutKnob->setRange( 0.0, 16000.0, 1.0 ); + m_filterCutKnob->setRange( 0.0, 10000.0, 1.0 ); m_filterCutKnob->move( 140, 18 ); m_filterCutKnob->setInitValue( 16000.0 ); m_filterCutKnob->setHintText( tr( "cutoff-frequency:" ) + " ", " " + diff --git a/src/core/track.cpp b/src/core/track.cpp index dc720214ec..662813d93e 100644 --- a/src/core/track.cpp +++ b/src/core/track.cpp @@ -44,6 +44,7 @@ #include #include #include +#include #endif @@ -976,6 +977,19 @@ void trackOperationsWidget::cloneTrack( void ) void trackOperationsWidget::removeTrack( void ) +{ +#ifdef QT3 + QTimer::singleShot( 10, this, SLOT( removeTrackTimer() ) ); +#else +#warning fixme + removeTrackTimer(); +#endif +} + + + + +void trackOperationsWidget::removeTrackTimer( void ) { m_trackWidget->getTrack()->getTrackContainer()->removeTrack( m_trackWidget->getTrack() ); diff --git a/src/lib/sample_buffer.cpp b/src/lib/sample_buffer.cpp index 5d6ad95335..a9539bc80c 100644 --- a/src/lib/sample_buffer.cpp +++ b/src/lib/sample_buffer.cpp @@ -862,9 +862,10 @@ bool FASTCALL sampleBuffer::play( sampleFrame * _ab, -void sampleBuffer::drawWaves( QPainter & _p, QRect _dr, drawMethods _dm ) +void sampleBuffer::visualize( QPainter & _p, const QRect & _dr, + const QRect & _clip, drawMethods _dm ) { -// _p.setClipRect( _dr ); +// _p.setClipRect( _clip ); // _p.setPen( QColor( 0x22, 0xFF, 0x44 ) ); //_p.setPen( QColor( 64, 224, 160 ) ); #ifdef QT4 @@ -877,9 +878,11 @@ void sampleBuffer::drawWaves( QPainter & _p, QRect _dr, drawMethods _dm ) const Uint16 y_base = h / 2 + _dr.y(); const float y_space = h / 2; + const QRect isect = _dr.intersect( _clip ); + if( m_data == NULL || m_frames == 0 ) { - _p.drawLine( _dr.x(), y_base, _dr.x() + w, y_base ); + _p.drawLine( isect.x(), y_base, isect.right(), y_base ); return; } else if( _dm == LINE_CONNECT ) @@ -890,8 +893,8 @@ void sampleBuffer::drawWaves( QPainter & _p, QRect _dr, drawMethods _dm ) const float fpp = tMax( tMin( m_frames / (float)w, 20.0f ), 1.0f ); - - for( float frame = 0; frame < m_frames; frame += fpp ) + const float fmax = tMin( m_frames, isect.right() * fpp ); + for( float frame = fpp * _clip.x(); frame < fmax; frame += fpp ) { const float x = frame*w / m_frames + _dr.x(); for( ch_cnt_t chnl = 0; chnl < DEFAULT_CHANNELS; @@ -906,21 +909,25 @@ void sampleBuffer::drawWaves( QPainter & _p, QRect _dr, drawMethods _dm ) old_x = x; } #else - int old_x = _dr.x(); int old_y[DEFAULT_CHANNELS] = { y_base, y_base }; const f_cnt_t fpp = tMax( tMin( m_frames / w, 20 ), 1 ); - + const f_cnt_t fbase = m_frames * _clip.x() / _clip.width(); + const f_cnt_t fmax = tMin( m_frames, + _clip.width() * fpp ); + int old_x = _clip.x(); + //printf("%d\n", fmax ); for( f_cnt_t frame = 0; frame < m_frames; frame += fpp ) { - const int x = static_cast( frame / - (float) m_frames * w ) + - _dr.x(); - for( ch_cnt_t chnl = 0; chnl < DEFAULT_CHANNELS; ++chnl ) + const int x = _dr.x() + static_cast( frame / + (float) m_frames * _dr.width() ); + for( ch_cnt_t chnl = 0; chnl < DEFAULT_CHANNELS; + ++chnl ) { const Uint16 y = y_base + - static_cast( m_data[frame][chnl] * y_space ); + static_cast( m_data[frame][chnl] * + y_space ); _p.drawLine( old_x, old_y[chnl], x, y ); old_y[chnl] = y; } @@ -934,7 +941,8 @@ void sampleBuffer::drawWaves( QPainter & _p, QRect _dr, drawMethods _dm ) for( f_cnt_t frame = 0; frame < m_frames; ++frame ) { const int x = frame * w / m_frames + _dr.x(); - for( ch_cnt_t chnl = 0; chnl < DEFAULT_CHANNELS; ++chnl ) + for( ch_cnt_t chnl = 0; chnl < DEFAULT_CHANNELS; + ++chnl ) { _p.drawPoint( x, y_base + static_cast( m_data[frame][chnl] * y_space ) ); diff --git a/src/tracks/sample_track.cpp b/src/tracks/sample_track.cpp index 893a381bae..360bd09216 100644 --- a/src/tracks/sample_track.cpp +++ b/src/tracks/sample_track.cpp @@ -184,17 +184,18 @@ void sampleTCO::mouseDoubleClickEvent( QMouseEvent * ) -void sampleTCO::paintEvent( QPaintEvent * ) +void sampleTCO::paintEvent( QPaintEvent * _pe ) { #ifdef QT4 QPainter p( this ); // TODO: set according brush/pen for gradient! - p.fillRect( rect(), QColor( 64, 64, 64 ) ); + p.fillRect( _pe->rect(), QColor( 64, 64, 64 ) ); #else - // create pixmap for whole widget - QPixmap pm( size() ); + // create pixmap for our widget + QPixmap pm( _pe->rect().size() ); // and a painter for it QPainter p( &pm ); + p.translate( -_pe->rect().x(), -_pe->rect().y() ); for( int y = 1; y < height() - 1; ++y ) { @@ -225,14 +226,14 @@ void sampleTCO::paintEvent( QPaintEvent * ) tMax( static_cast( getSampleLength() * pixelsPerTact() / 64 ), 1 ), height() - 4 ); p.setClipRect( QRect( 1, 1, width() - 2, height() - 2 ) ); - m_sampleBuffer.drawWaves( p, r ); + m_sampleBuffer.visualize( p, r, _pe->rect() ); if( r.width() < width() - 1 ) { p.drawLine( r.x() + r.width(), r.y() + r.height() / 2, width() - 2, r.y() + r.height() / 2 ); } #ifndef QT4 - bitBlt( this, rect().topLeft(), &pm ); + bitBlt( this, _pe->rect().topLeft(), &pm ); #endif } diff --git a/src/widgets/knob.cpp b/src/widgets/knob.cpp index b7452a0ddf..5e2db4c402 100644 --- a/src/widgets/knob.cpp +++ b/src/widgets/knob.cpp @@ -288,6 +288,10 @@ float knob::getValue( const QPoint & _p ) } return( new_value ); } + if( eng()->getMainWindow()->isShiftPressed() ) + { + return( ( _p.y() - m_origMousePos.y() ) * step() ); + } return( ( _p.y() - m_origMousePos.y() ) * m_pageSize ); }