added singerbot plugin
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@452 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
* arp_and_chords_tab_widget.cpp - widget for use in arp/chord-tab of
|
||||
* instrument-track-window
|
||||
*
|
||||
* Copyright (c) 2004-2006 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
* Copyright (c) 2004-2007 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
@@ -461,7 +461,7 @@ void arpAndChordsTabWidget::processNote( notePlayHandle * _n )
|
||||
break;
|
||||
}
|
||||
// create copy of base-note
|
||||
note note_copy( NULL, 0, 0,
|
||||
note note_copy( NULL, _n->length(), 0,
|
||||
(tones)( sub_note_key %
|
||||
NOTES_PER_OCTAVE ),
|
||||
(octaves)( sub_note_key /
|
||||
@@ -477,6 +477,10 @@ void arpAndChordsTabWidget::processNote( notePlayHandle * _n )
|
||||
_n->framesAhead(),
|
||||
_n->frames(), note_copy );
|
||||
note_play_handle->setBBTrackFrom( _n );
|
||||
#if SINGERBOT_SUPPORT
|
||||
note_play_handle->setPatternIndex(
|
||||
_n->patternIndex() );
|
||||
#endif
|
||||
// add sub-note to base-note, now all stuff is
|
||||
// done by notePlayHandle::play_note()
|
||||
_n->addSubNote( note_play_handle );
|
||||
@@ -640,6 +644,9 @@ void arpAndChordsTabWidget::processNote( notePlayHandle * _n )
|
||||
new_note,
|
||||
TRUE );
|
||||
note_play_handle->setBBTrackFrom( _n );
|
||||
#if SINGERBOT_SUPPORT
|
||||
note_play_handle->setPatternIndex( _n->patternIndex() );
|
||||
#endif
|
||||
|
||||
// add sub-note to base-note - now all stuff is done by
|
||||
// notePlayHandle::playNote()
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
* note_play_handle.cpp - implementation of class notePlayHandle, part of
|
||||
* play-engine
|
||||
*
|
||||
* Copyright (c) 2004-2006 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
* Copyright (c) 2004-2007 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
@@ -59,6 +59,9 @@ notePlayHandle::notePlayHandle( instrumentTrack * _it,
|
||||
m_arpNote( _arp_note ),
|
||||
m_muted( FALSE ),
|
||||
m_bbTrack( NULL )
|
||||
#if SINGERBOT_SUPPORT
|
||||
, m_patternIndex( 0 )
|
||||
#endif
|
||||
{
|
||||
// if the instrument is monophonic we do not allow other note-play-
|
||||
// handles to exist for this track and therefore remove them
|
||||
@@ -117,7 +120,7 @@ notePlayHandle::~notePlayHandle()
|
||||
noteOff( 0 );
|
||||
}
|
||||
|
||||
if( m_instrumentTrack != NULL )
|
||||
if( m_instrumentTrack != NULL && m_pluginData != NULL )
|
||||
{
|
||||
m_instrumentTrack->deleteNotePluginData( this );
|
||||
}
|
||||
@@ -252,7 +255,10 @@ void notePlayHandle::checkValidity( void )
|
||||
{
|
||||
noteOff( 0 );
|
||||
}
|
||||
m_instrumentTrack->deleteNotePluginData( this );
|
||||
if( m_pluginData )
|
||||
{
|
||||
m_instrumentTrack->deleteNotePluginData( this );
|
||||
}
|
||||
m_instrumentTrack = NULL;
|
||||
}
|
||||
// sub-notes might not be registered at mixer (for example arpeggio-
|
||||
|
||||
@@ -397,7 +397,7 @@ f_cnt_t sampleBuffer::decodeSampleSDL( const char * _f,
|
||||
{
|
||||
AUDIO_S16SYS,
|
||||
_channels,
|
||||
_samplerate,
|
||||
_samplerate
|
||||
} ;
|
||||
f_cnt_t frames = 0;
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
* instrument_track.cpp - implementation of instrument-track-class
|
||||
* (window + data-structures)
|
||||
*
|
||||
* Copyright (c) 2004-2006 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
* Copyright (c) 2004-2007 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
|
||||
*
|
||||
@@ -664,7 +664,9 @@ void instrumentTrack::processInEvent( const midiEvent & _me,
|
||||
{
|
||||
m_notesMutex.lock();
|
||||
m_notes[_me.key()] = nph;
|
||||
m_notesMutex.unlock();
|
||||
}
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -777,7 +779,7 @@ QString instrumentTrack::instrumentName( void ) const
|
||||
|
||||
void instrumentTrack::deleteNotePluginData( notePlayHandle * _n )
|
||||
{
|
||||
if( m_instrument != NULL )
|
||||
if( m_instrument != NULL && _n->m_pluginData != NULL )
|
||||
{
|
||||
m_instrument->deleteNotePluginData( _n );
|
||||
}
|
||||
@@ -996,6 +998,9 @@ bool FASTCALL instrumentTrack::play( const midiTime & _start,
|
||||
noteVector & notes = p->notes();
|
||||
// ...and set our index to zero
|
||||
noteVector::iterator it = notes.begin();
|
||||
#if SINGERBOT_SUPPORT
|
||||
int note_idx = 0;
|
||||
#endif
|
||||
|
||||
// very effective algorithm for playing notes that are
|
||||
// posated within the current sample-frame
|
||||
@@ -1006,6 +1011,12 @@ bool FASTCALL instrumentTrack::play( const midiTime & _start,
|
||||
// skip notes which are posated before start-tact
|
||||
while( it != notes.end() && ( *it )->pos() < cur_start )
|
||||
{
|
||||
#if SINGERBOT_SUPPORT
|
||||
if( ( *it )->length() != 0 )
|
||||
{
|
||||
++note_idx;
|
||||
}
|
||||
#endif
|
||||
++it;
|
||||
}
|
||||
}
|
||||
@@ -1045,6 +1056,9 @@ bool FASTCALL instrumentTrack::play( const midiTime & _start,
|
||||
note_frames,
|
||||
*cur_note );
|
||||
note_play_handle->setBBTrack( bb_track );
|
||||
#if SINGERBOT_SUPPORT
|
||||
note_play_handle->setPatternIndex( note_idx );
|
||||
#endif
|
||||
note_play_handle->play( FALSE );
|
||||
// could we play all within current number of
|
||||
// frames per audio-buffer?
|
||||
@@ -1061,6 +1075,9 @@ bool FASTCALL instrumentTrack::play( const midiTime & _start,
|
||||
delete note_play_handle;
|
||||
}
|
||||
played_a_note = TRUE;
|
||||
#if SINGERBOT_SUPPORT
|
||||
++note_idx;
|
||||
#endif
|
||||
}
|
||||
++it;
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
|
||||
|
||||
|
||||
projectNotes::projectNotes( engine * _engine) :
|
||||
projectNotes::projectNotes( engine * _engine ) :
|
||||
QMainWindow( _engine->getMainWindow()->workspace()
|
||||
#ifndef QT4
|
||||
, 0, Qt::WStyle_Title
|
||||
|
||||
Reference in New Issue
Block a user