SpeedShift Bulk Tools Manual

Overview

SpeedShift Bulk Tools changes the speed, pitch, tempo and length of whole batches of audio files at once, while preserving metadata, linking stems so they render together, phase aligned. It converts frame rates and timecode, generates variants, splits poly WAV files into mono files, and combines mono files into one poly WAV.

Every file you import becomes a row in the track list. Each row carries its own settings, and nothing is written to disk until you export. You can set up hundreds of files, listen to any of them, and then render them all in one pass. The track list and every row's settings are saved with your DAW project.

Metadata Support

  • Broadcast Wave (BWF): description, originator, reference, recording date and time, start timecode and coding history.
  • iXML: project, scene, take, tape, notes, circled takes, user bits, track names, file family, sync points and the timecode rate and speed block.
  • Library data: UCS and ASWG categories, Soundminer fields, and LIST INFO (title, artist, comment, genre).
  • Immersive: ADM and Dolby Atmos metadata, plus speaker layouts from mono and stereo up to 5.1, 7.1, 7.1.4 and ambisonic. Poly recorder files stay as plain channels and never get relabelled as 5.1.
  • Music: markers, regions, sampler loop points, root note, and ACID tempo and beat count.
  • Unknown data: blocks from any other vendor are carried over byte for byte.
  • Adjusted to match the new audio:
    • Timecode moves with trims and frame rate conversions.
    • Markers, regions and loops move with the stretch.
    • The root note follows the pitch, and loop tempo follows the length.
  • Removed when no longer accurate: checksums and peak data, which would otherwise make QC tools report the file as corrupt.
  • Before and after view: View Metadata shows every value as it is now and as it will be after export.

See Metadata for the full detail.

File Format Support

  • Import: WAV, AIFF, FLAC, MP3, Ogg Vorbis and Opus, either as single files or whole folders including subfolders.
  • Export:
    • WAV: 16 bit, 24 bit or 32 bit float. Written as RF64 above 4 GB.
    • AIFF and FLAC: 16 or 24 bit.
    • Lossy formats: MP3 (320 kbps), Ogg Vorbis (its highest quality setting) and Opus (192 kbps). MP3 needs the LAME encoder, see Troubleshooting.
    • Keep Original Format writes each file back in its own format.
  • Sample rates: match the source, or convert to 44.1, 48, 88.2, 96, 176.4 or 192 kHz. TPDF dither is optional.
  • Channels:
    • WAV and AIFF take any channel count.
    • FLAC and Opus take up to 8 channels, and MP3 takes up to 2.
  • Delivery: export to a folder or a zip archive, or replace the originals in place.
  • Metadata: source metadata is carried into WAV exports only.

Quick Start

  1. Click Import and choose Import Files... or Import Folders..., or drag files and folders onto the plugin.
  2. Select the rows you want to change. Click one row, Shift click to select a range, or press Cmd+A to select them all.
  3. Double click a Stretch, Speed, Pitch or Tempo ± cell and type a value. With several rows selected, every selected row gets the same value.
  4. Click a row's play button to hear it with its settings. Click its scissors to trim its start and end.
  5. Click Export, choose a format and a destination, and click Export.
  6. Read the export summary. It lists every file that needs a second look.

On Windows, use Ctrl wherever this manual says Cmd.

Contents

The main screen

  1. Import
  2. Export
  3. Track Tempo
  4. Track Key
  5. Resulting Key
  6. Resulting Tempo
  7. Resulting Duration
  8. Track Number
  9. Filename
  10. Badges
  11. Stretch
  12. Speed
  13. Pitch
  14. Tempo ±
  15. Preview
  16. Trim
  17. Search
  18. Info Bar
  19. Settings

Reference

1. Import

Click Import to add audio to the track list. A small menu offers two choices:

  • Import Files... Pick one or more audio files.
  • Import Folders... Pick one or more folders. Every WAV, AIFF, FLAC, MP3, Ogg and Opus file inside them is added, including the files in all of their subfolders. Other files are skipped.

Import Menu

You can also drag files, folders, or a mix of both from Finder or Explorer straight onto the plugin. While the list is empty, clicking anywhere on it opens the same menu.

  • Order. New rows are added to the end of the list, in the order you dropped or chose them. Inside a folder, files are sorted by their path in the same natural order Finder and Explorer use, so "Take 2" comes before "Take 10" and each subfolder's files stay together.
  • Hidden files are skipped. Files and folders whose names start with a dot are left out when they are found inside a folder. This includes the "._" copies macOS leaves on drives formatted for Windows, which look like audio files but are not. A hidden file you pick by hand is still imported.
  • Duplicates are allowed. A file that is already in the list is added again, just as when you import the same file twice. This lets you render one file with two different settings.
  • Selection. When the list already has rows, the new rows are selected so you can edit them straight away. If a search would hide them, the search is cleared.
  • Large folders. If searching a folder takes a moment, an Importing Files window counts the files found so far. Click Cancel to stop, and nothing is added.
  • Nothing found. If a folder holds no supported audio, a No Audio Found message tells you so and the list is left unchanged.
  • Undo. Each import, however many folders it covers, is one step to undo.

Importing only adds rows. No audio is loaded until you preview or trim a row, so even a very long list appears at once. In the background, the plugin reads the header of each file (never the audio, so a long list on a network drive stays quick) to show its badges and its length. The rows you can see are read first.

💡 TIP: The file picker opens in the folder you imported from last.

2. Export

Click Export to render the whole track list. The Export Audio window opens, where you choose the format, the sample rate and bit depth, where the files go, how they are named, and whether the source metadata is kept.

Export Audio Dialog

Every row in the list is exported, not only the selected ones. Each row is rendered with its own stretch, speed, pitch, tempo and trim, and linked stems are rendered together. When the export finishes, a summary says what was written and lists anything that needs a second look.

The Export button is hidden while a track is open in trim mode. Confirm or cancel the trim first.

See Export Dialog for every option, and Exporting Safely for what happens to your originals.

3. Track Tempo

Track Tempo is the original tempo of the selected track, in BPM. Setting it does not change the audio. It tells the plugin what tempo the file is at, so that Resulting Tempo can show the tempo after your changes.

Click Track Tempo to open the Set Original Tempo window. Type the tempo into Original Tempo (BPM) and click Save. The tempo is given to every selected row that is not locked, and the change can be undone.

Set Original Tempo Dialog

If you do not know the tempo, tap the TAP TEMPO pad in time with the music. It shows the average tempo of your taps, which you can then type into the field. The pad starts again after three seconds without a tap.

  • With no row selected, Track Tempo shows - and clicking it does nothing.
  • When the selected rows have different tempos, it shows MIXED.
  • New rows start at 120 BPM. The row menu's Reset Track Tempo & Key puts it back.

💡 TIP: Set the Track Tempo before you use Tempo ±. Tempo ± adds BPM to the track's own tempo, so +10 bpm on a 100 BPM track is a 10 percent speed up, but on a 200 BPM track only 5 percent.

4. Track Key

Track Key is the original key of the selected track. Like Track Tempo, it is a working value that does not change the audio. It tells the plugin what key the file is in, so that Resulting Key can show the key after your changes.

  • The left and right arrows move the key down or up one semitone. B wraps round to C, and C to B.
  • The change applies to every selected row that is not locked, and linked stems follow. Each press can be undone.
  • When the selected rows have different keys, Track Key shows MIX, and the first press of an arrow sets them all to C.
  • With no row selected, it shows - and the arrows do nothing.
  • New rows start in C. The row menu's Reset Track Tempo & Key puts it back.

5. Resulting Key

Resulting Key shows the key the selected track will be in after export: the Track Key moved by the row's Speed plus its Pitch, in semitones. Stretch and Tempo ± keep the pitch, so they do not change it.

When the shift lands between two keys (a quarter to three quarters of a semitone away from either), both are shown, for example B / C. It shows MIX when the selected rows disagree, and - when nothing is selected.

6. Resulting Tempo

Resulting Tempo shows the tempo the selected track will have after export:

Track Tempo × 2^(Speed ÷ 12) × Stretch + Tempo ±

A track at 120 BPM with a Stretch of 1.20x comes out at 144 BPM. A Speed of +12 semitones doubles the tempo. It shows MIXED when the selected rows disagree, and --.-- when nothing is selected.

7. Resulting Duration

Resulting Duration shows how long the selected track's exported file will be, in minutes, seconds and hundredths. It counts the trim, the speed, the stretch, the tempo, any frame rate conversion and the output sample rate you chose last in the export dialog.

