summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--audio/lmms/01-fix_piano_roll_resize.patch13
-rw-r--r--audio/lmms/02-stutter_audio.patch187
-rw-r--r--audio/lmms/README3
-rw-r--r--audio/lmms/lmms-unlink.patch10
-rw-r--r--audio/lmms/lmms.SlackBuild12
-rw-r--r--audio/lmms/lmms.info8
-rw-r--r--audio/lmms/new_buttons/stutter_off.pngbin0 -> 526 bytes
-rw-r--r--audio/lmms/new_buttons/stutter_on.pngbin0 -> 588 bytes
-rw-r--r--audio/lmms/slack-desc4
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
new file mode 100644
index 0000000000..8a24d2ada1
--- /dev/null
+++ b/audio/lmms/new_buttons/stutter_off.png
Binary files differ
diff --git a/audio/lmms/new_buttons/stutter_on.png b/audio/lmms/new_buttons/stutter_on.png
new file mode 100644
index 0000000000..8fb9a1575d
--- /dev/null
+++ b/audio/lmms/new_buttons/stutter_on.png
Binary files differ
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: