Difference between revisions of "Proposal: Earlier Disk Over-run Warnings"
PeterSampson (talk | contribs) (→Generate Menu: This set of commands could be seen as far less critical to trap then the Record and Save commands so sould probably be ignored.) |
PeterSampson (talk | contribs) (2394) |
||
(41 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | {{Proposal_Header|This page is a proposal to increase Audacity's | + | {{Proposal_Header|This page is a proposal to increase Audacity's resilience to situations where disk over-run causes problems |}} |
+ | |||
+ | {{tip|This proposal has been transferred to GitHub as [https://github.com/audacity/audacity/issues/2394 Issue #2394]. }} | ||
__NOTOC__ | __NOTOC__ | ||
==The Problem== | ==The Problem== | ||
− | [ | + | [https://bugzilla.audacityteam.org/show_bug.cgi?id=437 Bug #437] relates to this issue and is where it was originally reported. The fix for Bug #437 provides traps just as Audacity is about to run out of space for Recording, project Saves, and Exports - an error message is popped up and Audacity will clean up after such unsuccessful Saves or Exports. Recording will cleanly stop with a partial project. |
− | + | We could be more helpful to the user by checking in advance that there is sufficient space for what the user is trying to do, popping an error/warning before starting the required action. This would avoid time wasted by a partial and aborted action. There is one place in Audacity where we currently do this and that is in Timer Record where checks are made that there is sufficient space for the required elapsed time of recording and an error is popped if not so. | |
− | #Export, | + | |
+ | We do still need the bug #437 traps as the ultimate safeguard. | ||
+ | |||
+ | #Although a recording that runs out of space now provides the user with a partial project, we could be more helpful by providing earlier warnings. There is the recording time left that shows in the Status bar - but we know that many people overlook the Status Bar | ||
+ | #The Save Project commands when running out of space only reports when the failure occurs (which could be many minutes later) - Audacity could check before starting the Save that there is sufficient space. | ||
+ | #Export too, when running out of space only reports when the failure occurs (which could be many minutes later) - Audacity could check before starting the Export that there is sufficient space. | ||
#Import can easily be asked to import a data set that is too large for the available disk space. | #Import can easily be asked to import a data set that is too large for the available disk space. | ||
#The Generate and Effect plug-ins are capable of generating large amounts of audio data with the potential for disk overrun, this is not handled cleanly. | #The Generate and Effect plug-ins are capable of generating large amounts of audio data with the potential for disk overrun, this is not handled cleanly. | ||
Line 13: | Line 20: | ||
#Even seemingly innocuous commands have the potential to produce sufficient data to overfill the disk. | #Even seemingly innocuous commands have the potential to produce sufficient data to overfill the disk. | ||
− | + | == Proposed Feature == | |
+ | A suitable headroom buffer to be defined - to especially avoid overfilling the user's main drive (C: in the case of Windows). This should be user-settable but deep in Preferences and with a sensible default of 50-100MB say. | ||
− | |||
− | |||
*For Recording activities: | *For Recording activities: | ||
*#Check before recording starts that there is more space available than the headroom buffer | *#Check before recording starts that there is more space available than the headroom buffer | ||
− | *#While recording takes place check the | + | *#While recording takes place check the available disk space |
*#If and when it reaches the headroom buffer size: Audacity stops with an error message | *#If and when it reaches the headroom buffer size: Audacity stops with an error message | ||
+ | *#*A three-level "traffic-light" green->amber->red warning could be provided ahead of reaching the headroom buffer | ||
+ | |||
+ | |||
+ | *Save commands | ||
+ | *#check that the volume of data to be created, based on current settings will not overfill the disk capacity minus the headroom buffer | ||
+ | *#if so disallow the Save with a suitable error message and advise the user to free up some disk space and try again | ||
+ | *#Particularly a problem if the user has not pre-saved the project and is occupying space in the Audacity Temp directory (which is only cleaned up after the Save is made) | ||
+ | *#Particularly a problem too if the user has enough space for a Save but not a Save As - we may want to advise them to make a Save and then free up some disk space. | ||
*Export | *Export | ||
− | *#check that the volume of data to be created, based on current settings and exported | + | *#check that the volume of data to be created, based on current settings and exported file-type, will not overfill the disk capacity minus the headroom buffer |
− | *# if so disallow the | + | *# if so disallow the export with a suitable error message |
*Import | *Import | ||
− | *#check that the volume of data, based on current settings and imported | + | *#check that the volume of data, based on current settings and imported file-type, will not overfill the disk capacity minus the headroom buffer |
*# if so disallow the import with an error message | *# if so disallow the import with an error message | ||
Line 40: | Line 54: | ||
*Copy & Paste | *Copy & Paste | ||
− | ::Neither of these commands | + | ::Neither of these commands appears to generate any noticeable extra disk occupancy, the assumption is that they are using pointers. However once you manipulate the copied data with an effect then the disk size occupancy does increase - but that should be trapped under '''Generators and effects''' above. |
*All other commands - in fact '''all''' commands | *All other commands - in fact '''all''' commands | ||
− | *#Before the command is implemented in any way check that we have more available space than the | + | *#Before the command is implemented in any way check that we have more available space than the headroom buffer. |
*#If not then inhibit the command and display an error message | *#If not then inhibit the command and display an error message | ||
*Regular checking | *Regular checking | ||
− | *#It may be beneficial that, while Audacity is idling, it makes periodic checks to see if disk-space is being eroded (by other applications) and if so display a suitable "out of | + | *#It may be beneficial that, while Audacity is idling, it makes periodic checks to see if disk-space is being eroded (by other applications) and if so display a suitable "out of space" error message that the user will see on their return to Audacity, |
==Developer/QA Backing== | ==Developer/QA Backing== | ||
− | *Peter | + | *'''Peter:''' particularly for '''Record''', '''Save''', '''Export''' and '''Import''' commands as it would mean we could stop the command from even starting to implement if there would be insufficient space. |
==Use Cases== | ==Use Cases== | ||
− | * | + | *While recording, many users overlook the Status Bar time remaining messages, so would be surprised by an abrupt stop and the bug #437 error message. |
− | * | + | *The user could be many minutes into the Save of a large project, or an Export from it, only to have it aborted - thus wasting those minutes. |
==Tables for analysis and subsequent tracking== | ==Tables for analysis and subsequent tracking== | ||
Line 80: | Line 94: | ||
| no | | no | ||
|- | |- | ||
− | | Open | + | | '''Open''' |
| depends on data size and settings | | depends on data size and settings | ||
| almost certainly | | almost certainly | ||
Line 96: | Line 110: | ||
| no | | no | ||
|- | |- | ||
− | | Save Project | + | | '''Save Project''' |
| may be a lot if Temp files in use | | may be a lot if Temp files in use | ||
| Yes - '''critical''' | | Yes - '''critical''' | ||
Line 102: | Line 116: | ||
| no | | no | ||
| no | | no | ||
− | | | + | | #437 now has an error trap |
|- | |- | ||
− | | Save Project As | + | | '''Save Project As''' |
| as much as the existing project | | as much as the existing project | ||
| Yes - '''critical''' | | Yes - '''critical''' | ||
Line 110: | Line 124: | ||
| no | | no | ||
| no | | no | ||
− | | | + | | #437 now has an error trap |
|- | |- | ||
− | | Save Compressed Copy of Project Project | + | | '''Save Compressed Copy of Project Project''' |
| TBP | | TBP | ||
| yes - '''probably critical''' | | yes - '''probably critical''' | ||
Line 118: | Line 132: | ||
| no | | no | ||
| no | | no | ||
− | | | + | | #437 now has an error trap |
|- | |- | ||
| Check Dependencies | | Check Dependencies | ||
Line 136: | Line 150: | ||
| no | | no | ||
|- | |- | ||
− | | Import | + | | '''Import''' |
| depends on file size & type | | depends on file size & type | ||
| almost certainly | | almost certainly | ||
Line 142: | Line 156: | ||
| no | | no | ||
| no | | no | ||
− | | | + | | #437 now has an error trap |
|- | |- | ||
− | | Export (various) | + | | '''Export''' (various) |
| file size calculable | | file size calculable | ||
| almost certainly | | almost certainly | ||
Line 150: | Line 164: | ||
| no | | no | ||
| no | | no | ||
− | | | + | | #437 now has an error trap |
|- | |- | ||
| Apply Chain | | Apply Chain | ||
| TRICKY | | TRICKY | ||
− | | | + | | probably |
| | | | ||
| no | | no | ||
Line 260: | Line 274: | ||
| open-ended | | open-ended | ||
| yes - '''critical''' | | yes - '''critical''' | ||
− | | | + | | bug #437 |
| ongoing | | ongoing | ||
− | | | + | | yes |
− | | | + | | #437 now has an error trap |
|- | |- | ||
| Timer Record | | Timer Record | ||
− | | | + | | calculable |
| yes - '''critical''' | | yes - '''critical''' | ||
| Mark Young | | Mark Young | ||
− | | | + | | '''Yes''' |
− | | setup trap ok | + | | '''setup trap ok''' |
− | | warning on setup ok and in 2.1.3 | + | | '''warning on setup ok and in 2.1.3''' |
+ | |- | ||
+ | | Timer Record (Export) | ||
+ | | calculable | ||
+ | | yes - '''critical''' | ||
+ | | not assigned | ||
+ | | no | ||
+ | | no | ||
+ | | no | ||
|- | |- | ||
− | | | + | | Record New Track |
| open-ended | | open-ended | ||
| yes - '''critical''' | | yes - '''critical''' | ||
− | | | + | | Bug #437 |
| ongoing | | ongoing | ||
− | | | + | | yes |
− | | | + | | #437 now has an error trap |
|} | |} | ||
== Tracks Menu == | == Tracks Menu == | ||
+ | This set of commands could be seen as far less critical to trap then the Record and Save commands so sould probably be ignored. | ||
{| style="text-align: left" class="wikitable sortable" | {| style="text-align: left" class="wikitable sortable" | ||
Line 295: | Line 318: | ||
| Stereo Track to Mono | | Stereo Track to Mono | ||
| probably calculable | | probably calculable | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 303: | Line 326: | ||
| Mix and Render | | Mix and Render | ||
| probably calculable | | probably calculable | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 311: | Line 334: | ||
| Mix and Render to new Track | | Mix and Render to new Track | ||
| probably calculable | | probably calculable | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 319: | Line 342: | ||
| Resample | | Resample | ||
| probably calculable | | probably calculable | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 326: | Line 349: | ||
|} | |} | ||
− | + | == Generate Menu == | |
− | This set of commands could be seen as far less critical to trap then the Record and Save commands so | + | This set of commands could be seen as far less critical to trap then the Record and Save commands so could probably be ignored. |
{| style="text-align: left" class="wikitable sortable" | {| style="text-align: left" class="wikitable sortable" | ||
Line 404: | Line 427: | ||
=== Effect Menu === | === Effect Menu === | ||
+ | This set of commands could be seen as far less critical to trap then the Record and Save commands so could probably be ignored. | ||
{| style="text-align: left" class="wikitable sortable" | {| style="text-align: left" class="wikitable sortable" | ||
Line 416: | Line 440: | ||
| Amplify | | Amplify | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 424: | Line 448: | ||
| Auto Duck | | Auto Duck | ||
| TBP | | TBP | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 432: | Line 456: | ||
| Bass & Treble | | Bass & Treble | ||
| 107% - used more while working | | 107% - used more while working | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 440: | Line 464: | ||
| Change Pitch | | Change Pitch | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 448: | Line 472: | ||
| Change Speed | | Change Speed | ||
| varies with % change | | varies with % change | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 456: | Line 480: | ||
| Change Tempo | | Change Tempo | ||
| varies with % change | | varies with % change | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 464: | Line 488: | ||
| Click Removal | | Click Removal | ||
| varies | | varies | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 472: | Line 496: | ||
| Compressor | | Compressor | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 480: | Line 504: | ||
| Echo | | Echo | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 488: | Line 512: | ||
| Equalization | | Equalization | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 496: | Line 520: | ||
| Fade In | | Fade In | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 504: | Line 528: | ||
| Fade Out | | Fade Out | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 512: | Line 536: | ||
| Invert | | Invert | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 520: | Line 544: | ||
| Leveller | | Leveller | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 528: | Line 552: | ||
| Noise Reduction | | Noise Reduction | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 536: | Line 560: | ||
| Normalize | | Normalize | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 552: | Line 576: | ||
| Paulstretch | | Paulstretch | ||
| massive | | massive | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 560: | Line 584: | ||
| Phaser | | Phaser | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 568: | Line 592: | ||
| Repair | | Repair | ||
| TBP | | TBP | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 576: | Line 600: | ||
| Repeat | | Repeat | ||
| 0% | | 0% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 584: | Line 608: | ||
| Reverb | | Reverb | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 592: | Line 616: | ||
| Reverse | | Reverse | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 600: | Line 624: | ||
| Sliding Time Scale/Pitch Shift | | Sliding Time Scale/Pitch Shift | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 608: | Line 632: | ||
| Truncate Silence | | Truncate Silence | ||
| varies by amount of silence | | varies by amount of silence | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 616: | Line 640: | ||
| Wahwah | | Wahwah | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 624: | Line 648: | ||
=== Effect Menu below the line=== | === Effect Menu below the line=== | ||
+ | This set of commands could be seen as far less critical to trap then the Record and Save commands so could probably be ignored. | ||
{| style="text-align: left" class="wikitable sortable" | {| style="text-align: left" class="wikitable sortable" | ||
Line 636: | Line 661: | ||
| Adjustable Fade | | Adjustable Fade | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 644: | Line 669: | ||
| Clip Fix | | Clip Fix | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 652: | Line 677: | ||
| Crossfade Clips | | Crossfade Clips | ||
| adds length of fade | | adds length of fade | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 660: | Line 685: | ||
| Crossfade Tracks | | Crossfade Tracks | ||
| adds length of fade | | adds length of fade | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 668: | Line 693: | ||
| Delay | | Delay | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 676: | Line 701: | ||
| High Pass Filter | | High Pass Filter | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 684: | Line 709: | ||
| Limiter | | Limiter | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 692: | Line 717: | ||
| Low Pass Filter | | Low Pass Filter | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 700: | Line 725: | ||
| Notch Filter | | Notch Filter | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 708: | Line 733: | ||
| SC4 | | SC4 | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 716: | Line 741: | ||
| Spectral edit multi tool | | Spectral edit multi tool | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 724: | Line 749: | ||
| Spectral edit parametric EQ | | Spectral edit parametric EQ | ||
| 95% | | 95% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 732: | Line 757: | ||
| Spectral edit shelves | | Spectral edit shelves | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 740: | Line 765: | ||
| Studio Fade Out | | Studio Fade Out | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 748: | Line 773: | ||
| Tremolo | | Tremolo | ||
| 100% | | 100% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 756: | Line 781: | ||
| Vocal Reduction and Isolation | | Vocal Reduction and Isolation | ||
| 100% | | 100% | ||
− | | | + | | maybe |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
| | | | ||
| no | | no | ||
Line 772: | Line 789: | ||
| Vocoder | | Vocoder | ||
| 50% | | 50% | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 780: | Line 797: | ||
=== Analyze Menu === | === Analyze Menu === | ||
+ | This set of commands could be seen as far less critical to trap then the Record and Save commands so could probably be ignored. | ||
{| style="text-align: left" class="wikitable sortable" | {| style="text-align: left" class="wikitable sortable" | ||
Line 792: | Line 810: | ||
| Contrast | | Contrast | ||
| TBP | | TBP | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 800: | Line 818: | ||
| Plot Spectrum | | Plot Spectrum | ||
| TBP | | TBP | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 808: | Line 826: | ||
| Find Clipping | | Find Clipping | ||
| TBP | | TBP | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 816: | Line 834: | ||
| Beat Finder | | Beat Finder | ||
| TBP | | TBP | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 824: | Line 842: | ||
| Regular Interval Labels | | Regular Interval Labels | ||
| TBP | | TBP | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 832: | Line 850: | ||
| Sample Data Export | | Sample Data Export | ||
| TBP | | TBP | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 840: | Line 858: | ||
| Silence Finder | | Silence Finder | ||
| TBP | | TBP | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 848: | Line 866: | ||
| Sound Finder | | Sound Finder | ||
| TBP | | TBP | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 856: | Line 874: | ||
=== Generate/Effect/Analyze Menus === | === Generate/Effect/Analyze Menus === | ||
+ | This set of commands could be seen as far less critical to trap then the Record and Save commands so could probably be ignored. | ||
+ | |||
+ | The generators are protected from storage space overrun by the fix(es) for Bug #437 (error message and clean-up) | ||
{| style="text-align: left" class="wikitable sortable" | {| style="text-align: left" class="wikitable sortable" | ||
Line 868: | Line 889: | ||
| Add / Remove Plug-ins | | Add / Remove Plug-ins | ||
| varies | | varies | ||
− | | | + | | maybe |
| | | | ||
| no | | no | ||
Line 874: | Line 895: | ||
| no | | no | ||
|} | |} | ||
− | |||
− | |||
==Details== | ==Details== | ||
− | + | A souped up progress dialog might be one way to implement this feature. We can't always predict for sure how much space a change will take up. A progress dialog can show a memory dial, and indicate if we look at risk of exhausting memory. That way the complaint of a long operation failing can be addressed. A user can see it may be borderline whether it will complete and fit or not, as the operation progresses. | |
Latest revision as of 12:07, 8 January 2022
Proposal pages help us get from feature requests into actual plans. This page is a proposal to increase Audacity's resilience to situations where disk over-run causes problems |
Proposal pages are used on an ongoing basis by the Audacity development team and are open to edits from visitors to the wiki. They are a good way to get community feedback on a proposal.
|
- Note: Proposals for Google Summer of Code projects are significantly different in structure, are submitted via Google's web app and may or may not have a corresponding proposal page.
![]() |
This proposal has been transferred to GitHub as Issue #2394. |
The Problem
Bug #437 relates to this issue and is where it was originally reported. The fix for Bug #437 provides traps just as Audacity is about to run out of space for Recording, project Saves, and Exports - an error message is popped up and Audacity will clean up after such unsuccessful Saves or Exports. Recording will cleanly stop with a partial project.
We could be more helpful to the user by checking in advance that there is sufficient space for what the user is trying to do, popping an error/warning before starting the required action. This would avoid time wasted by a partial and aborted action. There is one place in Audacity where we currently do this and that is in Timer Record where checks are made that there is sufficient space for the required elapsed time of recording and an error is popped if not so.
We do still need the bug #437 traps as the ultimate safeguard.
- Although a recording that runs out of space now provides the user with a partial project, we could be more helpful by providing earlier warnings. There is the recording time left that shows in the Status bar - but we know that many people overlook the Status Bar
- The Save Project commands when running out of space only reports when the failure occurs (which could be many minutes later) - Audacity could check before starting the Save that there is sufficient space.
- Export too, when running out of space only reports when the failure occurs (which could be many minutes later) - Audacity could check before starting the Export that there is sufficient space.
- Import can easily be asked to import a data set that is too large for the available disk space.
- The Generate and Effect plug-ins are capable of generating large amounts of audio data with the potential for disk overrun, this is not handled cleanly.
- Copy & Paste and Repeat are also capable of generating large amounts of data.
- Even seemingly innocuous commands have the potential to produce sufficient data to overfill the disk.
Proposed Feature
A suitable headroom buffer to be defined - to especially avoid overfilling the user's main drive (C: in the case of Windows). This should be user-settable but deep in Preferences and with a sensible default of 50-100MB say.
- For Recording activities:
- Check before recording starts that there is more space available than the headroom buffer
- While recording takes place check the available disk space
- If and when it reaches the headroom buffer size: Audacity stops with an error message
- A three-level "traffic-light" green->amber->red warning could be provided ahead of reaching the headroom buffer
- Save commands
- check that the volume of data to be created, based on current settings will not overfill the disk capacity minus the headroom buffer
- if so disallow the Save with a suitable error message and advise the user to free up some disk space and try again
- Particularly a problem if the user has not pre-saved the project and is occupying space in the Audacity Temp directory (which is only cleaned up after the Save is made)
- Particularly a problem too if the user has enough space for a Save but not a Save As - we may want to advise them to make a Save and then free up some disk space.
- Export
- check that the volume of data to be created, based on current settings and exported file-type, will not overfill the disk capacity minus the headroom buffer
- if so disallow the export with a suitable error message
- Import
- check that the volume of data, based on current settings and imported file-type, will not overfill the disk capacity minus the headroom buffer
- if so disallow the import with an error message
- Generators and effects
- Check before the plug-in starts that there is more space available than the headroom buffer
- check that the volume of data, based on current settings, will not overfill the disk capacity minus the headroom buffer
- If we want to be really secure we would need to check as the plug-in progresses that we are not exceeding the headroom (in case the estimate was inaccurate) and if so stop the plug-in gracefully with an error message.
- Copy & Paste
- Neither of these commands appears to generate any noticeable extra disk occupancy, the assumption is that they are using pointers. However once you manipulate the copied data with an effect then the disk size occupancy does increase - but that should be trapped under Generators and effects above.
- All other commands - in fact all commands
- Before the command is implemented in any way check that we have more available space than the headroom buffer.
- If not then inhibit the command and display an error message
- Regular checking
- It may be beneficial that, while Audacity is idling, it makes periodic checks to see if disk-space is being eroded (by other applications) and if so display a suitable "out of space" error message that the user will see on their return to Audacity,
Developer/QA Backing
- Peter: particularly for Record, Save, Export and Import commands as it would mean we could stop the command from even starting to implement if there would be insufficient space.
Use Cases
- While recording, many users overlook the Status Bar time remaining messages, so would be surprised by an abrupt stop and the bug #437 error message.
- The user could be many minutes into the Save of a large project, or an Export from it, only to have it aborted - thus wasting those minutes.
Tables for analysis and subsequent tracking
I would suggest that we use these tables to track the progess as part of Bug #437 rather than raising separate Bugzilla entries for each table entry (there are seventy of them).
File Menu
Command | % extra | Needs trapping | Assigned to | Fixed | Tested | Resolved |
---|---|---|---|---|---|---|
New | TBP | ??? | no | no | no | |
Open | depends on data size and settings | almost certainly | no | no | no | |
Close | TBP | ??? | no | no | no | |
Save Project | may be a lot if Temp files in use | Yes - critical | no | no | #437 now has an error trap | |
Save Project As | as much as the existing project | Yes - critical | no | no | #437 now has an error trap | |
Save Compressed Copy of Project Project | TBP | yes - probably critical | no | no | #437 now has an error trap | |
Check Dependencies | TBP | ??? | no | no | no | |
Edit Metadata Tags | TBP | ??? | no | no | no | |
Import | depends on file size & type | almost certainly | no | no | #437 now has an error trap | |
Export (various) | file size calculable | almost certainly | no | no | #437 now has an error trap | |
Apply Chain | TRICKY | probably | no | no | no | |
Edit Chains | TBP | probably | no | no | no | |
Page Setup | TBP | ??? | no | no | no | |
TBP | ??? | no | no | no |
Edit Menu
Command | % extra | Needs trapping | Assigned to | Fixed | Tested | Resolved |
---|---|---|---|---|---|---|
Cut | TBP | ??? | no | no | no | |
Delete | TBP | ??? | no | no | no | |
Copy | none | probably not | no | no | no | |
Paste | none | probably not | no | no | no | |
Duplicate | calculable | almost certainly | no | no | no | |
Labelled Audio>Copy | none | probably not | no | no | no |
Transport Menu
Command | % extra | Needs trapping | Assigned to | Fixed | Tested | Resolved |
---|---|---|---|---|---|---|
Record | open-ended | yes - critical | bug #437 | ongoing | yes | #437 now has an error trap |
Timer Record | calculable | yes - critical | Mark Young | Yes | setup trap ok | warning on setup ok and in 2.1.3 |
Timer Record (Export) | calculable | yes - critical | not assigned | no | no | no |
Record New Track | open-ended | yes - critical | Bug #437 | ongoing | yes | #437 now has an error trap |
Tracks Menu
This set of commands could be seen as far less critical to trap then the Record and Save commands so sould probably be ignored.
Command | % extra | Needs trapping | Assigned to | Fixed | Tested | Resolved |
---|---|---|---|---|---|---|
Stereo Track to Mono | probably calculable | maybe | no | no | no | |
Mix and Render | probably calculable | maybe | no | no | no | |
Mix and Render to new Track | probably calculable | maybe | no | no | no | |
Resample | probably calculable | maybe | no | no | no |
Generate Menu
This set of commands could be seen as far less critical to trap then the Record and Save commands so could probably be ignored.
Command | % extra | Needs trapping | Assigned to | Fixed | Tested | Resolved |
---|---|---|---|---|---|---|
Chirp | calculable | maybe | no | no | no | |
DTMF Tone | calculable | maybe | no | no | no | |
Noise | calculable | maybe | no | no | no | |
Silence | calculable | maybe | no | no | no | |
Tone | calculable | maybe | no | no | no | |
Click Track | calculable | maybe | no | no | no | |
Pluck | calculable | maybe | no | no | no | |
Risset Drum | calculable | maybe | no | no | no |
Effect Menu
This set of commands could be seen as far less critical to trap then the Record and Save commands so could probably be ignored.
Command | % extra | Needs trapping | Assigned to | Fixed | Tested | Resolved |
---|---|---|---|---|---|---|
Amplify | 100% | maybe | no | no | no | |
Auto Duck | TBP | maybe | no | no | no | |
Bass & Treble | 107% - used more while working | maybe | no | no | no | |
Change Pitch | 100% | maybe | no | no | no | |
Change Speed | varies with % change | maybe | no | no | no | |
Change Tempo | varies with % change | maybe | no | no | no | |
Click Removal | varies | maybe | no | no | no | |
Compressor | 100% | maybe | no | no | no | |
Echo | 100% | maybe | no | no | no | |
Equalization | 100% | maybe | no | no | no | |
Fade In | 100% | maybe | no | no | no | |
Fade Out | 100% | maybe | no | no | no | |
Invert | 100% | maybe | no | no | no | |
Leveller | 100% | maybe | no | no | no | |
Noise Reduction | 100% | maybe | no | no | no | |
Normalize | 100% | maybe | no | no | no | |
Nyquist Prompt | ??? | ??? | no | no | no | |
Paulstretch | massive | maybe | no | no | no | |
Phaser | 100% | maybe | no | no | no | |
Repair | TBP | maybe | no | no | no | |
Repeat | 0% | maybe | no | no | no | |
Reverb | 100% | maybe | no | no | no | |
Reverse | 100% | maybe | no | no | no | |
Sliding Time Scale/Pitch Shift | 100% | maybe | no | no | no | |
Truncate Silence | varies by amount of silence | maybe | no | no | no | |
Wahwah | 100% | maybe | no | no | no |
Effect Menu below the line
This set of commands could be seen as far less critical to trap then the Record and Save commands so could probably be ignored.
Command | % extra | Needs trapping | Assigned to | Fixed | Tested | Resolved |
---|---|---|---|---|---|---|
Adjustable Fade | 100% | maybe | no | no | no | |
Clip Fix | 100% | maybe | no | no | no | |
Crossfade Clips | adds length of fade | maybe | no | no | no | |
Crossfade Tracks | adds length of fade | maybe | no | no | no | |
Delay | 100% | maybe | no | no | no | |
High Pass Filter | 100% | maybe | no | no | no | |
Limiter | 100% | maybe | no | no | no | |
Low Pass Filter | 100% | maybe | no | no | no | |
Notch Filter | 100% | maybe | no | no | no | |
SC4 | 100% | maybe | no | no | no | |
Spectral edit multi tool | 100% | maybe | no | no | no | |
Spectral edit parametric EQ | 95% | maybe | no | no | no | |
Spectral edit shelves | 100% | maybe | no | no | no | |
Studio Fade Out | 100% | maybe | no | no | no | |
Tremolo | 100% | maybe | no | no | no | |
Vocal Reduction and Isolation | 100% | maybe | no | no | no | |
Vocoder | 50% | maybe | no | no | no |
Analyze Menu
This set of commands could be seen as far less critical to trap then the Record and Save commands so could probably be ignored.
Command | % extra | Needs trapping | Assigned to | Fixed | Tested | Resolved |
---|---|---|---|---|---|---|
Contrast | TBP | maybe | no | no | no | |
Plot Spectrum | TBP | maybe | no | no | no | |
Find Clipping | TBP | maybe | no | no | no | |
Beat Finder | TBP | maybe | no | no | no | |
Regular Interval Labels | TBP | maybe | no | no | no | |
Sample Data Export | TBP | maybe | no | no | no | |
Silence Finder | TBP | maybe | no | no | no | |
Sound Finder | TBP | maybe | no | no | no |
Generate/Effect/Analyze Menus
This set of commands could be seen as far less critical to trap then the Record and Save commands so could probably be ignored.
The generators are protected from storage space overrun by the fix(es) for Bug #437 (error message and clean-up)
Command | % extra | Needs trapping | Assigned to | Fixed | Tested | Resolved |
---|---|---|---|---|---|---|
Add / Remove Plug-ins | varies | maybe | no | no | no |
Details
A souped up progress dialog might be one way to implement this feature. We can't always predict for sure how much space a change will take up. A progress dialog can show a memory dial, and indicate if we look at risk of exhausting memory. That way the complaint of a long operation failing can be addressed. A user can see it may be borderline whether it will complete and fit or not, as the operation progresses.
GUI Examples
TBP
Previous Feature Requests relating to this proposal
- Disk use limit for recording (11 votes)
- Option to Disable (1 votes)
- Disk space check before exporting: (16 votes) - including indication of expected size of export, and choice to export partial file or cancel if insufficient space available. Would stop user exporting WAV files over the 2/4 GB limit, MP3s in excess of ringtone limits etc.
- Could only indicate that space was available at time of checking, could never guarantee the file would be completed if other disk events occurred. However Audacity 2.x does now have a warning if WAV/AIFF exports are not completed.