Hover over it for the exact figure. The info bar shows, for example, "The export will be 9,834,121 samples at 48 kHz (03:24.87)." With several rows selected it gives the shortest, the longest and the total.

  • MIXED means the selected rows will come out at different lengths. Hover over it for the range.
  • --:--.-- means nothing is selected, or a file has not been read yet. The length appears as soon as the background reader reaches it.
  • A file that cannot be read, or a recording that was never finished, is named in the hover text, because the export will skip it.

💡 TIP: To make files a given length, use Fit To Duration from the right click menu.

8. Track Number

The number on the left is the row's position in the list. It stays with its row when the list is sorted or searched, so those views can show the numbers out of order or with gaps.

Hover over the number and it turns into a grip. Drag it to move the row. If the row is part of a selection with no gaps, the whole selection moves with it. A gap opens where the rows will land, and the list scrolls when you drag near its top or bottom edge. You can also move the selected rows with Cmd+Up and Cmd+Down.

  • A source row carries its variants with it. A variant has no grip and cannot be moved on its own.
  • Moving rows is not possible while the list is sorted or searched, or on a locked row.
  • The order of the list is the order of the export report, and the channel order of a combined poly WAV.

9. Filename

The Filename column shows the name each file will be exported under, with its export extension. Long names are shortened in the middle so the end of the name stays readable. Hover over a name to see the file's format in the info bar, for example "48 kHz, 24 bit, 5.1 (6 ch)."

Renaming

Double click a name to rename the row. This changes the name of the exported file only. Your source file keeps its name.

  • The characters < > : " / \ | ? * are removed, and so are spaces at either end.
  • A name another row already uses gets (2), (3) and so on after it.
  • Clear the name to go back to the source file's name.
  • Press Return or click away to keep the name, and Esc to cancel.

To name a whole batch at once, use the Filename Template in the export dialog.

Sorting

Click a column title (Filename, Stretch, Speed, Pitch or Tempo ±) to sort the list by it. Each click moves through ascending, descending, and off. You can sort by several columns: the first one you click is the main sort, and each one after it breaks ties. A small arrow and a number after each title show the direction and the order.

  • Sorting only changes the view. The list keeps its own order, which the export and the track numbers follow.
  • Variants always stay directly under their source row.
  • Rows cannot be dragged while the list is sorted. Click a sorted title until its arrow goes away to turn the sort off.

A lock between the number and the name means the row is locked. A row indented under another, with a line joining them, is a variant of the row above.

10. Badges

Small badges at the right end of each filename tell you at a glance what a file carries and how it will be exported. They appear as the background reader works through the list.

Badge Meaning
Link: 1 The file is a linked stem in group 1. Filled with the group's own colour, and always first. See Linked Stems.
Link? The file looks like part of a stem set that is not linked yet. Outlined, with no fill.
Split 6 The row exports as one mono file per channel, six here. Hover over it for the file names. See Splitting and Combining.
Poly 4 The row belongs to a link group that exports as one four channel poly WAV. Hover over it for the poly's name and channel order.
V3 The row is variant 3 of the source row above it. See Variants.
Var: 4 The row is the source of four variants.
24→25, 30→29.97 DF The row carries a frame rate conversion. Its Stretch, Speed, Pitch and Tempo ± cells are set by the conversion. See Frame Rate Conversion.
Padded A linked stem shorter than the longest stem in its group. Its export is padded with silence at the end to the group's length.
Silent A linked stem whose trim window lies entirely past its own end, so its export would be nothing but silence. Replace will not start while a row shows it.
5.1, 7.1.4, LCR The file declares this speaker layout. Only shown for files wider than stereo.
6 ch, 8 ch The file is wider than stereo but declares no speaker layout, which is what a field recorder writes.
AMB Ambisonic B format.
BWF Broadcast Wave metadata: start timecode, description, originator.
iXML Production metadata: scene, take, tape, notes, track names.
3 MK Three markers or regions.
LOOP Sampler loop points, or a loop tempo.
UCS Universal Category System library data, from the file or from a UCS shaped file name.
ADM ADM or Dolby Atmos metadata.
SM Soundminer metadata.
+2 Two more metadata badges that did not fit beside the filename.

Badges are always in the same order: the Link badge, then Split or Poly, then the variant badge, then the conversion, then Padded or Silent, then the metadata badges. When space runs out, the metadata badges fold into a +N badge first. The others always stay.

Hover over a badge and the info bar explains it. Clicking a badge opens the most useful view for it:

  • A metadata or layout badge opens View Metadata. A Split badge opens it too, with the files the row will write.
  • A Link, Padded, Silent or Poly badge opens the link group.
  • A Link? badge shows the detected set. Right click the row and choose Link Detected Stem Set to link it.
  • A conversion badge opens the Frame Rate Conversion window.
  • A V3 or Var: 4 badge opens the row menu, where you can generate or remove variants.

Badges can be clicked on locked rows too.

11. Stretch

Stretch changes the tempo and the length of the audio while keeping its pitch. It is a factor: 2.00x plays twice as fast and gives a file half as long, 0.50x plays at half speed and gives a file twice as long.

  • Range: 0.25x to 4.00x. Default: 1.00x.
  • While you edit a Stretch cell, the Up and Down arrow keys step through 0.25, 0.5, 1, 2, 3 and 4. A value in between moves to the next step.

See Editing Values for how to change any value cell.

💡 TIP: To stretch a file to an exact length, use Fit To Duration with Keep pitch the same (stretch).

12. Speed

Speed works like a tape machine or a turntable. The pitch and the length change together, as they do when a record is played faster or slower. It is set in semitones: +12 plays at double speed, one octave up and half as long, and -12 at half speed, one octave down and twice as long.

See Editing Values for how to change any value cell.

13. Pitch

Pitch changes the pitch of the audio and keeps its length. It is set in semitones and adds to the pitch change of Speed, so the final pitch is Speed plus Pitch.

  • Range: -24 to +24 st. Default: 0.00 st.
  • A Speed of +3 with a Pitch of -3 plays faster at the original pitch.

See Editing Values for how to change any value cell.

💡 TIP: When a sampler file carries a root note, the root note in the exported file follows the pitch, so the sampler still plays it in tune. See Metadata.

14. Tempo ±

Tempo ± adds beats per minute to the track's tempo while keeping its pitch. It is useful when you know the tempo you want rather than the factor: a 120 BPM track with Tempo ± at +6.00 bpm comes out at 126 BPM.

  • Range: -120 to +120 bpm. Default: +0.00 bpm.
  • Tempo ± is measured against the row's Track Tempo, so set that first.
  • It is added after Speed and Stretch, as the formula under Resulting Tempo shows.

See Editing Values for how to change any value cell.

15. Preview

Click a row's play button to hear it with its stretch, speed, pitch, tempo and trim. Click it again to stop. Only one row plays at a time, so clicking another row's play button switches to that row. Playing a row selects it.

The first time a row plays, its audio has to be loaded. A spinning arc around the button shows this, and clicking the button again cancels the load.

While the row plays, a ring around the button shows how far through it is. The full circle is the trimmed part of the file, from the trim start to the trim end.

  • Hover over the ring to see the time under the pointer, for example "Seek to 01:12.40".
  • Click the ring to jump there.
  • Drag round the ring to scrub.
  • Click the middle of the button to stop.

From the keyboard, Space plays or stops the selected row, and Return does the same when the play button is highlighted. Space does nothing while several rows are selected.

While a row plays, the info bar reads, for example, "The current playback speed is 1.20x, with tempo 144.00 BPM, pitched up 0.00 semitones." Values you type into the playing row's cells are heard as you type.

  • Multichannel files. Your DAW gives the plugin a stereo output, so a file wider than stereo is folded down to stereo for listening. The exported file always keeps its full width. See Channel Layouts.
  • Sample rate. When a file's sample rate does not match your DAW session, it is resampled for preview. The Settings menu chooses between a fast and an HD resample. This has NO EFFECT on the exported audio, which is always rendered from the original file.
  • Frame rate conversions. A converted row previews close to its export, but the 0.1 percent conversions (24 and 23.976, 30 and 29.97) may play at the file's own speed at small buffer sizes. The export is exact.

16. Trim

Click a row's scissors to trim its start and end. You can also press T, or Return with the scissors highlighted. The audio loads (a spinning arc shows this, click again to cancel), and the track list is replaced by the trim page.

Trim Page

