Changeset 320

Show
Ignore:
Timestamp:
08/11/08 22:38:44 (5 years ago)
Author:
jakoblund
Message:

Adjustment to the sequencer so that notes in the beginning of the pattern(s) being located to
in Song Mode get played when 'Play' button is pressed. (the lookahead mechanism was suppressing
first notes)

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/libs/hydrogen/src/hydrogen.cpp

    r318 r320  
    10301030        // plus lookahead. lookahead should be equal or greater than the nLeadLagFactor + nMaxTimeHumanize. 
    10311031        int lookahead = nLeadLagFactor + nMaxTimeHumanize + 1; 
    1032         if ( framepos == 0 ) { 
    1033                 tickNumber_start = 0; // a.k.a.: (int)( framepos / m_pAudioDriver->m_transport.m_nTickSize ); 
     1032        if ( framepos == 0 || ( m_pSong->get_mode() == Song::SONG_MODE && m_nSongPos == -1 ) ) { 
     1033                tickNumber_start = (int)( framepos / m_pAudioDriver->m_transport.m_nTickSize ); 
    10341034        } 
    10351035        else { 
     
    11811181                        assert( m_nPatternTickPosition < nPatternSize ); 
    11821182                } 
    1183                 /* 
    1184                                         else { 
    1185                                                 _ERRORLOG( "Pattern mode. m_pPlayingPatterns->getSize() = 0" ); 
    1186                                                 _ERRORLOG( "Panic! Stopping audio engine"); 
    1187                                                 // PANIC! 
    1188                                                 m_pAudioDriver->stop(); 
    1189                                         } 
    1190                                 } 
    1191                 */ 
    1192  
    11931183 
    11941184                // metronome 
     
    12451235 
    12461236                                                // cannot play note before 0 frame 
    1247                                                 if (tick + nOffset / m_pAudioDriver->m_transport.m_nTickSize < 0) { 
     1237                                                if (tick + nOffset / m_pAudioDriver->m_transport.m_nTickSize < tickNumber_start ) { 
    12481238                                                        _INFOLOG(" offset before 0 frame "); 
    1249                                                         nOffset = 0 - (int) (tick * m_pAudioDriver->m_transport.m_nTickSize); 
     1239                                                        nOffset = tickNumber_start - (int) (tick * m_pAudioDriver->m_transport.m_nTickSize); 
    12501240                                                } 
    12511241                                                Note *pCopiedNote = new Note( pNote );