Changeset 632

Show
Ignore:
Timestamp:
11/06/08 21:54:48 (2 months ago)
Author:
wolke
Message:

now you can edit a sample fade out

Files:

Legend:

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

    r623 r632  
    328328                        bool close = m_pSampleEditor->getCloseQuestion(); 
    329329                        if ( close ){ 
     330                                m_pSampleEditor->close(); 
    330331                                delete m_pSampleEditor; 
    331332                        }else 
     
    335336                }else 
    336337                { 
     338                        m_pSampleEditor->close(); 
    337339                        delete m_pSampleEditor; 
    338340                } 
  • branches/new_fx_rack_and_sample_fun/gui/src/MainForm.cpp

    r625 r632  
    377377bool MainForm::action_file_exit() 
    378378{ 
    379         if ( Hydrogen::get_instance()->getSong()->__is_modified ) { 
    380                 int res = QMessageBox::information( 
    381                                 this, 
    382                                 "Hydrogen", 
    383                                 trUtf8("\nThe song has unsaved changes\n Do you want to save the changes before exiting?\n"), 
    384                                 trUtf8("&Save"), 
    385                                 trUtf8("&Discard"), 
    386                                 trUtf8("&Cancel"), 
    387                                 0,      // Enter == button 0 
    388                                 2       // Escape == button 2 
    389                 ); 
    390                 switch( res ) { 
    391                         case 0: 
    392                                 // Save clicked or Alt+S pressed or Enter pressed. 
    393                                 if ( Hydrogen::get_instance()->getSong()->get_filename() != "") { 
    394                                         action_file_save(); 
    395                                 } else { 
    396                                         action_file_save_as(); 
    397                                 } 
    398                                 // save 
    399                                 break; 
    400                         case 1: 
    401                                 // Discard clicked or Alt+D pressed 
    402                                 // don't save but exit 
    403                                 break; 
    404                         case 2: 
    405                                 // Cancel clicked or Alt+C pressed or Escape pressed 
    406                                 // don't exit 
    407                                 return false; 
    408                                 break; 
    409                         default: 
    410                                 ERRORLOG( "Unknown return code: " + to_string( res ) ); 
    411                 } 
     379        bool proceed = handleUnsavedChanges(); 
     380        if(!proceed) { 
     381                return false; 
    412382        } 
    413383        closeAll(); 
     
    423393        } 
    424394 
    425         if ( Hydrogen::get_instance()->getSong()->__is_modified ) { 
    426                 switch( 
    427                                 QMessageBox::information( this, "Hydrogen", 
    428                                                 trUtf8("\nThe document contains unsaved changes\n" 
    429                                                 "Do you want to save the changes before exiting?\n"), 
    430                                                 trUtf8("&Save"), trUtf8("&Discard"), trUtf8("&Cancel"), 
    431                                                 0,      // Enter == button 0 
    432                                                 2 ) ) { // Escape == button 2 
    433                         case 0: // Save clicked or Alt+S pressed or Enter pressed. 
    434                                 if ( Hydrogen::get_instance()->getSong()->get_filename() != "") { 
    435                                         action_file_save(); 
    436                                 } else { 
    437                                         // never been saved 
    438                                         action_file_save_as(); 
    439                                 } 
    440                                 // save 
    441                                 break; 
    442                         case 1: // Discard clicked or Alt+D pressed 
    443                                 // don't save but exit 
    444                                 break; 
    445                         case 2: // Cancel clicked or Alt+C pressed or Escape pressed 
    446                                 // don't exit 
    447                                 return; 
    448                                 break; 
    449                 } 
     395        bool proceed = handleUnsavedChanges(); 
     396        if(!proceed) { 
     397                return; 
    450398        } 
    451399 
     
    641589        } 
    642590 
    643         if ( Hydrogen::get_instance()->getSong()->__is_modified ) { 
    644                 switch( 
    645                         QMessageBox::information( this, "Hydrogen", 
    646                                         trUtf8("\nThe document contains unsaved changes\n" 
    647                                         "Do you want to save the changes before exiting?\n"), 
    648                                         trUtf8("&Save"), trUtf8("&Discard"), trUtf8("&Cancel"), 
    649                                         0,      // Enter == button 0 
    650                                         2 ) ) { // Escape == button 2 
    651                         case 0: // Save clicked or Alt+S pressed or Enter pressed. 
    652                                 if ( Hydrogen::get_instance()->getSong()->get_filename() != "") { 
    653                                         action_file_save(); 
    654                                 } 
    655                                 else { 
    656                                         action_file_save_as(); 
    657                                 } 
    658                                 // save 
    659                                 break; 
    660                         case 1: // Discard clicked or Alt+D pressed 
    661                                 // don't save but exit 
    662                                 break; 
    663                         case 2: // Cancel clicked or Alt+C pressed or Escape pressed 
    664                                 // don't exit 
    665                                 return; 
    666                                 break; 
    667                 } 
    668         } 
    669  
    670          
    671           
    672  
    673          
     591        bool proceed = handleUnsavedChanges(); 
     592        if(!proceed) { 
     593                return; 
     594        } 
    674595 
    675596        static QString lastUsedDir = Preferences::getInstance()->getDataDirectory() + "/songs"; 
     
    756677        } 
    757678 
    758         if ( ( Hydrogen::get_instance()->getSong())->__is_modified ) { 
    759                 switch( 
    760                         QMessageBox::information( this, "Hydrogen", 
    761                                         trUtf8("\nThe document contains unsaved changes\n" 
    762                                         "Do you want to save the changes before exiting?\n"), 
    763                                         trUtf8("&Save"), trUtf8("&Discard"), trUtf8("&Cancel"), 
    764                                         0,      // Enter == button 0 
    765                                         2 ) ) { // Escape == button 2 
    766                         case 0: // Save clicked or Alt+S pressed or Enter pressed. 
    767                                 if ( Hydrogen::get_instance()->getSong()->get_filename() != "") { 
    768                                         action_file_save_as(); 
    769                                 } 
    770                                 else { 
    771                                         action_file_save_as(); 
    772                                 } 
    773                                 // save 
    774                                 break; 
    775                         case 1: // Discard clicked or Alt+D pressed 
    776                                 // don't save but exit 
    777                                 break; 
    778                         case 2: // Cancel clicked or Alt+C pressed or Escape pressed 
    779                                 // don't exit 
    780                                 return; 
    781                                 break; 
    782                 } 
    783         } 
    784  
     679        bool proceed = handleUnsavedChanges(); 
     680        if(!proceed) { 
     681                return; 
     682        } 
    785683 
    786684        QFileDialog *fd = new QFileDialog(this); 
     
    16631561        HydrogenApp::getInstance()->setScrollStatusBarMessage( message, 2000 ); 
    16641562} 
     1563 
     1564// Returns true if unsaved changes are successfully handled (saved, discarded, etc.) 
     1565// Returns false if not (i.e. Cancel) 
     1566bool MainForm::handleUnsavedChanges() 
     1567{ 
     1568        bool done = false; 
     1569        bool rv = true; 
     1570        while ( !done && Hydrogen::get_instance()->getSong()->__is_modified ) { 
     1571                switch( 
     1572                                QMessageBox::information( this, "Hydrogen", 
     1573                                                trUtf8("\nThe document contains unsaved changes.\n" 
     1574                                                "Do you want to save the changes?\n"), 
     1575                                                trUtf8("&Save"), trUtf8("&Discard"), trUtf8("&Cancel"), 
     1576                                                0,      // Enter == button 0 
     1577                                                2 ) ) { // Escape == button 2 
     1578                        case 0: // Save clicked or Alt+S pressed or Enter pressed. 
     1579                                // If the save fails, the __is_modified flag will still be true 
     1580                                if ( Hydrogen::get_instance()->getSong()->get_filename() != "") { 
     1581                                        action_file_save(); 
     1582                                } else { 
     1583                                        // never been saved 
     1584                                        action_file_save_as(); 
     1585                                } 
     1586                                // save 
     1587                                break; 
     1588                        case 1: // Discard clicked or Alt+D pressed 
     1589                                // don't save but exit 
     1590                                done = true; 
     1591                                break; 
     1592                        case 2: // Cancel clicked or Alt+C pressed or Escape pressed 
     1593                                // don't exit 
     1594                                done = true; 
     1595                                rv = false; 
     1596                                break; 
     1597                } 
     1598        } 
     1599        return rv; 
     1600} 
  • branches/new_fx_rack_and_sample_fun/gui/src/MainForm.h

    r377 r632  
    106106                void onPlaylistDisplayTimer(); 
    107107 
     108        protected: 
     109                // Returns true if handled, false if aborted. 
     110                bool handleUnsavedChanges(); 
     111 
    108112        private: 
    109113                HydrogenApp* h2app; 
  • branches/new_fx_rack_and_sample_fun/gui/src/SampleEditor/MainSampleWaveDisplay.cpp

    r617 r632  
    222222{ 
    223223//startframepointer 
    224         if  (ev->y()>=240 ) { 
     224        if  (ev->y()>=200 ) { 
    225225                m_pStartFramePosition = ev->x() ; 
    226226                if ( m_pStartFramePosition > m_pLoopFramePosition )  
     
    233233 
    234234//loopframeposition 
    235         else if  (ev->y()<=40 ) { 
     235        else if  (ev->y()<=65 ) { 
    236236                m_pLoopFramePosition = ev->x() ; 
    237237                if ( m_pLoopFramePosition < m_pStartFramePosition )  
     
    240240        } 
    241241//endframeposition 
    242         else if  ( ev->y() >= 90 && ev->y() <= 160  ) { 
     242        else if  ( ev->y() >= 86 && ev->y() <= 179  ) { 
    243243                m_pEndFramePosition = ev->x() ; 
    244244                if ( m_pEndFramePosition <  m_pLoopFramePosition ){ 
  • branches/new_fx_rack_and_sample_fun/gui/src/SampleEditor/SampleEditor.cpp

    r630 r632  
    6868        QString newfilename = mSamplefilename.section( '/', -1 ); 
    6969 
    70         setWindowTitle ( QString( "SampleEditor" + newfilename) ); 
     70        setWindowTitle ( QString( "SampleEditor " + newfilename) ); 
    7171        setFixedSize ( width(), height() ); 
    7272        installEventFilter( this ); 
     
    8888// mainSampleview = 624(575) x 265 :-) 
    8989// mainSampleAdjustView = 180 x 265 :-( 
    90 // targetSampleView = 451 x 91 :-( will removed 
     90// targetSampleView = 841 x 91 :-( will removed 
    9191// StartFrameSpinBox :-) 
    9292// LoopFrameSpinBox :-) 
     
    9595// EndFrameSpinBox :-) 
    9696// FadeOutFrameSpinBox :-( 
    97 // FadeOutTypeComboBox: lin, log :-( 
     97// FadeOutTypeComboBox: off, lin, log :-( 
    9898// ApplyChangesPushButton :-() 
    9999// PlayPushButton :-) 
     
    101101// ClosePushButton :-() 
    102102// verticalzoomSlider 
     103// newlengthLabel 
    103104 
    104105        connect( StartFrameSpinBox, SIGNAL( valueChanged( int ) ), this, SLOT( valueChangedStartFrameSpinBox(int) ) ); 
     
    184185                m_pMainSampleWaveDisplay->updateDisplayPointer(); 
    185186 
     187                float divider = pSample->get_n_frames() / 841.0F; 
     188                m_pTargetSampleView->m_pFadeOutFramePosition = FadeOutFrameSpinBox->value() / divider; 
     189 
    186190        } 
    187191} 
     
    194198        m_repeats = LoopCountSpinBox->value(); 
    195199        m_end_frame = EndFrameSpinBox->value(); 
    196  
     200        m_fade_out_startframe = FadeOutFrameSpinBox->value(); 
     201        m_fade_out_type = FadeOutTypeComboBox->currentIndex(); 
    197202} 
    198203 
     
    370375        m_ponewayLoop = true; 
    371376        m_ponewayEnd = true; 
     377        setSamplelengthFrames(); 
     378} 
     379 
     380 
     381void SampleEditor::returnAllTargetDisplayValues() 
     382{ 
     383        setSamplelengthFrames(); 
     384        float divider = m_pslframes / 841.0F; 
     385//      QMessageBox::information ( this, "Hydrogen", trUtf8 ( "jep %1" ).arg(m_pSample->get_n_frames())); 
     386        m_sample_is_modified = true; 
     387        m_fade_out_startframe = m_pTargetSampleView->m_pFadeOutFramePosition * divider; 
     388        FadeOutFrameSpinBox->setValue( m_fade_out_startframe ); 
     389 
     390} 
     391 
     392 
     393void SampleEditor::on_FadeOutFrameSpinBox_valueChanged( int ) 
     394{ 
     395        setSamplelengthFrames(); 
     396        float divider = m_pslframes / 841.0F; 
     397        m_pTargetSampleView->m_pFadeOutFramePosition = FadeOutFrameSpinBox->value() / divider; 
     398        m_pTargetSampleView->updateDisplayPointer(); 
     399        m_pSampleEditorStatus = false; 
    372400} 
    373401 
     
    393421        m_pSampleEditorStatus = false; 
    394422        //QMessageBox::information ( this, "Hydrogen", trUtf8 ( "jep %1" ).arg(StartFrameSpinBox->value() / m_divider + 25 )); 
     423        setSamplelengthFrames(); 
    395424} 
    396425 
     
    413442        testPositionsSpinBoxes(); 
    414443        m_pSampleEditorStatus = false; 
     444        setSamplelengthFrames(); 
    415445} 
    416446 
     
    433463        testPositionsSpinBoxes(); 
    434464        m_pSampleEditorStatus = false; 
     465        setSamplelengthFrames(); 
    435466} 
    436467 
     
    601632        } 
    602633        m_pslframes = newlength; 
     634        newlengthLabel->setText(QString("new sample length: %1 frames").arg(newlength)); 
     635        FadeOutFrameSpinBox->setMaximum( newlength ); 
    603636} 
    604637 
     
    609642        m_repeats = LoopCountSpinBox->value() ; 
    610643        m_pSampleEditorStatus = false; 
     644        setSamplelengthFrames(); 
    611645} 
    612646 
     
    653687        EndFrameSpinBox->setValue( m_end_frame ); 
    654688} 
     689 
     690 
     691 
     692 
     693void SampleEditor::on_FadeOutTypeComboBox_currentIndexChanged( int ) 
     694{ 
     695                m_pSampleEditorStatus = false; 
     696} 
     697 
  • branches/new_fx_rack_and_sample_fun/gui/src/SampleEditor/SampleEditor.h

    r629 r632  
    5757                bool m_pSampleEditorStatus; 
    5858                void returnAllMainWaveDisplayValues(); 
     59                void returnAllTargetDisplayValues(); 
    5960 
    6061                //this values come from the real sample to restore a frm song loaded sample 
     
    6263                QString m_sample_mode;          ///< loop mode 
    6364                unsigned m_fade_out_startframe; ///< start frame for fade out 
    64                 int m_fade_out_type;            ///< fade out type 0=lin, 1=log 
     65                int m_fade_out_type;            ///< fade out type 0=off, 1=lin , 2=log 
    6566                int m_repeats;                  ///< repats from the loop section 
    6667                unsigned m_start_frame;         ///< start frame 
     
    8283                void on_verticalzoomSlider_valueChanged ( int value ); 
    8384                void updateMainsamplePostionRuler(); 
     85                void on_FadeOutFrameSpinBox_valueChanged( int ); 
     86                void on_FadeOutTypeComboBox_currentIndexChanged( int ); 
    8487 
    8588 
  • branches/new_fx_rack_and_sample_fun/gui/src/SampleEditor/SampleEditor_UI.ui

    r623 r632  
    1818     <x>10</x> 
    1919     <y>385</y> 
    20      <width>451</width> 
     20     <width>841</width> 
    2121     <height>91</height> 
    2222    </rect> 
     
    5858   <property name="geometry" > 
    5959    <rect> 
    60      <x>740</x> 
    61      <y>450</y> 
     60     <x>775</x> 
     61     <y>295</y> 
    6262     <width>81</width> 
    6363     <height>26</height> 
     
    7272    <rect> 
    7373     <x>5</x> 
    74      <y>305</y> 
    75      <width>846</width> 
     74     <y>295</y> 
     75     <width>621</width> 
    7676     <height>24</height> 
    7777    </rect> 
     
    173173     </widget> 
    174174    </item> 
    175     <item> 
    176      <widget class="QSpinBox" name="FadeOutFrameSpinBox" > 
    177       <property name="minimumSize" > 
    178        <size> 
    179         <width>140</width> 
    180         <height>0</height> 
    181        </size> 
    182       </property> 
    183       <property name="toolTip" > 
    184        <string>Adjust fade-out start frame</string> 
    185       </property> 
    186       <property name="maximum" > 
    187        <number>1000000000</number> 
    188       </property> 
    189      </widget> 
    190     </item> 
    191     <item> 
    192      <widget class="QComboBox" name="FadeOutTypeComboBox" > 
    193       <property name="toolTip" > 
    194        <string>fade-out type</string> 
    195       </property> 
    196       <item> 
    197        <property name="text" > 
    198         <string>lin</string> 
    199        </property> 
    200       </item> 
    201       <item> 
    202        <property name="text" > 
    203         <string>log</string> 
    204        </property> 
    205       </item> 
    206      </widget> 
    207     </item> 
    208175   </layout> 
    209176  </widget> 
     
    211178   <property name="geometry" > 
    212179    <rect> 
    213      <x>7</x> 
    214      <y>18</y> 
     180     <x>5</x> 
     181     <y>10</y> 
    215182     <width>843</width> 
    216183     <height>276</height> 
     
    286253    <string>&amp;Play</string> 
    287254   </property> 
     255  </widget> 
     256  <widget class="QLabel" name="newlengthLabel" > 
     257   <property name="geometry" > 
     258    <rect> 
     259     <x>400</x> 
     260     <y>350</y> 
     261     <width>236</width> 
     262     <height>21</height> 
     263    </rect> 
     264   </property> 
     265   <property name="text" > 
     266    <string>new sample length:</string> 
     267   </property> 
     268  </widget> 
     269  <widget class="QWidget" name="" > 
     270   <property name="geometry" > 
     271    <rect> 
     272     <x>640</x> 
     273     <y>350</y> 
     274     <width>209</width> 
     275     <height>24</height> 
     276    </rect> 
     277   </property> 
     278   <layout class="QHBoxLayout" name="horizontalLayout_3" > 
     279    <item> 
     280     <widget class="QComboBox" name="FadeOutTypeComboBox" > 
     281      <property name="minimumSize" > 
     282       <size> 
     283        <width>60</width> 
     284        <height>0</height> 
     285       </size> 
     286      </property> 
     287      <property name="toolTip" > 
     288       <string>fade-out type</string> 
     289      </property> 
     290      <item> 
     291       <property name="text" > 
     292        <string>off</string> 
     293       </property> 
     294      </item> 
     295      <item> 
     296       <property name="text" > 
     297        <string>lin</string> 
     298       </property> 
     299      </item> 
     300     </widget> 
     301    </item> 
     302    <item> 
     303     <widget class="QSpinBox" name="FadeOutFrameSpinBox" > 
     304      <property name="minimumSize" > 
     305       <size> 
     306        <width>140</width> 
     307        <height>0</height> 
     308       </size> 
     309      </property> 
     310      <property name="toolTip" > 
     311       <string>Adjust fade-out start frame</string> 
     312      </property> 
     313      <property name="maximum" > 
     314       <number>1000000000</number> 
     315      </property> 
     316     </widget> 
     317    </item> 
     318   </layout> 
    288319  </widget> 
    289320 </widget> 
     
    294325  <tabstop>LoopCountSpinBox</tabstop> 
    295326  <tabstop>EndFrameSpinBox</tabstop> 
    296   <tabstop>FadeOutFrameSpinBox</tabstop> 
    297   <tabstop>FadeOutTypeComboBox</tabstop> 
    298327  <tabstop>PrevChangesPushButton</tabstop> 
    299328  <tabstop>PlayOrigPushButton</tabstop> 
  • branches/new_fx_rack_and_sample_fun/gui/src/SampleEditor/TargetWaveDisplay.cpp

    r619 r632  
    2525#include <hydrogen/Song.h> 
    2626#include <hydrogen/instrument.h> 
     27 
     28#include "HydrogenApp.h" 
     29#include "SampleEditor.h" 
     30 
    2731using namespace H2Core; 
    2832 
     
    3943 
    4044        //INFOLOG( "INIT" ); 
    41         int w = 451; 
     45        int w = 841; 
    4246        int h = 91; 
    4347        resize( w, h ); 
     
    6771{ 
    6872        QPainter painter( this ); 
    69         painter.setRenderHint( QPainter::Antialiasing ); 
     73        painter.setRenderHint( QPainter::HighQualityAntialiasing ); 
    7074        painter.drawPixmap( ev->rect(), m_background, ev->rect() ); 
    7175 
    72         painter.setPen( QColor( 102, 150, 205 ) ); 
     76        painter.setPen( QColor( 255 , 255, 255 ) ); 
    7377        int VCenter = height() / 2; 
    7478        for ( int x = 0; x < width(); x++ ) { 
     
    7983        font.setWeight( 63 ); 
    8084        painter.setFont( font ); 
    81         painter.setPen( QColor( 255 , 255, 255, 200 ) ); 
    82         painter.drawText( 0, 0, width(), 20, Qt::AlignCenter, m_sSampleName ); 
     85//start frame pointer 
     86        painter.setPen( QColor( 99, 175, 254, 200 ) ); 
     87        painter.drawLine( m_pFadeOutFramePosition, 4, m_pFadeOutFramePosition, height() -4 );    
     88        painter.drawText( m_pFadeOutFramePosition , 1, 10,20, Qt::AlignRight, "F" ); 
     89 
    8390} 
    8491 
    8592 
    86  
     93void TargetWaveDisplay::updateDisplayPointer() 
     94
     95        update(); 
     96
    8797 
    8898void TargetWaveDisplay::updateDisplay( H2Core::InstrumentLayer *pLayer ) 
     
    115125 
    116126} 
     127 
     128 
     129void TargetWaveDisplay::mouseMoveEvent(QMouseEvent *ev) 
     130{ 
     131        testPosition( ev ); 
     132        update(); 
     133} 
     134 
     135 
     136 
     137void TargetWaveDisplay::mousePressEvent(QMouseEvent *ev) 
     138{ 
     139        testPosition( ev ); 
     140        update(); 
     141} 
     142 
     143 
     144void TargetWaveDisplay::testPosition( QMouseEvent *ev ) 
     145{ 
     146                m_pFadeOutFramePosition = ev->x() ; 
     147} 
     148 
     149 
     150void TargetWaveDisplay::mouseReleaseEvent(QMouseEvent *ev) 
     151{ 
     152        update(); 
     153        HydrogenApp::getInstance()->getSampleEditor()->returnAllTargetDisplayValues(); 
     154} 
  • branches/new_fx_rack_and_sample_fun/gui/src/SampleEditor/TargetWaveDisplay.h

    r619 r632  
    2828#include <hydrogen/sample.h> 
    2929 
     30class SampleEditor; 
     31 
    3032namespace H2Core 
    3133{ 
     
    4244 
    4345                void updateDisplay( H2Core::InstrumentLayer *pLayer ); 
     46                void updateDisplayPointer(); 
    4447 
    4548                void paintEvent(QPaintEvent *ev); 
     49                int m_pFadeOutFramePosition; 
    4650 
    4751        private: 
     
    5054                int *m_pPeakData; 
    5155                unsigned m_pSampleLenght; 
     56                virtual void mouseMoveEvent(QMouseEvent *ev); 
     57                virtual void mousePressEvent(QMouseEvent *ev); 
     58                virtual void mouseReleaseEvent(QMouseEvent *ev); 
     59                void testPosition( QMouseEvent *ev ); 
    5260                 
    5361}; 
  • branches/new_fx_rack_and_sample_fun/libs/hydrogen/include/hydrogen/LocalFileMng.h

    r362 r632  
    107107        ~SongWriter(); 
    108108 
    109         void writeSong( Song *song, const QString& filename ); 
     109        // Returns 0 on success. 
     110        int writeSong( Song *song, const QString& filename ); 
    110111}; 
    111112 
  • branches/new_fx_rack_and_sample_fun/libs/hydrogen/include/hydrogen/sample.h

    r629 r632  
    169169        unsigned __end_frame;           ///< sample end frame 
    170170        unsigned __fade_out_startframe; ///< start frame for fade out 
    171         int __fade_out_type;            ///< fade out type 0=lin, 1=log 
     171        int __fade_out_type;            ///< fade out type 0=off, 1=lin , 2=log 
    172172 
    173173 
  • branches/new_fx_rack_and_sample_fun/libs/hydrogen/src/local_file_mgr.cpp

    r625 r632  
    10881088 
    10891089 
    1090  
    1091 void SongWriter::writeSong( Song *song, const QString& filename ) 
     1090// Returns 0 on success, passes the TinyXml error code otherwise. 
     1091int SongWriter::writeSong( Song *song, const QString& filename ) 
    10921092{ 
    10931093        INFOLOG( "Saving song " + filename ); 
     1094        int rv = 0; // return value 
    10941095 
    10951096        // FIXME: has the file write-permssion? 
     
    13041305 
    13051306        doc.InsertEndChild( songNode ); 
    1306         doc.SaveFile(); 
    1307  
    1308         song->__is_modified = false; 
     1307        rv = ( doc.SaveFile() ? 0 : doc.ErrorId() ); 
     1308 
     1309        if( rv ) { 
     1310                WARNINGLOG("File save reported an error."); 
     1311        } else { 
     1312                song->__is_modified = false; 
     1313                INFOLOG("Save was successful."); 
     1314        } 
    13091315        song->set_filename( filename ); 
     1316 
     1317        return rv; 
    13101318} 
    13111319 
  • branches/new_fx_rack_and_sample_fun/libs/hydrogen/src/sample.cpp

    r629 r632  
    164164                                const int fadeouttype) 
    165165{ 
    166       _INFOLOG( QString( "mode: " + loopmode) ); 
    167       _INFOLOG( QString( "loops: %1" ).arg( loops ) ); 
     166//    _INFOLOG( QString( "mode: " + loopmode) ); 
     167//    _INFOLOG( QString( "loops: %1" ).arg( loops ) ); 
    168168        // file exists? 
    169169        if ( QFile( filename ).exists() == false ) { 
     
    274274                } 
    275275 
     276 
     277///fadeout 
     278// fadeoutstartframe 
     279// newlength 
     280 
     281//lin fade out 
     282 
     283//      _INFOLOG( QString( "type: %1" ).arg( fadeouttype ) ); 
     284//      _INFOLOG( QString( "frames: %1" ).arg( fadeoutstartframe ) ); 
     285 
     286        if (fadeouttype == 1){ 
     287                double y = 1.0F; 
     288                unsigned differ = newlength - fadeoutstartframe; 
     289                if ( differ <= 0 ) differ = 1; 
     290                double subtract = (double)1.0F / differ; 
     291                for ( unsigned i = fadeoutstartframe; i< newlength; i++, y = y - subtract){                      
     292                        tempdata_l[i] = tempdata_l[i] * y; 
     293                        tempdata_r[i] = tempdata_r[i] * y; 
     294                        //_INFOLOG( QString( "y: %1" ).arg( y ) ); 
     295                } 
     296        } 
    276297 
    277298        Sample *pSample = new Sample( newlength, filename ); 
  • branches/new_fx_rack_and_sample_fun/libs/hydrogen/src/song.cpp

    r602 r632  
    118118{ 
    119119        SongWriter writer; 
    120         writer.writeSong( this, filename ); 
    121  
     120        int err; 
     121        err = writer.writeSong( this, filename ); 
     122 
     123        if( err ) { 
     124                return false; 
     125        } 
    122126        return QFile::exists( filename ); 
    123127}