Skip to content

Commit

Permalink
Simplify repeated actions of adding and creating a new clip
Browse files Browse the repository at this point in the history
  • Loading branch information
sakertooth committed Feb 3, 2025
1 parent b590ccf commit 77aea52
Show file tree
Hide file tree
Showing 12 changed files with 33 additions and 27 deletions.
1 change: 1 addition & 0 deletions include/Track.h
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ class LMMS_EXPORT Track : public Model, public JournallingObject
void loadSettings( const QDomElement & element ) override;

Clip* addClip(std::unique_ptr<Clip> clip);
Clip* addNewClip();
void removeClip(Clip* clip);
void deleteClips();

Expand Down
2 changes: 1 addition & 1 deletion plugins/HydrogenImport/HydrogenImport.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@ bool HydrogenImport::readSong()

int i = pattern_id[patId]+song_num_tracks;
Track* t = s->tracks().at(i);
auto clip = t->addClip(t->createClip());
auto clip = t->addNewClip();
clip->movePosition(pos);

if ( pattern_length[patId] > best_length )
Expand Down
14 changes: 7 additions & 7 deletions plugins/MidiImport/MidiImport.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ class smfMidiCC
if( !ap || time > lastPos + DefaultTicksPerBar )
{
TimePos pPos = TimePos( time.getBar(), 0 );
ap = static_cast<AutomationClip*>(at->addClip(at->createClip()));
ap = static_cast<AutomationClip*>(at->addNewClip());
ap->movePosition(pPos);
ap->addObject(objModel);
}
Expand Down Expand Up @@ -254,7 +254,7 @@ class smfMidiChannel
it->pitchRangeModel()->setInitValue( 2 );

// Create a default pattern
p = static_cast<MidiClip*>(it->addClip(it->createClip()));
p = static_cast<MidiClip*>(it->addNewClip());
}
return this;
}
Expand All @@ -264,7 +264,7 @@ class smfMidiChannel
{
if (!p)
{
p = static_cast<MidiClip*>(it->addClip(it->createClip()));
p = static_cast<MidiClip*>(it->addNewClip());
}
p->addNote(n, false);
hasNotes = true;
Expand All @@ -281,7 +281,7 @@ class smfMidiChannel
if (!newMidiClip || n->pos() > lastEnd + DefaultTicksPerBar)
{
TimePos pPos = TimePos(n->pos().getBar(), 0);
newMidiClip = static_cast<MidiClip*>(it->addClip(it->createClip()));
newMidiClip = static_cast<MidiClip*>(it->addNewClip());
newMidiClip->movePosition(pPos);
}
lastEnd = n->pos() + n->length();
Expand Down Expand Up @@ -335,10 +335,10 @@ bool MidiImport::readSMF( TrackContainer* tc )
auto dt = Engine::getSong()->addTrack<AutomationTrack>();

dt->setName(tr("MIDI Time Signature Denominator"));
auto timeSigNumeratorPat = static_cast<AutomationClip*>(nt->addClip(nt->createClip()));
auto timeSigNumeratorPat = static_cast<AutomationClip*>(nt->addNewClip());
timeSigNumeratorPat->setDisplayName(tr("Numerator"));
timeSigNumeratorPat->addObject(&timeSigMM.numeratorModel());
auto timeSigDenominatorPat = static_cast<AutomationClip*>(dt->addClip(dt->createClip()));
auto timeSigDenominatorPat = static_cast<AutomationClip*>(dt->addNewClip());
timeSigDenominatorPat->setDisplayName(tr("Denominator"));
timeSigDenominatorPat->addObject(&timeSigMM.denominatorModel());

Expand All @@ -363,7 +363,7 @@ bool MidiImport::readSMF( TrackContainer* tc )
// Tempo stuff
auto tt = Engine::getSong()->addTrack<AutomationTrack>();
tt->setName(tr("Tempo"));
auto tap = static_cast<AutomationClip*>(tt->addClip(tt->createClip()));
auto tap = static_cast<AutomationClip*>(tt->addNewClip());
tap->setDisplayName(tr("Tempo"));
tap->addObject(&Engine::getSong()->tempoModel());
if( tap )
Expand Down
2 changes: 1 addition & 1 deletion src/core/AutomationClip.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1029,7 +1029,7 @@ AutomationClip * AutomationClip::globalAutomationClip(
}
}

