5.2 KiB
5.2 KiB
Same-Pack Strict Selection Implementation
Overview
This implementation enforces strict same-pack selection for atmos_fx and vocal_shot roles to ensure these samples are well-integrated into the same sonic universe as the main musical elements (drums, bass, music).
Problem Statement
Previously, these roles could be selected from different packs than the main elements, leading to:
- Poor sonic coherence within tracks
- Jarring transitions between sound sources
- A lack of unified "pack character" in productions
Solution
1. Strict Same-Pack Bonus System
Added _calculate_same_pack_strict_bonus() method in sample_selector.py that applies different score multipliers based on folder relationships:
| Relationship | Multiplier | Type | Description |
|---|---|---|---|
| Exact folder match | 2.0x | same_pack | Sample in same folder as main pack |
| Subfolder of main pack | 1.8x | same_pack | Sample in subfolder of main pack folder |
| Sibling folder | 1.5x | same_parent | Sample in sibling folder (same parent) |
| Same pack root | 1.3x | same_parent | Different structure but same pack name |
| Different pack | 0.4x | fallback | Completely different pack lineage |
2. Integration with Sample Scoring
Modified _calculate_sample_score() to:
- Detect when selecting for
atmos_fxorvocal_shotroles - Build list of main pack folders from palette data (drums, bass, music anchors)
- Apply strict bonus/penalty with high weight (0.25)
- Log selection type with clear markers
3. Fallback Mechanism
When same-pack samples aren't available:
- Heavy penalty (0.4x) is applied but selection can still proceed
- Logs clearly mark "FALLBACK" selections
- System continues to function even with limited library diversity
4. Logging
Three log levels for monitoring:
INFO- "SAME_PACK": Selected from main pack (bonus applied)INFO- "SAME_PARENT": Selected from related folder (moderate bonus)WARNING- "FALLBACK": Cross-pack selection (penalty applied)
Files Modified
AbletonMCP_AI/AbletonMCP_AI/MCP_Server/sample_selector.py- Added
_calculate_same_pack_strict_bonus()method - Modified
_calculate_sample_score()to apply strict same-pack logic - Uses existing palette data from
_palette_dataattribute
- Added
How Same-Pack Selection Works
-
Pack Context Establishment:
PackBraininpack_brain.pyestablishes the current pack context- Main pack folders (drums, bass, music) are identified and stored in palette
- Palette data is passed to
SampleSelectorviaset_palette_data()
-
Sample Evaluation:
- When scoring samples for
atmos_fxorvocal_shotroles - System checks folder relationships against main pack folders
- Applies appropriate bonuses or penalties
- When scoring samples for
-
Selection:
- Weighted random selection still applies
- Same-pack samples have significantly higher probability
- Cross-pack selections are penalized but possible if no alternatives exist
Validation Steps
1. Compile Check
python -m py_compile "C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\sample_selector.py"
2. Unit Test
python "C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\test_same_pack_selection.py"
Expected output:
[PASS] Test 1: Exact folder match gives bonus 2.0x
[PASS] Test 2: Subfolder match gives bonus 1.8x
[PASS] Test 3: Sibling folder gives bonus 1.5x
[PASS] Test 4: Different pack gets penalty 0.4x
[PASS] Test 5: Multiple main pack references work correctly
[OK] All same-pack bonus tests passed!
[SUCCESS] Same-pack strict selection feature is working correctly!
3. Real Generation Test
- Generate a track with the system
- Check logs for same-pack selection markers
- Inspect the generation manifest for sample paths:
atmos_fxandvocal_shotshould come from folders related to main pack- Look for log entries starting with "SAME_PACK", "SAME_PARENT", or "FALLBACK"
4. Log Inspection
During generation, look for:
SAME_PACK [ATMOS_FX]: Selected from main pack - sample.wav (score: 2.0)
SAME_PARENT [VOCAL_SHOT]: Selected from related folder - vocal.wav (score: 1.5, sibling folder to main pack)
FALLBACK [ATMOS_FX]: Cross-pack selection - atmos.wav (penalty: 0.4, different pack lineage)
Configuration
No manual configuration required. The feature automatically:
- Activates for
atmos_fxandvocal_shotroles only - Uses existing palette data from PackBrain
- Logs all selections for monitoring
Backward Compatibility
- Fully backward compatible
- Existing tracks without these roles are unaffected
- No changes to other roles or selection logic
- Palette system remains unchanged
Benefits
- Coherence: Samples from same pack share sonic characteristics
- Predictability: Consistent behavior across generations
- Fallback Safety: System continues to work even with limited libraries
- Transparency: Clear logging shows which samples were selected from where
Future Enhancements
Potential improvements:
- Add user-configurable strictness level
- Expand to additional roles (e.g.,
fx,perc_loop) - Add same-pack tracking to diversity memory to avoid repetition within pack