The waveform fills the page. The part you keep is drawn in blue between two yellow handles, and the parts you cut are grey. A white line shows the playhead.

Setting the trim

  • Drag a handle to move it. Hold Shift to move it slowly for fine adjustments. The time is shown above each handle and in the info bar while you drag.
  • Right click a handle to send it back to the start or end of the file.
  • Click the left handle to play from the trim start.
  • Click inside the trim to move the playhead there.
  • Type the times. The Start and End fields under the buttons take ss, ss.cc, mm:ss.cc or h:mm:ss.cc. Press Return to apply, Tab to jump to the other field, and Esc to discard what you typed. A time at or past the end of the file sets the end of the file.

The Duration line shows the length of the trimmed part. A trim is at least a quarter of a second long, and while you drag a handle, at least one percent of the file.

The buttons above the fields are Play/Pause, Rewind (back to the trim start), Confirm and Cancel. Space plays and pauses.

Markers in trim mode

A file's markers, regions, loops and sync points are drawn over the waveform in yellow, with their names. Anything that lies outside the trim handles is dimmed, because the export will remove it. A region that reaches past a handle stays bright: it is shortened, not lost. A loop that reaches past a handle is removed whole, because a shortened loop would click.

Hover over a marker and the info bar tells you what it is, where it is, and what the current trim does to it, for example "Region Intro at 00:01.00 to 00:04.00. Inside the trim, it moves with the audio on export."

Linked stems

The trim of a linked stem applies to every stem in its group, and a yellow line under the controls says so. A group has one timeline, the length of its longest member. Open the trim page on a shorter member and its waveform is shown on the group's timeline: the file, then a dimmed band to the end where the export adds silence. The line under the controls says so, for example "MUSIC_DX.wav is 0:30.000. Shown on the Link 1 timeline of 1:00.000, the rest is silence."

Leaving the trim page

Click Confirm to keep the trim, or Cancel to discard your changes. These are the only ways out, so Esc and Return do not close the page. While the trim page is open, the Export button is hidden. Confirming is one step to undo.

💡 TIP: To remove a trim without opening the page, right click the row and choose Reset Trim.

17. Search

The search bar under the list filters the rows by filename. It appears once the list has rows.

  • Type one or more words. A row is shown when every word appears somewhere in its name, in any order, ignoring case. boom t07 finds boom_T07_2.wav.
  • The matching letters are highlighted in yellow. When a long name has to be shortened, it is shortened around the match so the match stays visible.
  • The info bar shows "Showing 12 of 340 files." or "No filenames match this search."
  • Press Return or Tab to move the keyboard to the list, so the arrow keys walk through the results. Press Esc to clear the search.
  • Click the X to clear the search and keep typing.

While a search is active, rows cannot be dragged or moved with the keyboard, and Select All, Shift ranges and Delete act only on the rows you can see. Starting a search clears the selection.

The search clears itself when you import, paste or duplicate rows that it would hide, so a new row is never out of sight.

18. Info Bar

The info bar at the bottom of the plugin explains whatever is under the mouse. Hover over any control, cell, badge, marker or column title to see what it does or what it holds. Many hover texts give exact figures that are not shown anywhere else, such as a file's format or the exact length of its export.

When nothing is being hovered, the info bar shows, in this order of priority:

  1. How many rows are selected, for example "3 Tracks selected. Editing one value will edit all selected tracks."
  2. The playback speed, tempo and pitch of the row that is playing.
  3. How many rows the search shows.
  4. A welcome message.

19. Settings

Click the SOTTOVOCE logo at the bottom right to open the settings menu.

Settings Menu

  • View Licence Agreement: Shows the EULA and copyright notice.
  • View Licence Information: Shows the email, the last four characters of the licence key and the activation date.
  • View Manual: Brings you to this page.
  • Load Preset: Loads a default or user preset. See Presets. It is greyed out while an import or an export is running.
  • Save Preset: Opens the preset save window, where you name the preset.
  • View Preset Folder: Opens the folder the presets are kept in.
  • Enable HD Resample on Import / Enable Fast Resample on Import: Only has an effect when a file's sample rate does not match your DAW session. HD uses a slower but higher quality resample for the audio preview. Fast is the default. This has NO EFFECT on the exported audio quality, as the export is always rendered from the original, unresampled file. The item names the choice it switches to, and the setting is remembered on your computer.
  • Pre-Post Processing Effects: Two switches, which apply to both preview and export:
    • 1.5 dB Reduction (Gain Stage): Lowers the level by 1.5 dB before processing, to leave headroom. Off by default in new projects.
    • Hard Limiter (Clip Prevention): Stops the processed audio from going above full scale. On by default.
    Each item names the action it takes ("Enable ..." or "Disable ..."), and an item drawn in red is switched off. These switches are saved with your project, and they are the same switches as the Processing box of the export dialog.
  • Scale-up Plugin Dimensions / Scale-down Plugin Dimensions: Shows the plugin at 100, 125 or 150 percent. Each item moves one step and names the size it moves to. See Window Size and Scaling.

Save Preset Dialog

Licence Information Dialog

Selecting Tracks

Most edits apply to every selected row at once. The info bar reminds you: "3 Tracks selected. Editing one value will edit all selected tracks."

With the mouse

  • Click a row to select only that row.
  • Shift click to select every row from the last one you clicked.
  • Cmd click to add a row to the selection or take it out.
  • Drag from a row's name, or from empty space, to draw a box. Every row the box touches is selected. Hold Cmd while dragging to flip the rows it touches.
  • Click empty space below the rows, or an empty part of the top bar or the column titles, to clear the selection.

With the keyboard

  • Up and Down move the selection. Hold Shift to extend it.
  • Cmd+A selects every row. When a value cell is highlighted, the first press selects that column on every row, and the second press selects the whole rows.
  • Esc clears the selection.

Locked rows are never selected by Shift ranges, the box, Cmd clicks or Select All, so you can protect rows from bulk edits by locking them. Clicking a row's play button or scissors selects only that row.

Editing Values

The Stretch, Speed, Pitch and Tempo ± cells all work the same way.

Changing a value

  • Click a cell to highlight it with a white outline.
  • Double click a cell to edit it. The number is selected, so you can type straight over it.
  • Type a digit, a point, a minus or a plus while a cell is highlighted to start editing with that character. Return starts editing too.
  • While editing, Up and Down change the value by one step, Return or clicking away keeps it, and Esc cancels. The info bar reminds you: "Up to increment, Down to decrement, Esc to cancel, Enter to confirm."

Values are rounded to two decimal places and held within each column's range. Every change is one step to undo, and linked stems get the same change.

Editing many rows at once

When several rows are selected, start editing a cell on any of them. That column is outlined on every selected row, what you type is shown in all of them, and the value is given to every one when you confirm. Locked rows and rows with a frame rate conversion are skipped.

Selecting cells

  • Drag down a column to select the same cell on several rows. Drag across a row to select several of its cells.
  • Shift click or Shift drag to extend the cell selection, and Cmd click to add or remove a cell.
  • Left and Right move between the cells of a row (including the play button and the scissors), and Tab steps through the four value cells, wrapping to the next row.

Resetting and copying

  • Right click a value cell and choose Reset Values To Default to reset it, or every selected cell when it is part of a selection. Delete does the same.
  • Cmd+C with cells highlighted copies their values, and Cmd+V pastes them into the same columns of the selected rows. One copied row pastes into every selected row. Several copied rows paste into the same number of selected rows, in order.

Cells you cannot edit

  • The cells of a row with a frame rate conversion are set by the conversion. Hover over one and the info bar says, for example, "Set by the 24 → 25 (PAL speed up), pitch corrected conversion. Remove it to edit."
  • The cells of a locked row cannot be edited until it is unlocked.

Right Click Menu

Right click a row to open its menu. If the row is part of the selection, the menu acts on the whole selection. If it is not, that row is selected on its own first. An item that cannot be used is greyed out, with the reason after its name, for example "Fit To Duration: a row is locked".

Row Right Click Menu

The items appear only when they apply, in this order:

Item Shown when What it does
Reset Values To Default Always Resets Stretch, Speed, Pitch and Tempo ± on the selected rows. The trim is kept. Rows with a frame rate conversion are skipped.
View Metadata One row is selected Opens View Metadata.
View Link Data One linked row is selected Opens the link group view. See Linked Stems.
Link Detected Stem Set (4 files named MUSIC_*) One row is selected and it belongs to a detected stem set Links the whole set.
Link As Stems (Phase Aligned Render) Two or more rows are selected and none is linked Links the selected rows as one group.
Link All To Group 1 Two or more rows are selected and some are linked Adds the selected rows to that group. There is one item per group the selection touches.
Unlink Stems A selected row is linked Releases its group.
Split To Mono Files / Stop Splitting Always Exports each selected row as one mono file per channel, or stops doing so. See Splitting and Combining.
Combine Into Poly WAV, Combine Link 1 Into Poly WAV, Stop Combining Link 1 Two or more rows are selected, or the selection is one link group Exports the rows as one poly WAV, or stops doing so.
Fit To Duration Always Opens Fit To Duration.
Frame Rate Conversion Always Opens the Frame Rate Conversion window.
Generate Variants Always Opens Generate Variants.
Remove Variants A selected row is a source or a variant Removes the selected variants and every variant of the selected sources.
Reveal In Folder One row is selected Shows the source file in Finder or Explorer.
Duplicate Track One row is selected Adds a copy of the row directly below it (below its variants, for a source). The copy is a plain row with (2) after its name.
Reset Trim The row you right clicked is trimmed Removes the trim from that row only, even when several rows are selected.
Reset Track Tempo & Key Always Puts Track Tempo back to 120 BPM and Track Key back to C on the selected rows.
Lock Row / Lock Rows Always Locks the selected rows. See Locking Rows.
Unlock Row / Unlock Rows The selection holds a locked row Unlocks them.

Right click a locked row and the menu offers only Unlock, View Metadata and View Link Data. Right click a value cell and the menu offers Reset Values To Default for that cell, or for every selected cell.

Common reasons an item is greyed out:

  • a row is locked: unlock it first.
  • files are still being read: wait a moment for the background reader.
  • a file could not be read: the file is missing, damaged, or a recording that was never finished.
  • MP3 not supported, Ogg not supported, Opus not supported: these files cannot be linked, because their sample rate is not read.
  • sample rates differ (44.1 / 48 kHz): linked stems must share a sample rate.
  • a row has a frame rate conversion: Fit To Duration cannot change a converted row.
  • select a source row, not a variant: variants are generated from source rows only.
  • needs 2 or more channels: a mono file cannot be split.

Keyboard Shortcuts

Shortcuts work when the plugin window has keyboard focus and the list has at least one row. On Windows, use Ctrl in place of Cmd.

Keys Action
Cmd+Z Undo
Cmd+Shift+Z or Cmd+Y Redo
Cmd+A Select all rows. With a value cell highlighted, the first press selects that column and the second press selects the rows.
Cmd+C Copy the highlighted cells, or the selected rows when no cell is highlighted.
Cmd+V Paste copied cells into the selected rows, or add copied rows to the end of the list.
Cmd+I View Metadata for the selected row.
Cmd+Up / Cmd+Down Move the selected rows up or down one place.
Up / Down Move the selection. Hold Shift to extend it.
Left / Right Move between the cells of a row. Hold Shift to extend the cell selection.
Tab / Shift+Tab Step through the value cells, wrapping to the next or previous row.
Return Edit the highlighted cell, play the row when the play button is highlighted, or trim it when the scissors are highlighted.
0 to 9, ., -, + Start editing the highlighted cell with that character.
Space Play or stop the selected row. With nothing selected, stop any row that is playing.
T Open the selected row in trim mode.
Delete / Backspace Reset the highlighted cells, or remove the selected rows when whole rows are selected. Removing a source row removes its variants too.
Esc Clear the selection.

In trim mode, Space plays and pauses, and undo and redo still work. Other keys are not used.

Undo and redo are keyboard only. They are paused while an import or an export is running. Loading or saving a preset clears the undo history.

Locking Rows

Lock a row to protect it from changes. Right click it and choose Lock Row (or Lock Rows for a selection). A lock appears between its number and its name, and its scissors are hidden.

  • A locked row cannot be edited, renamed, moved, trimmed, removed or pasted over, and bulk selections skip it.
  • You can still preview it, read its badges, and open View Metadata.
  • Locking a linked stem locks its whole group.
  • Click the lock to unlock that row, or right click and choose Unlock Row.

A locked row is still exported.

Linked Stems

When a full mix and its stems (dialogue, music, effects, or the tracks of a multitrack delivery) are processed separately, they no longer add up to the mix. Pitch and time processing has to make decisions about the phase of every frequency, and two files processed on their own make those decisions differently. The result nulls badly against the mix and sounds smeared when played together.

Linking solves that. Linked stems are rendered together as one wide stream: every stem goes through the same processor at the same time, gets the same trim, the same speed, pitch, tempo and stretch, and the same limiter gain. After rendering, each stem is written back out as its own file with its own metadata.

Linking and unlinking

Select two or more rows, right click and choose Link As Stems (Phase Aligned Render). Each linked row shows a Link: 1 badge, first among its badges, so you can see which rows belong together. Each group number has its own colour. A group keeps its number when rows are moved or another group is unlinked, and the number is saved with the project. A new group takes the next number above the highest group in the list. To release a group, select any of its rows and choose Unlink Stems.

To add rows to a group, select them together with any row of the group, right click and choose Link All To Group 1. The rows that join take on the group's speed, pitch, tempo, stretch and trim, so the group itself does not change. When the selection touches more than one group, there is one Link All To Group item per group, and a selected row that was in another group moves over.

When a link is not possible, the menu item is greyed out and says why after its name: a selected row is locked, a file is still being read or could not be read, the file is an MP3, Ogg or Opus file, the sample rates differ, or the files' BWF start times differ (the odd file is named with its time, for example MUSIC_DX.wav at 01:00:17.000, the others at 01:00:00.000). Stems are rendered aligned at their first sample, so two files that start at different times would come out misaligned. Files without a BWF start time are not checked.

Linked rows are edited together. Change the speed, pitch, tempo, stretch or trim of one member and every member follows, in the same undo step. Locking one member locks the group.

The group view

Click a Link badge, or right click a linked row and choose View Link Data, to see the group: how many stems it holds, their shared sample rate, the width of the combined render in channels, its length, and every member with its format and length. It also lists the speed, pitch, tempo, stretch and trim the members share. Copy As Text puts it on the clipboard.

Link Group Dialog

One timeline

A group has one timeline, the length of its longest member, and the trim is a window on that timeline. The trim page, the Start and End fields, the markers and the row preview all use that timeline, so what you hear and see is what the group export writes (see Trim). When rows are linked, unlinked, joined or removed, every trim window stays where it was in seconds. Untrimmed files stay untrimmed: linking a short file with a long one keeps the whole group, it does not cut the group to the shorter file.

Detected stem sets

SpeedShift Bulk Tools looks for files that belong together and offers to link them:

  • files whose names share a base and end in a stem name, such as MUSIC_FULL, MUSIC_DX, MUSIC_FX and MUSIC_MX, when they have the same sample rate and about the same length
  • files a field recorder has marked as one family in their iXML data, which includes split mono recordings

Such a set shows an outlined Link? badge on its rows. Hover over it and the info bar names the set. Click it to see how many files the set holds and which ones. Right click and choose Link Detected Stem Set to link it. A file that matches by name but not by sample rate, length or BWF start time is left out, because it could not be rendered with the others.

What linking guarantees

  • One transform, one trim, one limiter gain, applied to every member at once.
  • With a pure time stretch (a tempo change, or a speed change with the pitch put back), the rendered stems still sum to the rendered mix to well below minus 80 dB.
  • With a pitch change, the rendered stems still sum to the rendered mix to about minus 30 dB (about three percent), and a set rendered without linking does not sum to its mix at all.
  • Every member of a group is exported with the same length. A shorter member is padded with silence to the longest one, keeps its metadata and its declared channel layout, and the export summary says by how much it grew. Its row shows Padded before you export.
  • A member whose trim window lies entirely past its own end is exported as a silent file of the window's length, so the set stays complete. Its row shows Silent, and Replace will not start while it does.
  • Every member with a BWF start time starts at the same time, so stems aligned at their first sample are aligned in time too.
  • If a member turns out to have a different sample rate at export time, it is rendered on its own and the summary says so.

Fit To Duration

Fit To Duration sets the Stretch or the Speed of the selected rows so their exports come out at the length you type. Right click a row and choose Fit To Duration.

Fit To Duration Dialog

  • Adjustment Mode: Keep pitch the same (stretch) changes the Stretch. Adjust the pitch (speed) changes the Speed, so the pitch moves with the length, like tape. The window opens on the mode you used last.
  • Target Time (MM:SS.cc): The length you want. It opens on the current length. Type SS.cc, MM:SS.cc or H:MM:SS.cc.