auto a = static_cast<AutomationClip*>(t->addClip(t->createClip()));
auto a = static_cast<AutomationClip*>(t->addNewClip());
a->addObject(_m, false);
return a;
}
Expand Down
11 changes: 8 additions & 3 deletions src/core/Track.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ void Track::loadTrack(const QDomElement& element, bool presetMode)
&& node.nodeName() != "solo"
&& !node.toElement().attribute( "metadata" ).toInt() )
{
auto clip = addClip(createClip());
auto clip = addNewClip();
clip->restoreState(node.toElement());
}
}
Expand Down Expand Up @@ -265,6 +265,11 @@ Clip* Track::addClip(std::unique_ptr<Clip> clip)
return m_clips.back().get();
}

Clip* Track::addNewClip()
{
return addClip(createClip());
}

/*! \brief Remove a given Clip from this track
*
* \param clip The Clip to remove from this track.
Expand Down Expand Up @@ -325,7 +330,7 @@ auto Track::getClip(std::size_t clipNum) -> Clip*
printf( "called Track::getClip( %zu ), "
"but Clip %zu doesn't exist\n", clipNum, clipNum );

auto clip = addClip(createClip());
auto clip = addNewClip();
clip->movePosition(clipNum * TimePos::ticksPerBar());
return clip;
}
Expand Down Expand Up @@ -420,7 +425,7 @@ void Track::createClipsForPattern(int pattern)
{
TimePos position = TimePos( numOfClips(), 0 );

auto clip = addClip(createClip());
auto clip = addNewClip();
clip->movePosition(position);
clip->changeLength(TimePos(1, 0));
}
Expand Down
2 changes: 1 addition & 1 deletion src/gui/FileBrowser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -982,7 +982,7 @@ bool FileBrowserTreeWidget::openInNewSampleTrack(FileItem* item)

// Add the sample clip to the track
Engine::audioEngine()->requestChangeInModel();
auto clip = static_cast<SampleClip*>(sampleTrack->addClip(sampleTrack->createClip()));
auto clip = static_cast<SampleClip*>(sampleTrack->addNewClip());
clip->setSampleFile(item->fullName());
Engine::audioEngine()->doneChangeInModel();
return true;
Expand Down
2 changes: 1 addition & 1 deletion src/gui/clips/ClipView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1273,7 +1273,7 @@ void ClipView::mergeClips(QVector<ClipView*> clipvs)
const TimePos earliestPos = (*earliestClipV)->getClip()->startPosition();

// Create a clip where all notes will be added
auto newMidiClip = static_cast<MidiClip*>(track->addClip(track->createClip()));
auto newMidiClip = static_cast<MidiClip*>(track->addNewClip());

if (!newMidiClip)
{
Expand Down
2 changes: 1 addition & 1 deletion src/gui/clips/SampleClipView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,7 @@ bool SampleClipView::splitClip( const TimePos pos )
m_clip->getTrack()->addJournalCheckPoint();
m_clip->getTrack()->saveJournallingState( false );

auto rightClip = m_clip->getTrack()->addClip(m_clip->getTrack()->createClip());
auto rightClip = m_clip->getTrack()->addNewClip();

m_clip->changeLength( splitPos - m_initialClipPos );

Expand Down
2 changes: 1 addition & 1 deletion src/gui/tracks/AutomationTrackView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ void AutomationTrackView::dropEvent( QDropEvent * _de )
pos.setTicks( 0 );
}

auto autoClip = static_cast<AutomationClip*>(getTrack()->addClip(getTrack()->createClip()));
auto autoClip = static_cast<AutomationClip*>(getTrack()->addNewClip());
autoClip->movePosition(pos);
autoClip->addObject( mod );
}
Expand Down
2 changes: 1 addition & 1 deletion src/gui/tracks/SampleTrackView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ void SampleTrackView::dropEvent(QDropEvent *de)
* TimePos::ticksPerBar()) + trackContainerView()->currentPosition()
).quantize(1.0);

auto sClip = static_cast<SampleClip*>(getTrack()->addClip(getTrack()->createClip()));
auto sClip = static_cast<SampleClip*>(getTrack()->addNewClip());
sClip->movePosition(clipPos);
if (sClip) { sClip->setSampleFile(value); }
}
Expand Down
4 changes: 2 additions & 2 deletions src/gui/tracks/TrackContentWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -536,7 +536,7 @@ bool TrackContentWidget::pasteSelection( TimePos clipPos, const QMimeData * md,
TimePos shift = TimePos::ticksPerBar() * getGUI()->songEditor()->m_editor->getSnapSize();
if (offset == 0 && initialTrackIndex == currentTrackIndex) { pos += shift; }

auto clip = t->addClip(t->createClip());
auto clip = t->addNewClip();
clip->movePosition(pos);
clip->restoreState( clipElement );
clip->movePosition(pos); // Because we restored the state, we need to move the Clip again.
Expand Down Expand Up @@ -602,7 +602,7 @@ void TrackContentWidget::mousePressEvent( QMouseEvent * me )
const TimePos pos = getPosition( me->x() ).getBar() *
TimePos::ticksPerBar();

auto clip = getTrack()->addClip(getTrack()->createClip());
auto clip = getTrack()->addNewClip();
clip->movePosition(pos);
}
}
Expand Down
16 changes: 8 additions & 8 deletions tests/src/tracks/AutomationTrackTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,20 +96,20 @@ private slots:
auto song = Engine::getSong();
auto track = song->addTrack<AutomationTrack>();

auto c1 = static_cast<AutomationClip*>(track->addClip(track->createClip()));
auto c1 = static_cast<AutomationClip*>(track->addNewClip());
c1->setProgressionType(AutomationClip::ProgressionType::Linear);
c1->putValue(0, 0.0, false);
c1->putValue(10, 1.0, false);
c1->addObject(&model);

auto c2 = static_cast<AutomationClip*>(track->addClip(track->createClip()));
auto c2 = static_cast<AutomationClip*>(track->addNewClip());
c2->setProgressionType(AutomationClip::ProgressionType::Linear);
c2->putValue(0, 0.0, false);
c2->putValue(100, 1.0, false);
c2->movePosition(100);
c2->addObject(&model);

auto c3 = static_cast<AutomationClip*>(track->addClip(track->createClip()));
auto c3 = static_cast<AutomationClip*>(track->addNewClip());
c3->addObject(&model);
//XXX: Why is this even necessary?
c3->clear();
Expand All @@ -130,7 +130,7 @@ private slots:

auto song = Engine::getSong();
auto track = song->addTrack<AutomationTrack>();
auto c = static_cast<AutomationClip*>(track->addClip(track->createClip()));
auto c = static_cast<AutomationClip*>(track->addNewClip());

c->setProgressionType(AutomationClip::ProgressionType::Linear);
c->addObject(&model);
Expand All @@ -155,7 +155,7 @@ private slots:

auto song = Engine::getSong();
auto instrumentTrack = song->addTrack<InstrumentTrack>();
auto midiClip = static_cast<MidiClip*>(instrumentTrack->addClip(instrumentTrack->createClip()));
auto midiClip = static_cast<MidiClip*>(instrumentTrack->addNewClip());

midiClip->changeLength(TimePos(4, 0));
Note* note = midiClip->addNote(Note(TimePos(4, 0)), false);
Expand Down Expand Up @@ -204,7 +204,7 @@ private slots:
QCOMPARE(patternStore->automatedValuesAt(5, patternTrack->patternIndex())[&model], 0.5f);
QVERIFY(! patternStore->automatedValuesAt(5, patternTrack2->patternIndex()).size());

auto clip = static_cast<PatternClip*>(patternTrack->addClip(patternTrack->createClip()));
auto clip = static_cast<PatternClip*>(patternTrack->addNewClip());
clip->changeLength(TimePos::ticksPerBar() * 2);

QCOMPARE(song->automatedValuesAt(0)[&model], 0.0f);
Expand All @@ -221,10 +221,10 @@ private slots:
auto song = Engine::getSong();

auto globalTrack = song->globalAutomationTrack();
auto globalClip = static_cast<AutomationClip*>(globalTrack->addClip(globalTrack->createClip()));
auto globalClip = static_cast<AutomationClip*>(globalTrack->addNewClip());

auto localTrack = song->addTrack<AutomationTrack>();
auto localClip = static_cast<AutomationClip*>(localTrack->addClip(localTrack->createClip()));
auto localClip = static_cast<AutomationClip*>(localTrack->addNewClip());

FloatModel model;
globalClip->setProgressionType(AutomationClip::ProgressionType::Discrete);
Expand Down

0 comments on commit 77aea52

Please sign in to comment.