Thread: Re: [Audacity-quality] Selection inconsistency with snap-to
A free multi-track audio editor and recorder
Brought to you by:
aosiniao
From: <ga...@au...> - 2010-01-31 11:06:26
|
Hi Al Just following this fix up on Ubuntu and Windows XP. * When snap-to is on, the yellow snap lines will light up before the actual selection extends to the snap point. * When snap-to is on, extend selection with shift-click can lose the starting cursor position. I can confirm the problems Bill reported have gone, but this seems to be at the expense of turning off yellow snap lines whenever Snap To is on. I didn't see any discussion of doing that in the thread, and it seems a bit retrograde to me (without knowing the exigencies of what you were working with). For example, if Snap-To is on at hh:mm:ss, and I click so that the cursor is placed at a whole second, then place a label, I would personally expect the yellow line. There is nothing in the waveform to guide me, as in the case of a cut line, and I think it becomes an issue if you are zoomed out. What do you think? Thanks Gale > Update of /cvsroot/audacity/audacity-src/src/toolbars > In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv29736/src/toolbars > > Modified Files: > SelectionBar.cpp SelectionBar.h > Log Message: > > Fix some odd snap-to-grid behavior when selection bar is showing length. > Snap-to-time fixes, take 2. Gets rid of troublesome dummy control, doesn't > use snap manager when snapping to time. > > > Index: SelectionBar.cpp > =================================================================== > RCS file: /cvsroot/audacity/audacity-src/src/toolbars/SelectionBar.cpp,v > retrieving revision 1.32 > retrieving revision 1.33 > diff -u -d -r1.32 -r1.33 > --- SelectionBar.cpp 21 Jan 2010 02:25:05 -0000 1.32 > +++ SelectionBar.cpp 21 Jan 2010 06:09:34 -0000 1.33 > @@ -85,7 +85,7 @@ > SelectionBar::SelectionBar() > : ToolBar(SelectionBarID, _("Selection"), wxT("Selection")), > mListener(NULL), mRate(0.0), mStart(0.0), mEnd(0.0), mAudio(0.0), > - mLeftTime(NULL), mRightTime(NULL), mDummyRight(NULL), mAudioTime(NULL) > + mLeftTime(NULL), mRightTime(NULL), mAudioTime(NULL) > { > } > > @@ -265,10 +265,6 @@ > mRightTime->EnableMenu(); > mainSizer->Add(mRightTime, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5); > > - // Dummy control is constructed but shown off screen > - mDummyRight = new TimeTextCtrl(this, -1, format, 0.0, mRate, > - wxPoint(-32000,-32000)); > - > mainSizer->Add(new wxStaticLine(this, -1, wxDefaultPosition, > wxSize(1, toolbarSingle), > wxLI_VERTICAL), > @@ -378,7 +374,6 @@ > // so reset pointers first. > mLeftTime = > mRightTime = > - mDummyRight = > mAudioTime = NULL; > > mRightEndButton = > @@ -394,7 +389,6 @@ > wxString formatString = mLeftTime->GetBuiltinFormat(index); > mLeftTime->SetFormatString(formatString); > mRightTime->SetFormatString(formatString); > - mDummyRight->SetFormatString(formatString); > mAudioTime->SetFormatString(formatString); > > if (leftFocus) { > @@ -414,14 +408,10 @@ > { > mLeftTime->SetTimeValue(mStart); > > - if (mRightEndButton->GetValue()) { > + if (mRightEndButton->GetValue()) > mRightTime->SetTimeValue(mEnd); > - mDummyRight->SetTimeValue(mEnd - mStart); > - } > - else { > + else > mRightTime->SetTimeValue(mEnd - mStart); > - mDummyRight->SetTimeValue(mEnd); > - } > > mAudioTime->SetTimeValue(mAudio); > } > @@ -444,8 +434,14 @@ > { > if (mRightEndButton->GetValue()) > return mRightTime->GetTimeValue(); > - else > - return mDummyRight->GetTimeValue(); > + else { > + // What would be shown if we were showing the end time > + TimeTextCtrl ttc(this, wxID_ANY, wxT(""), 0.0, mRate); > + ttc.SetFormatString(mRightTime->GetFormatString()); > + ttc.SetSampleRate(mRate); > + ttc.SetTimeValue(mEnd); > + return ttc.GetTimeValue(); > + } > } > > void SelectionBar::SetField(const wxChar *msg, int fieldNum) > @@ -473,7 +469,6 @@ > // update the TimeTextCtrls if they exist > if (mLeftTime) mLeftTime->SetSampleRate(rate); > if (mRightTime) mRightTime->SetSampleRate(rate); > - if (mDummyRight) mDummyRight->SetSampleRate(rate); > if (mAudioTime) mAudioTime->SetSampleRate(rate); > } > } > @@ -485,7 +480,6 @@ > { > if (mLeftTime) mLeftTime->SetSampleRate(mRate); > if (mRightTime) mRightTime->SetSampleRate(mRate); > - if (mDummyRight) mDummyRight->SetSampleRate(mRate); > if (mAudioTime) mAudioTime->SetSampleRate(mRate); > if (mListener) mListener->AS_SetRate(mRate); > } > > Index: SelectionBar.h > =================================================================== > RCS file: /cvsroot/audacity/audacity-src/src/toolbars/SelectionBar.h,v > retrieving revision 1.11 > retrieving revision 1.12 > diff -u -d -r1.11 -r1.12 > --- SelectionBar.h 21 Jan 2010 02:25:05 -0000 1.11 > +++ SelectionBar.h 21 Jan 2010 06:09:34 -0000 1.12 > @@ -90,8 +90,6 @@ > > TimeTextCtrl *mLeftTime; > TimeTextCtrl *mRightTime; > - // An un-shown control; holds whichever of end/length is not displayed > - TimeTextCtrl *mDummyRight; > wxRadioButton *mRightEndButton; > wxRadioButton *mRightLengthButton; > TimeTextCtrl *mAudioTime; |
From: Al D. <bus...@gm...> - 2010-01-31 17:00:27
|
On Sunday 31 January 2010 04:06:13 ga...@au... wrote: > Hi Al > > Just following this fix up on Ubuntu and Windows XP. > > * When snap-to is on, the yellow snap lines will light up > before the actual selection extends to the snap point. > > * When snap-to is on, extend selection with shift-click > can lose the starting cursor position. > > I can confirm the problems Bill reported have gone, but this seems > to be at the expense of turning off yellow snap lines whenever > Snap To is on. I didn't see any discussion of doing that in the > thread, and it seems a bit retrograde to me (without knowing the > exigencies of what you were working with). > > For example, if Snap-To is on at hh:mm:ss, and I click so that the > cursor is placed at a whole second, then place a label, I would > personally expect the yellow line. There is nothing in the waveform > to guide me, as in the case of a cut line, and I think it becomes > an issue if you are zoomed out. What do you think? > You'd only want the yellow line if you're exactly on the label, right? That is, if you're snapping to seconds you wouldn't want to see a yellow line if you passed over a label at 3.5s, only if it's at 3s exactly? I'm sure it's possible but it might be tricky. Snap-to-boundaries and stap-to-time are handled by totally different routines that don't know anything about eachother. If we're pretty sure that's exactly what we want, and that it would be a significant improvement I'll look at it. - Al > > > Thanks > > > > Gale > > > Update of /cvsroot/audacity/audacity-src/src/toolbars > > In directory > > sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv29736/src/toolb > >ars > > > > Modified Files: > > SelectionBar.cpp SelectionBar.h > > Log Message: > > > > Fix some odd snap-to-grid behavior when selection bar is showing > > length. Snap-to-time fixes, take 2. Gets rid of troublesome dummy > > control, doesn't use snap manager when snapping to time. > > > > > > Index: SelectionBar.cpp > > ================================================================= > >== RCS file: > > /cvsroot/audacity/audacity-src/src/toolbars/SelectionBar.cpp,v > > retrieving revision 1.32 > > retrieving revision 1.33 > > diff -u -d -r1.32 -r1.33 > > --- SelectionBar.cpp 21 Jan 2010 02:25:05 -0000 1.32 > > +++ SelectionBar.cpp 21 Jan 2010 06:09:34 -0000 1.33 > > @@ -85,7 +85,7 @@ > > SelectionBar::SelectionBar() > > > > : ToolBar(SelectionBarID, _("Selection"), wxT("Selection")), > > > > mListener(NULL), mRate(0.0), mStart(0.0), mEnd(0.0), > > mAudio(0.0), - mLeftTime(NULL), mRightTime(NULL), > > mDummyRight(NULL), mAudioTime(NULL) + mLeftTime(NULL), > > mRightTime(NULL), mAudioTime(NULL) > > { > > } > > > > @@ -265,10 +265,6 @@ > > mRightTime->EnableMenu(); > > mainSizer->Add(mRightTime, 0, wxALIGN_CENTER_VERTICAL | > > wxRIGHT, 5); > > > > - // Dummy control is constructed but shown off screen > > - mDummyRight = new TimeTextCtrl(this, -1, format, 0.0, mRate, > > - wxPoint(-32000,-32000)); > > - > > mainSizer->Add(new wxStaticLine(this, -1, wxDefaultPosition, > > wxSize(1, toolbarSingle), > > wxLI_VERTICAL), > > @@ -378,7 +374,6 @@ > > // so reset pointers first. > > mLeftTime = > > mRightTime = > > - mDummyRight = > > mAudioTime = NULL; > > > > mRightEndButton = > > @@ -394,7 +389,6 @@ > > wxString formatString = mLeftTime->GetBuiltinFormat(index); > > mLeftTime->SetFormatString(formatString); > > mRightTime->SetFormatString(formatString); > > - mDummyRight->SetFormatString(formatString); > > mAudioTime->SetFormatString(formatString); > > > > if (leftFocus) { > > @@ -414,14 +408,10 @@ > > { > > mLeftTime->SetTimeValue(mStart); > > > > - if (mRightEndButton->GetValue()) { > > + if (mRightEndButton->GetValue()) > > mRightTime->SetTimeValue(mEnd); > > - mDummyRight->SetTimeValue(mEnd - mStart); > > - } > > - else { > > + else > > mRightTime->SetTimeValue(mEnd - mStart); > > - mDummyRight->SetTimeValue(mEnd); > > - } > > > > mAudioTime->SetTimeValue(mAudio); > > } > > @@ -444,8 +434,14 @@ > > { > > if (mRightEndButton->GetValue()) > > return mRightTime->GetTimeValue(); > > - else > > - return mDummyRight->GetTimeValue(); > > + else { > > + // What would be shown if we were showing the end time > > + TimeTextCtrl ttc(this, wxID_ANY, wxT(""), 0.0, mRate); > > + ttc.SetFormatString(mRightTime->GetFormatString()); > > + ttc.SetSampleRate(mRate); > > + ttc.SetTimeValue(mEnd); > > + return ttc.GetTimeValue(); > > + } > > } > > > > void SelectionBar::SetField(const wxChar *msg, int fieldNum) > > @@ -473,7 +469,6 @@ > > // update the TimeTextCtrls if they exist > > if (mLeftTime) mLeftTime->SetSampleRate(rate); > > if (mRightTime) mRightTime->SetSampleRate(rate); > > - if (mDummyRight) mDummyRight->SetSampleRate(rate); > > if (mAudioTime) mAudioTime->SetSampleRate(rate); > > } > > } > > @@ -485,7 +480,6 @@ > > { > > if (mLeftTime) mLeftTime->SetSampleRate(mRate); > > if (mRightTime) mRightTime->SetSampleRate(mRate); > > - if (mDummyRight) mDummyRight->SetSampleRate(mRate); > > if (mAudioTime) mAudioTime->SetSampleRate(mRate); > > if (mListener) mListener->AS_SetRate(mRate); > > } > > > > Index: SelectionBar.h > > ================================================================= > >== RCS file: > > /cvsroot/audacity/audacity-src/src/toolbars/SelectionBar.h,v > > retrieving revision 1.11 > > retrieving revision 1.12 > > diff -u -d -r1.11 -r1.12 > > --- SelectionBar.h 21 Jan 2010 02:25:05 -0000 1.11 > > +++ SelectionBar.h 21 Jan 2010 06:09:34 -0000 1.12 > > @@ -90,8 +90,6 @@ > > > > TimeTextCtrl *mLeftTime; > > TimeTextCtrl *mRightTime; > > - // An un-shown control; holds whichever of end/length is not > > displayed - TimeTextCtrl *mDummyRight; > > wxRadioButton *mRightEndButton; > > wxRadioButton *mRightLengthButton; > > TimeTextCtrl *mAudioTime; > > ------------------------------------------------------------------- > ----------- The Planet: dedicated and managed hosting, cloud > storage, colocation Stay online with enterprise data centers and > the best network in the business Choose flexible plans and > management services without long-term contracts Personal 24x7 > support from experience hosting pros just a phone call away. > http://p.sf.net/sfu/theplanet-com > _______________________________________________ > Audacity-quality mailing list > Aud...@li... > https://lists.sourceforge.net/lists/listinfo/audacity-quality > |
From: Bill W. <bi...@go...> - 2010-01-31 17:19:55
|
On 31-Jan-10, at 12:03 PM, Al Dimond wrote: > > You'd only want the yellow line if you're exactly on the label, right? > That is, if you're snapping to seconds you wouldn't want to see a > yellow line if you passed over a label at 3.5s, only if it's at 3s > exactly? +1 I use this all the time for snapping to CDDA frames, so I'd like to be able to snap to a label or split line that was created with Snap To CDDA frames On, while I still have Snap To CDDA frames On. -- Bill |
From: Gale A. <ga...@au...> - 2010-02-01 02:24:20
|
| From Al Dimond <bus...@gm...> | Sun, 31 Jan 2010 10:03:34 -0700 | Subject: [Audacity-quality] Selection inconsistency with snap-to > On Sunday 31 January 2010 04:06:13 ga...@au... wrote: > > Hi Al > > > > Just following this fix up on Ubuntu and Windows XP. > > > > * When snap-to is on, the yellow snap lines will light up > > before the actual selection extends to the snap point. > > > > * When snap-to is on, extend selection with shift-click > > can lose the starting cursor position. > > > > I can confirm the problems Bill reported have gone, but this seems > > to be at the expense of turning off yellow snap lines whenever > > Snap To is on. I didn't see any discussion of doing that in the > > thread, and it seems a bit retrograde to me (without knowing the > > exigencies of what you were working with). > > > > For example, if Snap-To is on at hh:mm:ss, and I click so that the > > cursor is placed at a whole second, then place a label, I would > > personally expect the yellow line. There is nothing in the waveform > > to guide me, as in the case of a cut line, and I think it becomes > > an issue if you are zoomed out. What do you think? > > > > You'd only want the yellow line if you're exactly on the label, right? > That is, if you're snapping to seconds you wouldn't want to see a > yellow line if you passed over a label at 3.5s, only if it's at 3s > exactly? Yes, exactly as Bill said earlier in the thread. I can't snap to the label at 3.5s while Snap To is on hh:mm:ss, so I don't want to see the snap lines then. > I'm sure it's possible but it might be tricky. Snap-to-boundaries and > stap-to-time are handled by totally different routines that don't know > anything about eachother. If we're pretty sure that's exactly what we > want, and that it would be a significant improvement I'll look at it. It would be going back to functionality that we had before, but without the quirky behaviour associated with it. And for those using the Selection="End" button where it worked better, it's a loss with little gain. Thanks, Gale > > > Update of /cvsroot/audacity/audacity-src/src/toolbars > > > In directory > > > sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv29736/src/toolb > > >ars > > > > > > Modified Files: > > > SelectionBar.cpp SelectionBar.h > > > Log Message: > > > > > > Fix some odd snap-to-grid behavior when selection bar is showing > > > length. Snap-to-time fixes, take 2. Gets rid of troublesome dummy > > > control, doesn't use snap manager when snapping to time. > > > > > > > > > Index: SelectionBar.cpp > > > ================================================================= > > >== RCS file: > > > /cvsroot/audacity/audacity-src/src/toolbars/SelectionBar.cpp,v > > > retrieving revision 1.32 > > > retrieving revision 1.33 > > > diff -u -d -r1.32 -r1.33 > > > --- SelectionBar.cpp 21 Jan 2010 02:25:05 -0000 1.32 > > > +++ SelectionBar.cpp 21 Jan 2010 06:09:34 -0000 1.33 > > > @@ -85,7 +85,7 @@ > > > SelectionBar::SelectionBar() > > > > > > : ToolBar(SelectionBarID, _("Selection"), wxT("Selection")), > > > > > > mListener(NULL), mRate(0.0), mStart(0.0), mEnd(0.0), > > > mAudio(0.0), - mLeftTime(NULL), mRightTime(NULL), > > > mDummyRight(NULL), mAudioTime(NULL) + mLeftTime(NULL), > > > mRightTime(NULL), mAudioTime(NULL) > > > { > > > } > > > > > > @@ -265,10 +265,6 @@ > > > mRightTime->EnableMenu(); > > > mainSizer->Add(mRightTime, 0, wxALIGN_CENTER_VERTICAL | > > > wxRIGHT, 5); > > > > > > - // Dummy control is constructed but shown off screen > > > - mDummyRight = new TimeTextCtrl(this, -1, format, 0.0, mRate, > > > - wxPoint(-32000,-32000)); > > > - > > > mainSizer->Add(new wxStaticLine(this, -1, wxDefaultPosition, > > > wxSize(1, toolbarSingle), > > > wxLI_VERTICAL), > > > @@ -378,7 +374,6 @@ > > > // so reset pointers first. > > > mLeftTime = > > > mRightTime = > > > - mDummyRight = > > > mAudioTime = NULL; > > > > > > mRightEndButton = > > > @@ -394,7 +389,6 @@ > > > wxString formatString = mLeftTime->GetBuiltinFormat(index); > > > mLeftTime->SetFormatString(formatString); > > > mRightTime->SetFormatString(formatString); > > > - mDummyRight->SetFormatString(formatString); > > > mAudioTime->SetFormatString(formatString); > > > > > > if (leftFocus) { > > > @@ -414,14 +408,10 @@ > > > { > > > mLeftTime->SetTimeValue(mStart); > > > > > > - if (mRightEndButton->GetValue()) { > > > + if (mRightEndButton->GetValue()) > > > mRightTime->SetTimeValue(mEnd); > > > - mDummyRight->SetTimeValue(mEnd - mStart); > > > - } > > > - else { > > > + else > > > mRightTime->SetTimeValue(mEnd - mStart); > > > - mDummyRight->SetTimeValue(mEnd); > > > - } > > > > > > mAudioTime->SetTimeValue(mAudio); > > > } > > > @@ -444,8 +434,14 @@ > > > { > > > if (mRightEndButton->GetValue()) > > > return mRightTime->GetTimeValue(); > > > - else > > > - return mDummyRight->GetTimeValue(); > > > + else { > > > + // What would be shown if we were showing the end time > > > + TimeTextCtrl ttc(this, wxID_ANY, wxT(""), 0.0, mRate); > > > + ttc.SetFormatString(mRightTime->GetFormatString()); > > > + ttc.SetSampleRate(mRate); > > > + ttc.SetTimeValue(mEnd); > > > + return ttc.GetTimeValue(); > > > + } > > > } > > > > > > void SelectionBar::SetField(const wxChar *msg, int fieldNum) > > > @@ -473,7 +469,6 @@ > > > // update the TimeTextCtrls if they exist > > > if (mLeftTime) mLeftTime->SetSampleRate(rate); > > > if (mRightTime) mRightTime->SetSampleRate(rate); > > > - if (mDummyRight) mDummyRight->SetSampleRate(rate); > > > if (mAudioTime) mAudioTime->SetSampleRate(rate); > > > } > > > } > > > @@ -485,7 +480,6 @@ > > > { > > > if (mLeftTime) mLeftTime->SetSampleRate(mRate); > > > if (mRightTime) mRightTime->SetSampleRate(mRate); > > > - if (mDummyRight) mDummyRight->SetSampleRate(mRate); > > > if (mAudioTime) mAudioTime->SetSampleRate(mRate); > > > if (mListener) mListener->AS_SetRate(mRate); > > > } > > > > > > Index: SelectionBar.h > > > ================================================================= > > >== RCS file: > > > /cvsroot/audacity/audacity-src/src/toolbars/SelectionBar.h,v > > > retrieving revision 1.11 > > > retrieving revision 1.12 > > > diff -u -d -r1.11 -r1.12 > > > --- SelectionBar.h 21 Jan 2010 02:25:05 -0000 1.11 > > > +++ SelectionBar.h 21 Jan 2010 06:09:34 -0000 1.12 > > > @@ -90,8 +90,6 @@ > > > > > > TimeTextCtrl *mLeftTime; > > > TimeTextCtrl *mRightTime; > > > - // An un-shown control; holds whichever of end/length is not > > > displayed - TimeTextCtrl *mDummyRight; > > > wxRadioButton *mRightEndButton; > > > wxRadioButton *mRightLengthButton; > > > TimeTextCtrl *mAudioTime; > > > > ------------------------------------------------------------------- > > ----------- The Planet: dedicated and managed hosting, cloud > > storage, colocation Stay online with enterprise data centers and > > the best network in the business Choose flexible plans and > > management services without long-term contracts Personal 24x7 > > support from experience hosting pros just a phone call away. > > http://p.sf.net/sfu/theplanet-com > > _______________________________________________ > > Audacity-quality mailing list > > Aud...@li... > > https://lists.sourceforge.net/lists/listinfo/audacity-quality > > |
From: Al D. <bus...@gm...> - 2010-02-01 22:22:07
|
On Sunday 31 January 2010 17:34:08 Gale Andrews wrote: > | From Al Dimond <bus...@gm...> > | Sun, 31 Jan 2010 10:03:34 -0700 > | Subject: [Audacity-quality] Selection inconsistency with snap-to > | > > On Sunday 31 January 2010 04:06:13 ga...@au... wrote: > > > Hi Al > > > > > > Just following this fix up on Ubuntu and Windows XP. > > > > > > * When snap-to is on, the yellow snap lines will light up > > > before the actual selection extends to the snap point. > > > > > > * When snap-to is on, extend selection with shift-click > > > can lose the starting cursor position. > > > > > > I can confirm the problems Bill reported have gone, but this > > > seems to be at the expense of turning off yellow snap lines > > > whenever Snap To is on. I didn't see any discussion of doing > > > that in the thread, and it seems a bit retrograde to me > > > (without knowing the exigencies of what you were working with). > > > > > > For example, if Snap-To is on at hh:mm:ss, and I click so that > > > the cursor is placed at a whole second, then place a label, I > > > would personally expect the yellow line. There is nothing in > > > the waveform to guide me, as in the case of a cut line, and I > > > think it becomes an issue if you are zoomed out. What do you > > > think? > > > > You'd only want the yellow line if you're exactly on the label, > > right? That is, if you're snapping to seconds you wouldn't want > > to see a yellow line if you passed over a label at 3.5s, only if > > it's at 3s exactly? > > Yes, exactly as Bill said earlier in the thread. I can't snap to > the label at 3.5s while Snap To is on hh:mm:ss, so I don't want to > see the snap lines then. > > > I'm sure it's possible but it might be tricky. Snap-to-boundaries > > and stap-to-time are handled by totally different routines that > > don't know anything about eachother. If we're pretty sure that's > > exactly what we want, and that it would be a significant > > improvement I'll look at it. > > It would be going back to functionality that we had before, but > without the quirky behaviour associated with it. And for those > using the Selection="End" button where it worked better, it's > a loss with little gain. > > To really do this right I've had to make some significant changes. I think they improve behavior (I don't like some of the effects on code, so I might refactor parts of it before checking in), but I want to make sure I'm not missing things or changing behavior that I don't like but other people think is important. As my tree currently stands, in snap-to mode: - You get snaps to clip boundaries, labels, etc., that align exactly with the time grid (you can zoom in close, create one label aligned to a film frame and one not, zoom out far, and if you're snapping to film frames you'll be able to snap to the aligned one). - Using the right and left arrow keys to move the cursor and expand/contract selections works reasonably in snap-to mode -- it always aligns with the grid, always moves at least one pixel, always moves at least one grid space. Previously this did not work well at all. - BUT: snapping to the time grid only happens when manipulating the selection with the mouse or keyboard. Previously snapping happened any time the selection was modified; in order to get reasonable behavior with the other snaps considered I had to restructure things so that wouldn't happen. I think these changes are improvements. Double-click a clip and the clip is always exactly selected, even if it's not aligned with the grid. And that problem when you use the time-shift tool on selected clips and the selection flies off the screen is gone. And if you use Find Zero Crossings that won't be affected by snapping anymore. But I might not have noticed everything that changed. Are there any times where the selection is altered but not by clicking, dragging, or using the keyboard, where it's important that the selection snaps to the grid? - Al > > Thanks, > > > > Gale > > > > > Update of /cvsroot/audacity/audacity-src/src/toolbars > > > > In directory > > > > sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv29736/src/t > > > >oolb ars > > > > > > > > Modified Files: > > > > SelectionBar.cpp SelectionBar.h > > > > Log Message: > > > > > > > > Fix some odd snap-to-grid behavior when selection bar is > > > > showing length. Snap-to-time fixes, take 2. Gets rid of > > > > troublesome dummy control, doesn't use snap manager when > > > > snapping to time. > > > > > > > > > > > > Index: SelectionBar.cpp > > > > ============================================================= > > > >==== == RCS file: > > > > /cvsroot/audacity/audacity-src/src/toolbars/SelectionBar.cpp, > > > >v retrieving revision 1.32 > > > > retrieving revision 1.33 > > > > diff -u -d -r1.32 -r1.33 > > > > --- SelectionBar.cpp 21 Jan 2010 02:25:05 -0000 1.32 > > > > +++ SelectionBar.cpp 21 Jan 2010 06:09:34 -0000 1.33 > > > > @@ -85,7 +85,7 @@ > > > > SelectionBar::SelectionBar() > > > > > > > > : ToolBar(SelectionBarID, _("Selection"), wxT("Selection")), > > > > > > > > mListener(NULL), mRate(0.0), mStart(0.0), mEnd(0.0), > > > > mAudio(0.0), - mLeftTime(NULL), mRightTime(NULL), > > > > mDummyRight(NULL), mAudioTime(NULL) + mLeftTime(NULL), > > > > mRightTime(NULL), mAudioTime(NULL) > > > > { > > > > } > > > > > > > > @@ -265,10 +265,6 @@ > > > > mRightTime->EnableMenu(); > > > > mainSizer->Add(mRightTime, 0, wxALIGN_CENTER_VERTICAL | > > > > wxRIGHT, 5); > > > > > > > > - // Dummy control is constructed but shown off screen > > > > - mDummyRight = new TimeTextCtrl(this, -1, format, 0.0, > > > > mRate, - > > > > wxPoint(-32000,-32000)); - > > > > mainSizer->Add(new wxStaticLine(this, -1, > > > > wxDefaultPosition, wxSize(1, toolbarSingle), wxLI_VERTICAL), > > > > @@ -378,7 +374,6 @@ > > > > // so reset pointers first. > > > > mLeftTime = > > > > mRightTime = > > > > - mDummyRight = > > > > mAudioTime = NULL; > > > > > > > > mRightEndButton = > > > > @@ -394,7 +389,6 @@ > > > > wxString formatString = > > > > mLeftTime->GetBuiltinFormat(index); > > > > mLeftTime->SetFormatString(formatString); > > > > mRightTime->SetFormatString(formatString); > > > > - mDummyRight->SetFormatString(formatString); > > > > mAudioTime->SetFormatString(formatString); > > > > > > > > if (leftFocus) { > > > > @@ -414,14 +408,10 @@ > > > > { > > > > mLeftTime->SetTimeValue(mStart); > > > > > > > > - if (mRightEndButton->GetValue()) { > > > > + if (mRightEndButton->GetValue()) > > > > mRightTime->SetTimeValue(mEnd); > > > > - mDummyRight->SetTimeValue(mEnd - mStart); > > > > - } > > > > - else { > > > > + else > > > > mRightTime->SetTimeValue(mEnd - mStart); > > > > - mDummyRight->SetTimeValue(mEnd); > > > > - } > > > > > > > > mAudioTime->SetTimeValue(mAudio); > > > > } > > > > @@ -444,8 +434,14 @@ > > > > { > > > > if (mRightEndButton->GetValue()) > > > > return mRightTime->GetTimeValue(); > > > > - else > > > > - return mDummyRight->GetTimeValue(); > > > > + else { > > > > + // What would be shown if we were showing the end time > > > > + TimeTextCtrl ttc(this, wxID_ANY, wxT(""), 0.0, mRate); > > > > + ttc.SetFormatString(mRightTime->GetFormatString()); > > > > + ttc.SetSampleRate(mRate); > > > > + ttc.SetTimeValue(mEnd); > > > > + return ttc.GetTimeValue(); > > > > + } > > > > } > > > > > > > > void SelectionBar::SetField(const wxChar *msg, int fieldNum) > > > > @@ -473,7 +469,6 @@ > > > > // update the TimeTextCtrls if they exist > > > > if (mLeftTime) mLeftTime->SetSampleRate(rate); > > > > if (mRightTime) mRightTime->SetSampleRate(rate); > > > > - if (mDummyRight) mDummyRight->SetSampleRate(rate); > > > > if (mAudioTime) mAudioTime->SetSampleRate(rate); > > > > } > > > > } > > > > @@ -485,7 +480,6 @@ > > > > { > > > > if (mLeftTime) mLeftTime->SetSampleRate(mRate); > > > > if (mRightTime) mRightTime->SetSampleRate(mRate); > > > > - if (mDummyRight) mDummyRight->SetSampleRate(mRate); > > > > if (mAudioTime) mAudioTime->SetSampleRate(mRate); > > > > if (mListener) mListener->AS_SetRate(mRate); > > > > } > > > > > > > > Index: SelectionBar.h > > > > ============================================================= > > > >==== == RCS file: > > > > /cvsroot/audacity/audacity-src/src/toolbars/SelectionBar.h,v > > > > retrieving revision 1.11 > > > > retrieving revision 1.12 > > > > diff -u -d -r1.11 -r1.12 > > > > --- SelectionBar.h 21 Jan 2010 02:25:05 -0000 1.11 > > > > +++ SelectionBar.h 21 Jan 2010 06:09:34 -0000 1.12 > > > > @@ -90,8 +90,6 @@ > > > > > > > > TimeTextCtrl *mLeftTime; > > > > TimeTextCtrl *mRightTime; > > > > - // An un-shown control; holds whichever of end/length is > > > > not displayed - TimeTextCtrl *mDummyRight; > > > > wxRadioButton *mRightEndButton; > > > > wxRadioButton *mRightLengthButton; > > > > TimeTextCtrl *mAudioTime; > > > > > > --------------------------------------------------------------- > > >---- ----------- The Planet: dedicated and managed hosting, > > > cloud storage, colocation Stay online with enterprise data > > > centers and the best network in the business Choose flexible > > > plans and management services without long-term contracts > > > Personal 24x7 support from experience hosting pros just a phone > > > call away. http://p.sf.net/sfu/theplanet-com > > > _______________________________________________ > > > Audacity-quality mailing list > > > Aud...@li... > > > https://lists.sourceforge.net/lists/listinfo/audacity-quality > > ------------------------------------------------------------------- > ----------- The Planet: dedicated and managed hosting, cloud > storage, colocation Stay online with enterprise data centers and > the best network in the business Choose flexible plans and > management services without long-term contracts Personal 24x7 > support from experience hosting pros just a phone call away. > http://p.sf.net/sfu/theplanet-com > _______________________________________________ > Audacity-quality mailing list > Aud...@li... > https://lists.sourceforge.net/lists/listinfo/audacity-quality > |
From: David B. <drb...@go...> - 2010-02-02 10:32:12
|
On Mon, Feb 1, 2010 at 10:25 PM, Al Dimond <bus...@gm...> wrote: > > - Using the right and left arrow keys to move the cursor and > expand/contract selections works reasonably in snap-to mode -- it > always aligns with the grid, always moves at least one pixel, always > moves at least one grid space. Previously this did not work well at > all. thanks for looking at this - as you say, it was badly broken, David. |
From: Bill W. <bi...@go...> - 2010-02-02 18:51:42
|
On 1-Feb-10, at 5:25 PM, Al Dimond wrote: > > - You get snaps to clip boundaries, labels, etc., that align exactly > with the time grid (you can zoom in close, create one label aligned to > a film frame and one not, zoom out far, and if you're snapping to film > frames you'll be able to snap to the aligned one). Perfect. > > - Using the right and left arrow keys to move the cursor and > expand/contract selections works reasonably in snap-to mode -- it > always aligns with the grid, always moves at least one pixel, always > moves at least one grid space. Previously this did not work well at > all. Perfect. > > - BUT: snapping to the time grid only happens when manipulating the > selection with the mouse or keyboard. Previously snapping happened any > time the selection was modified; in order to get reasonable behavior > with the other snaps considered I had to restructure things so that > wouldn't happen. I think these changes are improvements. > Double-click > a clip and the clip is always exactly selected, even if it's not > aligned with the grid. That makes sense to me. > And that problem when you use the time-shift > tool on selected clips and the selection flies off the screen is gone. Nice. > And if you use Find Zero Crossings that won't be affected by snapping > anymore. That makes sense as well. > But I might not have noticed everything that changed. Are > there any times where the selection is altered but not by clicking, > dragging, or using the keyboard, where it's important that the > selection snaps to the grid? Yes, by using the Selection Toolbar. But I don't know if this is a change, i.e. if setting the length of a selection using the "End/ Length" box ever triggered the snap-to-edge yellow line. And I don't know if we care if it does. -- Bill |
From: Al D. <bus...@gm...> - 2010-02-02 19:38:08
|
On Tuesday 02 February 2010 11:51:34 Bill Wharrie wrote: > On 1-Feb-10, at 5:25 PM, Al Dimond wrote: > > - You get snaps to clip boundaries, labels, etc., that align > > exactly with the time grid (you can zoom in close, create one > > label aligned to a film frame and one not, zoom out far, and if > > you're snapping to film frames you'll be able to snap to the > > aligned one). > > Perfect. > > > - Using the right and left arrow keys to move the cursor and > > expand/contract selections works reasonably in snap-to mode -- it > > always aligns with the grid, always moves at least one pixel, > > always moves at least one grid space. Previously this did not > > work well at all. > > Perfect. > > > - BUT: snapping to the time grid only happens when manipulating > > the selection with the mouse or keyboard. Previously snapping > > happened any time the selection was modified; in order to get > > reasonable behavior with the other snaps considered I had to > > restructure things so that wouldn't happen. I think these changes > > are improvements. > > > > > > Double-click > > a clip and the clip is always exactly selected, even if it's not > > aligned with the grid. > > That makes sense to me. > > > And that problem when you use the time-shift > > tool on selected clips and the selection flies off the screen is > > gone. > > Nice. > > > And if you use Find Zero Crossings that won't be affected by > > snapping anymore. > > That makes sense as well. > > > But I might not have noticed everything that changed. Are > > there any times where the selection is altered but not by > > clicking, dragging, or using the keyboard, where it's important > > that the selection snaps to the grid? > > Yes, by using the Selection Toolbar. But I don't know if this is a > change, i.e. if setting the length of a selection using the "End/ > Length" box ever triggered the snap-to-edge yellow line. And I > don't know if we care if it does. > In the past, setting selection length with the selection toolbar hasn't caused yellow lines to appear (same is true with manipulating the cursor/selection with the keyboard). That might be a nice feature. I'll see if there's a reasonably sane way to implement it. In the meantime I'll commit what I have; if anything is bad let me know. Thanks! - Al > -- Bill > > > ------------------------------------------------------------------- > ----------- The Planet: dedicated and managed hosting, cloud > storage, colocation Stay online with enterprise data centers and > the best network in the business Choose flexible plans and > management services without long-term contracts Personal 24x7 > support from experience hosting pros just a phone call away. > http://p.sf.net/sfu/theplanet-com > _______________________________________________ > Audacity-quality mailing list > Aud...@li... > https://lists.sourceforge.net/lists/listinfo/audacity-quality > |
From: Steve t. F. <ste...@gm...> - 2010-02-02 20:32:49
|
Al Dimond wrote: > On Tuesday 02 February 2010 11:51:34 Bill Wharrie wrote: > >> On 1-Feb-10, at 5:25 PM, Al Dimond wrote: >> >>> - You get snaps to clip boundaries, labels, etc., that align >>> exactly with the time grid (you can zoom in close, create one >>> label aligned to a film frame and one not, zoom out far, and if >>> you're snapping to film frames you'll be able to snap to the >>> aligned one). >>> >> Perfect. >> >> >>> - Using the right and left arrow keys to move the cursor and >>> expand/contract selections works reasonably in snap-to mode -- it >>> always aligns with the grid, always moves at least one pixel, >>> always moves at least one grid space. Previously this did not >>> work well at all. >>> >> Perfect. >> >> >>> - BUT: snapping to the time grid only happens when manipulating >>> the selection with the mouse or keyboard. Previously snapping >>> happened any time the selection was modified; in order to get >>> reasonable behavior with the other snaps considered I had to >>> restructure things so that wouldn't happen. I think these changes >>> are improvements. >>> >>> >>> Double-click >>> a clip and the clip is always exactly selected, even if it's not >>> aligned with the grid. >>> >> That makes sense to me. >> >> >>> And that problem when you use the time-shift >>> tool on selected clips and the selection flies off the screen is >>> gone. >>> >> Nice. >> >> >>> And if you use Find Zero Crossings that won't be affected by >>> snapping anymore. >>> >> That makes sense as well. >> >> >>> But I might not have noticed everything that changed. Are >>> there any times where the selection is altered but not by >>> clicking, dragging, or using the keyboard, where it's important >>> that the selection snaps to the grid? >>> >> Yes, by using the Selection Toolbar. But I don't know if this is a >> change, i.e. if setting the length of a selection using the "End/ >> Length" box ever triggered the snap-to-edge yellow line. And I >> don't know if we care if it does. >> >> > > In the past, setting selection length with the selection toolbar > hasn't caused yellow lines to appear (same is true with manipulating > the cursor/selection with the keyboard). That might be a nice feature. > I'll see if there's a reasonably sane way to implement it. > > In the meantime I'll commit what I have; if anything is bad let me > know. Thanks! > > - Al > > >> -- Bill >> >> Tested on Linux (Ubuntu 9.04) - very nice, can't see anything bad. Steve D |
From: Gale A. <ga...@au...> - 2010-02-27 08:12:39
|
| From Al Dimond <bus...@gm...> | Tue, 2 Feb 2010 12:37:56 -0700 | Subject: [Audacity-quality] Selection inconsistency with snap-to > ... In the past, setting selection length with the selection toolbar > hasn't caused yellow lines to appear (same is true with manipulating > the cursor/selection with the keyboard). That might be a nice feature. > I'll see if there's a reasonably sane way to implement it. Hi Al Was there a reasonable way to implement that? It so, I'd like to track it as an enhancement. I imagine VI users would find it handy (and to be really exotic, how about a sound when the yellow snap line appears, off by default of course)? Gale |
From: Al D. <bus...@gm...> - 2010-02-27 15:03:13
|
On Saturday 27 February 2010 01:12:31 Gale Andrews wrote: > | From Al Dimond <bus...@gm...> > | Tue, 2 Feb 2010 12:37:56 -0700 > | Subject: [Audacity-quality] Selection inconsistency with snap-to > | > > ... In the past, setting selection length with the selection > > toolbar hasn't caused yellow lines to appear (same is true with > > manipulating the cursor/selection with the keyboard). That might > > be a nice feature. I'll see if there's a reasonably sane way to > > implement it. > > Hi Al > > Was there a reasonable way to implement that? It so, I'd like to > track it as an enhancement. I imagine VI users would find it handy > (and to be really exotic, how about a sound when the yellow snap > line appears, off by default of course)? > I think there's a reasonable way to do it. We'd want to use the snap manager but I think it wouldn't just work off the shelf. It would take a considerable amount of testing to make sure the cursor doesn't get stuck on snap points. It's not quite at the top of my pile at the moment, so probably worth tracking as an enhancement. I've never even thought about a sound... that's an interesting idea. I'm not sure whether I like it or not... it would definitely have to be just the right sound. - Al > > > Gale > > > ------------------------------------------------------------------- > ----------- Download Intel® Parallel Studio Eval > Try the new software tools for yourself. Speed compiling, find bugs > proactively, and fine-tune applications for parallel performance. > See why Intel Parallel Studio got high marks during beta. > http://p.sf.net/sfu/intel-sw-dev > _______________________________________________ > Audacity-quality mailing list > Aud...@li... > https://lists.sourceforge.net/lists/listinfo/audacity-quality > |
From: Ed M. <edg...@wa...> - 2010-02-27 17:16:03
|
> -----Original Message----- > From: Al Dimond [mailto:bus...@gm...] > On Saturday 27 February 2010 01:12:31 Gale Andrews wrote: > > track it as an enhancement. I imagine VI users would find it handy > > (and to be really exotic, how about a sound when the yellow snap line > > appears, off by default of course)? > > I've never even thought about a sound... that's an interesting idea. > I'm not sure whether I like it or not... it would definitely have to be just the right sound. > [ --Ed ] The sound (and also the current "finished with long task" sound) should be an Audacity editable and cross-platform playable file (MP3, WAV etc.) which the user may tweak. --Ed |
From: Gale A. <ga...@au...> - 2010-02-03 08:13:46
|
| From aud...@go... | Tue, 02 Feb 2010 19:44:56 +0000 | Subject: [audacity] r10211 committed - Fix lots of snapping problems by moving snap-to-time into SnapManager.... > Revision: 10211 > Author: BusinessmanProgrammerSteve > Date: Tue Feb 2 11:43:52 2010 > Log: Fix lots of snapping problems by moving snap-to-time into SnapManager. > Do a 'make dep' after updating, some #includes are added. Al, in VS I got error C2668: "ambiguous call to overloaded function could be 'long double fabs(long double)' while trying to match the argument list '(int)' in TrackPanel.cpp 5764 5762 minPix >= 0 ? ttc.Increment() : ttc.Decrement(); 5763 result = ttc.GetTimeValue(); 5764 if (fabs(result - t) * mViewInfo->zoom >= fabs(minPix)) { Changing "0" to "0.0" in 5762 gave same result so I changed the two "fabs" to "abs" in 5764 to make it compile. I have not committed it as I'm not 100% sure. Gale |
From: Al D. <bus...@gm...> - 2010-02-03 15:54:02
|
On Wednesday 03 February 2010 01:13:08 Gale Andrews wrote: > | From aud...@go... > | Tue, 02 Feb 2010 19:44:56 +0000 > | Subject: [audacity] r10211 committed - Fix lots of snapping > | problems by moving snap-to-time into SnapManager.... > | > > Revision: 10211 > > Author: BusinessmanProgrammerSteve > > Date: Tue Feb 2 11:43:52 2010 > > Log: Fix lots of snapping problems by moving snap-to-time into > > SnapManager. Do a 'make dep' after updating, some #includes are > > added. > > Al, in VS I got error C2668: > > "ambiguous call to overloaded function could be 'long double > fabs(long double)' while trying to match the argument list '(int)' > > in TrackPanel.cpp 5764 > > > 5762 minPix >= 0 ? ttc.Increment() : ttc.Decrement(); > 5763 result = ttc.GetTimeValue(); > 5764 if (fabs(result - t) * mViewInfo->zoom >= fabs(minPix)) { > > Changing "0" to "0.0" in 5762 gave same result so I changed the two > "fabs" to "abs" in 5764 to make it compile. > gah, Using abs() gave me some problems on Linux. Casting to a double should fix it. I'll check that in. > I have not committed it as I'm not 100% sure. > > > > Gale > > > > > > ------------------------------------------------------------------- > ----------- The Planet: dedicated and managed hosting, cloud > storage, colocation Stay online with enterprise data centers and > the best network in the business Choose flexible plans and > management services without long-term contracts Personal 24x7 > support from experience hosting pros just a phone call away. > http://p.sf.net/sfu/theplanet-com > _______________________________________________ > Audacity-quality mailing list > Aud...@li... > https://lists.sourceforge.net/lists/listinfo/audacity-quality > |
From: Bill W. <bi...@go...> - 2010-02-10 03:57:52
Attachments:
snapSelection.png
|
Tested on Mac G5 10.5.8. Audacity ® 1.3.12-alpha-Feb 8 2010 (Unicode) Looks good. Split lines or labels created with snap-to on now "light up" when dragging out a selection with a compatible grid. But ... is this correct? |
From: Al D. <bus...@gm...> - 2010-02-10 05:32:43
|
On Tuesday 09 February 2010 20:57:44 Bill Wharrie wrote: > Tested on Mac G5 10.5.8. Audacity ® 1.3.12-alpha-Feb 8 2010 > (Unicode) > > Looks good. Split lines or labels created with snap-to on now > "light up" when dragging out a selection with a compatible grid. > > But ... is this correct? > Short answer: yes. Long answer: selection boundaries in an audio track are always sample- aligned. What you're seeing is that the sample at exactly 4s is not included in the selection but the one before it is -- within the track the selection boundary is drawn halfway between the two samples to make that clear. If you zoom in on 2s the selection boundary will extend half way between the sample right at 2s and the one before, showing that that sample is included. When zoomed in really close if you drag out a selection you'll notice that the selection drawn in the wave track and the selection shown on the ruler always overlap the same samples. But what's weird about this is that if you have snap-to turned on at sample granularity, the selection drawn in the ruler always looks a half-sample ahead of the one in the one in the track itself. - Al |
From: Gale A. <ga...@au...> - 2010-02-10 11:21:24
|
| From Al Dimond <bus...@gm...> | Tue, 9 Feb 2010 22:32:33 -0700 | Subject: [Audacity-quality] Selection inconsistency with snap-to > On Tuesday 09 February 2010 20:57:44 Bill Wharrie wrote: > > Tested on Mac G5 10.5.8. Audacity ® 1.3.12-alpha-Feb 8 2010 > > (Unicode) > > > > Looks good. Split lines or labels created with snap-to on now > > "light up" when dragging out a selection with a compatible grid. > > > > But ... is this correct? > > > ... When zoomed in really close if you drag out a selection you'll notice > that the selection drawn in the wave track and the selection shown on > the ruler always overlap the same samples. But what's weird about this > is that if you have snap-to turned on at sample granularity, the > selection drawn in the ruler always looks a half-sample ahead of the > one in the one in the track itself. I think it's plain wrong, intuitively, which is why Bill's confused and it could even be the reason behind some bugs. Simplistically, I would expect the region to always align with a sample as the smallest possible unit. It does in CoolEdit, for example. But I'd be interested in an expert's explanation why Audacity does not do this. I've raised this on -devel a couple of times. Gale |
From: Al D. <bus...@gm...> - 2010-02-10 16:36:25
|
On Wednesday 10 February 2010 04:21:03 Gale Andrews wrote: > | From Al Dimond <bus...@gm...> > | Tue, 9 Feb 2010 22:32:33 -0700 > | Subject: [Audacity-quality] Selection inconsistency with snap-to > | > > On Tuesday 09 February 2010 20:57:44 Bill Wharrie wrote: > > > Tested on Mac G5 10.5.8. Audacity ® 1.3.12-alpha-Feb 8 2010 > > > (Unicode) > > > > > > Looks good. Split lines or labels created with snap-to on now > > > "light up" when dragging out a selection with a compatible > > > grid. > > > > > > But ... is this correct? > > > > ... When zoomed in really close if you drag out a selection > > you'll notice that the selection drawn in the wave track and the > > selection shown on the ruler always overlap the same samples. But > > what's weird about this is that if you have snap-to turned on at > > sample granularity, the selection drawn in the ruler always looks > > a half-sample ahead of the one in the one in the track itself. > > I think it's plain wrong, intuitively, which is why Bill's confused > and it could even be the reason behind some bugs. Simplistically, > I would expect the region to always align with a sample as the > smallest possible unit. It does in CoolEdit, for example. > What part do you think is "plain" wrong, and what specifically would you prefer? What would happen, in your scheme, if the project had tracks with different sample rates? 44.1 and 48k, for example? The current selection scheme handles that quite well. The way the selection is displayed in each WaveTrack doesn't actually effect the value of the selection as stored. Using Bill's example screencap, ViewInfo.sel0 is 2 and ViewInfo.sel1 is 4. If you performed a delete on the track you'd delete exactly 2 seconds of audio. > But I'd be interested in an expert's explanation why Audacity does > not do this. I've raised this on -devel a couple of times. > > > > Gale > > > > ------------------------------------------------------------------- > ----------- SOLARIS 10 is the OS for Data Centers - provides > features such as DTrace, Predictive Self Healing and Award Winning > ZFS. Get Solaris 10 NOW http://p.sf.net/sfu/solaris-dev2dev > _______________________________________________ > Audacity-quality mailing list > Aud...@li... > https://lists.sourceforge.net/lists/listinfo/audacity-quality > |