Bento Project Packer finds all audio files referenced in a Bento project.xml, copies them into per-track folders next to the project (e.g., 01-Lead Pad\sample.wav), and updates the XML to use relative paths. This keeps projects easy to share while preserving the track layout you see in Bento.
- Accept a project XML path or a project directory (uses
project.xmlor the only*.xml). - Search your sample folders recursively. If Everything (es.exe) is available it is used automatically; otherwise a normal filesystem scan runs.
- Copy found samples into track-specific folders named
01-<cellname>,02-<cellname>, etc., with collision-safe filenames likesample (n).ext. - Update XML
filenameattributes to.\<track folder>\<finalName>. - Repack legacy
.\\samples already sitting in the project root so they move into the right track folder (old copies are removed after packaging). - Always write a timestamped text report.
- Always create a pre-change backup
project.xml.bakbefore saving changes.
- Beta software. Run on copies of your projects and keep backups.
- Always run a dry run first to preview changes.
- Windows with PowerShell 5.1 or PowerShell 7+.
- Optional: Everything (Voidtools). The tool will use
es.exeautomatically when found.- Quick setup: see
INSTALL-Everything.mdor run./Install-Everything.ps1.
- Quick setup: see
Run-BentoProjectPacker.ps1- runner you execute.Bento-ProjectPacker.ps1- function library used by the runner.SampleRoots.txt- optional list of sample roots (one path per line).
Place these files together in the same folder.
- Create or edit
SampleRoots.txt(one path per line) to list your sample folders. - Run a dry run to preview the changes and review the decisions in the generated report.
./Run-BentoProjectPacker.ps1 "C:\Bento SD Backup\Projects\TRACK NAME\project.xml" -DryRun
Or pass the project directory:
./Run-BentoProjectPacker.ps1 "C:\Bento SD Backup\Projects\TRACK NAME" -DryRun
Apply changes (a project.xml.bak backup is always created first):
./Run-BentoProjectPacker.ps1 "C:\Bento SD Backup\Projects\TRACK NAME\project.xml"
Override sample search root for a one-off run (bypasses SampleRoots.txt):
./Run-BentoProjectPacker.ps1 "C:\Bento SD Backup\Projects\TRACK NAME\project.xml" -SearchRoot "D:\Samples"
./Run-BentoProjectPacker.ps1 <ProjectXmlOrDir> [-DryRun] [-SearchRoot <path>] [-Report <path>]
Parameters:
-DryRun- no file copies or XML writes; decisions are printed and a report is generated.-SearchRoot <path>- override the sample search roots for this run. Otherwise usesSampleRoots.txt(or%USERPROFILE%\Music).-Report <path>- write a text report to this file. A timestamped report is always written next to the XML and a copy in the current directory.
- Each
<track>in the project gets its own folder besideproject.xml, prefixed with its order number (01-Track Name,02-Drums, ...). - All samples referenced by cells in that track are copied into the corresponding folder. Reused files are copied once per track.
- XML
filenameattributes are rewritten to point at.\<track folder>\<file>so Bento resolves the packaged structure. - If a sample was already in the project folder (e.g., from an older pack), it is relocated into the correct track folder and the original root file is deleted once the new copy is confirmed.
- Targets all
<params>XML nodes with afilenameattribute. - Path updates are strictly set to
.\<folder>\<file>. - Everything CLI (
es.exe) speeds up large library searches. If not installed, the script performs a normal recursive scan.
- No candidates found in report:
- Check
-SearchRootor yourSampleRoots.txtpath list. - Try a smaller subtree for validation.
- Check
- Slow scans:
- Install Everything and ensure
es.exeis in PATH, or specify its default install location. - Limit the search by pointing
-SearchRootto a narrower folder.
- Install Everything and ensure
- Multiple XML files in folder:
- Specify the exact XML file instead of the directory.
MIT License (c) 2025 The Dark Glove - Logical Perspective Ltd
See LICENSE for full text. Provided "as is" without warranty; always work on copies and keep backups.