mirror of
https://github.com/cookiengineer/audacity
synced 2025-08-08 08:01:19 +02:00
NoteTrack: Implement Silence and InsertSilence
Additionally, fix the UI portions of these, and fix Trim for note tracks (the code already existed, but due to flags would not work). As PRL requested, this is gated only behind USE_MIDI.
This commit is contained in:
parent
e707f6a263
commit
298bb3fde8
@ -470,12 +470,12 @@ void AudacityProject::CreateMenusAndCommands()
|
||||
|
||||
/* i18n-hint: (verb)*/
|
||||
c->AddItem(wxT("Silence"), _("Silence Audi&o"), FN(OnSilence), wxT("Ctrl+L"),
|
||||
AudioIONotBusyFlag | TimeSelectedFlag | WaveTracksSelectedFlag,
|
||||
AudioIONotBusyFlag | TimeSelectedFlag | WaveTracksSelectedFlag);
|
||||
AudioIONotBusyFlag | TimeSelectedFlag | AudioTracksSelectedFlag,
|
||||
AudioIONotBusyFlag | TimeSelectedFlag | AudioTracksSelectedFlag);
|
||||
/* i18n-hint: (verb)*/
|
||||
c->AddItem(wxT("Trim"), _("Tri&m Audio"), FN(OnTrim), wxT("Ctrl+T"),
|
||||
AudioIONotBusyFlag | TimeSelectedFlag | WaveTracksSelectedFlag,
|
||||
AudioIONotBusyFlag | TimeSelectedFlag | WaveTracksSelectedFlag);
|
||||
AudioIONotBusyFlag | TimeSelectedFlag | AudioTracksSelectedFlag,
|
||||
AudioIONotBusyFlag | TimeSelectedFlag | AudioTracksSelectedFlag);
|
||||
c->EndSubMenu();
|
||||
|
||||
c->AddSeparator();
|
||||
@ -1986,6 +1986,7 @@ CommandFlag AudacityProject::GetUpdateFlags(bool checkActive)
|
||||
}
|
||||
else {
|
||||
flags |= WaveTracksSelectedFlag;
|
||||
flags |= AudioTracksSelectedFlag;
|
||||
}
|
||||
}
|
||||
if( t->GetEndTime() > t->GetStartTime() )
|
||||
@ -2003,6 +2004,7 @@ CommandFlag AudacityProject::GetUpdateFlags(bool checkActive)
|
||||
if (nt->GetSelected()) {
|
||||
flags |= TracksSelectedFlag;
|
||||
flags |= NoteTracksSelectedFlag;
|
||||
flags |= AudioTracksSelectedFlag; // even if not EXPERIMENTAL_MIDI_OUT
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -2225,9 +2227,12 @@ void AudacityProject::UpdateMenus(bool checkActive)
|
||||
{
|
||||
mCommandManager.Enable(wxT("ExportSel"), false);
|
||||
mCommandManager.Enable(wxT("SplitNew"), false);
|
||||
mCommandManager.Enable(wxT("Trim"), false);
|
||||
mCommandManager.Enable(wxT("SplitDelete"), false);
|
||||
}
|
||||
if (!(flags & TimeSelectedFlag) | !(flags & AudioTracksSelectedFlag))
|
||||
{
|
||||
mCommandManager.Enable(wxT("Trim"), false);
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
@ -5057,10 +5062,11 @@ void AudacityProject::OnJoin()
|
||||
|
||||
void AudacityProject::OnSilence()
|
||||
{
|
||||
SelectedTrackListOfKindIterator iter(Track::Wave, GetTracks());
|
||||
TrackListIterator iter(GetTracks());
|
||||
|
||||
for (Track *n = iter.First(); n; n = iter.Next())
|
||||
n->Silence(mViewInfo.selectedRegion.t0(), mViewInfo.selectedRegion.t1());
|
||||
if (n->GetSelected() && (nullptr != dynamic_cast<AudioTrack *>(n)))
|
||||
n->Silence(mViewInfo.selectedRegion.t0(), mViewInfo.selectedRegion.t1());
|
||||
|
||||
PushState(wxString::
|
||||
Format(_("Silenced selected tracks for %.2f seconds at %.2f"),
|
||||
|
@ -516,14 +516,27 @@ void NoteTrack::Paste(double t, const Track *src)
|
||||
mSeq->paste(t - GetOffset(), other->mSeq.get());
|
||||
}
|
||||
|
||||
void NoteTrack::Silence(double, double)
|
||||
void NoteTrack::Silence(double t0, double t1)
|
||||
{
|
||||
// to do
|
||||
if (t1 < t0)
|
||||
THROW_INCONSISTENCY_EXCEPTION;
|
||||
|
||||
auto len = t1 - t0;
|
||||
|
||||
mSeq->convert_to_seconds();
|
||||
// XXX: do we want to set the all param?
|
||||
// If it's set, then it seems like notes are silenced if they start or end in the range,
|
||||
// otherwise only if they start in the range. --Poke
|
||||
mSeq->silence(t0 - GetOffset(), len, false);
|
||||
}
|
||||
|
||||
void NoteTrack::InsertSilence(double, double)
|
||||
void NoteTrack::InsertSilence(double t, double len)
|
||||
{
|
||||
// to do
|
||||
if (len <= 0)
|
||||
THROW_INCONSISTENCY_EXCEPTION;
|
||||
|
||||
mSeq->convert_to_seconds();
|
||||
mSeq->insert_silence(t - GetOffset(), len);
|
||||
}
|
||||
|
||||
// Call this function to manipulate the underlying sequence data. This is
|
||||
|
@ -55,6 +55,7 @@ enum CommandFlag : unsigned long long
|
||||
NotPausedFlag = 0x400000000ULL, // jkc
|
||||
HasWaveDataFlag = 0x800000000ULL, // jkc
|
||||
PlayableTracksExistFlag = 0x1000000000ULL,
|
||||
AudioTracksSelectedFlag = 0x2000000000ULL,
|
||||
|
||||
NoFlagsSpecifed = ~0ULL
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user