Proposal Timer Record Improvements

The Problems
There are many existing feature requests lodged in the Wiki relating to improvements to enhance the usability of Timer Record. For example:
 * The current implementation of Timer Record operates as an "unattended recording" rather than a proper timed recording in that most of Audacity's recording controls are unavailable to the user once a "Timer Record" has been initiated. In particular the levels cannot be re-adjusted once Timer Record has been initiated but also but also the zoom level and resizing of tracks cannot be accessed. Also labels and markers cannot be dropped. This is a prominent feature request (see below).
 * TimeText controls do not interact intuitively with the Date controls.
 * It is possible to set a timer record event that will cause disk overflow.
 * The Cancel button in the "Progress" box can be dangerous and non-intuitive for users, causing them to lose data.  (Fixed by Vaughan for v2.0.1.)
 * The "Progress" box is un-necessarily wide, inconsistently so compared with other Audacity progress boxes.
 * A Multi-event scheduler like a VCR or PVR

Proposed Features

 * 1) Timer Record to enable access to the normal set of recording controls.
 * 2) Add a Timer Stop to be available for manually initiated recording.
 * 3) Improvements to the time data-entry spinner controls.
 * 4) Error handling (or warning) on potential disk full.
 * 5) Remove the Cancel button from the Progress box (still allow power user to cancel with window Close or ESC) (Fixed by Vaughan for v2.0.1.)
 * 6) Re-size the "Progress" box smaller.
 * 7) Add a multi-event and repeat-event facility.
 * 8) Add optional forced Save or Export on Timer Record completion.

Developer/QA Backing

 * Peter Sampson: I particularly support the "controls" and the "Multi-Event Timer".  The multi-event feature I regard as just a "nice-to-have".
 * Gale: Am in agreement with the general thrust of improvements here especially removing the risk of naive user cancelling an in-progress recording which removes it from the project.

Use Cases

 * 1) Access to controls: User uses Timer Record while they are active on their computer (on other tasks) so that they do not forget to start a live FM broadcast capture from the radio at a time in the future. In that case they need access to the recording controls.
 * 2) Timer Stop: User has activated a long recording process manually and then has to leave the computer unattended. Timer Stop would provide a safety measure so Audacity does not record endlessly until the hard drive is full and the recorded session becomes jeopardized.
 * 3) User is restricted to a single event timer - users will be familiar with the use of VRC/PVR all of which have multi-event and repeat-event timer functionality, and so expect similar in Audacity. Necessary for capturing audio while away on vacation/business trip.
 * 4) Once timer record has been invoked by a user all other use of Audacity (in different windows) is blocked.
 * 5) User unexpectedly needs to go out having manually initiated a recording, needs to set a stop time to prevent creating a very large project or disk overflow.
 * 6) Users find the spinner data-entry for time values to be confusing and un-natural, causing incorrect entry values.
 * 7) User inadvertently enters an erroneous date causing a timer record event for which there is insufficient disk space.
 * 8) While Timer Record is recording, user erroneously presses Cancel to halt the recording then presses record, their original one-off recording is irretrievably lost. See this thread in the forum.  (Fixed by Vaughan for v2.0.1.)
 * 9) The "Progress" box is un-necessarily wide and thus has much empty gray space which adds nothing and is visually un-pleasing.

