diff --git a/.gitignore b/.gitignore index d8669fa1d..113a4c133 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /build .*.sw? *~ +/CMakeLists.txt.user diff --git a/.travis.yml b/.travis.yml index 2d3660912..92aa8a9d8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: cpp compiler: gcc before_install: sudo apt-get update -install: (sudo apt-get install libqt4-dev libsndfile-dev fftw3-dev libvorbis-dev libogg-dev libasound2-dev libjack-dev libsdl-dev libsamplerate0-dev libstk0-dev libfluidsynth-dev portaudio19-dev) && (sudo apt-get install wine-dev libc6-dev-amd64 || true) +install: sudo apt-get install libqt4-dev libsndfile-dev fftw3-dev libvorbis-dev libogg-dev libasound2-dev libjack-dev libsdl-dev libsamplerate0-dev libstk0-dev libfluidsynth-dev portaudio19-dev wine-dev g++-multilib before_script: mkdir build && cd build script: cmake .. && make -j8 diff --git a/CMakeLists.txt b/CMakeLists.txt index 65e5916d5..2567c7a2f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -613,7 +613,7 @@ MESSAGE( "\n\n") INCLUDE(InstallRequiredSystemLibraries) -SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Linux MultiMedia Studio - easy music production for everyone!") +SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "LMMS - easy music production for everyone!") SET(CPACK_PACKAGE_VENDOR "LMMS Developers") IF(LMMS_BUILD_APPLE) CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/README ${CMAKE_BINARY_DIR}/README.txt COPYONLY) @@ -640,8 +640,8 @@ SET(CPACK_NSIS_DISPLAY_NAME "LMMS ${VERSION}") SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\lmms.sourceforge.net") SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\lmms.sourceforge.net") SET(CPACK_NSIS_CONTACT "lmms-devel@lists.sourceforge.net") -SET(CPACK_PACKAGE_EXECUTABLES "lmms.exe;Linux MultiMedia Studio") -SET(CPACK_NSIS_MENU_LINKS "lmms.exe;Linux MultiMedia Studio") +SET(CPACK_PACKAGE_EXECUTABLES "lmms.exe;LMMS") +SET(CPACK_NSIS_MENU_LINKS "lmms.exe;LMMS") SET(CPACK_NSIS_DEFINES "!include ${CMAKE_SOURCE_DIR}/cmake/nsis/FileAssociation.nsh") SET(CPACK_PACKAGE_FILE_NAME "lmms-${VERSION}-win32") SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS " @@ -666,7 +666,7 @@ ENDIF(WIN64) SET(MACOSX_BUNDLE_ICON_FILE "${CMAKE_SOURCE_DIR}/data/themes/default/icon.png") SET(MACOSX_BUNDLE_GUI_IDENTIFIER "LMMS") SET(MACOSX_BUNDLE_LONG_VERSION_STRING "${VERSION}") -SET(MACOSX_BUNDLE_BUNDLE_NAME "Linux MultiMedia Studio") +SET(MACOSX_BUNDLE_BUNDLE_NAME "LMMS") SET(MACOSX_BUNDLE_SHORT_VERSION_STRING "${VERSION}") SET(MACOSX_BUNDLE_BUNDLE_VERSION "${VERSION}") SET(MACOSX_BUNDLE_COPYRIGHT "Tobias Doerffel, 2008-2010") diff --git a/README.md b/README.md new file mode 100644 index 000000000..a76d20354 --- /dev/null +++ b/README.md @@ -0,0 +1,37 @@ +Linux MultiMedia Studio +======================= +[![Build Status](https://travis-ci.org/LMMS/lmms.png)](https://travis-ci.org/LMMS/lmms) + +What is LMMS? +-------------- + +LMMS is a free cross-platform alternative to commercial programs like FL Studio (R), which allow you to produce music with your computer. This includes the creation of melodies and beats, the synthesis and mixing of sounds, and arranging of samples. You can have fun with your MIDI-keyboard and much more; all in a user-friendly and modern interface. + + +Features +--------- + +* Song-Editor for composing songs +* A Beat+Bassline-Editor for creating beats and basslines +* An easy-to-use Piano-Roll for editing patterns and melodies +* An FX mixer with 64 FX channels and arbitrary number of effects allow unlimited mixing possibilities +* Many powerful instrument and effect-plugins out of the box +* Full user-defined track-based automation and computer-controlled automation sources +* Compatible with many standards such as SoundFont2, VST(i), LADSPA, GUS Patches, and full MIDI support +* Import of MIDI and FLP (Fruityloops(R) Project) files + + +Building +--------- + +See [Compiling LMMS](https://github.com/LMMS/lmms/wiki/Compiling-lmms) on our wiki for information on how to build LMMS. + + +Join LMMS-development +---------------------- + +If you are interested in LMMS, it's programming, artwork, testing, writing demo-songs, (and improving this readme…) or something like that, you're welcome to participate on the development of LMMS! + +Information about what you can do and how can be found in the [wiki](https://github.com/LMMS/lmms/wiki). + +Before coding a new big feature, please _always_ [file an issue](https://github.com/LMMS/lmms/issues/new) for your idea and suggestions about your feature and about the intended implementation on GitHub or post to the LMMS-devel-mailinglist (lmms-devel@lists.sourceforge.net) and wait for replies! Maybe there're different ideas, improvements, hints or maybe your feature is not welcome/needed at the moment. diff --git a/data/backgrounds/newbg.png b/data/backgrounds/newbg.png new file mode 100644 index 000000000..6cafbdaf4 Binary files /dev/null and b/data/backgrounds/newbg.png differ diff --git a/data/themes/default/add_automation.png b/data/themes/default/add_automation.png index 2d0c7ba4d..71e147425 100644 Binary files a/data/themes/default/add_automation.png and b/data/themes/default/add_automation.png differ diff --git a/data/themes/default/add_bb_track.png b/data/themes/default/add_bb_track.png index a42e8b517..fd9cb7f1d 100644 Binary files a/data/themes/default/add_bb_track.png and b/data/themes/default/add_bb_track.png differ diff --git a/data/themes/default/add_sample_track.png b/data/themes/default/add_sample_track.png index 3e9caf262..2f7500a7d 100644 Binary files a/data/themes/default/add_sample_track.png and b/data/themes/default/add_sample_track.png differ diff --git a/data/themes/default/automation.png b/data/themes/default/automation.png index 65a0a83d0..d6193e4f6 100644 Binary files a/data/themes/default/automation.png and b/data/themes/default/automation.png differ diff --git a/data/themes/default/automation_track.png b/data/themes/default/automation_track.png index 40fc9a50b..d6193e4f6 100644 Binary files a/data/themes/default/automation_track.png and b/data/themes/default/automation_track.png differ diff --git a/data/themes/default/background_artwork.png b/data/themes/default/background_artwork.png index 0f2ba9a5e..8725e664f 100644 Binary files a/data/themes/default/background_artwork.png and b/data/themes/default/background_artwork.png differ diff --git a/data/themes/default/bb_track.png b/data/themes/default/bb_track.png index 40f58e139..9e353be47 100644 Binary files a/data/themes/default/bb_track.png and b/data/themes/default/bb_track.png differ diff --git a/data/themes/default/controller.png b/data/themes/default/controller.png index 72229e955..6bd108d22 100644 Binary files a/data/themes/default/controller.png and b/data/themes/default/controller.png differ diff --git a/data/themes/default/fx_mixer.png b/data/themes/default/fx_mixer.png index 85d846268..bfde545d5 100644 Binary files a/data/themes/default/fx_mixer.png and b/data/themes/default/fx_mixer.png differ diff --git a/data/themes/default/lcd_19green.png b/data/themes/default/lcd_19green.png index d1dd66571..a154f40e9 100644 Binary files a/data/themes/default/lcd_19green.png and b/data/themes/default/lcd_19green.png differ diff --git a/data/themes/default/piano.png b/data/themes/default/piano.png index 5577fd1ec..22523893e 100644 Binary files a/data/themes/default/piano.png and b/data/themes/default/piano.png differ diff --git a/data/themes/default/progression_cubic_hermite.png b/data/themes/default/progression_cubic_hermite.png index 77be56562..1010f8735 100644 Binary files a/data/themes/default/progression_cubic_hermite.png and b/data/themes/default/progression_cubic_hermite.png differ diff --git a/data/themes/default/progression_discrete.png b/data/themes/default/progression_discrete.png index b28bb29c6..5faf0e4aa 100644 Binary files a/data/themes/default/progression_discrete.png and b/data/themes/default/progression_discrete.png differ diff --git a/data/themes/default/progression_linear.png b/data/themes/default/progression_linear.png index 8059e793f..d6193e4f6 100644 Binary files a/data/themes/default/progression_linear.png and b/data/themes/default/progression_linear.png differ diff --git a/data/themes/default/project_export.png b/data/themes/default/project_export.png index 999a415b4..13c0b9d08 100644 Binary files a/data/themes/default/project_export.png and b/data/themes/default/project_export.png differ diff --git a/data/themes/default/project_new.png b/data/themes/default/project_new.png index 828e07d0e..489548b6b 100644 Binary files a/data/themes/default/project_new.png and b/data/themes/default/project_new.png differ diff --git a/data/themes/default/project_new_from_template.png b/data/themes/default/project_new_from_template.png index 3d0f5cc1d..1353505b9 100644 Binary files a/data/themes/default/project_new_from_template.png and b/data/themes/default/project_new_from_template.png differ diff --git a/data/themes/default/project_notes.png b/data/themes/default/project_notes.png index 528a2bb36..6991b3a7e 100644 Binary files a/data/themes/default/project_notes.png and b/data/themes/default/project_notes.png differ diff --git a/data/themes/default/project_open.png b/data/themes/default/project_open.png index 7422ad333..7188b3894 100644 Binary files a/data/themes/default/project_open.png and b/data/themes/default/project_open.png differ diff --git a/data/themes/default/project_open_recent.png b/data/themes/default/project_open_recent.png index eb07bb20b..4e57b3b82 100644 Binary files a/data/themes/default/project_open_recent.png and b/data/themes/default/project_open_recent.png differ diff --git a/data/themes/default/project_save.png b/data/themes/default/project_save.png index 7fa489c0f..83c7fd7bd 100644 Binary files a/data/themes/default/project_save.png and b/data/themes/default/project_save.png differ diff --git a/data/themes/default/sample_track.png b/data/themes/default/sample_track.png index d65bc0752..754146f3e 100644 Binary files a/data/themes/default/sample_track.png and b/data/themes/default/sample_track.png differ diff --git a/data/themes/default/sbarrow_down.png b/data/themes/default/sbarrow_down.png new file mode 100644 index 000000000..56fa504c1 Binary files /dev/null and b/data/themes/default/sbarrow_down.png differ diff --git a/data/themes/default/sbarrow_down_d.png b/data/themes/default/sbarrow_down_d.png new file mode 100644 index 000000000..f8c54f32f Binary files /dev/null and b/data/themes/default/sbarrow_down_d.png differ diff --git a/data/themes/default/sbarrow_left.png b/data/themes/default/sbarrow_left.png new file mode 100644 index 000000000..d50031e30 Binary files /dev/null and b/data/themes/default/sbarrow_left.png differ diff --git a/data/themes/default/sbarrow_left_d.png b/data/themes/default/sbarrow_left_d.png new file mode 100644 index 000000000..fe246df05 Binary files /dev/null and b/data/themes/default/sbarrow_left_d.png differ diff --git a/data/themes/default/sbarrow_right.png b/data/themes/default/sbarrow_right.png new file mode 100644 index 000000000..2112ec1da Binary files /dev/null and b/data/themes/default/sbarrow_right.png differ diff --git a/data/themes/default/sbarrow_right_d.png b/data/themes/default/sbarrow_right_d.png new file mode 100644 index 000000000..39b0220cc Binary files /dev/null and b/data/themes/default/sbarrow_right_d.png differ diff --git a/data/themes/default/sbarrow_up.png b/data/themes/default/sbarrow_up.png new file mode 100644 index 000000000..2b61c257c Binary files /dev/null and b/data/themes/default/sbarrow_up.png differ diff --git a/data/themes/default/sbarrow_up_d.png b/data/themes/default/sbarrow_up_d.png new file mode 100644 index 000000000..f80d6b39b Binary files /dev/null and b/data/themes/default/sbarrow_up_d.png differ diff --git a/data/themes/default/songeditor.png b/data/themes/default/songeditor.png index 4f5203878..1f7f39c66 100644 Binary files a/data/themes/default/songeditor.png and b/data/themes/default/songeditor.png differ diff --git a/data/themes/default/step_btn_off.png b/data/themes/default/step_btn_off.png index 2948422e9..5e40d3e5a 100644 Binary files a/data/themes/default/step_btn_off.png and b/data/themes/default/step_btn_off.png differ diff --git a/data/themes/default/step_btn_off_light.png b/data/themes/default/step_btn_off_light.png index c069d5e98..f8f64bea8 100644 Binary files a/data/themes/default/step_btn_off_light.png and b/data/themes/default/step_btn_off_light.png differ diff --git a/data/themes/default/step_btn_on.png b/data/themes/default/step_btn_on.png index 7d520bc74..fc7fde9f7 100644 Binary files a/data/themes/default/step_btn_on.png and b/data/themes/default/step_btn_on.png differ diff --git a/data/themes/default/step_btn_on_100.png b/data/themes/default/step_btn_on_100.png index d3b4f15f9..3d21b87c6 100644 Binary files a/data/themes/default/step_btn_on_100.png and b/data/themes/default/step_btn_on_100.png differ diff --git a/data/themes/default/step_btn_on_yellow.png b/data/themes/default/step_btn_on_yellow.png index 827a3ca1a..cce0c10ed 100644 Binary files a/data/themes/default/step_btn_on_yellow.png and b/data/themes/default/step_btn_on_yellow.png differ diff --git a/data/themes/default/style.css b/data/themes/default/style.css index 0aed57e49..c113b0fb7 100644 --- a/data/themes/default/style.css +++ b/data/themes/default/style.css @@ -89,9 +89,126 @@ pianoRoll { background-color: rgb(0, 0, 0); } -/*TrackContainerView QWidget{ - background-color: #5b6571; -}*/ +/* scrollbar: trough */ + +QScrollBar:horizontal { + border: 1px solid #131313; + background: rgb( 50,50,50 ); + height: 14px; + margin: 0px 13px; +} +QScrollBar:vertical { + border: 1px solid #131313; + background: rgb( 50,50,50 ); + width: 14px; + margin: 13px 0px; +} + +/* scrollbar: trough clicky things */ + +QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal, +QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { + background: none; +} + +QScrollBar::add-page:horizontal:pressed, QScrollBar::sub-page:horizontal:pressed, +QScrollBar::add-page:vertical:pressed, QScrollBar::sub-page:vertical:pressed { + background: rgba(0,0,0,50); +} + +/* scrollbar: handles (sliders) */ + +QScrollBar::handle:horizontal { + background: qlineargradient(spread:reflect, + x1:0.5, y1:0, x2:0.5, y2:1, + stop:0 #747474, stop:0.5 #c9c9c9, stop:1 #808080); + border: 1px outset #888; + border-radius: 2px; + min-width: 24px; +} + +QScrollBar::handle:horizontal:hover { + background: qlineargradient(spread:reflect, + x1:0.5, y1:0, x2:0.5, y2:1, + stop:0 #747474, stop:0.5 #f0f0f0, stop:1 #808080); +} + +QScrollBar::handle:horizontal:pressed { + background: qlineargradient(spread:reflect, + x1:0.5, y1:0, x2:0.5, y2:1, + stop:0 #747474, stop:1 #c9c9c9); +} + +QScrollBar::handle:vertical { + background: qlineargradient(spread:reflect, + x1:0, y1:0.5, x2:1, y2:0.5, + stop:0 #747474, stop:0.5 #c9c9c9, stop:1 #808080); + border: 1px outset #888; + border-radius: 2px; + min-height: 24px; +} + +QScrollBar::handle:vertical:hover { + background: qlineargradient(spread:reflect, + x1:0, y1:0.5, x2:1, y2:0.5, + stop:0 #747474, stop:0.5 #f0f0f0, stop:1 #808080); +} + +QScrollBar::handle:vertical:pressed { + background: qlineargradient(spread:reflect, + x1:0, y1:0.5, x2:1, y2:0.5, + stop:0 #747474, stop:1 #c9c9c9); +} + +QScrollBar::handle:horizontal:disabled, QScrollBar::handle:vertical:disabled { + background: #747474; + border-radius: 1px; + border: 1px solid rgba(0,0,0,32); +} + +/* arrow buttons */ + +QScrollBar::add-line, QScrollBar::sub-line { + background: qradialgradient(cx:0.3, cy:0.3, radius:0.8, fx:0.3, fy:0.3, stop:0 #c9c9c9, stop:1 #969696 ); + border-radius: 1px; + border: 1px solid #131313; + subcontrol-origin: margin; +} + +QScrollBar::add-line:horizontal { subcontrol-position: right; width: 12px;} +QScrollBar::sub-line:horizontal { subcontrol-position: left; width: 12px;} +QScrollBar::add-line:vertical { subcontrol-position: bottom; height: 12px;} +QScrollBar::sub-line:vertical { subcontrol-position: top; height: 12px;} + +QScrollBar::add-line:hover, QScrollBar::sub-line:hover { + background: qradialgradient(cx:0.3, cy:0.3, radius:0.8, fx:0.3, fy:0.3, stop:0 #e0e0e0, stop:0.5 #c9c9c9, stop:1 #969696 ); +} + +QScrollBar::add-line:pressed, QScrollBar::sub-line:pressed { + background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #969696, stop:0.5 #c9c9c9, stop:1 #969696 ); +} + +QScrollBar::add-line:disabled, QScrollBar::sub-line:disabled { + background: #747474; +} + +QScrollBar::left-arrow:horizontal, QScrollBar::right-arrow:horizontal, +QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical { + border: none; + background-color: none; + width: 5px; + height: 5px; +} + +QScrollBar::left-arrow:horizontal { background-image: url(resources:sbarrow_left.png);} +QScrollBar::right-arrow:horizontal { background-image: url(resources:sbarrow_right.png);} +QScrollBar::up-arrow:vertical { background-image: url(resources:sbarrow_up.png);} +QScrollBar::down-arrow:vertical { background-image: url(resources:sbarrow_down.png);} +QScrollBar::left-arrow:horizontal:disabled { background-image: url(resources:sbarrow_left_d.png);} +QScrollBar::right-arrow:horizontal:disabled { background-image: url(resources:sbarrow_right_d.png);} +QScrollBar::up-arrow:vertical:disabled { background-image: url(resources:sbarrow_up_d.png);} +QScrollBar::down-arrow:vertical:disabled { background-image: url(resources:sbarrow_down_d.png);} + TrackContainerView QFrame{ background-color: #49515b; @@ -105,25 +222,6 @@ trackOperationsWidget > QPushButton { background: none; border:none; } -/* -trackOperationsWidget > QPushButton:hover { - background: qlineargradient(spread:reflect, x1:0.5, y1:0.5, x2:0.5, y2:0, stop:0 rgba(224, 224, 224, 255), stop:1 rgba(201, 201, 201, 255)); - border: 1px solid rgba(0,0,0,255); - color: black; -} - -trackOperationsWidget > QPushButton:pressed { - background: qlineargradient(spread:reflect, x1:0.5, y1:0, x2:0.5, y2:1, stop:0 #747474, stop:0.5 #c9c9c9, stop:1 #c0c0c0 ); - border: 1px solid rgba(0,0,0,255); - color: black; -} - -trackOperationsWidget > QPushButton:flat { - background-color: #c9c9c9; - border-radius: 2px; - border: none; -} -*/ trackOperationsWidget > QPushButton::menu-indicator { image: url(resources:trackop.png); @@ -237,7 +335,7 @@ QToolButton:checked, toolButton:checked { trackLabelButton { background-color: #5b6571; color: #c9c9c9; - font-size: 10px; + font-size: 11px; font-weight: normal; border-radius: 1px; border: none; @@ -300,12 +398,12 @@ QTreeView { /* Plugins */ TripleOscillatorView knob { - color: rgb(1, 114, 216); + color: rgb(1, 32, 64); qproperty-outerColor: rgb(0, 0, 0); - qproperty-innerRadius: 1; - qproperty-outerRadius: 6.5; - qproperty-centerPointX: 13.5; - qproperty-centerPointY: 13.5; + qproperty-innerRadius: 2; + qproperty-outerRadius: 7; + qproperty-centerPointX: 13.0; + qproperty-centerPointY: 14.0; qproperty-lineWidth: 2; } diff --git a/include/Instrument.h b/include/Instrument.h index 6e0e69012..7cec41019 100644 --- a/include/Instrument.h +++ b/include/Instrument.h @@ -2,7 +2,7 @@ * Instrument.h - declaration of class Instrument, which provides a * standard interface for all instrument plugins * - * Copyright (c) 2005-2009 Tobias Doerffel + * Copyright (c) 2005-2014 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -117,8 +117,6 @@ public: virtual bool isFromTrack( const track * _track ) const; - bool isMuted() const; - protected: inline InstrumentTrack * instrumentTrack() const diff --git a/include/InstrumentPlayHandle.h b/include/InstrumentPlayHandle.h index ccb3e6f18..b34675e4a 100644 --- a/include/InstrumentPlayHandle.h +++ b/include/InstrumentPlayHandle.h @@ -1,7 +1,7 @@ /* * InstrumentPlayHandle.h - play-handle for driving an instrument * - * Copyright (c) 2005-2009 Tobias Doerffel + * Copyright (c) 2005-2014 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -45,10 +45,7 @@ public: virtual void play( sampleFrame * _working_buffer ) { - if( !m_instrument->isMuted() ) - { - m_instrument->play( _working_buffer ); - } + m_instrument->play( _working_buffer ); } virtual bool done() const diff --git a/include/LmmsStyle.h b/include/LmmsStyle.h index 48c48d449..7b74a06f7 100644 --- a/include/LmmsStyle.h +++ b/include/LmmsStyle.h @@ -68,7 +68,7 @@ public: virtual QPalette standardPalette( void ) const; - virtual void drawControl( ControlElement element, const QStyleOption* option, QPainter* painter, const QWidget* widget ) const; +// virtual void drawControl( ControlElement element, const QStyleOption* option, QPainter* painter, const QWidget* widget ) const; virtual void drawComplexControl( ComplexControl control, @@ -84,8 +84,8 @@ public: const QStyleOption * option = 0, const QWidget * widget = 0 ) const; - QSize sizeFromContents( ContentsType type, const QStyleOption* option, const QSize& size, const QWidget* widget ) const; - QRect subControlRect( ComplexControl control, const QStyleOptionComplex *option, SubControl subControl, const QWidget *widget ) const; +// QSize sizeFromContents( ContentsType type, const QStyleOption* option, const QSize& size, const QWidget* widget ) const; +// QRect subControlRect( ComplexControl control, const QStyleOptionComplex *option, SubControl subControl, const QWidget *widget ) const; private: QImage colorizeXpm( const char * const * xpm, const QBrush& fill ) const; diff --git a/include/group_box.h b/include/group_box.h index 5cd5da9fa..ef08b56f9 100644 --- a/include/group_box.h +++ b/include/group_box.h @@ -49,6 +49,11 @@ public: return m_led; } + int titleBarHeight() const + { + return m_titleBarHeight; + } + protected: virtual void mousePressEvent( QMouseEvent * _me ); @@ -60,6 +65,7 @@ private: pixmapButton * m_led; QString m_caption; + const int m_titleBarHeight; } ; diff --git a/include/knob.h b/include/knob.h index a224d097d..e50431210 100644 --- a/include/knob.h +++ b/include/knob.h @@ -148,12 +148,11 @@ private: QPixmap * m_knobPixmap; BoolModel m_volumeKnob; - float m_mouseOffset; + QPoint m_mouseOffset; QPoint m_origMousePos; + float m_origValue; bool m_buttonPressed; - int m_magneticDecay; - float m_totalAngle; int m_angle; QImage m_cache; diff --git a/plugins/opl2/opl2instrument.cpp b/plugins/opl2/opl2instrument.cpp index dd8fda55a..3832748b4 100644 --- a/plugins/opl2/opl2instrument.cpp +++ b/plugins/opl2/opl2instrument.cpp @@ -244,21 +244,19 @@ bool opl2instrument::handleMidiEvent( const midiEvent & _me, static int lastvoice=0; switch(_me.m_type) { case MidiNoteOn: - if( !isMuted() ) { - // to get us in line with MIDI(?) - key = _me.key() +12; - vel = _me.velocity(); - for(int i=lastvoice+1; i!=lastvoice; ++i,i%=9) { - if( voiceNote[i] == OPL2_VOICE_FREE ) { - theEmulator->write(0xA0+i, fnums[key] & 0xff); - theEmulator->write(0xB0+i, 32 + ((fnums[key] & 0x1f00) >> 8) ); - voiceNote[i] = key; - velocities[key] = vel; - lastvoice=i; - break; - } - } - } + // to get us in line with MIDI(?) + key = _me.key() +12; + vel = _me.velocity(); + for(int i=lastvoice+1; i!=lastvoice; ++i,i%=9) { + if( voiceNote[i] == OPL2_VOICE_FREE ) { + theEmulator->write(0xA0+i, fnums[key] & 0xff); + theEmulator->write(0xB0+i, 32 + ((fnums[key] & 0x1f00) >> 8) ); + voiceNote[i] = key; + velocities[key] = vel; + lastvoice=i; + break; + } + } break; case MidiNoteOff: key = _me.key() +12; diff --git a/plugins/organic/organic.cpp b/plugins/organic/organic.cpp index f13617567..e2b0241b8 100644 --- a/plugins/organic/organic.cpp +++ b/plugins/organic/organic.cpp @@ -389,7 +389,7 @@ organicInstrumentView::organicInstrumentView( Instrument * _instrument, m_fx1Knob = new organicKnob( this ); m_fx1Knob->move( 15, 201 ); m_fx1Knob->setFixedSize( 37, 47 ); - m_fx1Knob->setHintText( tr( "Distortion:" ) + " ", "%" ); + m_fx1Knob->setHintText( tr( "Distortion:" ) + " ", QString() ); m_fx1Knob->setObjectName( "fx1Knob" ); // setup volume-knob @@ -450,8 +450,7 @@ void organicInstrumentView::modelChanged() // setup waveform-knob knob * oscKnob = new organicKnob( this ); oscKnob->move( x + i * colWidth, y ); - oscKnob->setHintText( tr( "Osc %1 waveform:" ).arg( - i + 1 ) + " ", "%" ); + oscKnob->setHintText( tr( "Osc %1 waveform:" ).arg( i + 1 ) + " ", QString() ); // setup volume-knob knob * volKnob = new knob( knobStyled, this ); diff --git a/plugins/peak_controller_effect/peak_controller_effect.cpp b/plugins/peak_controller_effect/peak_controller_effect.cpp index a9fa56286..f9b4049c5 100644 --- a/plugins/peak_controller_effect/peak_controller_effect.cpp +++ b/plugins/peak_controller_effect/peak_controller_effect.cpp @@ -84,12 +84,17 @@ PeakControllerEffect::~PeakControllerEffect() } } -//! returns 1.0f if val > 0.0f, -1.0 else -inline float my_sign(float val) { return -1.0f + 2.0f * (val > 0.0f); } +namespace helpers +{ + + //! returns 1.0f if val > 0.0f, -1.0 else + inline float sign(float val) { return -1.0f + 2.0f * (val > 0.0f); } + + //! if val >= 0.0f, returns sqrtf(val), else: -sqrtf(-val) + inline float sqrt_neg(float val) { + return sqrtf(fabs(val)) * helpers::sign(val); + } -//! if val >= 0.0f, returns sqrtf(val), else: -sqrtf(-val) -inline float sqrt_neg(float val) { - return sqrtf(fabs(val)) * my_sign(val); } bool PeakControllerEffect::processAudioBuffer( sampleFrame * _buf, @@ -106,16 +111,28 @@ bool PeakControllerEffect::processAudioBuffer( sampleFrame * _buf, // RMS: double sum = 0; - for( int i = 0; i < _frames; ++i ) + + if(c.m_absModel.value()) { - float sign_0 = (c.m_absModel.value()) - ? 1.0f : my_sign(_buf[i][0]); - float sign_1 = (c.m_absModel.value()) - ? 1.0f : my_sign(_buf[i][1]); - sum += _buf[i][0]*_buf[i][0]*sign_0 - + _buf[i][1]*_buf[i][1]*sign_1; + for( int i = 0; i < _frames; ++i ) + { + // absolute value is achieved because the squares are > 0 + sum += _buf[i][0]*_buf[i][0] + _buf[i][1]*_buf[i][1]; + } + } + else + { + for( int i = 0; i < _frames; ++i ) + { + // the value is absolute because of squaring, + // so we need to correct it + sum += _buf[i][0]*_buf[i][0]*helpers::sign(_buf[i][0]) + + _buf[i][1]*_buf[i][1]*helpers::sign(_buf[i][1]); + } } + // TODO: flipping this might cause clipping + // this will mute the output after the values were measured if( c.m_muteModel.value() ) { for( int i = 0; i < _frames; ++i ) @@ -124,7 +141,7 @@ bool PeakControllerEffect::processAudioBuffer( sampleFrame * _buf, } } - float curRMS = sqrt_neg( sum / _frames ); + float curRMS = helpers::sqrt_neg( sum / _frames ); const float origRMS = curRMS; if( !m_lastRMSavail ) @@ -135,7 +152,7 @@ bool PeakControllerEffect::processAudioBuffer( sampleFrame * _buf, const float v = ( curRMS >= m_lastRMS ) ? c.m_attackModel.value() : c.m_decayModel.value(); - const float a = sqrt_neg( sqrt_neg( v ) ); + const float a = helpers::sqrt_neg( helpers::sqrt_neg( v ) ); curRMS = (1-a)*curRMS + a*m_lastRMS; const float amount = c.m_amountModel.value() * c.m_amountMultModel.value(); @@ -153,16 +170,6 @@ bool PeakControllerEffect::processAudioBuffer( sampleFrame * _buf, //checkGate( out_sum / _frames ); - // finally, mute the output if wanted - // TODO: avoid clips? - if( c.m_muteOutputModel.value() ) - { - for( int i = 0; i < _frames; ++i ) - { - _buf[i][0] = _buf[i][1] = 0.0f; - } - } - return isRunning(); } diff --git a/plugins/peak_controller_effect/peak_controller_effect_control_dialog.cpp b/plugins/peak_controller_effect/peak_controller_effect_control_dialog.cpp index 4db7acbe1..596a17de1 100644 --- a/plugins/peak_controller_effect/peak_controller_effect_control_dialog.cpp +++ b/plugins/peak_controller_effect/peak_controller_effect_control_dialog.cpp @@ -56,7 +56,7 @@ PeakControllerEffectControlDialog::PeakControllerEffectControlDialog( m_baseKnob->setHintText( tr( "Base amount:" ) + " ", "" ); m_amountKnob = new knob( knobBright_26, this ); - m_amountKnob->setLabel( tr( "AMT" ) ); + m_amountKnob->setLabel( tr( "AMNT" ) ); m_amountKnob->setModel( &_controls->m_amountModel ); m_amountKnob->setHintText( tr( "Modulation amount:" ) + " ", "" ); @@ -66,12 +66,12 @@ PeakControllerEffectControlDialog::PeakControllerEffectControlDialog( m_amountMultKnob->setHintText( tr( "Amount Multiplicator:" ) + " ", "" ); m_attackKnob = new knob( knobBright_26, this ); - m_attackKnob->setLabel( tr( "ATTCK" ) ); + m_attackKnob->setLabel( tr( "ATCK" ) ); m_attackKnob->setModel( &_controls->m_attackModel ); m_attackKnob->setHintText( tr( "Attack:" ) + " ", "" ); m_decayKnob = new knob( knobBright_26, this ); - m_decayKnob->setLabel( tr( "DECAY" ) ); + m_decayKnob->setLabel( tr( "DCAY" ) ); m_decayKnob->setModel( &_controls->m_decayModel ); m_decayKnob->setHintText( tr( "Release:" ) + " ", "" ); @@ -88,15 +88,11 @@ PeakControllerEffectControlDialog::PeakControllerEffectControlDialog( m_muteLed = new ledCheckBox( "Mute Effect", this ); m_muteLed->setModel( &_controls->m_muteModel ); - m_absLed = new ledCheckBox( "Abs Value", this ); + m_absLed = new ledCheckBox( "Absolute Value", this ); m_absLed->setModel( &_controls->m_absModel ); - m_muteOutputLed = new ledCheckBox( "Mute Output", this ); - m_muteOutputLed->setModel( &_controls->m_muteOutputModel ); - l2->addWidget( m_muteLed ); l2->addWidget( m_absLed ); - l2->addWidget( m_muteOutputLed ); l2->addStretch(); // expand, so other widgets have minimum height tl->addLayout( l2 ); diff --git a/plugins/peak_controller_effect/peak_controller_effect_control_dialog.h b/plugins/peak_controller_effect/peak_controller_effect_control_dialog.h index 40e7abc1f..eca00bac4 100644 --- a/plugins/peak_controller_effect/peak_controller_effect_control_dialog.h +++ b/plugins/peak_controller_effect/peak_controller_effect_control_dialog.h @@ -52,7 +52,6 @@ protected: ledCheckBox * m_absLed; knob * m_amountMultKnob; - ledCheckBox * m_muteOutputLed; } ; diff --git a/plugins/peak_controller_effect/peak_controller_effect_controls.cpp b/plugins/peak_controller_effect/peak_controller_effect_controls.cpp index 69c8f15b9..eb7e5191d 100644 --- a/plugins/peak_controller_effect/peak_controller_effect_controls.cpp +++ b/plugins/peak_controller_effect/peak_controller_effect_controls.cpp @@ -41,8 +41,7 @@ PeakControllerEffectControls( PeakControllerEffect * _eff ) : m_decayModel( 0, 0, 0.999, 0.001, this, tr( "Release" ) ), m_muteModel( false, this, tr( "Mute output" ) ), m_absModel( true, this, tr("Abs Value") ), - m_amountMultModel( 1.0, 0, 32, 0.2, this, tr("Amount Multiplicator") ), - m_muteOutputModel( false, this, tr("Mute Output") ) + m_amountMultModel( 1.0, 0, 32, 0.2, this, tr("Amount Multiplicator") ) { } @@ -59,7 +58,6 @@ void PeakControllerEffectControls::loadSettings( const QDomElement & _this ) m_absModel.loadSettings( _this, "abs" ); m_amountMultModel.loadSettings( _this, "amountmult" ); - m_muteOutputModel.loadSettings( _this, "muteout" ); int effectId = _this.attribute( "effectId" ).toInt(); if( effectId > PeakController::s_lastEffectId ) @@ -92,7 +90,6 @@ void PeakControllerEffectControls::saveSettings( QDomDocument & _doc, m_absModel.saveSettings( _doc, _this, "abs" ); m_amountMultModel.saveSettings( _doc, _this, "amountmult" ); - m_muteOutputModel.saveSettings( _doc, _this, "muteout" ); } diff --git a/plugins/peak_controller_effect/peak_controller_effect_controls.h b/plugins/peak_controller_effect/peak_controller_effect_controls.h index 4a4de0401..d42c6a9fd 100644 --- a/plugins/peak_controller_effect/peak_controller_effect_controls.h +++ b/plugins/peak_controller_effect/peak_controller_effect_controls.h @@ -68,7 +68,6 @@ private: BoolModel m_muteModel; BoolModel m_absModel; FloatModel m_amountMultModel; - BoolModel m_muteOutputModel; friend class PeakControllerEffectControlDialog; friend class PeakControllerEffect; diff --git a/plugins/triple_oscillator/am_active.png b/plugins/triple_oscillator/am_active.png index c02e68fc6..88546daa0 100644 Binary files a/plugins/triple_oscillator/am_active.png and b/plugins/triple_oscillator/am_active.png differ diff --git a/plugins/triple_oscillator/am_inactive.png b/plugins/triple_oscillator/am_inactive.png index bcdbc4ca4..d467da4eb 100644 Binary files a/plugins/triple_oscillator/am_inactive.png and b/plugins/triple_oscillator/am_inactive.png differ diff --git a/plugins/triple_oscillator/artwork.png b/plugins/triple_oscillator/artwork.png index 0c6db1768..7c61a87ec 100644 Binary files a/plugins/triple_oscillator/artwork.png and b/plugins/triple_oscillator/artwork.png differ diff --git a/plugins/triple_oscillator/exp_shape_active.png b/plugins/triple_oscillator/exp_shape_active.png index e9b134534..af1f24a97 100644 Binary files a/plugins/triple_oscillator/exp_shape_active.png and b/plugins/triple_oscillator/exp_shape_active.png differ diff --git a/plugins/triple_oscillator/exp_shape_inactive.png b/plugins/triple_oscillator/exp_shape_inactive.png index fb76a8e5d..4444a8a41 100644 Binary files a/plugins/triple_oscillator/exp_shape_inactive.png and b/plugins/triple_oscillator/exp_shape_inactive.png differ diff --git a/plugins/triple_oscillator/fm_active.png b/plugins/triple_oscillator/fm_active.png index a4a66dcc4..625f40933 100644 Binary files a/plugins/triple_oscillator/fm_active.png and b/plugins/triple_oscillator/fm_active.png differ diff --git a/plugins/triple_oscillator/fm_inactive.png b/plugins/triple_oscillator/fm_inactive.png index 2a12bf670..daddc70ba 100644 Binary files a/plugins/triple_oscillator/fm_inactive.png and b/plugins/triple_oscillator/fm_inactive.png differ diff --git a/plugins/triple_oscillator/mix_active.png b/plugins/triple_oscillator/mix_active.png index 6eba8e39e..9dd52e3b5 100644 Binary files a/plugins/triple_oscillator/mix_active.png and b/plugins/triple_oscillator/mix_active.png differ diff --git a/plugins/triple_oscillator/mix_inactive.png b/plugins/triple_oscillator/mix_inactive.png index 6138a11cd..57814a8a6 100644 Binary files a/plugins/triple_oscillator/mix_inactive.png and b/plugins/triple_oscillator/mix_inactive.png differ diff --git a/plugins/triple_oscillator/moog_saw_shape_active.png b/plugins/triple_oscillator/moog_saw_shape_active.png index 79c78a9c8..5cabc3bb2 100644 Binary files a/plugins/triple_oscillator/moog_saw_shape_active.png and b/plugins/triple_oscillator/moog_saw_shape_active.png differ diff --git a/plugins/triple_oscillator/moog_saw_shape_inactive.png b/plugins/triple_oscillator/moog_saw_shape_inactive.png index f4bb000f8..b07d863b4 100644 Binary files a/plugins/triple_oscillator/moog_saw_shape_inactive.png and b/plugins/triple_oscillator/moog_saw_shape_inactive.png differ diff --git a/plugins/triple_oscillator/pm_active.png b/plugins/triple_oscillator/pm_active.png index cb37870f1..b8e952072 100644 Binary files a/plugins/triple_oscillator/pm_active.png and b/plugins/triple_oscillator/pm_active.png differ diff --git a/plugins/triple_oscillator/pm_inactive.png b/plugins/triple_oscillator/pm_inactive.png index 8f9fd3ddc..458f49bdb 100644 Binary files a/plugins/triple_oscillator/pm_inactive.png and b/plugins/triple_oscillator/pm_inactive.png differ diff --git a/plugins/triple_oscillator/saw_shape_active.png b/plugins/triple_oscillator/saw_shape_active.png index 2279f24d3..88622a2ea 100644 Binary files a/plugins/triple_oscillator/saw_shape_active.png and b/plugins/triple_oscillator/saw_shape_active.png differ diff --git a/plugins/triple_oscillator/saw_shape_inactive.png b/plugins/triple_oscillator/saw_shape_inactive.png index f7e679d54..e28c5a315 100644 Binary files a/plugins/triple_oscillator/saw_shape_inactive.png and b/plugins/triple_oscillator/saw_shape_inactive.png differ diff --git a/plugins/triple_oscillator/sin_shape_active.png b/plugins/triple_oscillator/sin_shape_active.png index 7bac6e4a5..0f51d6fbc 100644 Binary files a/plugins/triple_oscillator/sin_shape_active.png and b/plugins/triple_oscillator/sin_shape_active.png differ diff --git a/plugins/triple_oscillator/sin_shape_inactive.png b/plugins/triple_oscillator/sin_shape_inactive.png index 3a84f66af..591e5a9b2 100644 Binary files a/plugins/triple_oscillator/sin_shape_inactive.png and b/plugins/triple_oscillator/sin_shape_inactive.png differ diff --git a/plugins/triple_oscillator/square_shape_active.png b/plugins/triple_oscillator/square_shape_active.png index 7d686527c..bfacc0cbb 100644 Binary files a/plugins/triple_oscillator/square_shape_active.png and b/plugins/triple_oscillator/square_shape_active.png differ diff --git a/plugins/triple_oscillator/square_shape_inactive.png b/plugins/triple_oscillator/square_shape_inactive.png index f2990bf0c..e8e1a1659 100644 Binary files a/plugins/triple_oscillator/square_shape_inactive.png and b/plugins/triple_oscillator/square_shape_inactive.png differ diff --git a/plugins/triple_oscillator/sync_active.png b/plugins/triple_oscillator/sync_active.png index cffd1b3d6..fa07bcfa7 100644 Binary files a/plugins/triple_oscillator/sync_active.png and b/plugins/triple_oscillator/sync_active.png differ diff --git a/plugins/triple_oscillator/sync_inactive.png b/plugins/triple_oscillator/sync_inactive.png index b5bc4aea8..579eceb12 100644 Binary files a/plugins/triple_oscillator/sync_inactive.png and b/plugins/triple_oscillator/sync_inactive.png differ diff --git a/plugins/triple_oscillator/triangle_shape_active.png b/plugins/triple_oscillator/triangle_shape_active.png index 97d0d1c30..ad343d7be 100644 Binary files a/plugins/triple_oscillator/triangle_shape_active.png and b/plugins/triple_oscillator/triangle_shape_active.png differ diff --git a/plugins/triple_oscillator/triangle_shape_inactive.png b/plugins/triple_oscillator/triangle_shape_inactive.png index a0199e8f2..e2ab7406d 100644 Binary files a/plugins/triple_oscillator/triangle_shape_inactive.png and b/plugins/triple_oscillator/triangle_shape_inactive.png differ diff --git a/plugins/triple_oscillator/usr_shape_active.png b/plugins/triple_oscillator/usr_shape_active.png index ac6ea1f3c..463aa6882 100644 Binary files a/plugins/triple_oscillator/usr_shape_active.png and b/plugins/triple_oscillator/usr_shape_active.png differ diff --git a/plugins/triple_oscillator/usr_shape_inactive.png b/plugins/triple_oscillator/usr_shape_inactive.png index 53f1eb3dc..923d6b2d8 100644 Binary files a/plugins/triple_oscillator/usr_shape_inactive.png and b/plugins/triple_oscillator/usr_shape_inactive.png differ diff --git a/plugins/triple_oscillator/white_noise_shape_active.png b/plugins/triple_oscillator/white_noise_shape_active.png index 83c44606e..2cd52eaff 100644 Binary files a/plugins/triple_oscillator/white_noise_shape_active.png and b/plugins/triple_oscillator/white_noise_shape_active.png differ diff --git a/plugins/triple_oscillator/white_noise_shape_inactive.png b/plugins/triple_oscillator/white_noise_shape_inactive.png index 19984f586..c989dafc8 100644 Binary files a/plugins/triple_oscillator/white_noise_shape_inactive.png and b/plugins/triple_oscillator/white_noise_shape_inactive.png differ diff --git a/plugins/vestige/vestige.cpp b/plugins/vestige/vestige.cpp index 0cee1a4aa..6dfea9f69 100644 --- a/plugins/vestige/vestige.cpp +++ b/plugins/vestige/vestige.cpp @@ -313,15 +313,13 @@ void vestigeInstrument::play( sampleFrame * _buf ) bool vestigeInstrument::handleMidiEvent( const midiEvent & _me, const midiTime & _time ) { - if( !isMuted() ) + m_pluginMutex.lock(); + if( m_plugin != NULL ) { - m_pluginMutex.lock(); - if( m_plugin != NULL ) - { - m_plugin->processMidiEvent( _me, _time ); - } - m_pluginMutex.unlock(); + m_plugin->processMidiEvent( _me, _time ); } + m_pluginMutex.unlock(); + return true; } diff --git a/plugins/zynaddsubfx/ZynAddSubFx.cpp b/plugins/zynaddsubfx/ZynAddSubFx.cpp index 18775b5dd..ad2dde50a 100644 --- a/plugins/zynaddsubfx/ZynAddSubFx.cpp +++ b/plugins/zynaddsubfx/ZynAddSubFx.cpp @@ -1,7 +1,7 @@ /* * ZynAddSubFx.cpp - ZynAddSubxFX-embedding plugin * - * Copyright (c) 2008-2013 Tobias Doerffel + * Copyright (c) 2008-2014 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -343,14 +343,9 @@ void ZynAddSubFxInstrument::play( sampleFrame * _buf ) bool ZynAddSubFxInstrument::handleMidiEvent( const midiEvent & _me, const midiTime & _time ) { - // do not send NoteOn events if muted - if( _me.type() == MidiNoteOn && isMuted() ) - { - return true; - } // do not forward external MIDI Control Change events if the according // LED is not checked - else if( _me.type() == MidiControlChange && + if( _me.type() == MidiControlChange && _me.sourcePort() != this && m_forwardMidiCcModel.value() == false ) { diff --git a/plugins/zynaddsubfx/src/Misc/Part.cpp b/plugins/zynaddsubfx/src/Misc/Part.cpp index 3830fc630..e54c85891 100644 --- a/plugins/zynaddsubfx/src/Misc/Part.cpp +++ b/plugins/zynaddsubfx/src/Misc/Part.cpp @@ -1076,7 +1076,7 @@ void Part::setPpanning(char Ppanning_) */ void Part::setkititemstatus(int kititem, int Penabled_) { - if((kititem == 0) && (kititem >= NUM_KIT_ITEMS)) + if((kititem == 0) || (kititem >= NUM_KIT_ITEMS)) return; //nonexistent kit item and the first kit item is always enabled kit[kititem].Penabled = Penabled_; diff --git a/src/core/Instrument.cpp b/src/core/Instrument.cpp index ad45bb846..339043ef9 100644 --- a/src/core/Instrument.cpp +++ b/src/core/Instrument.cpp @@ -96,14 +96,6 @@ bool Instrument::isFromTrack( const track * _track ) const -bool Instrument::isMuted() const -{ - return m_instrumentTrack->isMuted(); -} - - - - void Instrument::applyRelease( sampleFrame * buf, const notePlayHandle * _n ) { const fpp_t frames = _n->framesLeftForCurrentPeriod(); diff --git a/src/core/audio/AudioAlsa.cpp b/src/core/audio/AudioAlsa.cpp index 4267e2f02..7683ab680 100644 --- a/src/core/audio/AudioAlsa.cpp +++ b/src/core/audio/AudioAlsa.cpp @@ -499,7 +499,7 @@ AudioAlsa::setupWidget::setupWidget( QWidget * _parent ) : m_device->setGeometry( 10, 20, 160, 20 ); QLabel * dev_lbl = new QLabel( tr( "DEVICE" ), this ); - dev_lbl->setFont( pointSize<6>( dev_lbl->font() ) ); + dev_lbl->setFont( pointSize<7>( dev_lbl->font() ) ); dev_lbl->setGeometry( 10, 40, 160, 10 ); lcdSpinBoxModel * m = new lcdSpinBoxModel( /* this */ ); diff --git a/src/core/audio/AudioJack.cpp b/src/core/audio/AudioJack.cpp index 24ffdf300..dd97b5a7b 100644 --- a/src/core/audio/AudioJack.cpp +++ b/src/core/audio/AudioJack.cpp @@ -1,7 +1,7 @@ /* - * AudioJack.cpp - support for JACK-transport + * AudioJack.cpp - support for JACK transport * - * Copyright (c) 2005-2009 Tobias Doerffel + * Copyright (c) 2005-2014 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -344,8 +344,7 @@ int AudioJack::processCallback( jack_nframes_t _nframes, void * _udata ) } #ifdef AUDIO_PORT_SUPPORT - const Uint32 frames = qMin( _nframes, - mixer()->framesPerPeriod() ); + const int frames = qMin( _nframes, mixer()->framesPerPeriod() ); for( jackPortMap::iterator it = m_portMap.begin(); it != m_portMap.end(); ++it ) { @@ -359,7 +358,7 @@ int AudioJack::processCallback( jack_nframes_t _nframes, void * _udata ) (jack_default_audio_sample_t *) jack_port_get_buffer( it.data().ports[ch], _nframes ); - for( Uint32 frame = 0; frame < frames; ++frame ) + for( int frame = 0; frame < frames; ++frame ) { buf[frame] = it.key()->firstBuffer()[frame][ch]; } @@ -444,7 +443,7 @@ AudioJack::setupWidget::setupWidget( QWidget * _parent ) : m_clientName->setGeometry( 10, 20, 160, 20 ); QLabel * cn_lbl = new QLabel( tr( "CLIENT-NAME" ), this ); - cn_lbl->setFont( pointSize<6>( cn_lbl->font() ) ); + cn_lbl->setFont( pointSize<7>( cn_lbl->font() ) ); cn_lbl->setGeometry( 10, 40, 160, 10 ); lcdSpinBoxModel * m = new lcdSpinBoxModel( /* this */ ); diff --git a/src/core/audio/AudioOss.cpp b/src/core/audio/AudioOss.cpp index 8e7886ac2..f9f62b6d5 100644 --- a/src/core/audio/AudioOss.cpp +++ b/src/core/audio/AudioOss.cpp @@ -335,7 +335,7 @@ AudioOss::setupWidget::setupWidget( QWidget * _parent ) : m_device->setGeometry( 10, 20, 160, 20 ); QLabel * dev_lbl = new QLabel( tr( "DEVICE" ), this ); - dev_lbl->setFont( pointSize<6>( dev_lbl->font() ) ); + dev_lbl->setFont( pointSize<7>( dev_lbl->font() ) ); dev_lbl->setGeometry( 10, 40, 160, 10 ); lcdSpinBoxModel * m = new lcdSpinBoxModel( /* this */ ); diff --git a/src/core/audio/AudioPortAudio.cpp b/src/core/audio/AudioPortAudio.cpp index 5882ee17e..7da82f841 100644 --- a/src/core/audio/AudioPortAudio.cpp +++ b/src/core/audio/AudioPortAudio.cpp @@ -395,14 +395,14 @@ AudioPortAudio::setupWidget::setupWidget( QWidget * _parent ) : m_backend->setGeometry( 64, 15, 260, 20 ); QLabel * backend_lbl = new QLabel( tr( "BACKEND" ), this ); - backend_lbl->setFont( pointSize<6>( backend_lbl->font() ) ); + backend_lbl->setFont( pointSize<7>( backend_lbl->font() ) ); backend_lbl->move( 8, 18 ); m_device = new comboBox( this, "DEVICE" ); m_device->setGeometry( 64, 35, 260, 20 ); QLabel * dev_lbl = new QLabel( tr( "DEVICE" ), this ); - dev_lbl->setFont( pointSize<6>( dev_lbl->font() ) ); + dev_lbl->setFont( pointSize<7>( dev_lbl->font() ) ); dev_lbl->move( 8, 38 ); /* lcdSpinBoxModel * m = new lcdSpinBoxModel( ); diff --git a/src/core/audio/AudioPulseAudio.cpp b/src/core/audio/AudioPulseAudio.cpp index db7481c9f..63038d2c6 100644 --- a/src/core/audio/AudioPulseAudio.cpp +++ b/src/core/audio/AudioPulseAudio.cpp @@ -286,7 +286,7 @@ AudioPulseAudio::setupWidget::setupWidget( QWidget * _parent ) : m_device->setGeometry( 10, 20, 160, 20 ); QLabel * dev_lbl = new QLabel( tr( "DEVICE" ), this ); - dev_lbl->setFont( pointSize<6>( dev_lbl->font() ) ); + dev_lbl->setFont( pointSize<7>( dev_lbl->font() ) ); dev_lbl->setGeometry( 10, 40, 160, 10 ); lcdSpinBoxModel * m = new lcdSpinBoxModel( /* this */ ); diff --git a/src/core/audio/AudioSdl.cpp b/src/core/audio/AudioSdl.cpp index e9a592fa1..a72dd5825 100644 --- a/src/core/audio/AudioSdl.cpp +++ b/src/core/audio/AudioSdl.cpp @@ -210,7 +210,7 @@ AudioSdl::setupWidget::setupWidget( QWidget * _parent ) : m_device->setGeometry( 10, 20, 160, 20 ); QLabel * dev_lbl = new QLabel( tr( "DEVICE" ), this ); - dev_lbl->setFont( pointSize<6>( dev_lbl->font() ) ); + dev_lbl->setFont( pointSize<7>( dev_lbl->font() ) ); dev_lbl->setGeometry( 10, 40, 160, 10 ); } diff --git a/src/core/midi/MidiAlsaRaw.cpp b/src/core/midi/MidiAlsaRaw.cpp index a55669204..0820a4b48 100644 --- a/src/core/midi/MidiAlsaRaw.cpp +++ b/src/core/midi/MidiAlsaRaw.cpp @@ -183,7 +183,7 @@ MidiAlsaRaw::setupWidget::setupWidget( QWidget * _parent ) : m_device->setGeometry( 10, 20, 160, 20 ); QLabel * dev_lbl = new QLabel( tr( "DEVICE" ), this ); - dev_lbl->setFont( pointSize<6>( dev_lbl->font() ) ); + dev_lbl->setFont( pointSize<7>( dev_lbl->font() ) ); dev_lbl->setGeometry( 10, 40, 160, 10 ); } diff --git a/src/core/midi/MidiAlsaSeq.cpp b/src/core/midi/MidiAlsaSeq.cpp index 9cd02d01b..95b351197 100644 --- a/src/core/midi/MidiAlsaSeq.cpp +++ b/src/core/midi/MidiAlsaSeq.cpp @@ -716,7 +716,7 @@ MidiAlsaSeq::setupWidget::setupWidget( QWidget * _parent ) : m_device->setGeometry( 10, 20, 160, 20 ); QLabel * dev_lbl = new QLabel( tr( "DEVICE" ), this ); - dev_lbl->setFont( pointSize<6>( dev_lbl->font() ) ); + dev_lbl->setFont( pointSize<7>( dev_lbl->font() ) ); dev_lbl->setGeometry( 10, 40, 160, 10 ); } diff --git a/src/core/midi/MidiOss.cpp b/src/core/midi/MidiOss.cpp index 066490cec..c4cff5168 100644 --- a/src/core/midi/MidiOss.cpp +++ b/src/core/midi/MidiOss.cpp @@ -121,7 +121,7 @@ MidiOss::setupWidget::setupWidget( QWidget * _parent ) : m_device->setGeometry( 10, 20, 160, 20 ); QLabel * dev_lbl = new QLabel( tr( "DEVICE" ), this ); - dev_lbl->setFont( pointSize<6>( dev_lbl->font() ) ); + dev_lbl->setFont( pointSize<7>( dev_lbl->font() ) ); dev_lbl->setGeometry( 10, 40, 160, 10 ); } diff --git a/src/core/timeline.cpp b/src/core/timeline.cpp index a517fb1e9..d392ff8c4 100644 --- a/src/core/timeline.cpp +++ b/src/core/timeline.cpp @@ -265,55 +265,59 @@ void timeLine::paintEvent( QPaintEvent * ) -void timeLine::mousePressEvent( QMouseEvent * _me ) +void timeLine::mousePressEvent( QMouseEvent* event ) { - if( _me->x() < m_xOffset ) + if( event->x() < m_xOffset ) { return; } - if( _me->button() == Qt::LeftButton ) + if( event->button() == Qt::LeftButton ) { m_action = MovePositionMarker; - if( _me->x() - m_xOffset < s_posMarkerPixmap->width() ) + if( event->x() - m_xOffset < s_posMarkerPixmap->width() ) { - m_moveXOff = _me->x() - m_xOffset; + m_moveXOff = event->x() - m_xOffset; } else { m_moveXOff = s_posMarkerPixmap->width() / 2; } } - else + else if( event->button() == Qt::RightButton ) { - const midiTime t = m_begin + static_cast( _me->x() * midiTime::ticksPerTact() / m_ppt ); - m_action = MoveLoopBegin; + const midiTime t = m_begin + static_cast( event->x() * midiTime::ticksPerTact() / m_ppt ); if( m_loopPos[0] > m_loopPos[1] ) { qSwap( m_loopPos[0], m_loopPos[1] ); } - if( _me->button() == Qt::RightButton ) + if( event->modifiers() & Qt::ShiftModifier ) + { + m_action = MoveLoopBegin; + } + else { m_action = MoveLoopEnd; } m_loopPos[( m_action == MoveLoopBegin ) ? 0 : 1] = t; } + if( m_action == MoveLoopBegin || m_action == MoveLoopEnd ) { delete m_hint; m_hint = textFloat::displayMessage( tr( "Hint" ), - tr( "Press to disable magnetic " - "loop-points." ), + tr( "Press to disable magnetic loop points." ), embed::getIconPixmap( "hint" ), 0 ); } - mouseMoveEvent( _me ); + + mouseMoveEvent( event ); } -void timeLine::mouseMoveEvent( QMouseEvent * _me ) +void timeLine::mouseMoveEvent( QMouseEvent* event ) { - const midiTime t = m_begin + static_cast( qMax( _me->x() - m_xOffset - m_moveXOff, 0 ) * midiTime::ticksPerTact() / m_ppt ); + const midiTime t = m_begin + static_cast( qMax( event->x() - m_xOffset - m_moveXOff, 0 ) * midiTime::ticksPerTact() / m_ppt ); switch( m_action ) { @@ -328,7 +332,7 @@ void timeLine::mouseMoveEvent( QMouseEvent * _me ) case MoveLoopEnd: { const int i = m_action - MoveLoopBegin; - if( _me->modifiers() & Qt::ControlModifier ) + if( event->modifiers() & Qt::ControlModifier ) { // no ctrl-press-hint when having ctrl pressed delete m_hint; @@ -361,7 +365,7 @@ void timeLine::mouseMoveEvent( QMouseEvent * _me ) -void timeLine::mouseReleaseEvent( QMouseEvent * _me ) +void timeLine::mouseReleaseEvent( QMouseEvent* event ) { delete m_hint; m_hint = NULL; diff --git a/src/gui/AutomationPatternView.cpp b/src/gui/AutomationPatternView.cpp index c4d260c53..cd0127b36 100644 --- a/src/gui/AutomationPatternView.cpp +++ b/src/gui/AutomationPatternView.cpp @@ -273,14 +273,14 @@ void AutomationPatternView::paintEvent( QPaintEvent * ) } p.resetMatrix(); - p.setFont( pointSize<7>( p.font() ) ); + p.setFont( pointSize<8>( p.font() ) ); if( m_pat->isMuted() || m_pat->getTrack()->isMuted() ) { p.setPen( QColor( 192, 192, 192 ) ); } else { - p.setPen( QColor( 0, 64, 255 ) ); + p.setPen( QColor( 0, 180, 60 ) ); } p.drawText( 2, p.fontMetrics().height() - 1, m_pat->name() ); diff --git a/src/gui/LmmsStyle.cpp b/src/gui/LmmsStyle.cpp index 8d3a15ab3..9df416b8f 100644 --- a/src/gui/LmmsStyle.cpp +++ b/src/gui/LmmsStyle.cpp @@ -232,7 +232,7 @@ QPalette LmmsStyle::standardPalette( void ) const { QPalette pal = QPlastiqueStyle::standardPalette(); - + /* sane defaults in case fetching from stylesheet fails*/ pal.setColor( QPalette::Background, QColor( 91, 101, 113 ) ); @@ -245,17 +245,17 @@ QPalette LmmsStyle::standardPalette( void ) const pal.setColor( QPalette::BrightText, QColor( 74, 253, 133 ) ); pal.setColor( QPalette::Highlight, QColor( 100, 100, 100 ) ); pal.setColor( QPalette::HighlightedText, QColor( 255, 255, 255 ) ); - + /* fetch from stylesheet using regexp */ QStringList paletteData = qApp->styleSheet().split( '\n' ).filter( QRegExp( "^palette:*" ) ); foreach( QString s, paletteData ) { - if (s.contains(":background")) { pal.setColor( QPalette::Background, QColor( s.mid( s.indexOf("#"), 7 ) ) ); } + if (s.contains(":background")) { pal.setColor( QPalette::Background, QColor( s.mid( s.indexOf("#"), 7 ) ) ); } else if (s.contains(":windowtext")) { pal.setColor( QPalette::WindowText, QColor( s.mid( s.indexOf("#"), 7 ) ) ); } else if (s.contains(":base")) { pal.setColor( QPalette::Base, QColor( s.mid( s.indexOf("#"), 7 ) ) ); } - else if (s.contains(":buttontext")) { pal.setColor( QPalette::ButtonText, QColor( s.mid( s.indexOf("#"), 7 ) ) ); } - else if (s.contains(":brighttext")) { pal.setColor( QPalette::BrightText, QColor( s.mid( s.indexOf("#"), 7 ) ) ); } + else if (s.contains(":buttontext")) { pal.setColor( QPalette::ButtonText, QColor( s.mid( s.indexOf("#"), 7 ) ) ); } + else if (s.contains(":brighttext")) { pal.setColor( QPalette::BrightText, QColor( s.mid( s.indexOf("#"), 7 ) ) ); } else if (s.contains(":text")) { pal.setColor( QPalette::Text, QColor( s.mid( s.indexOf("#"), 7 ) ) ); } else if (s.contains(":button")) { pal.setColor( QPalette::Button, QColor( s.mid( s.indexOf("#"), 7 ) ) ); } else if (s.contains(":shadow")) { pal.setColor( QPalette::Shadow, QColor( s.mid( s.indexOf("#"), 7 ) ) ); } @@ -268,7 +268,7 @@ QPalette LmmsStyle::standardPalette( void ) const - +/* void LmmsStyle::drawControl( ControlElement element, const QStyleOption* option, QPainter* painter, const QWidget* widget ) const { @@ -294,7 +294,7 @@ void LmmsStyle::drawControl( ControlElement element, const QStyleOption* option, cache.fill( QColor( 48, 48, 48 ) ); QColor sliderColor; QColor blurColor; - hoverColors(sunken, hover, + hoverColors(sunken, hover, scrollBar->activeSubControls & SC_ScrollBarAddLine && isEnabled, sliderColor, blurColor); @@ -455,7 +455,7 @@ void LmmsStyle::drawControl( ControlElement element, const QStyleOption* option, } } - +*/ void LmmsStyle::drawComplexControl( ComplexControl control, const QStyleOptionComplex * option, @@ -482,12 +482,12 @@ void LmmsStyle::drawComplexControl( ComplexControl control, return; } } - else if( control == CC_ScrollBar ) +/* else if( control == CC_ScrollBar ) { - QColor background = QColor( 48, 48, 48 ); - painter->fillRect( option->rect, background ); + painter->fillRect( option->rect, QApplication::palette().color( QPalette::Active, + QPalette::Background ) ); - } + }*/ QPlastiqueStyle::drawComplexControl( control, option, painter, widget ); } @@ -633,7 +633,7 @@ int LmmsStyle::pixelMetric( PixelMetric _metric, const QStyleOption * _option, } // QStyle::SH_TitleBar_NoBorder - +/* QSize LmmsStyle::sizeFromContents( ContentsType type, const QStyleOption* option, const QSize& size, const QWidget* widget ) const { if( type == CT_ScrollBar ) @@ -655,8 +655,8 @@ QSize LmmsStyle::sizeFromContents( ContentsType type, const QStyleOption* option return QPlastiqueStyle::sizeFromContents( type, option, size, widget ); } - - +*/ +/* QRect LmmsStyle::subControlRect( ComplexControl control, const QStyleOptionComplex* option, SubControl subControl, const QWidget* widget ) const { QRect rect = QPlastiqueStyle::subControlRect( control, option, subControl, widget ); @@ -797,7 +797,7 @@ QRect LmmsStyle::subControlRect( ComplexControl control, const QStyleOptionCompl return rect; } - +*/ diff --git a/src/gui/piano_roll.cpp b/src/gui/piano_roll.cpp index be14b6da6..27ebbcace 100644 --- a/src/gui/piano_roll.cpp +++ b/src/gui/piano_roll.cpp @@ -106,7 +106,7 @@ const int RESIZE_AREA_WIDTH = 4; const int NE_LINE_WIDTH = 3; // key where to start -const int INITIAL_START_KEY = Key_C + Octave_3 * KeysPerOctave; +const int INITIAL_START_KEY = Key_C + Octave_4 * KeysPerOctave; // number of each note to provide in quantization and note lengths const int NUM_EVEN_LENGTHS = 6; @@ -844,7 +844,7 @@ inline void pianoRoll::drawNoteRect( QPainter & _p, int _x, int _y, ( (float)( PanningRight - _n->getPanning() ) ) / ( (float)( PanningRight - PanningLeft ) ) * 2.0f ); - const QColor defaultNoteColor( 0x4A, 0xFD, 0x85 ); + const QColor defaultNoteColor( 0x77, 0xC7, 0xD8 ); QColor col = defaultNoteColor; if( _n->length() < 0 ) @@ -2680,7 +2680,7 @@ static void printNoteHeights(QPainter& p, int bottom, int width, int startKey) }; p.setFont( pointSize( p.font() ) ); - p.setPen( QColor( 255, 255, 0 ) ); + p.setPen( QColor( 255, 255, 255 ) ); for( int y = bottom, key = startKey; y > PR_TOP_MARGIN; y -= KEY_LINE_HEIGHT, key++) { @@ -2924,7 +2924,7 @@ void pianoRoll::paintEvent( QPaintEvent * _pe ) QFont f = p.font(); f.setBold( false ); p.setFont( pointSize<10>( f ) ); - p.setPen( QColor( 255, 255, 0 ) ); + p.setPen( QColor( 255, 255, 255) ); p.drawText( QRect( 0, keyAreaBottom(), WHITE_KEY_WIDTH, noteEditBottom() - keyAreaBottom() ), Qt::AlignCenter | Qt::TextWordWrap, @@ -3072,7 +3072,7 @@ void pianoRoll::paintEvent( QPaintEvent * _pe ) int editHandleTop = 0; if( m_noteEditMode == NoteEditVolume ) { - QColor color = QColor::fromHsv( 120, 221, + QColor color = QColor::fromHsv( 140, 221, qMin(255, 60 + ( *it )->getVolume() ) ); if( ( *it )->selected() ) { @@ -3091,7 +3091,7 @@ void pianoRoll::paintEvent( QPaintEvent * _pe ) } else if( m_noteEditMode == NoteEditPanning ) { - QColor color( 0xFF, 0xB0, 0x00 ); + QColor color( 0x99, 0xAF, 0xFF ); if( ( *it )->selected() ) { color.setRgb( 0x00, 0x40, 0xC0 ); @@ -3119,7 +3119,7 @@ void pianoRoll::paintEvent( QPaintEvent * _pe ) } } - p.setPen( QPen( QColor( 0xEA, 0xA1, 0x00 ), + p.setPen( QPen( QColor( 0x99, 0xAF, 0xFF ), NE_LINE_WIDTH+2 ) ); p.drawPoints( editHandles ); diff --git a/src/gui/plugin_browser.cpp b/src/gui/plugin_browser.cpp index 43194d78f..1ecdebbb8 100644 --- a/src/gui/plugin_browser.cpp +++ b/src/gui/plugin_browser.cpp @@ -140,7 +140,7 @@ void pluginDescWidget::paintEvent( QPaintEvent * ) if( height() > 24 || m_mouseOver ) { f.setBold( false ); - p.setFont( pointSize<7>( f ) ); + p.setFont( pointSize<8>( f ) ); QRect br; p.drawText( 10 + logo_size.width(), 20, width() - 58 - 5, 999, Qt::TextWordWrap, diff --git a/src/gui/widgets/ControllerView.cpp b/src/gui/widgets/ControllerView.cpp index bafff3878..3fe10d720 100644 --- a/src/gui/widgets/ControllerView.cpp +++ b/src/gui/widgets/ControllerView.cpp @@ -56,7 +56,7 @@ ControllerView::ControllerView( Controller * _model, QWidget * _parent ) : QPushButton * ctls_btn = new QPushButton( tr( "Controls" ), this ); QFont f = ctls_btn->font(); - ctls_btn->setFont( pointSize<7>( f ) ); + ctls_btn->setFont( pointSize<8>( f ) ); ctls_btn->setGeometry( 140, 2, 50, 14 ); connect( ctls_btn, SIGNAL( clicked() ), this, SLOT( editControls() ) ); diff --git a/src/gui/widgets/EffectRackView.cpp b/src/gui/widgets/EffectRackView.cpp index 2112033d1..8c485d769 100644 --- a/src/gui/widgets/EffectRackView.cpp +++ b/src/gui/widgets/EffectRackView.cpp @@ -47,7 +47,7 @@ EffectRackView::EffectRackView( EffectChain* model, QWidget* parent ) : QVBoxLayout* effectsLayout = new QVBoxLayout( m_effectsGroupBox ); effectsLayout->setSpacing( 0 ); - effectsLayout->setContentsMargins( 2, 12, 2, 2 ); + effectsLayout->setContentsMargins( 2, m_effectsGroupBox->titleBarHeight() + 2, 2, 2 ); m_scrollArea = new QScrollArea; m_scrollArea->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOn ); diff --git a/src/gui/widgets/EffectView.cpp b/src/gui/widgets/EffectView.cpp index 0e42d1194..9b6b8cc05 100644 --- a/src/gui/widgets/EffectView.cpp +++ b/src/gui/widgets/EffectView.cpp @@ -2,7 +2,7 @@ * EffectView.cpp - view-component for an effect * * Copyright (c) 2006-2007 Danny McRae - * Copyright (c) 2007-2010 Tobias Doerffel + * Copyright (c) 2007-2014 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -92,7 +92,7 @@ EffectView::EffectView( Effect * _model, QWidget * _parent ) : QPushButton * ctls_btn = new QPushButton( tr( "Controls" ), this ); QFont f = ctls_btn->font(); - ctls_btn->setFont( pointSize<7>( f ) ); + ctls_btn->setFont( pointSize<8>( f ) ); ctls_btn->setGeometry( 140, 14, 50, 20 ); connect( ctls_btn, SIGNAL( clicked() ), this, SLOT( editControls() ) ); diff --git a/src/gui/widgets/EnvelopeAndLfoView.cpp b/src/gui/widgets/EnvelopeAndLfoView.cpp index 1ce05044c..c1d06092a 100644 --- a/src/gui/widgets/EnvelopeAndLfoView.cpp +++ b/src/gui/widgets/EnvelopeAndLfoView.cpp @@ -274,7 +274,7 @@ EnvelopeAndLfoView::EnvelopeAndLfoView( QWidget * _parent ) : m_x100Cb = new ledCheckBox( tr( "FREQ x 100" ), this ); - m_x100Cb->setFont( pointSize<6>( m_x100Cb->font() ) ); + m_x100Cb->setFont( pointSizeF( m_x100Cb->font(), 6.5 ) ); m_x100Cb->move( LFO_PREDELAY_KNOB_X, LFO_GRAPH_Y + 36 ); m_x100Cb->setWhatsThis( tr( "Click here if the frequency of this LFO should be " @@ -285,8 +285,7 @@ EnvelopeAndLfoView::EnvelopeAndLfoView( QWidget * _parent ) : m_controlEnvAmountCb = new ledCheckBox( tr( "MODULATE ENV-AMOUNT" ), this ); m_controlEnvAmountCb->move( LFO_PREDELAY_KNOB_X, LFO_GRAPH_Y + 54 ); - m_controlEnvAmountCb->setFont( pointSize<6>( - m_controlEnvAmountCb->font() ) ); + m_controlEnvAmountCb->setFont( pointSizeF( m_controlEnvAmountCb->font(), 6.5 ) ); m_controlEnvAmountCb ->setWhatsThis( tr( "Click here to make the envelope-amount controlled by this " "LFO." ) ); @@ -407,9 +406,6 @@ void EnvelopeAndLfoView::paintEvent( QPaintEvent * ) QPainter p( this ); p.setRenderHint( QPainter::Antialiasing ); - // set smaller font - p.setFont( pointSize<6>( p.font() ) ); - // draw envelope-graph p.drawPixmap( ENV_GRAPH_X, ENV_GRAPH_Y, *s_envGraph ); // draw LFO-graph diff --git a/src/gui/widgets/InstrumentFunctionViews.cpp b/src/gui/widgets/InstrumentFunctionViews.cpp index a8e6c32b4..1e8e29ad3 100644 --- a/src/gui/widgets/InstrumentFunctionViews.cpp +++ b/src/gui/widgets/InstrumentFunctionViews.cpp @@ -1,7 +1,7 @@ /* * InstrumentFunctionViews.cpp - view for instrument-functions-tab * - * Copyright (c) 2004-2009 Tobias Doerffel + * Copyright (c) 2004-2014 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -164,14 +164,14 @@ ArpeggiatorView::ArpeggiatorView( Arpeggiator * _arp, QWidget * _parent ) : m_arpDirectionLbl = new QLabel( tr( "Direction:" ), m_arpGroupBox ); m_arpDirectionLbl->setGeometry( 10, 60, 64, 10 ); - m_arpDirectionLbl->setFont( pointSize<7>( m_arpDirectionLbl->font() ) ); + m_arpDirectionLbl->setFont( pointSize<8>( m_arpDirectionLbl->font() ) ); m_arpDirectionComboBox->setGeometry( 10, 74, 140, 22 ); QLabel * mode_lbl = new QLabel( tr( "Mode:" ), m_arpGroupBox ); mode_lbl->setGeometry( 10, 110, 64, 10 ); - mode_lbl->setFont( pointSize<7>( mode_lbl->font() ) ); + mode_lbl->setFont( pointSize<8>( mode_lbl->font() ) ); m_arpModeComboBox->setGeometry( 10, 124, 128, 22 ); } diff --git a/src/gui/widgets/InstrumentSoundShapingView.cpp b/src/gui/widgets/InstrumentSoundShapingView.cpp index bb8c14b1e..7e54705d9 100644 --- a/src/gui/widgets/InstrumentSoundShapingView.cpp +++ b/src/gui/widgets/InstrumentSoundShapingView.cpp @@ -95,10 +95,9 @@ InstrumentSoundShapingView::InstrumentSoundShapingView( QWidget * _parent ) : m_filterCutKnob = new knob( knobBright_26, m_filterGroupBox ); - m_filterCutKnob->setLabel( tr( "CUTOFF" ) ); + m_filterCutKnob->setLabel( tr( "FREQ" ) ); m_filterCutKnob->move( 140, 18 ); - m_filterCutKnob->setHintText( tr( "cutoff-frequency:" ) + " ", " " + - tr( "Hz" ) ); + m_filterCutKnob->setHintText( tr( "cutoff frequency:" ) + " ", " " + tr( "Hz" ) ); m_filterCutKnob->setWhatsThis( tr( "Use this knob for setting the cutoff frequency for the " "selected filter. The cutoff frequency specifies the " diff --git a/src/gui/widgets/LcdWidget.cpp b/src/gui/widgets/LcdWidget.cpp index 16a5df793..b68d4f242 100644 --- a/src/gui/widgets/LcdWidget.cpp +++ b/src/gui/widgets/LcdWidget.cpp @@ -188,7 +188,7 @@ void LcdWidget::paintEvent( QPaintEvent* ) // Label if( !m_label.isEmpty() ) { - p.setFont( pointSize<6>( p.font() ) ); + p.setFont( pointSizeF( p.font(), 6.5 ) ); p.setPen( QColor( 64, 64, 64 ) ); p.drawText( width() / 2 - p.fontMetrics().width( m_label ) / 2 + 1, @@ -233,8 +233,8 @@ void LcdWidget::updateSize() else { setFixedSize( qMax( m_cellWidth * m_numDigits + 2*(margin+m_marginWidth), - QFontMetrics( pointSize<6>( font() ) ).width( m_label ) ), - m_cellHeight + (2*margin) + 8 ); + QFontMetrics( pointSizeF( font(), 6.5 ) ).width( m_label ) ), + m_cellHeight + (2*margin) + 9 ); } update(); diff --git a/src/gui/widgets/group_box.cpp b/src/gui/widgets/group_box.cpp index afb86a630..ee5f3f25b 100644 --- a/src/gui/widgets/group_box.cpp +++ b/src/gui/widgets/group_box.cpp @@ -40,7 +40,8 @@ groupBox::groupBox( const QString & _caption, QWidget * _parent ) : QWidget( _parent ), BoolModelView( NULL, this ), - m_caption( _caption ) + m_caption( _caption ), + m_titleBarHeight( 11 ) { updatePixmap(); @@ -112,15 +113,15 @@ void groupBox::updatePixmap() p.drawLine( 0, height() - 1, width() - 1, height() - 1 ); // draw groupbox-titlebar - QLinearGradient g( 0, 0, 0, 9 ); + QLinearGradient g( 0, 0, 0, m_titleBarHeight ); g.setColorAt( 0, bg_color.darker( 250 ) ); g.setColorAt( 0.1, bg_color.lighter( 120 ) ); g.setColorAt( 1, bg_color.darker( 250 ) ); - p.fillRect( 2, 2, width() - 4, 9, g ); + p.fillRect( 2, 2, width() - 4, m_titleBarHeight, g ); // draw line below titlebar p.setPen( bg_color.dark( 400 ) ); - p.drawLine( 1, 11, width() - 3, 11 ); + p.drawLine( 1, m_titleBarHeight + 1, width() - 3, m_titleBarHeight + 1 ); // black inner rect p.drawRect( 1, 1, width() - 3, height() - 3 ); @@ -128,8 +129,8 @@ void groupBox::updatePixmap() //p.setPen( QColor( 255, 255, 255 ) ); p.setPen( palette().color( QPalette::Active, QPalette::Text ) ); - p.setFont( pointSize<7>( font() ) ); - p.drawText( 22, 10, m_caption ); + p.setFont( pointSize<8>( font() ) ); + p.drawText( 22, m_titleBarHeight, m_caption ); QPalette pal = palette(); pal.setBrush( backgroundRole(), QBrush( pm ) ); diff --git a/src/gui/widgets/knob.cpp b/src/gui/widgets/knob.cpp index b46a62a06..7c7b9bc82 100644 --- a/src/gui/widgets/knob.cpp +++ b/src/gui/widgets/knob.cpp @@ -61,9 +61,7 @@ knob::knob( int _knob_num, QWidget * _parent, const QString & _name ) : m_label( "" ), m_knobPixmap( NULL ), m_volumeKnob( false ), - m_mouseOffset( 0.0f ), m_buttonPressed( false ), - m_magneticDecay( 0 ), m_angle( -10 ), m_outerColor( NULL ) { @@ -108,8 +106,7 @@ void knob::setLabel( const QString & _txt ) if( m_knobPixmap ) { setFixedSize( qMax( m_knobPixmap->width(), - QFontMetrics( pointSizeF( font(), 6 - ) ).width( m_label ) ), + QFontMetrics( pointSizeF( font(), 6.5) ).width( m_label ) ), m_knobPixmap->height() + 10 ); } update(); @@ -369,16 +366,15 @@ void knob::drawKnob( QPainter * _p ) _p->drawImage( 0, 0, m_cache ); } - - - float knob::getValue( const QPoint & _p ) { + const float SMOOTH_FACTOR = 0.125f; + int yDist = (_p.y() - m_origMousePos.y()) * SMOOTH_FACTOR; if( engine::mainWindow()->isShiftPressed() ) { - return( ( _p.y() - m_origMousePos.y() ) * model()->step() ); + return m_origValue - (yDist * model()->step()); } - return( ( _p.y() - m_origMousePos.y() ) * pageSize() ); + return m_origValue - (yDist * pageSize()); } @@ -447,6 +443,8 @@ void knob::mousePressEvent( QMouseEvent * _me ) const QPoint & p = _me->pos(); m_origMousePos = p; + m_mouseOffset = QPoint(0, 0); + m_origValue = model()->value(); emit sliderPressed(); @@ -475,9 +473,10 @@ void knob::mousePressEvent( QMouseEvent * _me ) void knob::mouseMoveEvent( QMouseEvent * _me ) { - if( m_buttonPressed == true && _me->pos() != m_origMousePos ) + if( m_buttonPressed && _me->pos() != m_origMousePos ) { - setPosition( _me->pos() ); + m_mouseOffset += _me->pos() - m_origMousePos; + setPosition( m_mouseOffset ); emit sliderMoved( model()->value() ); QCursor::setPos( mapToGlobal( m_origMousePos ) ); } @@ -494,7 +493,6 @@ void knob::mouseReleaseEvent( QMouseEvent * /* _me*/ ) m_buttonPressed = false; - m_mouseOffset = 0; emit sliderReleased(); QApplication::restoreOverrideCursor(); @@ -530,7 +528,7 @@ void knob::paintEvent( QPaintEvent * _me ) drawKnob( &p ); if( !m_label.isEmpty() ) { - p.setFont( pointSizeF( p.font(), 6 ) ); + p.setFont( pointSizeF( p.font(), 6.5 ) ); /* p.setPen( QColor( 64, 64, 64 ) ); p.drawText( width() / 2 - p.fontMetrics().width( m_label ) / 2 + 1, @@ -564,31 +562,7 @@ void knob::wheelEvent( QWheelEvent * _we ) void knob::setPosition( const QPoint & _p ) { - const float current = model()->value(); - const float next = current - getValue( _p ); - - if( model()->initValue() == current ) - { - if( ++m_magneticDecay > 20 ) - { - m_magneticDecay = 0; - model()->setValue( next ); - } - - return; - } - - const bool current_sign = model()->initValue() - current < 0; - const bool next_sign = model()->initValue() - next < 0; - - if( current_sign != next_sign ) - { - model()->setValue( model()->initValue() ); - } - else - { - model()->setValue( next ); - } + model()->setValue( getValue(_p) ); } diff --git a/src/gui/widgets/led_checkbox.cpp b/src/gui/widgets/led_checkbox.cpp index 37b91bf6b..142bee740 100644 --- a/src/gui/widgets/led_checkbox.cpp +++ b/src/gui/widgets/led_checkbox.cpp @@ -1,7 +1,7 @@ /* * led_checkbox.cpp - class ledCheckBox, an improved QCheckBox * - * Copyright (c) 2005-2009 Tobias Doerffel + * Copyright (c) 2005-2014 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -54,9 +54,7 @@ ledCheckBox::ledCheckBox( const QString & _text, QWidget * _parent, m_ledOffPixmap = new QPixmap( embed::getIconPixmap( "led_off" ) ); setFont( pointSize<7>( font() ) ); - setFixedSize( m_ledOffPixmap->width() + 4 + - QFontMetrics( font() ).width( text() ), - m_ledOffPixmap->height() ); + setFixedSize( m_ledOffPixmap->width() + 5 + QFontMetrics( font() ).width( text() ), m_ledOffPixmap->height() ); } @@ -86,9 +84,9 @@ void ledCheckBox::paintEvent( QPaintEvent * ) } p.setPen( QColor( 64, 64, 64 ) ); - p.drawText( m_ledOffPixmap->width() + 3, 10, text() ); + p.drawText( m_ledOffPixmap->width() + 4, 11, text() ); p.setPen( QColor( 255, 255, 255 ) ); - p.drawText( m_ledOffPixmap->width() + 2, 9, text() ); + p.drawText( m_ledOffPixmap->width() + 3, 10, text() ); } diff --git a/src/gui/widgets/tab_bar.cpp b/src/gui/widgets/tab_bar.cpp index 373933229..1340cbcfc 100644 --- a/src/gui/widgets/tab_bar.cpp +++ b/src/gui/widgets/tab_bar.cpp @@ -1,7 +1,7 @@ /* * tab_bar.cpp - implementation of tab-bar * - * Copyright (c) 2004-2007 Tobias Doerffel + * Copyright (c) 2004-2014 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -96,7 +96,7 @@ tabButton * tabBar::addTab( QWidget * _w, const QString & _text, int _id, // widgets have the same size and only the one on the top is visible _w->setFixedSize( _w->parentWidget()->size() ); - b->setFont( pointSize<7>( b->font() ) ); + b->setFont( pointSize<8>( b->font() ) ); return( b ); } diff --git a/src/gui/widgets/tab_widget.cpp b/src/gui/widgets/tab_widget.cpp index cbe9ac5d8..0650aeb97 100644 --- a/src/gui/widgets/tab_widget.cpp +++ b/src/gui/widgets/tab_widget.cpp @@ -1,7 +1,7 @@ /* * tab_widget.cpp - tabwidget for LMMS * - * Copyright (c) 2005-2009 Tobias Doerffel + * Copyright (c) 2005-2014 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -39,7 +39,7 @@ tabWidget::tabWidget( const QString & _caption, QWidget * _parent ) : m_activeTab( 0 ), m_caption( _caption ) { - setFont( pointSize<7>( font() ) ); + setFont( pointSize<8>( font() ) ); setAutoFillBackground( true ); QColor bg_color = QApplication::palette().color( QPalette::Active, @@ -62,7 +62,7 @@ tabWidget::~tabWidget() void tabWidget::addTab( QWidget * _w, const QString & _name, int _idx ) { - setFont( pointSize<7>( font() ) ); + setFont( pointSize<8>( font() ) ); widgetDesc d = { _w, _name, fontMetrics().width( _name ) + 10 } ; if( _idx < 0/* || m_widgets.contains( _idx ) == true*/ ) { @@ -72,7 +72,7 @@ void tabWidget::addTab( QWidget * _w, const QString & _name, int _idx ) } m_widgets[_idx] = d; _w->setFixedSize( width() - 4, height() - 14 ); - _w->move( 2, 12 ); + _w->move( 2, 13 ); _w->hide(); if( m_widgets.contains( m_activeTab ) ) @@ -144,7 +144,7 @@ void tabWidget::resizeEvent( QResizeEvent * ) void tabWidget::paintEvent( QPaintEvent * _pe ) { - setFont( pointSize<7>( font() ) ); + setFont( pointSize<8>( font() ) ); QPainter p( this ); QColor bg_color = QApplication::palette().color( QPalette::Active, @@ -168,13 +168,13 @@ void tabWidget::paintEvent( QPaintEvent * _pe ) p.setPen( QColor( 0, 0, 0 ) ); p.drawRect( 1, 1, width() - 3, height() - 3 ); - p.fillRect( 2, 2, width() - 4, 9 + add, g ); - p.drawLine( 2, 11 + add, width() - 3, 11 + add ); + p.fillRect( 2, 2, width() - 4, 10 + add, g ); + p.drawLine( 2, 12 + add, width() - 3, 12 + add ); if( !big_tab_captions ) { p.setPen( QColor( 255, 255, 255 ) ); - p.drawText( 5, 10, m_caption ); + p.drawText( 5, 11, m_caption ); } int cx = ( big_tab_captions ? 4 : 14 ) + @@ -183,12 +183,12 @@ void tabWidget::paintEvent( QPaintEvent * _pe ) QColor cap_col( 160, 160, 160 ); if( big_tab_captions ) { - p.setFont( pointSize<7>( p.font() ) ); + p.setFont( pointSize<8>( p.font() ) ); cap_col = QColor( 224, 224, 224 ); } else { - p.setFont( pointSize<6>( p.font() ) ); + p.setFont( pointSize<7>( p.font() ) ); } p.setPen( cap_col ); @@ -199,9 +199,9 @@ void tabWidget::paintEvent( QPaintEvent * _pe ) if( it.key() == m_activeTab ) { p.setPen( QColor( 32, 48, 64 ) ); - p.fillRect( cx, 2, ( *it ).nwidth - 6, 9, cap_col ); + p.fillRect( cx, 2, ( *it ).nwidth - 6, 10, cap_col ); } - p.drawText( cx + 3, 9 + add, ( *it ).name ); + p.drawText( cx + 3, 10 + add, ( *it ).name ); p.setPen( cap_col ); cx += ( *it ).nwidth; } diff --git a/src/tracks/InstrumentTrack.cpp b/src/tracks/InstrumentTrack.cpp index f9c3ad9a1..876def5f5 100644 --- a/src/tracks/InstrumentTrack.cpp +++ b/src/tracks/InstrumentTrack.cpp @@ -959,7 +959,7 @@ InstrumentTrackView::InstrumentTrackView( InstrumentTrack * _it, TrackContainerV m_volumeKnob->setVolumeKnob( true ); m_volumeKnob->setModel( &_it->m_volumeModel ); m_volumeKnob->setHintText( tr( "Volume:" ) + " ", "%" ); - m_volumeKnob->move( widgetWidth-2*24, 4 ); + m_volumeKnob->move( widgetWidth-2*24, 2 ); m_volumeKnob->setLabel( tr( "VOL" ) ); m_volumeKnob->show(); m_volumeKnob->setWhatsThis( tr( volume_help ) ); @@ -968,7 +968,7 @@ InstrumentTrackView::InstrumentTrackView( InstrumentTrack * _it, TrackContainerV tr( "Panning" ) ); m_panningKnob->setModel( &_it->m_panningModel ); m_panningKnob->setHintText( tr( "Panning:" ) + " ", "%" ); - m_panningKnob->move( widgetWidth-24, 4 ); + m_panningKnob->move( widgetWidth-24, 2 ); m_panningKnob->setLabel( tr( "PAN" ) ); m_panningKnob->show(); @@ -1278,7 +1278,7 @@ InstrumentTrackWindow::InstrumentTrackWindow( InstrumentTrackView * _itv ) : // setup line edit for changing instrument track name m_nameLineEdit = new QLineEdit; - m_nameLineEdit->setFont( pointSize<8>( m_nameLineEdit->font() ) ); + m_nameLineEdit->setFont( pointSize<9>( m_nameLineEdit->font() ) ); connect( m_nameLineEdit, SIGNAL( textChanged( const QString & ) ), this, SLOT( textChanged( const QString & ) ) ); @@ -1321,7 +1321,7 @@ InstrumentTrackWindow::InstrumentTrackWindow( InstrumentTrackView * _itv ) : // setup spinbox for selecting FX-channel m_effectChannelNumber = new fxLineLcdSpinBox( 2, NULL, tr( "FX channel" ) ); - m_effectChannelNumber->setLabel( tr( "FX CHNL" ) ); + m_effectChannelNumber->setLabel( tr( "FX" ) ); basicControlsLayout->addWidget( m_effectChannelNumber ); diff --git a/src/tracks/SampleTrack.cpp b/src/tracks/SampleTrack.cpp index d57ca8447..9b7e55eed 100644 --- a/src/tracks/SampleTrack.cpp +++ b/src/tracks/SampleTrack.cpp @@ -373,7 +373,7 @@ void SampleTCOView::paintEvent( QPaintEvent * _pe ) } if( m_tco->isRecord() ) { - p.setFont( pointSize<6>( p.font() ) ); + p.setFont( pointSize<7>( p.font() ) ); p.setPen( QColor( 224, 0, 0 ) ); p.drawText( 9, p.fontMetrics().height() - 1, "Rec" ); p.setBrush( QBrush( QColor( 224, 0, 0 ) ) ); @@ -526,11 +526,11 @@ SampleTrackView::SampleTrackView( SampleTrack * _t, TrackContainerView* tcv ) : if( configManager::inst()->value( "ui", "compacttrackbuttons" ).toInt() ) { - m_volumeKnob->move( DEFAULT_SETTINGS_WIDGET_WIDTH_COMPACT-2*24, 4 ); + m_volumeKnob->move( DEFAULT_SETTINGS_WIDGET_WIDTH_COMPACT-2*24, 2 ); } else { - m_volumeKnob->move( DEFAULT_SETTINGS_WIDGET_WIDTH-2*24, 4 ); + m_volumeKnob->move( DEFAULT_SETTINGS_WIDGET_WIDTH-2*24, 2 ); } m_volumeKnob->setLabel( tr( "VOL" ) ); m_volumeKnob->show(); diff --git a/src/tracks/bb_track.cpp b/src/tracks/bb_track.cpp index bc0c1df73..67b2c2b59 100644 --- a/src/tracks/bb_track.cpp +++ b/src/tracks/bb_track.cpp @@ -208,7 +208,7 @@ void bbTCOView::paintEvent( QPaintEvent * ) p.setPen( col.dark() ); p.drawRect( 0, 0, rect().right(), rect().bottom() ); - p.setFont( pointSize<7>( p.font() ) ); + p.setFont( pointSize<8>( p.font() ) ); p.setPen( QColor( 0, 0, 0 ) ); p.drawText( 2, p.fontMetrics().height() - 1, m_bbTCO->name() ); diff --git a/src/tracks/pattern.cpp b/src/tracks/pattern.cpp index 54c7ef41c..611f18adc 100644 --- a/src/tracks/pattern.cpp +++ b/src/tracks/pattern.cpp @@ -1264,14 +1264,14 @@ void patternView::paintEvent( QPaintEvent * ) } } - p.setFont( pointSize<7>( p.font() ) ); + p.setFont( pointSize<8>( p.font() ) ); if( m_pat->isMuted() || m_pat->getTrack()->isMuted() ) { p.setPen( QColor( 192, 192, 192 ) ); } else { - p.setPen( QColor( 32, 240, 32 ) ); + p.setPen( QColor( 32, 240, 101 ) ); } if( m_pat->name() != m_pat->instrumentTrack()->name() )