Changeset 647

Show
Ignore:
Timestamp:
11/14/08 21:26:12 (2 months ago)
Author:
wolke
Message:

fix segfault into Wave Display

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/new_fx_rack_and_sample_fun/gui/src/SampleEditor/MainSampleWaveDisplay.cpp

    r632 r647  
    148148 
    149149 
    150 void MainSampleWaveDisplay::updateDisplay( QString filename ) 
     150void MainSampleWaveDisplay::updateDisplay( const QString& filename ) 
    151151{ 
    152152 
    153153        Sample *pNewSample = Sample::load( filename ); 
    154  
     154         
    155155        if ( pNewSample ) { 
    156156 
     
    165165 
    166166                float *pSampleDatal = pNewSample->get_data_l(); 
    167  
    168                 int nSamplePos =0; 
     167                float *pSampleDatar = pNewSample->get_data_r(); 
     168 
     169                unsigned nSamplePos = 0; 
    169170                int nVall; 
     171                int nValr; 
     172                int newVall = 0; 
     173                int newValr = 0; 
    170174                for ( int i = 0; i < width(); ++i ){ 
    171175                        for ( int j = 0; j < nScaleFactor; ++j ) { 
    172176                                if ( j < nSampleLenght ) { 
    173                                         int newVall = (int)( pSampleDatal[ nSamplePos ] * fGain ); 
    174                                         nVall = newVall; 
     177                                        if ( pSampleDatal[ nSamplePos ] || pSampleDatar[ nSamplePos ] ){ 
     178                                                newVall = (int)( pSampleDatal[ nSamplePos ] * fGain ); 
     179                                                newValr = (int)( pSampleDatar[ nSamplePos ] * fGain ); 
     180                                                //ERRORLOG( QString("newVall: %1").arg(pSampleDatal[ nSamplePos ]) ); 
     181                                                nVall = newVall; 
     182                                                nValr = newValr; 
     183                                        }else 
     184                                        { 
     185                                                nVall = 0;       
     186                                                nValr = 0; 
     187                                        } 
    175188                                } 
    176189                                ++nSamplePos; 
    177190                        } 
    178191                        m_pPeakDatal[ i ] = nVall; 
    179                 } 
    180  
    181                 float *pSampleDatar = pNewSample->get_data_r(); 
    182  
    183                 nSamplePos = 0; 
    184                 int nValr; 
    185                 for ( int i = 0; i < width(); ++i ){ 
    186                         for ( int j = 0; j < nScaleFactor; ++j ) { 
    187                                 if ( j < nSampleLenght ) { 
    188                                         int newValr = (int)( pSampleDatar[ nSamplePos ] * fGain ); 
    189                                         nValr = newValr; 
    190                                 } 
    191                                 ++nSamplePos; 
    192                         } 
    193192                        m_pPeakDatar[ i ] = nValr; 
    194193                } 
    195194        } 
    196195        delete pNewSample; 
     196        pNewSample = NULL; 
    197197        update(); 
    198198 
  • branches/new_fx_rack_and_sample_fun/gui/src/SampleEditor/MainSampleWaveDisplay.h

    r617 r647  
    3737                ~MainSampleWaveDisplay(); 
    3838 
    39                 void updateDisplay( QString filename ); 
     39                void updateDisplay( const QString& filename ); 
    4040                void updateDisplayPointer(); 
    4141 
  • branches/new_fx_rack_and_sample_fun/gui/src/SampleEditor/SampleEditor.cpp

    r640 r647  
    4949                : QDialog ( pParent ) 
    5050                , Object ( "SampleEditor" ) 
    51                 , m_pSampleEditorStatus( true ) 
     51                , m_pSampleEditorStatus( false ) 
    5252                , m_pSamplefromFile ( NULL ) 
    5353                , m_pSelectedLayer ( nSelectedLayer ) 
     
    232232 
    233233// wavedisplays 
     234        AudioEngine::get_instance()->get_sampler()->stop_playing_notes(); 
    234235        m_divider = m_pSamplefromFile->get_n_frames() / 574.0F; 
    235236        m_pMainSampleWaveDisplay = new MainSampleWaveDisplay( mainSampleview ); 
    236         m_pMainSampleWaveDisplay->updateDisplay( m_pSamplefromFile->get_filename() ); 
     237        m_pMainSampleWaveDisplay->updateDisplay( m_samplename ); 
    237238        m_pMainSampleWaveDisplay->move( 1, 1 ); 
    238239 
    239240        m_pSampleAdjustView = new DetailWaveDisplay( mainSampleAdjustView ); 
    240         m_pSampleAdjustView->updateDisplay( m_pSamplefromFile->get_filename() ); 
     241        m_pSampleAdjustView->updateDisplay( m_samplename ); 
    241242        m_pSampleAdjustView->move( 1, 1 ); 
    242243 
     
    643644void SampleEditor::on_LoopCountSpinBox_valueChanged( int ) 
    644645{ 
     646        if ( m_pslframes > Hydrogen::get_instance()->getAudioOutput()->getSampleRate() * 60 ){ 
     647                AudioEngine::get_instance()->get_sampler()->stop_playing_notes(); 
     648                m_pMainSampleWaveDisplay->paintLocatorEvent( -1 , false); 
     649                m_pTimer->stop(); 
     650                m_pPlayButton = false; 
     651        } 
    645652        m_repeats = LoopCountSpinBox->value() ; 
    646653        m_pSampleEditorStatus = false; 
    647654        setSamplelengthFrames(); 
     655        if ( m_pslframes > Hydrogen::get_instance()->getAudioOutput()->getSampleRate() * 60 * 30){ // >30 min 
     656                LoopCountSpinBox->setMaximum(LoopCountSpinBox->value() -1);      
     657        } 
     658         
    648659} 
    649660 
  • branches/new_fx_rack_and_sample_fun/libs/hydrogen/src/IO/midi_input.cpp

    r642 r647  
    156156void MidiInput::handleNoteOnMessage( const MidiMessage& msg ) 
    157157{ 
    158       INFOLOG( "handleNoteOnMessage" ); 
     158//    INFOLOG( "handleNoteOnMessage" ); 
    159159 
    160160 
     
    195195                if ( bPatternSelect ) { 
    196196                        int patternNumber = nNote - 36; 
    197                         INFOLOG( QString( "next pattern = %1" ).arg( patternNumber ) ); 
     197                        //INFOLOG( QString( "next pattern = %1" ).arg( patternNumber ) ); 
    198198 
    199199                        pEngine->sequencer_setNextPattern( patternNumber, false, false ); 
     
    220220void MidiInput::handleNoteOffMessage( const MidiMessage& msg ) 
    221221{ 
    222       INFOLOG( "handleNoteOffMessage" ); 
     222//    INFOLOG( "handleNoteOffMessage" ); 
    223223        if ( Preferences::getInstance()->m_bMidiNoteOffIgnore ) { 
    224224                return; 
  • branches/new_fx_rack_and_sample_fun/libs/hydrogen/src/sampler/sampler.cpp

    r643 r647  
    787787                { 
    788788                        std::vector<PatternList*> *pColumns = mSong->get_pattern_group_vector(); 
    789                       Pattern *pPattern = NULL; 
     789//                    Pattern *pPattern = NULL; 
    790790                        int pos = pEngine->getPatternPos() +1; 
    791791                        for ( int i = 0; i < pos; ++i ) { 
     
    809809                                                if ( pNote!=NULL ) { 
    810810                                                        if( !Preferences::getInstance()->__playselectedinstrument ){ 
    811                                                                         if ( pNote->get_instrument() == instrument 
    812                                                                         && pNote->get_position() == noteOnTick ) { 
    813                                                                                 AudioEngine::get_instance()->lock("Sample::setnotelenght_event"); 
    814                                                  
    815                                                                                         if ( ticks >  patternsize )  
    816                                                                                         ticks = patternsize - noteOnTick; 
    817                                                                                 pNote->set_lenght( ticks ); 
    818                                                                                 Hydrogen::get_instance()->getSong()->__is_modified = true; 
    819                                                                                 AudioEngine::get_instance()->unlock(); // unlock the audio engine 
    820                                                                                         } 
    821                                                                 }else 
    822                                                                 {       if ( pNote->get_instrument() == pEngine->getSong()->get_instrument_list()->get( pEngine->getSelectedInstrumentNumber()) 
    823                                                                         && pNote->get_position() == noteOnTick ) { 
    824                                                                                 AudioEngine::get_instance()->lock("Sample::setnotelenght_event"); 
    825                                                                                 if ( ticks >  patternsize )  
    826                                                                                         ticks = patternsize - noteOnTick; 
    827                                                                                 pNote->set_lenght( ticks ); 
    828                                                                                 Hydrogen::get_instance()->getSong()->__is_modified = true; 
    829                                                                                 AudioEngine::get_instance()->unlock(); // unlock the audio engine 
    830                                                                                          
    831                                                                                          
     811                                                                if ( pNote->get_instrument() == instrument 
     812                                                                && pNote->get_position() == noteOnTick ) { 
     813                                                                        AudioEngine::get_instance()->lock("Sample::setnotelenght_event"); 
     814                                         
     815                                                                        if ( ticks >  patternsize )  
     816                                                                                ticks = patternsize - noteOnTick; 
     817                                                                        pNote->set_lenght( ticks ); 
     818                                                                        Hydrogen::get_instance()->getSong()->__is_modified = true; 
     819                                                                        AudioEngine::get_instance()->unlock(); // unlock the audio engine 
     820                                                                } 
     821                                                        }else 
     822                                                        { 
     823                                                                if ( pNote->get_instrument() == pEngine->getSong()->get_instrument_list()->get( pEngine->getSelectedInstrumentNumber()) 
     824                                                                && pNote->get_position() == noteOnTick ) { 
     825                                                                        AudioEngine::get_instance()->lock("Sample::setnotelenght_event"); 
     826                                                                        if ( ticks >  patternsize )  
     827                                                                                ticks = patternsize - noteOnTick; 
     828                                                                        pNote->set_lenght( ticks ); 
     829                                                                        Hydrogen::get_instance()->getSong()->__is_modified = true; 
     830                                                                        AudioEngine::get_instance()->unlock(); // unlock the audio engine        
    832831                                                                }        
    833832                                                        }