abledecoder. ableton encrypted aif outside of ableton

Discussion in 'Mac / Hackintosh' started by lisalis, Jun 13, 2023.

  1. Lepow

    Lepow Producer

    Joined:
    Sep 12, 2015
    Messages:
    214
    Likes Received:
    119
    Location:
    RJ-BSB
    yes, to give credit to the author.

    Wherever you are, ./ refers to that spot. so you want to be at root level where your compiled bin are, then ./compiledprogramname if you use the other \ slash if linux or mac it wont work.
     
  2. ErnieBert

    ErnieBert Newbie

    Joined:
    Feb 11, 2025
    Messages:
    11
    Likes Received:
    1
    abledecoder. ableton encrypted aif outside of ableton

    That's great, but from what source???
     
  3. lisalis

    lisalis Noisemaker

    Joined:
    Feb 7, 2021
    Messages:
    73
    Likes Received:
    3
  4. vesting35

    vesting35 Newbie

    Joined:
    Mar 21, 2025
    Messages:
    1
    Likes Received:
    0
    For someone who wants to crack the Pack from the Ableton site, replacing original .aif samples with decoded .aif samples wasn't enough. The .adg and .alc(MIDI clips) can still complain about missing file errors.

    You also need to replace some strings in the .adg and .alc files.
    The .adg and .alc files are zip-compressed XML files, all these XML files contain a unique ID related to the Pack and file checksum of the original .aif samples, you have to replace it to get the decoded samples to work properly in a licensed Ableton Live.

    The unique ID of the Pack is written in the file `/path/to/Some Pack/Ableton Folder Info/Properties.cfg` (reference: https://audiosex.pro/threads/how-to-create-your-own-alp-files.78881/#post-828162)

    Code:
    String PackUniqueID = "www.ableton.com/256";
    
    you need to replace the number `256` with a bigger number, from my experience, a 5-digits number would be fine,

    Code:
    String PackUniqueID = "www.ableton.com/25612";
    
    and some XML attributes need to be replaced in every .adg file and .alc,

    Code:
    <LivePackId Value="www.ableton.com/256" />
    <OriginalFileSize Value="12345" />
    <OriginalCrc Value="67890" />
    
    replace it to,

    Code:
    <LivePackId Value="www.ableton.com/25612" />
    <OriginalFileSize Value="0" />
    <OriginalCrc Value="0" />
    
    Do it to all .adg and .alc files, now the presets and clips will load normally in a licensed Ableton Live.

    I wrote a script to do that, it works seamlessly on macOS.

    1. use the `rabledecoder` from https://github.com/motabass/abledecoder to decode all samples in the Pack and replace the original samples in the Pack.
    2. save the code below as `fix_ableton_pack.sh`
    3. open the terminal and run `./fix_ableton_pack.sh ~/Music/Ableton/Factory Packs/SomePack 23456`. `~/Music/Ableton/Factory Packs/SomePack` is the path of the Pack you want to crack, 23456 is just a random number.

    Now you can enjoy the cracked Pack in a licensed Ableton Live. The only downside is now the size of Pack will be increased because all the .adg and .alc files are uncompressed.

    Code:
    #!/bin/bash
    
    # Check if the correct number of arguments is provided
    if [ "$#" -ne 2 ]; then
      echo "Usage: $0 <folder_path> <new_live_pack_id_number>"
      exit 1
    fi
    
    # Assign the command-line arguments to variables
    FOLDER="$1"
    NEW_LIVE_PACK_ID_NUMBER="$2"
    
    # Check if the provided folder exists and is a directory
    if [ ! -d "$FOLDER" ]; then
      echo "Error: Folder '$FOLDER' does not exist or is not a directory."
      exit 1
    fi
    
    # Construct the path to the Properties.cfg file
    properties_cfg_path="$FOLDER/Ableton Folder Info/Properties.cfg"
    
    # Check if the Properties.cfg file exists
    if [ -f "$properties_cfg_path" ]; then
      echo "Processing metadata file: $properties_cfg_path"
    
      # Attempt to read the old PackUniqueID from Properties.cfg
      OLD_LIVE_PACK_ID_NUMBER=$(grep 'String PackUniqueID' "$properties_cfg_path" | sed -E 's/.*\/([0-9]+)".*/\1/')
      if [ -z "$OLD_LIVE_PACK_ID_NUMBER" ]; then
        echo "Error: Could not extract old PackUniqueID from '$properties_cfg_path'."
        exit 1
      fi
    
      echo "Found old PackUniqueID number: $OLD_LIVE_PACK_ID_NUMBER"
    
      # Replace PackUniqueID in Properties.cfg
      OLD_PACK_UNIQUE_ID_PATTERN="String PackUniqueID = \"www.ableton.com/${OLD_LIVE_PACK_ID_NUMBER}\";"
      NEW_PACK_UNIQUE_ID_PATTERN="String PackUniqueID = \"www.ableton.com/${NEW_LIVE_PACK_ID_NUMBER}\";"
      sed -i '' "s#${OLD_PACK_UNIQUE_ID_PATTERN}#${NEW_PACK_UNIQUE_ID_PATTERN}#g" "$properties_cfg_path"
    else
      echo "Warning: Metadata file '$properties_cfg_path' not found."
    fi
    
    # Recursively find all .adg, .alc and .als files within the specified folder and its subdirectories
    find "$FOLDER" \( -iname "*.adg" -o -iname "*.alc" -o -iname "*.als" \) -print0 | while IFS= read -r -d $'\0' file; do
      echo "Processing file: $file"
    
      # Determine the suffix of the file
      suffix="${file##*.}"
      base_name="${file%.*}"
    
      # Construct the temporary uncompressed filename
      uncompressed_file="${base_name}"
    
      # Uncompress the file based on its suffix
      gzip -d -S ".$suffix" "$file"
    
      if [ -f "$uncompressed_file" ]; then
        echo "Uncompressed to: $uncompressed_file"
    
        # Replace LivePackId attribute using parameters
        OLD_LIVE_PACK_ID_PATTERN="<LivePackId Value=\"www.ableton.com/${OLD_LIVE_PACK_ID_NUMBER}\" />"
        NEW_LIVE_PACK_ID_PATTERN="<LivePackId Value=\"www.ableton.com/${NEW_LIVE_PACK_ID_NUMBER}\" />"
        sed -i '' "s#${OLD_LIVE_PACK_ID_PATTERN}#${NEW_LIVE_PACK_ID_PATTERN}#g" "$uncompressed_file"
    
        # Replace OriginalFileSize attribute (match any number)
        sed -i '' 's#<OriginalFileSize Value="*" />#<OriginalFileSize Value="0" />#g' "$uncompressed_file"
    
        # Replace OriginalCrc attribute (match any number)
        sed -i '' 's#<OriginalCrc Value="*" />#<OriginalCrc Value="0" />#g' "$uncompressed_file"
    
        # Compress the modified XML file back to the original extension
        echo "Compressing back to: $file"
        gzip -9 "$uncompressed_file" -S ".$suffix"
      else
        echo "Error: Could not uncompress $file"
      fi
    done
    
    echo "Finished processing all .adg, .alc and .als files and metadata."
    
    
     
    Last edited: Mar 22, 2025
    • Interesting Interesting x 1
    • List
Loading...
Similar Threads - abledecoder ableton encrypted Forum Date
(SOLVED) (MAC) Blackhole/Loopback - Ableton no Input Software Apr 10, 2025
FS:Ableton Live 11 Suite Education - $150 Selling / Buying Apr 9, 2025
Are cracked ableton and m4l slower ? Live Apr 3, 2025
What percentage of Ableton Live users do you think pirated it? Live Mar 14, 2025
Ableton announes Live 12.2 but no ARA Live Mar 12, 2025
Loading...