The note under the fields shows what will happen before you click Fit, for example "Stretch 1.00x becomes 1.2000x. The export goes from 03:00.00 to 02:30.00." The fit counts the trim, so a trimmed row is fitted by its trimmed length. Linked stems change with their group.

A target that would need a Stretch outside 0.25x to 4.00x, or a Speed outside -24 to +24 semitones, cannot be reached. The note names the file that cannot get there and, when it can, the range of lengths the selection can be fitted to. Clicking Fit then keeps the window open so you can change the target.

Fit To Duration cannot change a row with a frame rate conversion or a locked row, and waits until every selected file has been read.

Frame Rate Conversion

Post production converts stems between frame rates: a 24 fps film mix sped up for a 25 fps PAL delivery, a 24 fps programme pulled down to 23.976 for NTSC. SpeedShift Bulk Tools does this as a preset on the row, not as a number typed into the Speed cell, because the ratio has to be exact (23.976 is 24000/1001, not 23.976) and because the file's timecode metadata has to follow.

Right click a row, or a selection, and choose Frame Rate Conversion. The window converts the selected rows together with their variants and their linked stems.

Frame Rate Conversion Dialog

  • Conversion: 24 → 23.976 (NTSC pull down), 23.976 → 24 (pull up), 24 → 25 (PAL speed up), 25 → 24 (PAL slow down), 25 → 23.976, 23.976 → 25, 30 → 29.97 DF, 30 → 29.97 NDF, 29.97 DF → 30 and 29.97 NDF → 30. Drop frame (DF) and non drop frame (NDF) are named separately.
  • Pitch:
    • Pitch Corrected (length changes, pitch stays): a pure time stretch through the same stretcher every other export uses, so a linked stem set still sums to its converted mix.
    • Pitch Follows Speed (tape style): the classic speed up, where the pitch moves with the speed (24 to 25 raises it by 0.71 semitones). This is a true resample, band limited and linear, so a linked set sums to its mix exactly and the spectrum scales as a tape would.

The note under the choosers shows the result, for example "Length x 1.0010, pitch unchanged." Click Apply to convert, or Remove to take the conversion off rows that have one. Clicking a row's conversion badge opens the same window.

What a conversion guarantees

  • The exported file is exactly the length the ratio says: a 24 to 25 conversion of N samples is round(N × 24/25) samples, to the sample, however long the file is. Every stem of a linked group gets the same length.
  • The row shows a 24→25 badge, and its Stretch, Speed, Pitch and Tempo ± cells are set by the conversion until you remove it. Trim, the export name, locking and linking stay yours.
  • A conversion on one linked stem converts the whole group, in one undo step. A file that joins a converted group takes the conversion.
  • The BWF start timecode and both iXML timestamps are rewritten so the file keeps its position from the programme start in the destination timecode system. A file that started at 01:00:00:00 still starts at 01:00:00:00. A 2-pop two seconds before the hour at 24 fps is 48 picture frames before it, which is 1.92 seconds at 25 fps, so it starts at 00:59:58:02 in the converted file. A pull down multiplies the stamp by 1001/1000, which is what a 23.976 session expects for the same label. Drop frame is counted the way SMPTE counts it.
  • The iXML speed block describes the destination: the timecode rate and its numbering say the new rate, the master speed becomes the new rate, and the current speed keeps its ratio to it, so a camera overcrank (master 24, current 48) becomes master 25, current 50. A value that is missing from the file is not invented, and the export summary says which were left.
  • The coding history line names the conversion ("Frame rate 24 to 25 fps, pitch corrected"), and View Metadata shows a Frame rate conversion section with the start timecode before and after.

Programme start

The programme start every conversion is measured from is 01:00:00:00 unless you change it. The export dialog shows a Programme start field whenever the list holds a conversion. Reels at hour ten use 10:00:00:00. It is saved with the project and can be undone like any other edit. It must be a timecode that exists in both timecode systems of every conversion in the list: 01:00:00:24 is a valid 25 fps label but not a 24 fps one, and 01:01:00:00 does not exist in 29.97 drop frame.

When a conversion is refused

A conversion is refused when a file's own iXML declares a different timecode rate or numbering than the preset expects. A 25 fps file cannot be given a 24 source preset, and a 29.97 DF file cannot be given the 29.97 NDF one. The note in the window says "Cannot convert:" with the reason, naming the file. A file that declares nothing (no iXML, a DAW bounce, an MP3) is allowed, and the export summary says "NDF assumed" or "DF asserted by the preset" for a 29.97 file without a flag. A linked group is judged as a whole. At export time the check runs again on the real file, and a file that contradicts its preset is left as it was, with its whole group.

Conversions can be combined with an output sample rate. A tape style frame rate conversion and a sample rate conversion are done as one resample, not one after the other.

Variants

A variant is a copy of a row with one setting moved: its speed, its pitch or its stretch. Variants are ordinary rows, so everything the table does works on them: preview, trim, the badges, multi selection edits, linking and export. They sit directly under their source row, indented, each with a V1, V2 badge, and the source shows a Var: 4 badge with their count.

Generating variants

Select one or more rows, right click and choose Generate Variants.

Generate Variants Dialog

  • Parameter: Speed (pitch and length change), Pitch (length kept) or Stretch (tempo factor, pitch kept).
  • Values:
    • Fixed List: type the values separated by commas (-12, -7, 0.5, 3), or choose a preset: Octaves, Fifths, Chromatic (two octaves), Major Scale, Natural Minor Scale, Major Pentatonic, Semitone Spread (three each way) or Slight Detune.
    • Range: From, To and Step (-12 to 12 in steps of 1 by default).
    • Random (seeded): Count values drawn between Min and Max from a Seed. Reroll picks a new seed. Whole semitones forces whole numbers. Random values are drawn per source from the seed, so a source's set never changes when other rows are added or removed, and the same seed makes the same set again.
  • Name: a template for the new rows, {Filename}_V{Variant} by default. {Value} gives the variant's own value, and {Speed}, {Pitch} and {Stretch} its cells.

The Preview under the fields shows the first source's variants with their names and values, marks any value the cell limits cut short, and totals the rows the run will add. Each source can have up to 128 variants. Generate adds every variant in one undo step and selects them. Running Generate Variants again on a source replaces its variants.

Values are relative to the source: a source at +2 semitones with a variant of +3 gives a row at +5, and a stretch variant multiplies the source's factor. A value that would leave the cell limits (24 semitones, a stretch of 0.25 to 4) is held at the limit, and the preview and the info bar say so.

How variants behave in the table

  • A source moves with its variants. Drag its grip, or use Cmd with the arrow keys, and the whole set moves as one block. A drop inside another set lands at that set's edge. A variant cannot be moved on its own.
  • Deleting a source deletes its variants with it, in one undo step. Deleting a variant removes only that variant.
  • Duplicate Track and paste make plain rows, placed below the set.
  • Sorting the table keeps every variant right under its source. Searching filters variants by their own names like any other row.
  • Remove Variants in the row menu removes the variants of the selected sources and any selected variants.
  • Linked stems generate together: select any member and every member of the group gets the same values, and each variant number becomes a link group of its own, so variant 3 of the dialogue stem and variant 3 of the effects stem render as one phase aligned unit.

Variants of a converted file

A frame rate conversion and a variant combine. Generate Variants on a converted source (or convert a source that already has variants) and every variant keeps the conversion and carries its own value on top. The export renders the conversion first, exactly as it does for the source, and the variant's change after it. The file is the converted length scaled by the variant's speed, the start timecode stays where the programme start puts it, and the coding history names both. The cells of such a row show the conversion plus the variant and stay locked. Removing the conversion from the source gives every variant its own value back.

Splitting and Combining Poly WAV Files

A field recorder writes either one poly file with every armed input in it, or one mono file per input. Post often wants the other form. SpeedShift Bulk Tools turns one into the other as part of a normal export, so speed, trim, frame rate conversions and variants all apply on the way, and nothing is rendered twice.

Split To Mono Files

Right click a row of two or more channels and choose Split To Mono Files. The row shows a Split 6 badge (the number is its channel count) and exports as one mono file per channel instead of one poly file. Choose Stop Splitting to export it whole again. Splitting a source row splits its variants too. A multi selection splits every selected row that can be split. Ambisonic files keep their channels together and cannot be split.