Details

 * Controls: Timer Record to facilitate availability of all the normal set of Audacity recording controls:
 * 1) use of the sliders to adjust the signal level
 * 2) zoom in/out,
 * 3) change the track size,
 * 4) drop markers with Ctrl+B and Ctrl+M,
 * 5) change the waveform display type,
 * 6) rename the track
 * 7) pause and unpause recording (Note that this merely temporarily interrupts the recording; it does not extend the recording time.)


 * Waiting for Start dialog enhancements:
 * Add duration and scheduled stop time
 * Rename "Remaining Time: hh:mm:ss" to "Recording will commence in: hh:mm:ss"
 * Remove "Elapsed Time: hh:mm:ss" and the progress bar.


 * Ability to change the event times:
 * Add the ability to change (extend or shorten) the recording stop time during recording. Would require a modification to the "Audacity Timer Record Progress" dialog box).
 * Add the ability to change (extend or shorten) the recording stop time or the start time while waiting to record. Would require a modification to the "... Waiting for Start" dialog box).
 * Provide a Timer Stop to be available for a manually initiated recording to be stopped after a settable time, possibly implemented by making the Timer Record dialog available after recording has been initiated.
 * Store last-used settings to facilitate recording on a daily or weekly basis.


 * Ability to minimize the Timer record Window
 * Timer Record to behave like a proper Windows window so that it can be minimized to the Applications bar with the minimize button in the Audacity window.
 * Gale: Bug 104 relates to this.
 * Gale: It would be quite odd on Windows to be able to minimize an app having a modal window (though Ubuntu allows it). So making Timer Record dialogue modeless (for the current project) would be one solution.


 * Improvements to the time data-entry spinbox controls
 * Simplified spinner controls for time entry with hh:mm only (I doubt that anyone uses seconds except when testing).
 * hh (and mm) to be a single field rather than separate digits of units and tens. Thus the up/down arrows would operate on hh (and mm) as an entity.
 * No ripple-through interaction from the hours field to the date field.
 * No ripple-through interaction from the minutes field to the hours field.
 * The minutes field to be limited to its logical maximum of 59 minutes.
 * The hours field to be limited to its logical maximum of 23 hours.
 * Gale: There are at least two cases where the Start and End spinboxes interact unintuitively with Date:
 * You cannot type a spinbox character that results in a time in the past; the input is ignored and the selected digit is advanced. In particular there is a clearly expressed expectation that setting hours to the past would advance the date forwards.
 * The hour spinbox increments the date perfectly in a forwards direction by typing or up arrow (even incrementing by a day and changing hours to "07" if you have 21 hours and increment the "2" to "3"). However incrementing hours backwards with down arrow does not move the date backwards when you reach "00" hours (even if the previous day would still be a time in the future); moreover a further down arrow from "00" hours zeroes all the digits.
 * The above are not apparently bugs but arguably reasonable behaviour for TimeText controls as used in Selection Toolbar. Perhaps these are not good behaviours in a Timer and may suggest using another type of control integrated with the date. Or perhaps time controls should increment date backwards and a time in the past can be set, but it greys out OK.


 * Error handling (or warning) on potential disk full situation
 * When a single Timer Record event is created (or set of Timer Record events if the multi-event feature is added) that would exceed the potential remaining available record time that Audacity calculates (and which would lead to a full disk and a failed recording) generate either an error message (or possibly a warning to enable the user to free up disk space).


 * Remove the Cancel button from the Progress box
 * (Fixed by Vaughan for v2.0.1.)
 * Simply remove this button from the box
 * The box has a de facto cancel already in the X in the top-right corner
 * A second de facto cancel is available by use of the ESC button
 * User can achieve the same effect by using the Stop and then optionally deleting the recorded track if required (this is safer).


 * Re-size the "Progress" box smaller
 * The "Progress" box is un-necessarily wide at 22 cm
 * Reduce the width of the "Progress" box to 10.5 cm to match the width of the "Waiting for Start" box'''
 * This would still leave the progess bar wide enough to be useful (cf. progress boxes for Effects and Analyze tools which are only about 8.25 cm wide).


 * Multi-event scheduler: Timer Record to be enabled to set multiple timed recording events.
 * Existing dialog box should easily accommodate this with some minor upgrades (see below).
 * Would need to check for and block any recording overlap.
 * Would probably require an additional window listing the queued recording events with tools to manage and manipulate the event entries. This would also apply to a single, sole, event.
 * Would really require an auto-save at the successful completion of a recording event, to a user-specified project name and location. Would need to be specified at event set-up which would require extensions to the setup dialog box.
 * Some users may prefer to force an Auto-Export to WAV format, to a user-specified filename & location, on successful completion (in preference to Saving a project). We should endeavour to accommodate this.  Would also require extensions to the setup dialog box.
 * Repeat-event functionality to be added to the setup dialog to enable recording events at regular repeat intervals (e.g. daily, weekly, etc.).


 * Optional forced Save or Export on Timer Record completion: (If the Multi-event scheduler is not implemented) add tools to optionally auto-save/export and optionally close down the computer and/or input stream. Would require extensions to the setup dialog box.
 * An option to auto-save or auto-export at successful completion of the recording event, to a user-specified name and location (and specified format for export). Would need to be specified at event set-up which would require extensions to the setup dialog box.
 * Optionally disconnect the internet stream (if appropriate) on successful event completion.
 * Optionally shut down the computer on successful event completion.

GUI Examples
TBP

=
======================================================================================================

Previous Feature Requests relating to this proposal
Correct as at Jan 2012.

Timer Record enhancements
Many of the below requests could be implemented (I think) by enabling automation support for tcp/unix sockets  Multi-event scheduler for future recordings (like a VCR), not just scheduling a single recording for now  Access to progress or record controls:  Both dialogs should be modeless for current project, allowing access to same controls available during standard recording This lets you change levels, pause manually, drop a label, zoom in/out or resize tracks. Paragraph 2) above refers to this  Waiting for Start dialog should be modeless for all (or at least, other) projects: allowing to work normally until recording starts 

 Change/extend recording stop time during record or waiting to record  Stop a manually started recording automatically by extending recording stop time in Timer Record - use case "something unexpected makes me have to go out"   Some method to close the timer without stopping it - Cancel?  <li> Perform system shutdown after recording. <li>More intuitive/simpler timer controls: : <li>Type any hour before present time to stop timer/advance date: instead of input before present time being unintuitively ignored. <li>Simple set of independent combo boxes for start and end having month, day (both pre-selected), hour, minute and seconds. <li>More like a hardware timer: Get rid of "Duration" and "Dates" as editable controls and get rid of interlinking of start and end time </ul>

<li> Auto Save: <li> to a pre-defined project name/location set in an in-situ dialog <li> to a pre-defined file name/format and location set in an in-situ dialog </ul> <li> "Waiting for Start" dialog enhancements: <li>Add duration and scheduled stop time <li> Rename "Remaining Time" to "Recording will commence in: hh:mm:ss" <li> Remove "Elapsed Time" and Progress Bar </ul> <li> (Windows) Minimise Audacity while Timer Record in progress  Gale: Bug 104 relates to this. <li> Store last used settings to start recording on a daily basis <li> Disconnect internet stream as well as stop the recording </ul></ul>

New/Modified Preferences
<li>Timer Record Duration - although Timer Record now remembers its last duration across sessions, a "use default/use last value" preference would allow flexibility to change duration in Timer Record for specific purposes but still have it initialise back to the most commonly required default. </ul></ul>