From 64cc3d871028212d2c6b7144e92fb5a3d608bdc5 Mon Sep 17 00:00:00 2001 From: Tobias Doerffel Date: Tue, 19 Feb 2008 00:18:07 +0000 Subject: [PATCH] made MIDI- and FLP-import-filter work git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/branches/lmms-mv@695 0778d3d1-df1d-0410-868b-ea421aaaa00d --- ChangeLog | 12 +++ include/envelope_and_lfo_parameters.h | 2 +- include/instrument_functions.h | 2 +- include/instrument_sound_shaping.h | 1 + include/song.h | 1 + plugins/flp_import/flp_import.cpp | 146 ++++++++++++-------------- plugins/flp_import/flp_import.h | 7 +- plugins/midi_import/midi_import.cpp | 3 +- plugins/midi_import/midi_import.h | 7 +- 9 files changed, 99 insertions(+), 82 deletions(-) diff --git a/ChangeLog b/ChangeLog index 41191b99a..1589f650d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2008-02-18 Tobias Doerffel + + * plugins/flp_import/flp_import.h: + * plugins/flp_import/flp_import.cpp: + * plugins/midi_import/midi_import.h: + * plugins/midi_import/midi_import.cpp: + * include/instrument_functions.h: + * include/song.h: + * include/envelope_and_lfo_parameters.h: + * include/instrument_sound_shaping.h: + made MIDI- and FLP-import-filter work + 2008-02-15 Paul Giblock * plugins/plucked_string_synth/plucked_string_synth.cpp: * plugins/plucked_string_synth/plucked_string_synth.h: diff --git a/include/envelope_and_lfo_parameters.h b/include/envelope_and_lfo_parameters.h index c0efcd1c5..fe6f6ba25 100644 --- a/include/envelope_and_lfo_parameters.h +++ b/include/envelope_and_lfo_parameters.h @@ -151,7 +151,7 @@ private: friend class envelopeAndLFOView; -// friend class flpImport; + friend class flpImport; } ; diff --git a/include/instrument_functions.h b/include/instrument_functions.h index fdb779437..70a3a22d7 100644 --- a/include/instrument_functions.h +++ b/include/instrument_functions.h @@ -131,7 +131,7 @@ private: comboBoxModel m_arpModeModel; -// friend class flpImport; + friend class flpImport; friend class instrumentTrack; friend class arpeggiatorView; diff --git a/include/instrument_sound_shaping.h b/include/instrument_sound_shaping.h index 5a8b4e622..e15ddac4d 100644 --- a/include/instrument_sound_shaping.h +++ b/include/instrument_sound_shaping.h @@ -78,6 +78,7 @@ private: friend class instrumentSoundShapingView; + friend class flpImport; } ; diff --git a/include/song.h b/include/song.h index a9bf070e5..86e7d1286 100644 --- a/include/song.h +++ b/include/song.h @@ -45,6 +45,7 @@ const Uint16 MAX_SONG_LENGTH = 9999; class song : public trackContainer { Q_OBJECT + mapPropertyFromModel(int,getTempo,setTempo,m_tempoModel); mapPropertyFromModel(int,masterPitch,setMasterPitch,m_masterPitchModel); mapPropertyFromModel(int,masterVolume,setMasterVolume, m_masterVolumeModel); diff --git a/plugins/flp_import/flp_import.cpp b/plugins/flp_import/flp_import.cpp index b46ac5053..4f1a9c357 100644 --- a/plugins/flp_import/flp_import.cpp +++ b/plugins/flp_import/flp_import.cpp @@ -1,7 +1,7 @@ /* * flp_import.cpp - support for importing FLP-files * - * Copyright (c) 2006-2007 Tobias Doerffel + * Copyright (c) 2006-2008 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -30,7 +30,6 @@ #include #include "flp_import.h" -#include "arp_and_chords_tab_widget.h" #include "basic_filters.h" #include "bb_editor.h" #include "bb_track.h" @@ -38,18 +37,17 @@ #include "config_mgr.h" #include "debug.h" #include "engine.h" -#include "envelope_tab_widget.h" -#include "envelope_and_lfo_widget.h" #include "group_box.h" #include "instrument.h" #include "instrument_track.h" +#include "envelope_and_lfo_parameters.h" #include "knob.h" #include "oscillator.h" #include "pattern.h" #include "piano_widget.h" #include "project_journal.h" #include "project_notes.h" -#include "song_editor.h" +#include "song.h" #include "tempo_sync_knob.h" #include "track_container.h" @@ -232,7 +230,7 @@ bool flpImport::tryImport( trackContainer * _tc ) int ev_cnt = 0; - engine::getSongEditor()->clearProject(); + engine::getSong()->clearProject(); const bool is_journ = engine::getProjectJournal()->isJournalling(); engine::getProjectJournal()->setJournalling( FALSE ); @@ -314,7 +312,7 @@ bool flpImport::tryImport( trackContainer * _tc ) case FLP_MainVol: printf( "main-volume: %d\n", data ); - engine::getSongEditor()->setMasterVolume( + engine::getSong()->setMasterVolume( static_cast( data * 100 / 128 ) ); break; @@ -345,12 +343,12 @@ bool flpImport::tryImport( trackContainer * _tc ) printf( "new channel\n" ); it = dynamic_cast( - track::create( track::INSTRUMENT_TRACK, engine::getBBEditor() ) ); + track::create( track::InstrumentTrack, engine::getBBTrackContainer() ) ); assert( it != NULL ); i_tracks.push_back( it ); it_inst = it->loadInstrument( "audiofileprocessor" ); - it->toggledInstrumentTrackButton( FALSE ); +// it->toggledInstrumentTrackButton( FALSE ); // reset some values step_pattern = 0; @@ -365,7 +363,7 @@ bool flpImport::tryImport( trackContainer * _tc ) case FLP_Tempo: printf( "tempo: %d\n", data ); - engine::getSongEditor()->setTempo( data ); + engine::getSong()->setTempo( data ); break; case FLP_CurrentPatNum: @@ -398,7 +396,7 @@ bool flpImport::tryImport( trackContainer * _tc ) break; case FLP_MainPitch: - engine::getSongEditor()->setMasterPitch( data ); + engine::getSong()->setMasterPitch( data ); break; case FLP_Resonance: @@ -460,8 +458,7 @@ bool flpImport::tryImport( trackContainer * _tc ) case FLP_MiddleNote: data += 8; - it->setBaseNote( data ); - it->getPianoWidget()->update(); + it->baseNoteModel()->setValue( data ); break; case FLP_DelayReso: @@ -602,27 +599,27 @@ bool flpImport::tryImport( trackContainer * _tc ) case FLP_ChanParams: { - const arpAndChordsTabWidget::arpDirections + const arpeggiator::ArpDirections mappedArpDir[] = { - arpAndChordsTabWidget::UP, - arpAndChordsTabWidget::UP, - arpAndChordsTabWidget::DOWN, - arpAndChordsTabWidget::UP_AND_DOWN, - arpAndChordsTabWidget::UP_AND_DOWN, - arpAndChordsTabWidget::RANDOM + arpeggiator::ArpDirUp, + arpeggiator::ArpDirUp, + arpeggiator::ArpDirDown, + arpeggiator::ArpDirUpAndDown, + arpeggiator::ArpDirUpAndDown, + arpeggiator::ArpDirRandom } ; const Uint32 * p = (const Uint32 *) text; - arpAndChordsTabWidget * actw = it->m_arpWidget; - actw->m_arpDirectionBtnGrp->setValue( + arpeggiator * arp = &it->m_arpeggiator; + arp->m_arpDirectionModel.setValue( mappedArpDir[p[10]] ); - actw->m_arpRangeKnob->setValue( p[11] ); - actw->m_arpComboBox->setValue( p[12] ); - actw->m_arpTimeKnob->setValue( p[13] / 8.0f ); + arp->m_arpRangeModel.setValue( p[11] ); + arp->m_arpModel.setValue( p[12] ); + arp->m_arpTimeModel.setValue( p[13] / 8.0f ); //// 100.0f ); - actw->m_arpGateKnob->setValue( p[14] * 100.0f / + arp->m_arpGateModel.setValue( p[14] * 100.0f / 48.0f ); - actw->m_arpGroupBox->setState( p[10] > 0 ); + arp->m_arpEnabledModel.setValue( p[10] > 0 ); printf( "channel params: " ); dump_mem( text, text_len ); //printf( "channel params: arpdir: %d range: %d time: %d gate: %d\n", p[10], p[11], p[13], p[14] ); @@ -634,36 +631,36 @@ bool flpImport::tryImport( trackContainer * _tc ) const Uint32 * p = (const Uint32 *) text; printf( "envelope and lfo params: " ); dump_mem( text, text_len ); - envelopeTabWidget * etw = it->m_envWidget; - envelopeAndLFOWidget * elw = NULL; + instrumentSoundShaping * iss = &it->m_soundShaping; + envelopeAndLFOParameters * elp = NULL; switch( env_lfo_target ) { case 1: - elw = etw->m_envLFOWidgets[envelopeTabWidget::VOLUME]; - break; + elp = iss->m_envLFOParameters[instrumentSoundShaping::Volume]; + break; case 2: - elw = etw->m_envLFOWidgets[envelopeTabWidget::CUT]; - break; + elp = iss->m_envLFOParameters[instrumentSoundShaping::Cut]; + break; case 3: - elw = etw->m_envLFOWidgets[envelopeTabWidget::RES]; - break; + elp = iss->m_envLFOParameters[instrumentSoundShaping::Resonance]; + break; default: break; } ++env_lfo_target; - if( elw == NULL ) + if( elp == NULL ) { break; } const float scaling = 0.8f / 65536.0f; - elw->m_predelayKnob->setValue( p[2] * scaling ); - elw->m_attackKnob->setValue( p[3] * scaling ); - elw->m_holdKnob->setValue( p[4] * scaling ); - elw->m_decayKnob->setValue( p[5] * scaling ); - elw->m_sustainKnob->setValue( p[6] * scaling ); - elw->m_releaseKnob->setValue( p[7] * scaling ); - elw->m_amountKnob->setValue( p[1] ? 1 : 0 ); - elw->updateSampleVars(); + elp->m_predelayModel.setValue( p[2] * scaling ); + elp->m_attackModel.setValue( p[3] * scaling ); + elp->m_holdModel.setValue( p[4] * scaling ); + elp->m_decayModel.setValue( p[5] * scaling ); + elp->m_sustainModel.setValue( p[6] * scaling ); + elp->m_releaseModel.setValue( p[7] * scaling ); + elp->m_amountModel.setValue( p[1] ? 1 : 0 ); + elp->updateSampleVars(); break; } @@ -684,24 +681,24 @@ bool flpImport::tryImport( trackContainer * _tc ) basicFilters<>::SIMPLE_FLT_CNT } ; Uint32 * p = (Uint32 *) text; - envelopeTabWidget * etw = it->m_envWidget; + instrumentSoundShaping * iss = &it->m_soundShaping; /* printf( "filter values: " ); for( int i = 0; i < 6; ++i ) { printf( "%d ", ((Sint32*)text)[i] ); } printf( "\n" );*/ - etw->m_filterComboBox->setValue( + iss->m_filterModel.setValue( mappedFilter[p[5]] ); - etw->m_filterCutKnob->setValue( p[3] / 255.0f * - ( etw->m_filterCutKnob->maxValue() - - etw->m_filterCutKnob->minValue() ) + - etw->m_filterCutKnob->minValue() ); - etw->m_filterResKnob->setValue( p[4] / 1024.0f * - ( etw->m_filterResKnob->maxValue() - - etw->m_filterResKnob->minValue() ) + - etw->m_filterResKnob->minValue() ); - etw->m_filterGroupBox->setState( p[3] < 256 ); + iss->m_filterCutModel.setValue( p[3] / 255.0f * + ( iss->m_filterCutModel.maxValue() - + iss->m_filterCutModel.minValue() ) + + iss->m_filterCutModel.minValue() ); + iss->m_filterResModel.setValue( p[4] / 1024.0f * + ( iss->m_filterResModel.maxValue() - + iss->m_filterResModel.minValue() ) + + iss->m_filterResModel.minValue() ); + iss->m_filterEnabledModel.setValue( p[3] < 256 ); break; } @@ -786,10 +783,9 @@ bool flpImport::tryImport( trackContainer * _tc ) const int ch = ( *it ) >> 16; const int pat = ( ( *it ) & 0xffff ) / 16; const int pos = ( ( ( *it ) & 0xffff ) % 16 ) * 4; - while( engine::getBBEditor()->numOfBBs() <= pat ) + while( engine::getBBTrackContainer()->numOfBBs() <= pat ) { - track::create( track::BB_TRACK, - engine::getSongEditor() ); + track::create( track::BBTrack, engine::getSong() ); } pattern * p = dynamic_cast( i_tracks[ch]->getTCO( pat ) ); @@ -811,10 +807,9 @@ bool flpImport::tryImport( trackContainer * _tc ) { continue; } - while( engine::getBBEditor()->numOfBBs() <= pat ) + while( engine::getBBTrackContainer()->numOfBBs() <= pat ) { - track::create( track::BB_TRACK, - engine::getSongEditor() ); + track::create( track::BBTrack, engine::getSong() ); qApp->processEvents( QEventLoop::AllEvents, 100 ); } pattern * p = dynamic_cast( @@ -834,10 +829,9 @@ bool flpImport::tryImport( trackContainer * _tc ) { continue; } - while( engine::getBBEditor()->numOfBBs() <= pat_num ) + while( engine::getBBTrackContainer()->numOfBBs() <= pat_num ) { - track::create( track::BB_TRACK, - engine::getSongEditor() ); + track::create( track::BBTrack, engine::getSong() ); qApp->processEvents( QEventLoop::AllEvents, 100 ); } @@ -846,9 +840,9 @@ bool flpImport::tryImport( trackContainer * _tc ) tco->movePosition( midiTime( ( ( *it ) & 0xffff ) * 64 ) ); } - if( project_cur_pat < engine::getBBEditor()->numOfBBs() ) + if( project_cur_pat < engine::getBBTrackContainer()->numOfBBs() ) { - engine::getBBEditor()->setCurrentBB( project_cur_pat ); + engine::getBBTrackContainer()->setCurrentBB( project_cur_pat ); } engine::getProjectJournal()->setJournalling( is_journ ); @@ -869,21 +863,21 @@ bool flpImport::processPluginParams( const flPlugins _plugin, { case FL_Plugin_3x_Osc: { - const oscillator::waveShapes mapped_3xOsc_Shapes[] = + const oscillator::WaveShapes mapped_3xOsc_Shapes[] = { - oscillator::SIN_WAVE, - oscillator::TRIANGLE_WAVE, - oscillator::SQUARE_WAVE, - oscillator::SAW_WAVE, - oscillator::SQUARE_WAVE, // square-sin - oscillator::WHITE_NOISE_WAVE, - oscillator::USER_DEF_WAVE + oscillator::SineWave, + oscillator::TriangleWave, + oscillator::SquareWave, + oscillator::SawWave, + oscillator::SquareWave, // square-sin + oscillator::WhiteNoise, + oscillator::UserDefinedWave } ; QDomDocument dd; QDomElement de = dd.createElement( _i->nodeName() ); - de.setAttribute( "modalgo1", oscillator::MIX ); - de.setAttribute( "modalgo2", oscillator::MIX ); + de.setAttribute( "modalgo1", oscillator::SignalMix ); + de.setAttribute( "modalgo2", oscillator::SignalMix ); for( Uint8 i = 0; i < 3; ++i ) { const Sint32 * d = (const Sint32 *)( _data + diff --git a/plugins/flp_import/flp_import.h b/plugins/flp_import/flp_import.h index 4db1607ae..fabc3a13f 100644 --- a/plugins/flp_import/flp_import.h +++ b/plugins/flp_import/flp_import.h @@ -1,7 +1,7 @@ /* * flp_import.h - support for importing FLP-files * - * Copyright (c) 2006 Tobias Doerffel + * Copyright (c) 2006-2008 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -169,6 +169,11 @@ public: flpImport( const QString & _file ); virtual ~flpImport(); + virtual pluginView * instantiateView( QWidget * ) + { + return( NULL ); + } + private: virtual bool tryImport( trackContainer * _tc ); diff --git a/plugins/midi_import/midi_import.cpp b/plugins/midi_import/midi_import.cpp index 380c76769..48ef3b931 100644 --- a/plugins/midi_import/midi_import.cpp +++ b/plugins/midi_import/midi_import.cpp @@ -264,14 +264,13 @@ invalid_format: // now create new instrument-track for reading in track instrumentTrack * it = dynamic_cast( track::create( - track::INSTRUMENT_TRACK, + track::InstrumentTrack, _tc ) ); #ifdef LMMS_DEBUG assert( it != NULL ); #endif // TODO: setup program, channel etc. instrument * it_inst = it->loadInstrument( "patman" ); - it->toggledInstrumentTrackButton( FALSE ); bool sample_loaded = FALSE; // TODO: track_name.trimmed().isEmpty() (Qt4) diff --git a/plugins/midi_import/midi_import.h b/plugins/midi_import/midi_import.h index 9fed65c53..d2960d56c 100644 --- a/plugins/midi_import/midi_import.h +++ b/plugins/midi_import/midi_import.h @@ -1,7 +1,7 @@ /* * midi_import.h - support for importing MIDI-files * - * Copyright (c) 2005-2007 Tobias Doerffel + * Copyright (c) 2005-2008 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -44,6 +44,11 @@ public: midiImport( const QString & _file ); virtual ~midiImport(); + virtual pluginView * instantiateView( QWidget * ) + { + return( NULL ); + } + private: virtual bool tryImport( trackContainer * _tc );