Each channel is a new file, named after its track: the iXML track name when the file has one, otherwise the speaker position of a declared layout (L, R, C, LFE, and a plain stereo file is L and R), otherwise its number (CH03). Two channels with the same name both get their number added (Lav_CH03, Lav_CH04). The name goes after the file name with an underscore (poly_sparse_4ch_BOOM.wav) unless your naming template says where it goes with the {Track} or {Channel} token.

Every channel file gets its own iXML identity, keeps its own track entry, joins a file set of all the channels, and records where it came from. Data that describes the channels of the source as a whole, such as ADM, is left out and the summary says so. Everything else is carried exactly as a whole export carries it. A channel of a 5.1 file is the same audio as that channel of the whole export, to the sample, limiter included.

Combine Into Poly WAV

Select two or more mono rows, right click and choose Combine Into Poly WAV. The rows are linked as stems and the group is marked to combine, in one step. On rows that are already linked, the menu offers Combine Link 1 Into Poly WAV and Stop Combining Link 1 instead. Every member shows a Poly 4 badge (the number is the channel count) and the group exports as one interleaved poly WAV. The channel order is the list order, so move a row to change it. Hover over a badge or open the group view to see the order.

Combining is strict and refuses rather than guesses. The menu item is greyed out with the reason when the members are not all mono, differ in sample rate, bit depth, sample format or length, hold the same file twice, disagree on BWF start times, disagree on the iXML project, scene, take or tape, belong to different recordings, or when one is set to split, is a variant, is locked, or has not been read yet. Combine on a source group and the variant groups generated from it combine too.

The poly is named after its members when their names differ only by the channel part (take07_1 to take07_4 give take07, mic_L and mic_R give mic), otherwise after the first member's export name. The first member's metadata is what the poly carries, with a rebuilt iXML track list naming every channel from its own file. The poly is written with no speaker layout, like a recorder's own poly. A stereo pair shares its limiter gain, and a wider poly limits each channel on its own.

Exporting split and combined rows

Split and combine do not run in Replace mode, so the export dialog greys out Replace Original Files while any row splits or any group combines. The dialog says what the shapes expand the list to ("6 rows, 6 files (1 split row, 1 poly)."), the summary counts them, and the export report records each output's shape. A member that changes on disk after you set it up is refused again at export time, and the export does not start while any group or split row fails its checks.

Metadata

When you export to WAV, SpeedShift Bulk Tools keeps the metadata that was in your source file. This is on by default, because losing a file's metadata should be something you ask for, never something that just happens.

Professional audio files carry far more than sound. A field recording holds its timecode, scene, take and track names. A sound effects library file holds its description, its UCS category and its Soundminer fields. A music loop holds its tempo, its root note and its loop points. SpeedShift Bulk Tools reads all of this directly from the source file and writes it into the exported file.

What is kept exactly as it was

Everything that the processing did not affect is carried over byte for byte:

  • Description, originator, originator reference, origination date and time (BWF)
  • Project, scene, take, tape, notes, circled take flag and user bits (iXML)
  • Track names and track functions for every channel (iXML track list)
  • Title, artist, comment, genre, date and software (LIST INFO)
  • UCS category, sub category, FX name, creator ID and source ID (ASWG)
  • Soundminer data
  • ADM and Dolby Atmos metadata
  • Any other block in the file, including ones from vendors SpeedShift Bulk Tools has never seen

What is adjusted, and why

Some values describe the audio itself. When you trim, stretch or pitch the audio, those values would become wrong if they were copied unchanged, so they are corrected.

Value What happens Why
Start timecode (BWF, and its iXML copy) Moves forward by the amount you trimmed off the start. After a frame rate conversion it is written for the destination timecode system, so the file keeps its position from the programme start. The timecode is the time of the first sample in the file. After a trim, the first sample is a later one.
Timecode rate and speed (iXML) After a frame rate conversion, they say the destination rate. A converted file plays at the new rate, so its metadata must say so.
Markers Move with the audio they mark. A marker placed on a hit should still sit on that hit after the file is made longer or shorter.
Regions Both ends move with the audio. A region that reaches past your trim is shortened to the part that was kept. Losing a whole region because its last second was trimmed would be worse than shortening it.
Sampler loop points Move with the audio. A loop should still loop the same material.
Sampler root note Moves with the pitch. A recording pitched up two semitones now sounds two semitones higher, so that is its new root.
Loop tempo (ACID) Follows the new length. A loop made twice as long plays at half the tempo.
Loop beat count (ACID) Scales when you trim. Half the loop holds half the beats.
Slate and sync points (iXML) Move with the audio. They mark moments in the recording.
Sample rate and bit depth (iXML) Say what the exported file holds when you choose an output rate or depth. Everything counted in samples is counted again at the new rate.

Markers, loops and sync points that fall entirely inside audio you trimmed away are removed, together with their names. A sampler loop that reaches into trimmed audio is removed whole, because a shortened loop would click and play at the wrong tempo.

One line is added to the BWF coding history to record that the file was processed. Your existing history is kept in front of it.

What is removed, and why

A small number of blocks are computed from the audio itself. After any processing they would describe audio that no longer exists, and keeping them would be worse than removing them:

  • The audio checksum (MD5). Quality control tools compare it against the audio, so a stale one makes them report your file as corrupt.
  • The BWF peak envelope and the floating point peak block.
  • Waveform overview caches written by some editors.
  • BWF loudness values are not removed. They are set to the standard's own "not measured" value, because the gain stage and the limiter have changed the loudness.

A few vendor blocks hold sample positions in a private layout that cannot be corrected. They are kept whenever your export does not move any audio in time, and removed otherwise, because wrong positions are worse than none.

Formats

Export format Source metadata
WAV Kept in full
AIFF, FLAC, Ogg, Opus, MP3 Not carried in this version

Metadata is read from WAV and BWF sources, including files named .bwf. A WAV is recognised by its contents, not by its extension.

Turning it off

Untick Preserve Source Metadata (WAV) in the export dialog to write a clean file. The channel layout is still kept when you do this, because it describes the audio itself and is not optional information.

View Metadata

View Metadata shows everything a file carries and what your next export will do to each item. Open it in any of three ways:

  • Right click a row and choose View Metadata
  • Select a row and press Cmd+I
  • Click any metadata badge on the row

View Metadata Dialog

The window has four columns. Item names the value. Before shows it as it is in the file. After shows what it will be once the file is exported with the track's current trim, speed, pitch, stretch and tempo, in the export format you used last. The Export settings section at the bottom spells out those assumptions. The status says what happens:

Status Meaning
Kept Carried into the export exactly as it is
Adjusted Carried, with its value corrected to match the new audio (a marker that moved, a timecode that shifted, a tempo that changed)
Removed Left out of the export, with the reason in the After column
Not carried The chosen export format cannot hold it, or Preserve Source Metadata is off

When Preserve Source Metadata is off, a red line at the top says "Metadata preservation has been turned off in the export dialog."

The sections you will see, depending on the file:

  • Timecode: the BWF start timecode and the iXML timestamp, and whether they agree.
  • Description: description, originator, reference, recording date, loudness, coding history.
  • Production: project, scene, take, tape, circled, notes, user bits, file family, sync points.
  • Channels: one row per channel with its speaker position and its track name from the recorder, then how preview folds the file and how the limiter treats it.
  • Markers: every marker and region with its position before and after export.
  • Music: root notes, loops, tempo and beat count.
  • Library: UCS category, FX name, creator, library, title, artist, comment, Soundminer and ADM data.
  • Frame rate conversion: the conversion and the start timecode before and after.
  • Other data: any block the file carries that is not shown above, with its size and its fate.
  • Related files: the file's linked stem group and its other members, or the detected stem set it belongs to.
  • Split outputs and Poly WAV: the files a split or combined row will write.
  • Export settings: the format, the Preserve Source Metadata choice, the sample rate, bit depth and dither, and the trim, speed, pitch, tempo and stretch that the After column assumes.

The After column is not an estimate. It is produced by running the very same code the export runs, on a copy of the file's metadata, so it cannot disagree with the file you get.

Copy As Text puts the whole report on the clipboard, which is useful when asking for help.

Channel Layouts and Multichannel Files

SpeedShift Bulk Tools exports files at their full width. Mono, stereo, LCR, quad, 5.0, 5.1, 7.1, 5.1.4, 7.1.4 and files with any other number of channels all go through the same render.

The exported file declares exactly what the source declared

A WAV file can state which speaker each channel is meant for. That statement is carried through unchanged. A 5.1 file with side surrounds stays 5.1 with side surrounds. A 7.1 file stays 7.1. A 7.1.4 file keeps its height channels.

