From 41c413856d754d96870d48010cd26bab6747242d Mon Sep 17 00:00:00 2001 From: Katherine Whitlock Date: Tue, 10 Dec 2024 14:30:59 -0500 Subject: [PATCH] Rename "Stem Export" to "Audio Export" to match industry naming conventions. (#3044) * Documentation * Menus * EXPT to EXPO * Change folder names "ARRANGER" to "TRACKS", "SONG" to "CLIPS" * change ARRANGEMENT filename to MIXDOWN * Update generated l10n maps * Minor tweak to docs * Fix link in community_features.md * Rename STEMS folder to EXPORTS * Apply suggestions from code review Co-authored-by: Sean Ditny <138174805+seangoodvibes@users.noreply.github.com> * Update docs/features/audio_export.md Co-authored-by: Sean Ditny <138174805+seangoodvibes@users.noreply.github.com> --------- Co-authored-by: Sean Ditny <138174805+seangoodvibes@users.noreply.github.com> --- CHANGELOG.md | 6 +- docs/community_features.md | 12 +- docs/features/audio_export.md | 149 ++++++++++++++++++ docs/features/stem_export.md | 145 ----------------- docs/menu_hierarchies.md | 82 +++++----- src/deluge/gui/l10n/english.json | 7 +- src/deluge/gui/l10n/g_english.cpp | 4 +- src/deluge/gui/l10n/g_seven_segment.cpp | 4 +- src/deluge/gui/l10n/seven_segment.json | 10 +- src/deluge/gui/l10n/strings.h | 6 +- src/deluge/gui/ui/menus.cpp | 4 +- .../processing/stem_export/stem_export.cpp | 52 +++--- src/deluge/storage/audio/audio_file_manager.h | 8 +- 13 files changed, 248 insertions(+), 241 deletions(-) create mode 100644 docs/features/audio_export.md delete mode 100644 docs/features/stem_export.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 3140fe5bf2..5eb3bde50d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -64,9 +64,9 @@ - Updated OLED display for `SONG VIEW` and `ARRANGER VIEW` to display the Song Name, Current Tempo and Current Root Note and Scale Name. - Updated OLED display to stop scrolling text while playback is running. -#### Stem Export -- Added `STEM EXPORT`, an automated process for exporting `CLIP STEMS` while in `SONG VIEW` and `INSTRUMENT STEMS` while in `ARRANGER VIEW`. Press `SAVE + RECORD` to start exporting stems. Press `BACK` to cancel stem exporting and stop recording and playback. - - You can also start the stem export via a new `EXPORT STEMS` menu found in the `SONG` menu accessible in Song and Arranger Views. Start the stem export by entering the `SONG\EXPORT STEMS\` menu and pressing `SELECT` on the menu item titled `START EXPORT`. It will exit out of the menu and display the export progress on the display. +#### Audio Export +- Added `AUDIO EXPORT`, an automated process for exporting `CLIP`s while in `SONG VIEW` and `INSTRUMENT`s while in `ARRANGER VIEW` to individual files. Press `SAVE + RECORD` to start exporting clips/tracks. Press `BACK` to cancel exporting and stop recording and playback. + - You can also start audio export via a new `EXPORT AUDIO` menu found in the `SONG` menu accessible in Song and Arranger Views. Start the export by entering the `SONG\EXPORT AUDIO\` menu and pressing `SELECT` on the menu item titled `START EXPORT`. It will exit out of the menu and display the export progress on the display. #### Recording - Enabled toggling of `METRONOME` during `RECORD COUNT-IN`. diff --git a/docs/community_features.md b/docs/community_features.md index 006a2f37a8..94fd1ab098 100644 --- a/docs/community_features.md +++ b/docs/community_features.md @@ -292,12 +292,12 @@ which track to record from. To run the instrument through the audio clip's FX ch - ([#2166]) Holding back will now fully exit your current menu -#### 3.24 Automated Stem Exporting +#### 3.24 Automated Audio Exporting -- For a detailed description of this feature as well the button shortcuts/combos, please refer to the feature documentation: [Stem Export Documentation] -- ([#2260]) Added `STEM EXPORT`, an automated process for exporting `CLIP STEMS` while in `SONG VIEW` and `INSTRUMENT STEMS` while in `ARRANGER VIEW`. Press `SAVE + RECORD` to start exporting stems. Press `BACK` to cancel stem exporting and stop recording and playback. -- ([#2327]) You can also start the stem export via a new `EXPORT STEMS` menu found in the `SONG` menu accessible in Song and Arranger Views. Start the stem export by entering the `SONG\EXPORT STEMS\` menu and pressing `SELECT` on the menu item titled `START EXPORT`. It will exit out of the menu and display the export progress on the display. -- ([#2330]) You can configure settings for the stem export via the `EXPORT STEMS` menu found in the `SONG` menu accessible in Song and Arranger Views. Enter `SONG\EXPORT STEMS\CONFIGURE EXPORT\` to configure various stem export settings. +- For a detailed description of this feature as well the button shortcuts/combos, please refer to the feature documentation: [Audio Export Documentation] +- ([#2260]) Added `AUDIO EXPORT`, an automated process for exporting `CLIP`s while in `SONG VIEW` and `INSTRUMENT`s while in `ARRANGER VIEW`. Press `SAVE + RECORD` to start exporting audio. Press `BACK` to cancel the export and stop recording and playback. +- ([#2327]) You can also start the export via a new `EXPORT AUDIO` menu found in the `SONG` menu accessible in Song and Arranger Views. Start the export by entering the `SONG\EXPORT AUDIO\` menu and pressing `SELECT` on the menu item titled `START EXPORT`. It will exit out of the menu and display the export progress on the display. +- ([#2330]) You can configure settings for the audio export via the `EXPORT AUDIO` menu found in the `SONG` menu accessible in Song and Arranger Views. Enter `SONG\EXPORT EXPORT\CONFIGURE EXPORT\` to configure various export settings. #### 3.25 Render Clip / Section Launch Event Playhead in Song Grid and Performance Views - ([#2315]) A white playhead is now rendered in Song Grid and Performance Views that let's you know when a clip or section launch event is scheduled to occur. The playhead only renders the last 16 notes before a launch event. @@ -1548,6 +1548,6 @@ different firmware [DX7 Synth Documentation]: https://github.com/SynthstromAudible/DelugeFirmware/blob/community/docs/features/dx_synth.md -[Stem Export Documentation]: https://github.com/SynthstromAudible/DelugeFirmware/blob/community/docs/features/stem_export.md +[Audio Export Documentation]: https://github.com/SynthstromAudible/DelugeFirmware/blob/community/docs/features/audio_export.md [Chord Keyboard Documentation]: https://github.com/SynthstromAudible/DelugeFirmware/blob/community/docs/features/chord_keyboard.md diff --git a/docs/features/audio_export.md b/docs/features/audio_export.md new file mode 100644 index 0000000000..a49a6ea18f --- /dev/null +++ b/docs/features/audio_export.md @@ -0,0 +1,149 @@ +# Automated Audio Exporting + +https://github.com/SynthstromAudible/DelugeFirmware/assets/138174805/044efe71-ac49-4c4b-bd5c-92b8eb269582 + +## Description + +Added `AUDIO EXPORT`, an automated process for exporting `CLIP`s while in `SONG VIEW` and `INSTRUMENT`s while in `ARRANGER VIEW`. Press `SAVE + RECORD` to start exporting. + +Now with one quick action you can start an export job, walk away from your Deluge and come back to a collection of renders from all your clips and arranger instruments. + +## Exports Folder + +Audio exports are placed in a new `SAMPLES/EXPORTS/` folder. + +Within the `EXPORTS` folder, a folder with the `SONG NAME` is created if it does not already exist when exporting. Unsaved songs are saved with the song name `UNSAVED`. Thus, you will have a new folder named `SAMPLES/EXPORTS/SONG NAME/`. + +Within the `SONG NAME` folder, a folder for the type of export (e.g. `CLIPS` or `TRACKS`) is created for each export job which contains all the WAV file recordings. + +If the same SONG and EXPORT TYPE is exported more than once, a 2 digit number incremental number is appended to that export type's folder name (e.g. TRACKS## or CLIPS##). + +## File Names + +Exported files are given a meaningful name in the following format: + +`ClipType_ExportType_PresetName_FileNumber.WAV` + +> For example: +> +> SYNTH_CLIP_PRESETNAME_000.WAV +> SYNTH_TRACK_PRESETNAME_000.WAV +> MIXDOWN.WAV + +## Shortcuts to Start/Stop Exporting + +### Start Export + +- Hold `SAVE` + Press `RECORD` while Playback and Record are disabled to launch the export process +- When the export is finished, a dialog will appear on the display that tells you that the export process has finished. Press `SELECT`, `BACK` or any `PAD` on the grid to exit the dialog. +- Note 1: Master (Song) FX are excluded from the export by default (but can be included - see below) +- Note 2: MIDI and CV Instruments and Clips are excluded from the export +- Note 3: Instruments and Clips that are `EMPTY` (e.g. they have no Notes or Audio Files) are excluded from the export +- Note 4: In Arranger View, any Instruments that are `MUTED` are excluded from the export + +- You can also start the export via a new `EXPORT AUDIO` menu found in the `SONG` menu accessible in Song and Arranger Views. Start the export by entering the `SONG\EXPORT AUDIO\` menu and pressing `SELECT` on the menu item titled `START EXPORT`. It will exit out of the menu and display the export progress on the display. + +### Cancel Export + +- Press `BACK` to cancel the export process +- When you cancel exporting, a dialog will appear on the screen asking you for confirmation. Press on the `SELECT` encoder to confirm that you want to cancel. Press `BACK` to exit out of the dialog and continue with export process. +- Note: The export still continues in the background until you confirm you want to stop. + +## Recording Parameters + +### Recording Length +- In terms of the length of each rendered audio file: + - In Arranger, a track is played until the end of the arrangement's length is reached. + - In Song, a clip is played until the end of the longest note row with notes in it is reached. + - If `EXPORT TO SILENCE` is enabled, tails will be allowed to ring out and recording will continue past the track or clip length until silence is reached (see below). + +### Silence +- By default, files are rendered until silence is reached (mutable noise floor, ~70dB from peak) to allow for sound tails (e.g. delay, reverb) to be captured + - This can be turned off in the export configuration menu located at: `SONG\EXPORT AUDIO\CONFIGURE EXPORT\EXPORT TO SILENCE` +- If silence is not reached within 60 seconds of playback stopping, then the recording will stop automatically as a safety precaution. + +### Normalization +- By default, normalization is off. Normalization sets the peak of the renders to be at 0dB (as loud as possible without distorting). + - Normalization can be turned on in the export configuration menu located at: `SONG\EXPORT AUDIO\CONFIGURE EXPORT\NORMALIZATION` + +### Song FX +- By default, song FX are excluded (these are the master FX in Song and Arranger Views when Affect Entire is enabled). They can be included in the export configuration menu located at: `SONG\EXPORT AUDIO\CONFIGURE EXPORT\SONG FX` + +### Clip Loop Points + +- For clip exports, a loop point marker is saved with the exported file to mark the clip's loop length. This makes it easy to load your rendered files so they will play back and loop properly in a DAW. + +### Offline Rendering +- By default, offline Rendering is enabled. Offline rendering enables you to render and export faster than if you recorded playback using live audio (e.g. resampling/online rendering). There are still improvements to be made to make offline rendering even faster, but it is significantly fast as is! + - Offline rendering can be turned off in the export configuration menu located at: `SONG\EXPORT AUDIO\CONFIGURE EXPORT\OFFLINE RENDERING` + +### Mixdown Export +- Exporting all unmuted tracks as a single stereo file is disabled by default. This can be enabled in the export configuration menu located at: `SONG\EXPORT AUDIO\CONFIGURE EXPORT\EXPORT MIXDOWN` + +## Audio Export Menu + +A new `EXPORT AUDIO` menu has been added to the `SONG` menu accessible in Song and Arranger Views. + +This menu allows you to start an export and configure various settings related to the export. + +- Start the export by entering the `SONG\EXPORT AUDIO\` menu and pressing `SELECT` on the menu item titled `START EXPORT`. It will exit out of the menu and display the export progress on the display. + +- Configure settings for the export by entering the `SONG\EXPORT AUDIO\CONFIGURE EXPORT\` menu. + - You can currently configure the following: + - `NORMALIZATION`: Normalization sets the peak of the render to be at 0dB (as loud as possible without distorting). + - `EXPORT TO SILENCE`: Exports are rendered until silence is reached (mutable noise floor, ~70dB from peak) to allow for sound tails (e.g. delay, reverb) to be captured. + - `SONG FX`: Exports are rendered with or without Song FX applied. + - `OFFLINE RENDERING`: Exports are rendered offline. You will not hear any audio playback, as exports are rendered at a faster than real-time basis. + - `EXPORT MIXDOWN`: A single master mixdown track is exported for all unmuted tracks in Arranger View. + +## Troubleshooting + +### I have a track that won't export + +#### Scenario: Track(s) get exported with only 5 seconds of audio + +Several users reported that their tracks were not getting exported properly as they included only 5 seconds of audio. + +All of these users were using offline rendering. + +All of these users had complex arrangements. + +Solution: + +For heavy arrangements, if you encounter the above issue, we recommend turning off `Offline Rendering` in the `SONG\EXPORT AUDIO\CONFIGURE EXPORT\` menu. + +The problem is due to memory filling up faster when using `Offline Rendering` compared to `Online (Live) Rendering`. We hope to find a solution for this problem as soon as possible. + +#### Scenario: Special characters in the track name + +One user reported that they were unable to export a track even though the export process indicated that the track had been exported. + +Solution: + +Check that the track name doesn't have any special characters. In this case, the user had a track called << Organ >>. Removing the characters "<< >>" and just naming the track "Organ" allowed the track to be exported. + +### I have a track that takes much longer to export than others + +#### Scenario: The track has an exceptionally long tail that doesn't not drop to silence + +If you are using the `EXPORT TO SILENCE` feature, it may take longer for your track to export because the renderer is waiting for your track to become silent. Thus, you will see that playback has turned off but the record button continues to blink rapidly because it is still waiting for silence before stopping the render. + +As a safety measure, if your track does not become silent within 60 seconds of playback stopping, then the render will stop automatically. + +If you do not want to wait potentially 60 seconds, you will need to press `BACK` to cancel the export and save what has been recorded up to that point. + +If you want to continue using the `EXPORT TO SILENCE` feature, check what might be contributing to the exceptionally long tails (e.g. delay, reverb, release, compressor). Use the `VU Meter` to check the levels when you start and stop a track. If the `VU Meter` gets stuck with pads that do not turn off, then it is an indication that you have exceptionally long tails. + +### The tails of one export "bleeds" into the beginning of another + +If you are not using the `EXPORT TO SILENCE` feature, it is possible that while exporting, the audio from the previous render may bleed into the start of the next render. + +Other than using the `EXPORT TO SILENCE` feature, we do not have a solution for this yet. Ideally if we can find a way to cut any sustaining audio from the previous track / clip rendered that would ensure that no bleed occurs, however we have not found a way to do this yet. + +## Videos + +https://github.com/SynthstromAudible/DelugeFirmware/assets/138174805/77bb8dfc-8b39-408d-8688-fc43eb7be593 + +https://github.com/SynthstromAudible/DelugeFirmware/assets/138174805/c48d0ab8-656f-427a-99c0-f7c4076b06ca + +https://github.com/SynthstromAudible/DelugeFirmware/assets/138174805/c00e69c6-96a6-4b25-94ed-abcf1a0088f4 diff --git a/docs/features/stem_export.md b/docs/features/stem_export.md deleted file mode 100644 index bbcc44c0a4..0000000000 --- a/docs/features/stem_export.md +++ /dev/null @@ -1,145 +0,0 @@ -# Automated Stem Exporting - -https://github.com/SynthstromAudible/DelugeFirmware/assets/138174805/044efe71-ac49-4c4b-bd5c-92b8eb269582 - -## Description - -Added `STEM EXPORT`, an automated process for exporting `CLIP STEMS` while in `SONG VIEW` and `INSTRUMENT STEMS` while in `ARRANGER VIEW`. Press `SAVE + RECORD` to start exporting stems. - -Now with one quick action you can start a stem export job, walk away from your Deluge and come back with a bunch of stems for all your clips and arranger instruments. - -## Stems Folder - -Stems get exported to a new `SAMPLES/STEMS/` folder. - -Within the `STEMS` folder, when exporting stems, a folder with the `SONG NAME` is created if it does not already exist. Unsaved songs are saved with the song name `UNSAVED`. Thus, you will have a new folder named `SAMPLES/STEMS/SONG NAME/`. - -Within the `SONG NAME` folder, a folder for the type of export (e.g. `ARRANGER` or `SONG`) is created for each stem export job which contains all the WAV file recordings. - -If the same SONG and EXPORT TYPE is exported more than once, a 2 digit number incremental number is appended to that export type's folder name (e.g. ARRANGER## or SONG##). - -## Stem File Names - -Stem's are given a meaningful name in the following format: - -`ClipType_ExportType_PresetName_FileNumber.WAV` - -> For example: -> -> SYNTH_CLIP_PRESETNAME_000.WAV -> SYNTH_TRACK_PRESETNAME_000.WAV - -## Shortcuts to Start/Stop Stem Exporting - -### Starting Stem Export - -- Hold `SAVE` + Press `RECORD` while Playback and Record are disabled to launch Stem Export process -- When the stem export is finished, a dialog will appear on the display that tells you that the stem export process has finished. Press `SELECT`, `BACK` or any `PAD` on the grid to exit the dialog. -- Note 1: Stems are exported without Master (Song) FX applied -- Note 2: MIDI and CV Instruments and Clips are excluded from the stem export -- Note 3: Instruments and Clips that are `EMPTY` (e.g. they have no Notes or Audio Files) are excluded from the stem export -- Note 4: In Arranger View, any Instruments that are `MUTED` are excluded from the stem export - -- You can also start the stem export via a new `EXPORT STEMS` menu found in the `SONG` menu accessible in Song and Arranger Views. Start the stem export by entering the `SONG\EXPORT STEMS\` menu and pressing `SELECT` on the menu item titled `START EXPORT`. It will exit out of the menu and display the export progress on the display. - -### Cancelling Stem Export - -- Press `BACK` to cancel Stem Export process -- When you cancel stem export, a dialog will appear on the screen asking you to confirm if you want to cancel the export. Press on the `SELECT` encoder to confirm that you want to cancel. Press `BACK` to exit out of the dialog and continue with stem export process. -- Note: When you press `BACK`, the stem export still continues in the background until you confirm you want to stop. - -## Recording Parameters - -### Recording Length -- In terms of the length of each stem recording: - - In Arranger, a track is played until the end of the arrangement's length is reached. - - In Song, a clip is played until the end of the longest note row with notes in it is reached. - - - If `Exporting Stems to Silence` is enabled, tails will be allowed to ring out and recording will continue past the track or clip length until silence is reached (see below). - -### Silence -- Stems are recorded by default until silence is reached (mutable noise floor, ~70dB from peak) to allow for sound tails (e.g. delay, reverb) to be captured - - This can be turned off in the stem export configuration menu located at: `SONG\EXPORT STEMS\CONFIGURE EXPORT\EXPORT TO SILENCE` -- If silence is not reached within 60 seconds of playback stopping, then the recording will stop automatically as a safety precaution. - -### Normalization -- Normalization is off by default. Normalization sets the peak of the recorded stems to be at 0dB (as loud as possible without distorting). - - Normalization can be turned on in the stem export configuration menu located at: `SONG\EXPORT STEMS\CONFIGURE EXPORT\NORMALIZATION` - -### Song FX -- Song FX are excluded by default. They can be included in the stem export configuration menu located at: `SONG\EXPORT STEMS\CONFIGURE EXPORT\SONG FX` - -### Clip Stem Loop Points - -- For clip stems, a loop point marker is saved with the stem file to mark the clip's loop length. This makes it easy to reload your stems and they will play back and loop as if you were playing those clip's on the deluge. - -### Offline Rendering -- Offline Rendering is enabled by default. Offline rendering enables you to render and export stems faster than if you recorded playback using live audio (e.g. resampling). There are still improvements to be made to make offline rendering even faster, but it is significantly fast as is! - - Offline rendering can be turned off in the stem export configuration menu located at: `SONG\EXPORT STEMS\CONFIGURE EXPORT\OFFLINE RENDERING` - -## Stem Export Menu - -A new `EXPORT STEMS` menu has been added to the `SONG` menu accessible in Song and Arranger Views. - -This menu allows you to start a stem export and configure various settings related to the stem export. - -- Start the stem export by entering the `SONG\EXPORT STEMS\` menu and pressing `SELECT` on the menu item titled `START EXPORT`. It will exit out of the menu and display the export progress on the display. - -- Configure settings for the stem export by entering the `SONG\EXPORT STEMS\CONFIGURE EXPORT\` menu. - - You can currently configure the following for the Stem Export: - - `NORMALIZATION`: Normalization sets the peak of the recorded stems to be at 0dB (as loud as possible without distorting). - - `EXPORT TO SILENCE`: Stems are recorded until silence is reached (mutable noise floor, ~70dB from peak) to allow for sound tails (e.g. delay, reverb) to be captured. - - `SONG FX`: Stems are recorded with or without Song FX applied. - - `OFFLINE RENDERING`: Stems are exported with offline rendering. You will not hear any audio playback when stems are being exported which is enables the stems to be rendered and exported at a faster than real-time basis. - -## Troubleshooting - -### I have a track that won't export - -#### Scenario: Track(s) get exported with only 5 seconds of audio - -Several users reported that their arranger stems were not getting exported properly as they included only 5 seconds of audio. - -All of these users were using offline rendering. - -All of these users had complex arrangements. - -Solution: - -For heavy arrangements, if you encounter the above issue, we recommend turning off `Offline Rendering` in the `SONG\EXPORT STEMS\CONFIGURE EXPORT\` menu. - -The problem is due to memory filling up faster when using `Offline Rendering` compared to `Online (Live) Rendering`. We hope to find a solution for this problem as soon as possible. - -#### Scenario: Special characters in the track name - -One user reported that they were unable to export a track even though the stem export indicated that the track had been exported. - -Solution: - -Check that the track name doesn't have any special characters. In this case, the user had a track called << Organ >>. Removing the characters "<< >>" and just naming the track "Organ" allowed the track to be exported. - -### I have a track that takes much longer to export than others - -#### Scenario: The track has an exceptionally long tail that doesn't not drop to silence - -If you are using the `EXPORT TO SILENCE` feature, it may take longer for your track to export because the recorder is waiting for your track to become silent. Thus, you will see that playback has turned off but the record button continues to blink rapidly because it is still waiting for silence before stopping the recording. - -As a safety measure, if your track does not become silent within 60 seconds of playback stopping, then the recording will stop automatically. - -If you do not want to wait potentially 60 seconds, you will need to press `BACK` to cancel the stem export and save what has been recorded up to that point. - -If you want to continue using the `EXPORT TO SILENCE` feature, check what might be contributing to the exceptionally long tails (e.g. delay, reverb, release, compressor). Use the `VU Meter` to check the levels when you start and stop a track. If the `VU Meter` gets stuck with pads that do not turn off, then it is an indication that you have exceptionally long tails. - -### The tails of one stem recording "bleed" into another stem recording - -If you are not using the `EXPORT TO SILENCE` feature, it is possible that when exporting a stem that the audio from the previous stem recording may bleed into the start of the recording of the next stem to be exported. - -Other than using the `EXPORT TO SILENCE` feature, we do not have a solution for this yet. Ideally if we can find a way to cut any sustaining audio from the previous track / clip recorded that would ensure that no bleed occurs, however we have not found a way to do this yet. - -## Videos - -https://github.com/SynthstromAudible/DelugeFirmware/assets/138174805/77bb8dfc-8b39-408d-8688-fc43eb7be593 - -https://github.com/SynthstromAudible/DelugeFirmware/assets/138174805/c48d0ab8-656f-427a-99c0-f7c4076b06ca - -https://github.com/SynthstromAudible/DelugeFirmware/assets/138174805/c00e69c6-96a6-4b25-94ed-abcf1a0088f4 diff --git a/docs/menu_hierarchies.md b/docs/menu_hierarchies.md index 48ab2fca12..e02de021a2 100644 --- a/docs/menu_hierarchies.md +++ b/docs/menu_hierarchies.md @@ -20,7 +20,7 @@ The Settings menu contains the following menu hierarchy: - CV Output 2 (OUT2) - Volts per Octave (VOLT) - Transpose (TRAN) - +
Gate - Gate Output 1 (OUT1) @@ -41,7 +41,7 @@ The Settings menu contains the following menu hierarchy:
Trigger Clock (TCLO) - Input (IN) - - PPQN + - PPQN - Auto-Start (AUTO) - Disabled (ON) - Enabled (OFF) @@ -115,7 +115,7 @@ The Settings menu contains the following menu hierarchy: - Upper Zone (UPPE) - Out - Lower Zone (LOWE) - - Upper Zone (UPPE) + - Upper Zone (UPPE) - Velocity (VELO) - Clock (CLK) - Disabled (OFF) @@ -127,13 +127,13 @@ The Settings menu contains the following menu hierarchy: - Upper Zone (UPPE) - Out - Lower Zone (LOWE) - - Upper Zone (UPPE) + - Upper Zone (UPPE) - Velocity (VELO) - Clock (CLK) - Disabled (OFF) - Enabled (ON)
- +
Defaults (DEFA) - UI @@ -289,7 +289,7 @@ NOTE: These options can change depending on how your default resolution is set - Amber (AMBE) - White (WHIT) - Pink - - Soloed + - Soloed - Red - Green (GREE) - Blue @@ -306,15 +306,15 @@ NOTE: These options can change depending on how your default resolution is set - Disabled (OFF) - Conditional (COND) - Enabled (ON) -
- +
+
Play-Cursor (CURS) - Fast - Disabled (OFF) - Slow -
- + +
Recording (RECO) - Count-in (COUN) @@ -494,7 +494,7 @@ The Song menu contains the following menu hierarchy: - Analog (ANA) - Sync NOTE: These options can change depending on how your default resolution is set - + - Off - 2-Bar - 1-Bar @@ -535,7 +535,7 @@ The Song menu contains the following menu hierarchy: - Pan - Reverb Sidechain (SIDE) - Volume Ducking (VOLU) - + - Mod-FX (MODU) - Type - Disabled (OFF) @@ -554,7 +554,7 @@ The Song menu contains the following menu hierarchy:
Swing Interval (SWII)
Active Scales - + - Major (MAJO) - Minor (MINO) - Dorian (DORI) @@ -575,9 +575,9 @@ The Song menu contains the following menu hierarchy: - None
Configure Macros (MACR)
-
Stem Export (STEM) +
Audio Export (EXPO) - - Start Export (STEM) + - Start Export (EXPO) - Configure Export (CONF) - Normalization (NORM) - Disabled (OFF) @@ -615,7 +615,7 @@ The Perform FX menu contains the following menu hierarchy:
FX - See Song menu hierarchy above for break-down of FX menu -
+
@@ -674,7 +674,7 @@ The Sound menu contains the following menu hierarchy: - 16th-DTTED - 32nd-DTTED - 64th-DTTED - - 128th-DTTED + - 128th-DTTED - Rate - Gate - Octaves (OCTA) @@ -751,7 +751,7 @@ The Sound menu contains the following menu hierarchy: - Analog (ANA) - Sync NOTE: These options can change depending on how your default resolution is set - + - Off - 2-Bar - 1-Bar @@ -792,7 +792,7 @@ The Sound menu contains the following menu hierarchy: - Pan - Reverb Sidechain (SIDE) - Volume Ducking (VOLU) - + - Mod-FX (MODU) - Type - Disabled (OFF) @@ -817,7 +817,7 @@ The Sound menu contains the following menu hierarchy: - Volume Ducking (VOLU) - Sync NOTE: These options can change depending on how your default resolution is set - + - Off - 2-Bar - 1-Bar @@ -845,11 +845,11 @@ The Sound menu contains the following menu hierarchy: - 16th-DTTED - 32nd-DTTED - 64th-DTTED - - 128th-DTTED + - 128th-DTTED - Attack (ATTA) - Release (RELE) - Shape (TYPE) - +
Oscillator 1 (OSC1) - Type @@ -887,7 +887,7 @@ The Sound menu contains the following menu hierarchy: - Speed (SPEE) - if Sample type selected - Pulse Width (PULS) - if any type except Sample or Input is selected - Retrigger Phase (RETR) - if any type except Sample is selected -
+
Oscillator 2 (OSC2) - Type @@ -928,14 +928,14 @@ The Sound menu contains the following menu hierarchy: - Disabled (OFF) - Enabled (ON) - Retrigger Phase (RETR) - if any type except Sample is selected -
+
Envelope 1 (ENV1) - Attack (ATTA) - Decay (DECA) - Sustain (SUST) - Release (RELE) -
+
Envelope 2 (ENV2) - Attack (ATTA) @@ -955,7 +955,7 @@ The Sound menu contains the following menu hierarchy: - Rate - Sync NOTE: These options can change depending on how your default resolution is set - + - Off - 2-Bar - 1-Bar @@ -983,7 +983,7 @@ The Sound menu contains the following menu hierarchy: - 16th-DTTED - 32nd-DTTED - 64th-DTTED - - 128th-DTTED + - 128th-DTTED
LFO2 @@ -994,7 +994,7 @@ The Sound menu contains the following menu hierarchy: - Saw - S&H (S H) - Random Walk (RWLK) - - Rate + - Rate
Voice (VOIC) @@ -1094,7 +1094,7 @@ The Kit FX menu contains the following menu hierarchy: - Analog (ANA) - Sync NOTE: These options can change depending on how your default resolution is set - + - Off - 2-Bar - 1-Bar @@ -1135,7 +1135,7 @@ The Kit FX menu contains the following menu hierarchy: - Pan - Reverb Sidechain (SIDE) - Volume Ducking (VOLU) - + - Mod-FX (MODU) - Type - Disabled (OFF) @@ -1157,7 +1157,7 @@ The Kit FX menu contains the following menu hierarchy: - Volume Ducking (VOLU) - Sync NOTE: These options can change depending on how your default resolution is set - + - Off - 2-Bar - 1-Bar @@ -1185,11 +1185,11 @@ The Kit FX menu contains the following menu hierarchy: - 16th-DTTED - 32nd-DTTED - 64th-DTTED - - 128th-DTTED + - 128th-DTTED - Attack (ATTA) - Release (RELE) - Shape (TYPE) -
+ @@ -1239,7 +1239,7 @@ The MIDI menu contains the following menu hierarchy: - 16th-DTTED - 32nd-DTTED - 64th-DTTED - - 128th-DTTED + - 128th-DTTED - Rate - Gate - Octaves (OCTA) @@ -1278,7 +1278,7 @@ The MIDI menu contains the following menu hierarchy: - MPE - Disabled (OFF) - Enabled (ON) - +
Play Direction (DIRE) - Forward @@ -1331,7 +1331,7 @@ The CV menu contains the following menu hierarchy: - 16th-DTTED - 32nd-DTTED - 64th-DTTED - - 128th-DTTED + - 128th-DTTED - Rate - Gate - Octaves (OCTA) @@ -1456,7 +1456,7 @@ The Audio Clip menu contains the following menu hierarchy: - Analog (ANA) - Sync NOTE: These options can change depending on how your default resolution is set - + - Off - 2-Bar - 1-Bar @@ -1497,7 +1497,7 @@ The Audio Clip menu contains the following menu hierarchy: - Pan - Reverb Sidechain (SIDE) - Volume Ducking (VOLU) - + - Mod-FX (MODU) - Type - Disabled (OFF) @@ -1520,7 +1520,7 @@ The Audio Clip menu contains the following menu hierarchy: - Volume Ducking (VOLU) - Sync NOTE: These options can change depending on how your default resolution is set - + - Off - 2-Bar - 1-Bar @@ -1548,11 +1548,11 @@ The Audio Clip menu contains the following menu hierarchy: - 16th-DTTED - 32nd-DTTED - 64th-DTTED - - 128th-DTTED + - 128th-DTTED - Attack (ATTA) - Release (RELE) - Shape (TYPE) -
+
Sample (SAMP) - File Browser (FILE) diff --git a/src/deluge/gui/l10n/english.json b/src/deluge/gui/l10n/english.json index 6ba3f6908d..9964e9d565 100644 --- a/src/deluge/gui/l10n/english.json +++ b/src/deluge/gui/l10n/english.json @@ -836,8 +836,8 @@ "STRING_FOR_HOLD_TIME": "Hold Press Time", - "STRING_FOR_EXPORT_STEMS": "Export Stems", - "STRING_FOR_START_EXPORT_STEMS": "Start Export", + "STRING_FOR_EXPORT_AUDIO": "Export Audio", + "STRING_FOR_START_EXPORT": "Start Export", "STRING_FOR_CONFIGURE_EXPORT_STEMS": "Configure Export", "STRING_FOR_CONFIGURE_EXPORT_STEMS_NORMALIZATION": "Normalization", "STRING_FOR_CONFIGURE_EXPORT_STEMS_SILENCE": "Export to Silence", @@ -865,9 +865,8 @@ "STRING_FOR_CONVERT_TO_AUDIO": "Convert to Audio", "STRING_FOR_CLIP_MODE": "Clip Mode", "STRING_FOR_CLIP_NAME": "Clip Name", - "STRING_FOR_DEFAULT_CLIP_TYPE": "Clip Type", "STRING_FOR_DEFAULT_NEW_CLIP_TYPE": "New Clip Type", - "STRING_FOR_DEFAULT_USE_LAST_CLIP_TYPE": "Use Last Clip Type" + "STRING_FOR_DEFAULT_USE_LAST_CLIP_TYPE": "Use Last Clip Type" } } diff --git a/src/deluge/gui/l10n/g_english.cpp b/src/deluge/gui/l10n/g_english.cpp index 239b7c4748..eb8b7700f4 100644 --- a/src/deluge/gui/l10n/g_english.cpp +++ b/src/deluge/gui/l10n/g_english.cpp @@ -768,8 +768,8 @@ PLACE_SDRAM_DATA Language english{ {STRING_FOR_CANT_ENTER_SCALE, "Can't enter scale mode, MIDI transpose is chromatic"}, {STRING_FOR_DEFAULT_HIGH_CPU_USAGE_INDICATOR, "High CPU Indicator"}, {STRING_FOR_HOLD_TIME, "Hold Press Time"}, - {STRING_FOR_EXPORT_STEMS, "Export Stems"}, - {STRING_FOR_START_EXPORT_STEMS, "Start Export"}, + {STRING_FOR_EXPORT_AUDIO, "Export Audio"}, + {STRING_FOR_START_EXPORT, "Start Export"}, {STRING_FOR_CONFIGURE_EXPORT_STEMS, "Configure Export"}, {STRING_FOR_CONFIGURE_EXPORT_STEMS_NORMALIZATION, "Normalization"}, {STRING_FOR_CONFIGURE_EXPORT_STEMS_SILENCE, "Export to Silence"}, diff --git a/src/deluge/gui/l10n/g_seven_segment.cpp b/src/deluge/gui/l10n/g_seven_segment.cpp index d025b2b16c..8ee8187950 100644 --- a/src/deluge/gui/l10n/g_seven_segment.cpp +++ b/src/deluge/gui/l10n/g_seven_segment.cpp @@ -430,8 +430,8 @@ PLACE_SDRAM_DATA Language seven_segment{ {STRING_FOR_CANT_ENTER_SCALE, "CANT"}, {STRING_FOR_DEFAULT_HIGH_CPU_USAGE_INDICATOR, "CPU"}, {STRING_FOR_HOLD_TIME, "HOLD"}, - {STRING_FOR_EXPORT_STEMS, "STEM"}, - {STRING_FOR_START_EXPORT_STEMS, "START"}, + {STRING_FOR_EXPORT_AUDIO, "EXPO"}, + {STRING_FOR_START_EXPORT, "START"}, {STRING_FOR_CONFIGURE_EXPORT_STEMS, "CONF"}, {STRING_FOR_CONFIGURE_EXPORT_STEMS_NORMALIZATION, "NORM"}, {STRING_FOR_CONFIGURE_EXPORT_STEMS_SILENCE, "SILE"}, diff --git a/src/deluge/gui/l10n/seven_segment.json b/src/deluge/gui/l10n/seven_segment.json index 91c8211da2..d04178831b 100644 --- a/src/deluge/gui/l10n/seven_segment.json +++ b/src/deluge/gui/l10n/seven_segment.json @@ -461,8 +461,8 @@ "STRING_FOR_HOLD_TIME": "HOLD", - "STRING_FOR_EXPORT_STEMS": "STEM", - "STRING_FOR_START_EXPORT_STEMS": "START", + "STRING_FOR_EXPORT_AUDIO": "EXPO", + "STRING_FOR_START_EXPORT": "START", "STRING_FOR_CONFIGURE_EXPORT_STEMS": "CONF", "STRING_FOR_CONFIGURE_EXPORT_STEMS_NORMALIZATION": "NORM", "STRING_FOR_CONFIGURE_EXPORT_STEMS_SILENCE": "SILE", @@ -486,9 +486,9 @@ "STRING_FOR_CLIP_LENGTH_ADJUSTED": "DONE", "STRING_FOR_CONVERT_TO_AUDIO": "CONV", - "STRING_FOR_CLIP_MODE": "MODE", - "STRING_FOR_CLIP_NAME": "NAME", + "STRING_FOR_CLIP_MODE": "MODE", + "STRING_FOR_CLIP_NAME": "NAME", "STRING_FOR_DEFAULT_NEW_CLIP_TYPE": "TYPE", - "STRING_FOR_DEFAULT_USE_LAST_CLIP_TYPE": "LAST" + "STRING_FOR_DEFAULT_USE_LAST_CLIP_TYPE": "LAST" } } diff --git a/src/deluge/gui/l10n/strings.h b/src/deluge/gui/l10n/strings.h index ced24e717c..912604b7c8 100644 --- a/src/deluge/gui/l10n/strings.h +++ b/src/deluge/gui/l10n/strings.h @@ -865,9 +865,9 @@ enum class String : size_t { // string for configuring hold time for sticky shift / perf view / keyboard sidebars STRING_FOR_HOLD_TIME, - // strings for Stem Export - STRING_FOR_EXPORT_STEMS, - STRING_FOR_START_EXPORT_STEMS, + // strings for Audio Export + STRING_FOR_EXPORT_AUDIO, + STRING_FOR_START_EXPORT, STRING_FOR_CONFIGURE_EXPORT_STEMS, STRING_FOR_CONFIGURE_EXPORT_STEMS_NORMALIZATION, STRING_FOR_CONFIGURE_EXPORT_STEMS_SILENCE, diff --git a/src/deluge/gui/ui/menus.cpp b/src/deluge/gui/ui/menus.cpp index 30c9df9dc5..1076ece6c3 100644 --- a/src/deluge/gui/ui/menus.cpp +++ b/src/deluge/gui/ui/menus.cpp @@ -1210,7 +1210,7 @@ menu_item::Submenu soundEditorRootMenuPerformanceView{ }; // Sub menu for Stem Export -menu_item::stem_export::Start startStemExportMenu{STRING_FOR_START_EXPORT_STEMS}; +menu_item::stem_export::Start startStemExportMenu{STRING_FOR_START_EXPORT}; ToggleBool configureNormalizationMenu{STRING_FOR_CONFIGURE_EXPORT_STEMS_NORMALIZATION, STRING_FOR_CONFIGURE_EXPORT_STEMS_NORMALIZATION, stemExport.allowNormalization}; @@ -1229,7 +1229,7 @@ menu_item::Submenu configureStemExportMenu{STRING_FOR_CONFIGURE_EXPORT_STEMS, }}; menu_item::Submenu stemExportMenu{ - STRING_FOR_EXPORT_STEMS, + STRING_FOR_EXPORT_AUDIO, { &startStemExportMenu, &configureStemExportMenu, diff --git a/src/deluge/processing/stem_export/stem_export.cpp b/src/deluge/processing/stem_export/stem_export.cpp index 85fadcc44d..91224cece2 100644 --- a/src/deluge/processing/stem_export/stem_export.cpp +++ b/src/deluge/processing/stem_export/stem_export.cpp @@ -669,18 +669,18 @@ Error StemExport::getUnusedStemRecordingFilePath(String* filePath, AudioRecordin return Error::NONE; } -/// gets folder path in SAMPLES/STEMS to write stems to +/// gets folder path in SAMPLES/EXPORTS to write stems to /// within the STEMS folder, it will try to create a folder with the name of the SONG /// if it cannot create a folder with the SONG name because it already exists, it will continue creating folder path /// if it cannot create a folder and the folder does not already exist, then function will return an error -/// after SAMPLES/STEMS/*SONG NAME*/ is created, it will try to create a folder for the type of export (ARRANGER or +/// after SAMPLES/EXPORTS/*SONG NAME*/ is created, it will try to create a folder for the type of export (ARRANGER or /// SONG). if it cannot create a folder of the name ARRANGER or SONG because it already exists, it will append an /// incremental number to the end of the ARRANGER or SONG folder name and try to create a folder with that new name thus -/// we will end up with a folder path of SAMPLES/STEMS/*SONG NAME*/ARRANGER##/ or SAMPLES/STEMS/*SONG NAME*/SONG##/ this -/// function gets called every time a stem recording is being written to a file to avoid unecessary file system calls, -/// it will save the last song and arranger/song sub-folder name saved to a String including the last incremental folder -/// number and use that to obtain the filePath for the next stem export job (e.g. if you are exporting the same song -/// more and stem export type than once) +/// we will end up with a folder path of SAMPLES/EXPORTS/*SONG NAME*/TRACKS##/ or SAMPLES/EXPORTS/*SONG NAME*/CLIPS##/ +/// this function gets called every time a stem recording is being written to a file to avoid unecessary file system +/// calls, it will save the last song and arranger/song sub-folder name saved to a String including the last incremental +/// folder number and use that to obtain the filePath for the next stem export job (e.g. if you are exporting the same +/// song more and stem export type than once) Error StemExport::getUnusedStemRecordingFolderPath(String* filePath, AudioRecordingFolder folder) { const auto folderID = util::to_underlying(folder); @@ -692,7 +692,7 @@ Error StemExport::getUnusedStemRecordingFolderPath(String* filePath, AudioRecord String tempPath; - // set tempPath = SAMPLES/STEMS + // set tempPath = SAMPLES/EXPORTS error = tempPath.set(audioRecordingFolderNames[folderID]); if (error != Error::NONE) { return error; @@ -705,13 +705,13 @@ Error StemExport::getUnusedStemRecordingFolderPath(String* filePath, AudioRecord return fresultToDelugeErrorCode(result); } - // tempPath = SAMPLES/STEMS/ + // tempPath = SAMPLES/EXPORTS/ error = tempPath.concatenate("/"); if (error != Error::NONE) { return error; } - // tempPath = SAMPLES/STEMS/*INSERT SONG NAME* + // tempPath = SAMPLES/EXPORTS/*INSERT SONG NAME* if (currentSong->name.isEmpty()) { // if you have saved song yet error = tempPath.concatenate("UNSAVED"); } @@ -732,12 +732,12 @@ Error StemExport::getUnusedStemRecordingFolderPath(String* filePath, AudioRecord RootUI* rootUI = getRootUI(); // concatenate stem export type to folder path if (rootUI == &arrangerView) { - // tempPath = SAMPLES/STEMS/*INSERT SONG NAME*/ARRANGER - error = tempPath.concatenate("/ARRANGER"); + // tempPath = SAMPLES/EXPORTS/*INSERT SONG NAME*/TRACKS + error = tempPath.concatenate("/TRACKS"); } else { - // tempPath = SAMPLES/STEMS/*INSERT SONG NAME*/SONG - error = tempPath.concatenate("/SONG"); + // tempPath = SAMPLES/EXPORTS/*INSERT SONG NAME*/CLIPS + error = tempPath.concatenate("/CLIPS"); } if (error != Error::NONE) { return error; @@ -755,8 +755,8 @@ Error StemExport::getUnusedStemRecordingFolderPath(String* filePath, AudioRecord // if we're here we didn't just export this song String tempPathForSearch; - // tempPathForSearch = SAMPLES/STEMS/*INSERT SONG NAME*/ARRANGER OR SONG - // or tempPathForSearch = SAMPLES/STEMS/*INSERT SONG NAME*/SONG + // tempPathForSearch = SAMPLES/EXPORTS/*INSERT SONG NAME*/TRACKS OR CLIPS + // or tempPathForSearch = SAMPLES/EXPORTS/*INSERT SONG NAME*/CLIPS error = tempPathForSearch.set(tempPath.get()); if (error != Error::NONE) { return error; @@ -779,22 +779,22 @@ Error StemExport::getUnusedStemRecordingFolderPath(String* filePath, AudioRecord // increment folder number so we can append it to the ARRANGER or SONG folder name highestUsedStemFolderNumber++; - // tempPathForSearch = SAMPLES/STEMS/*INSERT SONG NAME*/ARRANGER - // or tempPathForSearch = SAMPLES/STEMS/*INSERT SONG NAME*/SONG + // tempPathForSearch = SAMPLES/EXPORTS/*INSERT SONG NAME*/TRACKS + // or tempPathForSearch = SAMPLES/EXPORTS/*INSERT SONG NAME*/CLIPS error = tempPathForSearch.set(tempPath.get()); if (error != Error::NONE) { return error; } - // tempPathForSearch = SAMPLES/STEMS/*INSERT SONG NAME*/ARRANGER- - // or tempPathForSearch = SAMPLES/STEMS/*INSERT SONG NAME*/SONG- + // tempPathForSearch = SAMPLES/EXPORTS/*INSERT SONG NAME*/TRACKS- + // or tempPathForSearch = SAMPLES/EXPORTS/*INSERT SONG NAME*/CLIPS- error = tempPathForSearch.concatenate("-"); if (error != Error::NONE) { return error; } - // tempPathForSearch = SAMPLES/STEMS/*INSERT SONG NAME*/ARRANGER-## - // or tempPathForSearch = SAMPLES/STEMS/*INSERT SONG NAME*/SONG-## + // tempPathForSearch = SAMPLES/EXPORTS/*INSERT SONG NAME*/TRACKS-## + // or tempPathForSearch = SAMPLES/EXPORTS/*INSERT SONG NAME*/CLIPS-## error = tempPathForSearch.concatenateInt(highestUsedStemFolderNumber, 2); if (error != Error::NONE) { return error; @@ -815,15 +815,15 @@ Error StemExport::getUnusedStemRecordingFolderPath(String* filePath, AudioRecord // if folder number is not -1, it means this is the second we're running the stem export process // for this song, so we need to append a folder number to the SONG name if (highestUsedStemFolderNumber != -1) { - // tempPath = SAMPLES/STEMS/*INSERT SONG NAME*/ARRANGER- - // or tempPath = SAMPLES/STEMS/*INSERT SONG NAME*/SONG- + // tempPath = SAMPLES/EXPORTS/*INSERT SONG NAME*/TRACKS- + // or tempPath = SAMPLES/EXPORTS/*INSERT SONG NAME*/CLIPS- error = tempPath.concatenate("-"); if (error != Error::NONE) { return error; } - // tempPath = SAMPLES/STEMS/*INSERT SONG NAME*/ARRANGER-## - // or tempPath = SAMPLES/STEMS/*INSERT SONG NAME*/SONG-## + // tempPath = SAMPLES/EXPORTS/*INSERT SONG NAME*/TRACKS-## + // or tempPath = SAMPLES/EXPORTS/*INSERT SONG NAME*/CLIPS-## error = tempPath.concatenateInt(highestUsedStemFolderNumber, 2); if (error != Error::NONE) { return error; diff --git a/src/deluge/storage/audio/audio_file_manager.h b/src/deluge/storage/audio/audio_file_manager.h index 1a0db1c920..0207cd54be 100644 --- a/src/deluge/storage/audio/audio_file_manager.h +++ b/src/deluge/storage/audio/audio_file_manager.h @@ -40,8 +40,12 @@ enum class AlternateLoadDirStatus { DOES_EXIST, }; -char const* const audioRecordingFolderNames[] = {"SAMPLES/CLIPS", "SAMPLES/RECORD", "SAMPLES/RESAMPLE", - "SAMPLES/STEMS"}; +char const* const audioRecordingFolderNames[] = { + "SAMPLES/CLIPS", + "SAMPLES/RECORD", + "SAMPLES/RESAMPLE", + "SAMPLES/EXPORTS", +}; /* * ===================== SD card audio streaming ==================