diff options
-rw-r--r-- | audio/lmms/01-fix_piano_roll_resize.patch | 13 | ||||
-rw-r--r-- | audio/lmms/02-stutter_audio.patch | 187 | ||||
-rw-r--r-- | audio/lmms/README | 3 | ||||
-rw-r--r-- | audio/lmms/lmms-unlink.patch | 10 | ||||
-rw-r--r-- | audio/lmms/lmms.SlackBuild | 12 | ||||
-rw-r--r-- | audio/lmms/lmms.info | 8 | ||||
-rw-r--r-- | audio/lmms/new_buttons/stutter_off.png | bin | 0 -> 526 bytes | |||
-rw-r--r-- | audio/lmms/new_buttons/stutter_on.png | bin | 0 -> 588 bytes | |||
-rw-r--r-- | audio/lmms/slack-desc | 4 |
9 files changed, 214 insertions, 23 deletions
diff --git a/audio/lmms/01-fix_piano_roll_resize.patch b/audio/lmms/01-fix_piano_roll_resize.patch new file mode 100644 index 0000000000..51be39beeb --- /dev/null +++ b/audio/lmms/01-fix_piano_roll_resize.patch @@ -0,0 +1,13 @@ +diff --git a/src/gui/piano_roll.cpp b/src/gui/piano_roll.cpp +index e94c022..eec83fe 100644 +--- a/src/gui/piano_roll.cpp ++++ b/src/gui/piano_roll.cpp +@@ -599,7 +599,7 @@ pianoRoll::pianoRoll() : + if( engine::mainWindow()->workspace() ) + { + engine::mainWindow()->workspace()->addSubWindow( this ); +- parentWidget()->setMinimumWidth( tb_layout->minimumSize().width()+10 ); ++ parentWidget()->setMinimumSize( tb_layout->minimumSize().width()+10, 200 ); + parentWidget()->resize( tb_layout->minimumSize().width()+10, + INITIAL_PIANOROLL_HEIGHT ); + parentWidget()->hide(); diff --git a/audio/lmms/02-stutter_audio.patch b/audio/lmms/02-stutter_audio.patch new file mode 100644 index 0000000000..65c9563996 --- /dev/null +++ b/audio/lmms/02-stutter_audio.patch @@ -0,0 +1,187 @@ +From 9db67dd1aa1a4326821f17ddddfc73c198aa3f52 Mon Sep 17 00:00:00 2001 +From: Groboclown <matt@groboclown.net> +Date: Thu, 27 Jun 2013 14:15:59 -0500 +Subject: [PATCH 1/2] Add new feature to the audio file processor which allows + for resuming playback of the sample on a new note from where the last note + played. + +--- +diff -Nur lmms-0.4.15/include/sample_buffer.h lmms-0.4.15.new/include/sample_buffer.h +--- lmms-0.4.15/include/sample_buffer.h 2013-06-11 20:57:16.000000000 +0000 ++++ lmms-0.4.15.new/include/sample_buffer.h 2013-06-29 22:41:39.322810181 +0000 +@@ -51,6 +51,15 @@ + public: + handleState( bool _varying_pitch = false ); + virtual ~handleState(); ++ inline const f_cnt_t frameIndex() const ++ { ++ return m_frameIndex; ++ } ++ ++ inline void setFrameIndex( f_cnt_t _index ) ++ { ++ m_frameIndex = _index; ++ } + + + private: +diff -Nur lmms-0.4.15/plugins/audio_file_processor/audio_file_processor.cpp lmms-0.4.15.new/plugins/audio_file_processor/audio_file_processor.cpp +--- lmms-0.4.15/plugins/audio_file_processor/audio_file_processor.cpp 2013-06-11 20:57:16.000000000 +0000 ++++ lmms-0.4.15.new/plugins/audio_file_processor/audio_file_processor.cpp 2013-06-29 22:41:39.322810181 +0000 +@@ -75,7 +75,9 @@ + m_startPointModel( 0, 0, 1, 0.0000001f, this, tr( "Start of sample") ), + m_endPointModel( 1, 0, 1, 0.0000001f, this, tr( "End of sample" ) ), + m_reverseModel( false, this, tr( "Reverse sample" ) ), +- m_loopModel( false, this, tr( "Loop") ) ++ m_loopModel( false, this, tr( "Loop") ), ++ m_stutterModel( false, this, tr( "Stutter" ) ), ++ m_nextPlayStartPoint( 0 ) + { + connect( &m_reverseModel, SIGNAL( dataChanged() ), + this, SLOT( reverseModelChanged() ) ); +@@ -85,6 +87,8 @@ + this, SLOT( loopPointChanged() ) ); + connect( &m_endPointModel, SIGNAL( dataChanged() ), + this, SLOT( loopPointChanged() ) ); ++ connect( &m_stutterModel, SIGNAL( dataChanged() ), ++ this, SLOT( stutterModelChanged() ) ); + } + + +@@ -102,10 +106,27 @@ + { + const fpp_t frames = _n->framesLeftForCurrentPeriod(); + ++ // Magic key - a frequency < 20 (say, the bottom piano note if using ++ // a A4 base tuning) restarts the start point. The note is not actually ++ // played. ++ if( m_stutterModel.value() == true && _n->frequency() < 20.0 ) ++ { ++ m_nextPlayStartPoint = m_sampleBuffer.startFrame(); ++ return; ++ } ++ + if( !_n->m_pluginData ) + { ++ if( m_stutterModel.value() == true && m_nextPlayStartPoint >= m_sampleBuffer.endFrame() ) ++ { ++ // Restart playing the note if in stutter mode, not in loop mode, ++ // and we're at the end of the sample. ++ m_nextPlayStartPoint = m_sampleBuffer.startFrame(); ++ } + _n->m_pluginData = new handleState( _n->hasDetuningInfo() ); ++ ((handleState *)_n->m_pluginData)->setFrameIndex(m_nextPlayStartPoint); + } ++ + + if( m_sampleBuffer.play( _working_buffer, + (handleState *)_n->m_pluginData, +@@ -121,6 +142,10 @@ + { + emit isPlaying( 0 ); + } ++ if( m_stutterModel.value() == true ) ++ { ++ m_nextPlayStartPoint = ((handleState *)_n->m_pluginData)->frameIndex(); ++ } + } + + +@@ -249,6 +274,10 @@ + } + + ++void audioFileProcessor::stutterModelChanged() ++{ ++ m_nextPlayStartPoint = m_sampleBuffer.startFrame(); ++} + + + void audioFileProcessor::loopPointChanged( void ) +@@ -257,6 +286,7 @@ + ( m_sampleBuffer.frames()-1 ) ); + const f_cnt_t f2 = static_cast<f_cnt_t>( m_endPointModel.value() * + ( m_sampleBuffer.frames()-1 ) ); ++ m_nextPlayStartPoint = f1; + m_sampleBuffer.setStartFrame( qMin<f_cnt_t>( f1, f2 ) ); + m_sampleBuffer.setEndFrame( qMax<f_cnt_t>( f1, f2 ) ); + emit dataChanged(); +@@ -298,7 +328,7 @@ + + m_reverseButton = new pixmapButton( this ); + m_reverseButton->setCheckable( TRUE ); +- m_reverseButton->move( 184, 124 ); ++ m_reverseButton->move( 176, 124 ); // 184 + m_reverseButton->setActiveGraphic( PLUGIN_NAME::getIconPixmap( + "reverse_on" ) ); + m_reverseButton->setInactiveGraphic( PLUGIN_NAME::getIconPixmap( +@@ -311,7 +341,7 @@ + + m_loopButton = new pixmapButton( this ); + m_loopButton->setCheckable( TRUE ); +- m_loopButton->move( 220, 124 ); ++ m_loopButton->move( 202, 124 ); // 220 + m_loopButton->setActiveGraphic( PLUGIN_NAME::getIconPixmap( + "loop_on" ) ); + m_loopButton->setInactiveGraphic( PLUGIN_NAME::getIconPixmap( +@@ -325,6 +355,23 @@ + "This is useful for things like string and choir " + "samples." ) ); + ++ m_stutterButton = new pixmapButton( this ); ++ m_stutterButton->setCheckable( true ); ++ m_stutterButton->move( 228, 124 ); ++ m_stutterButton->setActiveGraphic( PLUGIN_NAME::getIconPixmap( ++ "stutter_on" ) ); ++ m_stutterButton->setInactiveGraphic( PLUGIN_NAME::getIconPixmap( ++ "stutter_off" ) ); ++ toolTip::add( m_stutterButton, ++ tr( "Continue sample playback across notes" ) ); ++ m_stutterButton->setWhatsThis( ++ tr( "Enabling this option makes the sample continue playing " ++ "across different notes - if you change pitch, or the note " ++ "length stops before the end of the sample, then the next " ++ "note played will continue where it left off. To reset the " ++ "playback to the start of the sample, insert a note at the bottom " ++ "of the keyboard (< 20 Hz)") ); ++ + m_ampKnob = new knob( knobStyled, this ); + m_ampKnob->setVolumeKnob( TRUE ); + m_ampKnob->move( 17, 108 ); +@@ -504,6 +551,7 @@ + m_endKnob->setModel( &a->m_endPointModel ); + m_reverseButton->setModel( &a->m_reverseModel ); + m_loopButton->setModel( &a->m_loopModel ); ++ m_stutterButton->setModel( &a->m_stutterModel ); + sampleUpdated(); + } + +diff -Nur lmms-0.4.15/plugins/audio_file_processor/audio_file_processor.h lmms-0.4.15.new/plugins/audio_file_processor/audio_file_processor.h +--- lmms-0.4.15/plugins/audio_file_processor/audio_file_processor.h 2013-06-11 20:57:16.000000000 +0000 ++++ lmms-0.4.15.new/plugins/audio_file_processor/audio_file_processor.h 2013-06-29 22:41:39.322810181 +0000 +@@ -74,6 +74,7 @@ + void reverseModelChanged(); + void ampModelChanged(); + void loopPointChanged(); ++ void stutterModelChanged(); + + + signals: +@@ -90,6 +91,9 @@ + FloatModel m_endPointModel; + BoolModel m_reverseModel; + BoolModel m_loopModel; ++ BoolModel m_stutterModel; ++ ++ f_cnt_t m_nextPlayStartPoint; + + friend class AudioFileProcessorView; + +@@ -131,6 +135,7 @@ + pixmapButton * m_openAudioFileButton; + pixmapButton * m_reverseButton; + pixmapButton * m_loopButton; ++ pixmapButton * m_stutterButton; + + } ; + diff --git a/audio/lmms/README b/audio/lmms/README index 93086aa5c3..da5f156ac9 100644 --- a/audio/lmms/README +++ b/audio/lmms/README @@ -4,4 +4,5 @@ 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. -jack-audio-connection-kit, portaudio, pulseaudio, fluidsynth are optional. +jack-audio-connection-kit, fluidsynth + fluid-soundfont are optional (but +are highly recommended) - portaudio, pulseaudio also are optional. diff --git a/audio/lmms/lmms-unlink.patch b/audio/lmms/lmms-unlink.patch deleted file mode 100644 index 6b2521f557..0000000000 --- a/audio/lmms/lmms-unlink.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- lmms-0.4.13_orig/plugins/zynaddsubfx/LocalZynAddSubFx.cpp 2012-04-08 13:01:25.951925761 +0200 -+++ lmms-0.4.13_test/plugins/zynaddsubfx/LocalZynAddSubFx.cpp 2012-04-08 13:08:32.841905201 +0200 -@@ -23,6 +23,7 @@ - */ - - #include <lmmsconfig.h> -+#include <unistd.h> - - #include "LocalZynAddSubFx.h" - diff --git a/audio/lmms/lmms.SlackBuild b/audio/lmms/lmms.SlackBuild index f6ec98d714..e8090358ac 100644 --- a/audio/lmms/lmms.SlackBuild +++ b/audio/lmms/lmms.SlackBuild @@ -2,12 +2,11 @@ # Slackware build script for lmms -# Written by Zbigniew Baniewski, zb@ispid.com.pl -# Modified by Willy Sudiarto Raharjo <willysr@slackware-id.org> +# Written by Zbigniew Baniewski, <Zbigniew.Baniewski@gmail.com> PRGNAM=lmms -VERSION=${VERSION:-0.4.13} -BUILD=${BUILD:-2} +VERSION=${VERSION:-0.4.15} +BUILD=${BUILD:-3} TAG=${TAG:-_SBo} if [ -z "$ARCH" ]; then @@ -52,7 +51,9 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \; -patch -p1 < $CWD/lmms-unlink.patch +patch -p1 < $CWD/01-fix_piano_roll_resize.patch +patch -p1 < $CWD/02-stutter_audio.patch +cp $CWD/new_buttons/*.png plugins/audio_file_processor mkdir build cd build @@ -62,7 +63,6 @@ cd build -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib${LIBDIRSUFFIX} \ .. - make VERBOSE=1 make install DESTDIR=$PKG cd .. diff --git a/audio/lmms/lmms.info b/audio/lmms/lmms.info index 6dd18788f9..26edd4bd1e 100644 --- a/audio/lmms/lmms.info +++ b/audio/lmms/lmms.info @@ -1,10 +1,10 @@ PRGNAM="lmms" -VERSION="0.4.13" +VERSION="0.4.15" HOMEPAGE="http://lmms.sourceforge.net/" -DOWNLOAD="http://downloads.sourceforge.net/lmms/lmms-0.4.13.tar.bz2" -MD5SUM="80db0dc5263041d443f474220410991f" +DOWNLOAD="http://downloads.sourceforge.net/lmms/lmms-0.4.15.tar.bz2" +MD5SUM="0c754480ded76b7c081a99d7a884549c" DOWNLOAD_x86_64="" MD5SUM_x86_64="" REQUIRES="" MAINTAINER="Zbigniew Baniewski" -EMAIL="zb@ispid.com.pl" +EMAIL="Zbigniew.Baniewski@gmail.com" diff --git a/audio/lmms/new_buttons/stutter_off.png b/audio/lmms/new_buttons/stutter_off.png Binary files differnew file mode 100644 index 0000000000..8a24d2ada1 --- /dev/null +++ b/audio/lmms/new_buttons/stutter_off.png diff --git a/audio/lmms/new_buttons/stutter_on.png b/audio/lmms/new_buttons/stutter_on.png Binary files differnew file mode 100644 index 0000000000..8fb9a1575d --- /dev/null +++ b/audio/lmms/new_buttons/stutter_on.png diff --git a/audio/lmms/slack-desc b/audio/lmms/slack-desc index 53bd872fbc..11cd583833 100644 --- a/audio/lmms/slack-desc +++ b/audio/lmms/slack-desc @@ -8,11 +8,11 @@ |-----handy-ruler------------------------------------------------------| lmms: lmms (Linux MultiMedia Studio) lmms: -lmms: Linux Multi-Media Studio: multi-track rythm, midi, beat, editor. +lmms: Linux Multi-Media Studio: multi-track rythm, midi, beat, editor (DAW) lmms: lmms: http://lmms.sourceforge.net/ lmms: -lmms: +lmms: (see README!) lmms: lmms: lmms: |