Just as important, a speaker layout is never invented. A six channel file from a field recorder usually holds a stereo mix, a boom and three lavalier microphones. It is not 5.1, and many tools wrongly label it as 5.1 when they save it. SpeedShift Bulk Tools writes it back as six plain channels, exactly as it came in. Track names from the recorder are kept, so your DAW can still show which channel is which.

Pitch and time processing keeps channels together

All channels of a file are processed together by a single stretcher that keeps them locked in phase. Stretching or pitching a stereo or surround file does not smear its image.

Preview

Your DAW gives the plugin a stereo output, so a file wider than stereo is folded down to stereo for listening. This affects preview only. The exported file always keeps its full width.

  • A file that declares a speaker layout is folded by speaker position. Left and right stay where they are. The centre, the surrounds and the height speakers are mixed in at minus 3 dB on their own side. The LFE is left out, which is the broadcast convention for a stereo fold.
  • A file that declares no layout has every channel mixed equally into both sides. Nothing is panned hard to one side and nothing is muted, so you hear every microphone of a poly recording.

Export Dialog

Click Export to open the Export Audio window. Its options sit in four boxes. The format, sample rate, bit depth, dither, destination, template and Skip choice are remembered for your next export, on your computer rather than in the project.

Export Audio Dialog

File Formatting

  • File Format: Keep Original Format, Wav, Mp3, Ogg, Flac, Aiff or Opus. Keep Original Format writes each file back in its own format. Mp3 is only listed when the LAME encoder is installed. Without it, MP3 sources are written as WAV under Keep Original Format, and a note says so.
  • Sample Rate: Match Source, 44.1 kHz, 48 kHz, 88.2 kHz, 96 kHz, 176.4 kHz or 192 kHz. Match Source writes each file at its own rate. Any other choice converts every file to that rate.
  • Bit Depth: Match Source, 16 Bit, 24 Bit or 32 Bit Float. Match Source writes each file at its own depth. Any other choice writes every file at that depth.
  • Dither (TPDF, 16 And 24 Bit): Adds a very quiet noise before a file is rounded to 16 or 24 bits. Off by default.

A note under the choosers says what every file will be written as, for example "Every file is written as 48 kHz, 24 bit, TPDF dither."

Sample rate conversion

The conversion is the first thing that happens to the audio. Everything after it (the gain stage, the speed, pitch and stretch processing, the limiter) runs at the new rate, so the limiter still has the last word and nothing the conversion adds can end up above full scale. The converter is a band limited resampler built for offline work:

Measure Result
A tone's frequency after the conversion Within a hundredth of a percent
Level up to 20 kHz Within a tenth of a decibel
Anything the conversion would fold back or mirror At least 96 dB down
Length Exactly the source's length times the ratio of the two rates, rounded to the nearest sample

Markers, loops, the start timecode and every other position in the metadata are counted again at the new rate, so they stay on the same moments in the audio.

Bit depth

The audio is processed in 32 bit float. Writing 16 or 24 bits means rounding every sample to the nearest step the file can hold.

  • 32 Bit Float holds the audio as it was worked on. Only WAV can hold it. FLAC and AIFF write 24 bit in its place, and the dialog and the export summary say so.
  • MP3, Ogg and Opus have no bit depth. They store an encoding of the audio. The Bit Depth chooser and the Dither checkbox are greyed out while one of them is the chosen format.

Dither

Rounding on its own ties the error to the audio. A quiet fade turns into a staircase, and the error is heard as a distortion that follows the music. Dither adds a very small random noise before the rounding. The error then becomes a steady hiss at the very bottom of the file's range, which the ear ignores far more easily than a distortion.

  • The noise is TPDF, the plain dither every mastering tool offers. At 16 bit it sits about 93 dB below full scale, at 24 bit about 141 dB below.
  • It is applied to 16 and 24 bit WAV, AIFF and FLAC files. A 32 bit float file is never dithered, because nothing is rounded. A lossy file is never dithered, because its encoder adds far more noise of its own.
  • The same export twice gives the same file, byte for byte.
  • The files of a linked stem group each get noise of their own, so the noise does not add up when the stems are summed.
  • A file that is silent, or a linked stem that was padded with silence, holds the dither's hiss and not digital silence. Turn the dither off if a delivery asks for digital silence, and for test signals and files that will be processed again before they are delivered.

File Destination

  • Destination:
    • Zip Files: writes every file into one zip archive. You choose where to save it (the name starts as Bulk Export.zip). This is the choice the first time you export.
    • Export All To Folder: writes every file into a folder you choose.
    • Replace Original Files: writes each file over its original. See Replace Original Files below.
  • Skip Files Already In The Folder: with Export All To Folder, a file whose name is already taken in the destination is skipped instead of written as a numbered copy. Off by default.
  • Filename Template: how every file is named and where it goes. See below.

Filename Template

The template names and places every exported file. The default, {Filename}, writes each row as it is named in the table, straight into the destination. Type after it to add a suffix ({Filename}_slowed), insert tokens from the Insert Token... menu, and use a slash to make folders below the destination. The line under the field shows where the first file will land, for example "First file: MUSIC_VO_slowed.wav (and 7 more)". Token names are not case sensitive.

Token Gives
{Filename} The row's name as shown in the table, without its extension
{Source} The file's folder below the folder it was imported from. Empty for a file at the top of that folder or imported on its own
{Folder} The name of the folder the file sits in
{CatID} The UCS category ID, from the file name or its ASWG metadata
{Category}, {SubCategory}, {FXName} The UCS category, sub category and FX name from the file's ASWG metadata. Empty when the file has none
{Speed}, {Pitch}, {Tempo} The row's cells, signed with two digits (+03, -07, +03.5)
{Stretch} The row's stretch factor (1.20)
{Variant} The variant's number in its set (01, 02). Empty on any other row
{Track} The channel's track name of a split mono file (BOOM, L, CH03). Empty on any other file. When a template names neither this nor {Channel}, a split file gets _{Track} after its name
{Channel} The channel's number of a split mono file (CH01, CH02). Empty on any other file

Two rules keep the result tidy. A part of the template in square brackets drops out whole when any token inside it is empty, so {Filename}[_V{Variant}] numbers the variants and leaves every other row's name alone. An empty folder drops out too, so {Source}/{Category}/{Filename} puts a file with no category one folder up rather than in a folder with no name.

The first item of the Insert Token... menu, Keep folder structure ({Source}/ in front), reproduces the folder tree of an imported folder below the destination. This keeps a library's structure and stops two files of the same name from different folders colliding. Two files that would still land on the same path are numbered (Impact (1).wav). Zip exports carry the folders inside the archive. Replace exports keep every file where it is and use the file name part of the template only.

A template that names a token the plugin does not know, or a category token while files are still being read, is refused before the export starts, with the reason shown under the field.

Processing

  • 1.5 dB Reduction (Gain Stage): lowers the level by 1.5 dB before processing, to leave headroom. Off by default in new projects.
  • Hard Limiter (Clip Prevention): stops the processed audio from going above full scale. On by default.

These are the same switches as Settings, Pre-Post Processing Effects. They are saved with your project, and they apply to the preview too.

Metadata

  • Preserve Source Metadata (WAV): carries each source file's metadata into its WAV export. On by default. See Metadata.
  • Programme start (HH:MM:SS:FF): shown only when the list holds a frame rate conversion. 01:00:00:00 by default.

The note under this box sums up the batch before you start: how many files carry metadata and whether it will be kept, how many linked stems will be padded or exported silent, how many files will be converted between frame rates, and how many files the split and combined rows make.

Replace Original Files

Replace writes each exported file over its original. A file that keeps its name and format is overwritten in place. A file that changes format, or whose name the template changes, is written beside its original, and the original is then deleted.

Before anything is written, a confirmation lists the files ("X becomes Y.ext"), says what every file is written as and how many will come out with a lower sample rate or fewer bits than they have now, lists the linked stems that will be longer than their originals, and asks Continue? Click Replace to go ahead. This cannot be undone.

Replace is greyed out or refused when the list holds variant rows, two rows that use the same file, split rows or combined groups, because each of those writes more than one file per original. Export to a folder or a zip instead. Replace also refuses to start while a linked stem shows Silent, naming the file and offering the ways out (change the trim, unlink the file, or export to a folder), and while files are still being read.

Export Progress and Summary

While the export runs, the Exporting Audio window shows its progress. Click Cancel to stop. The window stays up until the export has really stopped, and the summary then says how many files were finished before the cancel. Every original that had not been replaced yet is still there.

Every export ends with a summary. It says how many files were written, how many of them carry their source metadata, and lists any file that needs a second look.

Export Summary Dialog

When a sample rate or a bit depth was chosen, the summary says what the batch was written as ("Output: 48 kHz, 24 bit, TPDF dither."). When a format could not hold what was asked of it, the summary says so once, with the number of files it concerns ("12 files: FLAC cannot hold 32 bit float, so it was written as 24 bit.").

The files that need a second look are:

  • a file that could not be rendered (the original is untouched)
  • a file that was skipped for safety: unreadable, read only, or a recording whose header was never completed
  • a file the chosen format cannot hold, such as a FLAC with more than 8 channels
  • a file that was already in the destination, with Skip Files Already In The Folder ticked
  • a file whose metadata could not be carried by the chosen format
  • markers, loops or sync points that were outside the trim and removed
  • metadata blocks that were removed because the audio changed, or that were too large to carry
  • a linked stem that was padded with silence to the longest stem in its group, with both lengths, or one that was exported entirely silent because its trim window lies past its end
  • a linked group that Replace left untouched because one of its stems would have been overwritten with silence
  • a file that was converted between frame rates: the conversion, what the file's own metadata declared, and where its start timecode went (for example "Start timecode 00:59:58:00 to 00:59:58:02, programme start 01:00:00:00")
  • a file, and its whole linked group, left as it was because its own timecode rate contradicts the preset it was given

The buttons at the bottom appear when they apply:

  • Show In Finder: opens the destination.
  • Show Report: shows the export report. Every export writes one as a CSV and a JSON file, named SpeedShift Bulk Tools Export Report with the date and time. It lists every file with its outcome, its sample rate, bit depth and dither, and its shape.
  • Retry Failed: exports again the files that failed, ran out of memory, could not be read, or were cancelled. A zip export is rebuilt in full.
  • Close

Exporting Safely

SpeedShift Bulk Tools never damages a file you already had.

  • Files appear only when they are complete. Each export is written under a temporary hidden name in the destination folder and is renamed to its final name as the last step. A half written file is never visible under the name you chose, so a DAW or a folder watcher cannot pick one up.
  • Cancelling is safe. If you cancel, or if an export fails, nothing is published and anything that was already at the destination is exactly as it was.
  • Replace mode only replaces. An original is removed or overwritten only after its replacement has been written and checked. If you cancel a Replace export half way, every original that had not been finished yet is still there.
  • Replace never writes silence over audio. If a linked stem's trim window lies past its own end, Replace does not start. The export itself checks again with the real file lengths and leaves the whole group untouched if it finds such a stem, so the set can never end up half replaced.
  • Replace says which files will grow. The confirmation lists the linked stems that will be longer than their originals, padded with silence to match the longest stem in their group.
  • Unreadable recordings are skipped, not overwritten. If a recorder lost power, the file it left behind can often still be repaired. Such a file is recognised and left alone.
  • Read only files are left alone in Replace mode.
  • The disk is checked first. If a destination disk does not have room for the whole export plus a small margin, nothing is written, and the summary says how much space is needed and how much is free.
  • WAV files are never split. Each WAV export is one file, however long it is. Above 4 GB the file is written as RF64, the standard 64 bit form of WAV, which current DAWs and library tools read. If you deliver to a system that needs plain WAV, keep individual files under 4 GB. Other formats are split into parts of 1 GB (name.flac, name_p2.flac and so on).

Presets

A preset holds the whole track list with every row's settings, so you can save a batch and load it again later or in another project.

  • Save Preset in the Settings menu asks for a Preset Name and saves the current list.
  • Load Preset, User Presets lists the presets you saved. Loading one replaces the current list.
  • Load Preset, Default Presets holds Default Preset, which leaves your track list as it is.
  • View Preset Folder opens the folder the presets live in, with Default Presets and User Presets inside it.

Loading or saving a preset clears the undo history. Presets cannot be loaded while an import or an export is running.

💡 TIP: The track list is also saved with your DAW project, so you do not need a preset to come back to a batch in the same project.

Window Size and Scaling

The window can be shown at 100, 125 or 150 percent from the Settings menu. 150 percent is the default. The plugin opens at your chosen size whenever the display can hold it, and steps down to the largest size that fits when it cannot. A larger size that would not fit the current display is greyed out. Your choice is remembered, so moving the window back to a larger display restores it.

Known Limitations

  • Source metadata is carried into WAV exports only. AIFF, FLAC, Ogg, Opus and MP3 exports do not carry it in this version.
  • The lossy formats are always written at their best quality (MP3 at 320 kbps, Ogg at its highest setting, Opus at 192 kbps). Their bitrate cannot be chosen yet.
  • Opus always stores 48 kHz and MP3 at most 48 kHz. A file converted to any other rate is converted a second time by the encoder, and the export summary says so.
  • The sample rates offered are 44.1 to 192 kHz. 22.05 and 32 kHz, and 32 bit integer, are not offered yet.
  • The dither is plain TPDF. Noise shaped dither is not offered yet.
  • With the dither off, 16 and 24 bit files are rounded down to the step below, not to the nearest step.
  • Linked stems with different sample rates are rendered apart even when a sample rate is chosen, so they are not phase locked to each other. Each is still converted to the chosen rate.
  • A poly WAV can only be combined from files that share a sample rate and a bit depth, whatever rate and depth it is then written at.
  • ADM and Dolby Atmos metadata is carried unchanged. If you change the length of such a file, the object timings inside that metadata are not updated, and its stated sample rate and bit depth are not rewritten after a conversion.
  • Loudness values stored in the ASWG block are carried unchanged, although the processing changes the loudness.
  • Channels are never reordered. A file is written in the channel order it came in.
  • Very short sounds are padded. A source shorter than about an eighth of a second is exported about an eighth of a second long, with silence added. Longer files keep their length exactly.
  • On macOS, replacing a file in place gives the new file a new creation date and does not keep Finder tags.
  • Linked stems that are pitch shifted sum to their mix to about minus 30 dB, not exactly. A pure time stretch sums to well below minus 80 dB.
  • Linked stems are padded to the length of the longest member of the group.
  • Linked stems must share a BWF start time. A tool that edits a file without updating its start time can leave two stems that really are aligned with different start times, and they will not link. Files without a start time are never refused for this reason.
  • Linked stems are detected from file names and from iXML family data only. Files that belong together without either of those clues have to be linked by hand.
  • Importing a very large folder (a whole drive, for example) has no limit. Every file found becomes a row, and searching can take several seconds on a slow or network drive.
  • The pitch corrected frame rate conversion is a time stretch, so like every stretched export it fades the very first few milliseconds of a file. The pitch follows speed conversion is a resample and keeps them.
  • Conversions between 24 and 29.97 are not offered yet, and drop frame is supported at 29.97 only.
  • {Category} and {SubCategory} come from ASWG metadata only. A UCS file name gives {CatID}.
  • Copying and pasting a source with its variants pastes plain rows. The variants are not carried as a set.
  • A combined poly is written with no speaker layout, so a 5.1 file that was split and then combined comes back as a plain six channel file.
  • Only the first member's markers, BWF fields and other metadata are carried into a combined poly. The other members contribute their audio and their track name.
  • Duplicating or pasting a member of a combined group puts the same file in the group twice, which refuses the poly until the extra row is removed.

Troubleshooting

  • MP3 is missing from the File Format list. MP3 export needs the LAME encoder. Reinstall the plugin and tick the LAME encoder in the installer.
  • A menu item is greyed out. Its reason is written after its name. See Right Click Menu for the common ones.
  • Keyboard shortcuts do nothing. Click an empty part of the plugin to give it keyboard focus. Shortcuts do not work while the list is empty, while you type in the search bar, or while a window is open.
  • A window does not close with Esc. The plugin's windows close only with their own buttons, so a stray key press never cancels your settings.
  • A row's cells cannot be edited. The row is locked, or it carries a frame rate conversion. Hover over a cell and the info bar says which.
  • Resulting Duration shows --:--.--. A file has not been read yet. Wait a moment, or check the hover text for a file that cannot be read.
  • Replace Original Files is greyed out. The list holds variants, two rows that use the same file, split rows or combined groups. Export to a folder or a zip instead.
  • Asking for help. In View Metadata, Copy As Text puts a full report of a file on the clipboard, ready to paste into an email.