Initial commit

This commit is contained in:
JorySeverijnse 2026-01-19 11:34:56 +01:00
commit bffebe4d1c
10 changed files with 1935 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
backup/

1
.python-version Normal file
View File

@ -0,0 +1 @@
3.13.3

Binary file not shown.

Binary file not shown.

501
ambient_test_mix.json Normal file
View File

@ -0,0 +1,501 @@
{
"settings": {
"output_filename": "/mnt/opslag/ambient_test_mix_final.flac",
"default_crossfade_duration": "0:00.00",
"pre_mix_target_dbfs": -12.0,
"final_mix_target_dbfs": -1.0
},
"tracks": [
{
"song_path": "/mnt/raid_storage/Music/Brian Eno/ Discreet Music [164531] [1975]/01 - Brian Eno - Discreet Music (Remastered 2004).flac",
"crossfade_duration": "0:00",
"crossfade_start": "0:00",
"no_tempo_adjust": true,
"fade_power": 2.0
},
{
"song_path": "/mnt/raid_storage/Music/Shanti Celeste/ Tangerine [120578211] [2019]/01 - Shanti Celeste - Sun Notification.flac",
"crossfade_duration": "0:11.13",
"crossfade_start": "29:14.55",
"start_offset": "0:38.64",
"no_tempo_adjust": true,
"fade_power": 1.0
},
{
"song_path": "/mnt/raid_storage/Music/Aphex Twin/ Selected Ambient Works Volume II (Expanded Edition [366456437] [1994]/01 - Aphex Twin - #1.flac",
"crossfade_duration": "0:10.18",
"crossfade_start": "4:58.04",
"start_offset": "0:14.84",
"no_tempo_adjust": true,
"fade_power": 1.0
},
{
"song_path": "/mnt/raid_storage/Music/Aphex Twin/ Selected Ambient Works Volume II (Expanded Edition [366456437] [1994]/19 - Aphex Twin - #19.flac",
"crossfade_duration": "0:27.93",
"crossfade_start": "6:41.57",
"start_offset": "0:12.73",
"no_tempo_adjust": true,
"fade_power": 1.0
},
{
"song_path": "/mnt/raid_storage/Music/Aphex Twin/ Selected Ambient Works Volume II (Expanded Edition [366456437] [1994]/07 - Aphex Twin - #7.flac",
"crossfade_duration": "0:38.65",
"crossfade_start": "9:20.62",
"start_offset": "0:00.00",
"no_tempo_adjust": true,
"fade_power": 1.0
},
{
"song_path": "/mnt/raid_storage/Music/Brian Eno/ Reflection [272550958] [2017]/01 - Brian Eno - Reflection.flac",
"crossfade_duration": "0:17.25",
"crossfade_start": "8:18.48",
"start_offset": "0:00.00",
"no_tempo_adjust": true,
"fade_power": 1.0
},
{
"song_path": "/mnt/raid_storage/Music/Steve Roach/ Structures From Silence [333370155] [1984]/03 - Steve Roach - Structures from Silence.flac",
"crossfade_duration": "1:14.72",
"crossfade_start": "60:41.78",
"start_offset": "1:16.78",
"no_tempo_adjust": true,
"fade_power": 1.0
},
{
"song_path": "/mnt/raid_storage/Music/Aphex Twin/ Selected Ambient Works Volume II (Expanded Edition [366456437] [1994]/03 - Aphex Twin - #3.flac",
"crossfade_duration": "0:42.00",
"crossfade_start": "27:21.15",
"start_offset": "0:00.72",
"no_tempo_adjust": true,
"fade_power": 1.0
},
{
"song_path": "/mnt/raid_storage/Music/CD 02/Brian Eno - Neroli - 01 - New Space Music.flac",
"crossfade_duration": "0:20.42",
"crossfade_start": "7:09.93",
"start_offset": "0:24.66",
"no_tempo_adjust": true,
"fade_power": 1.0
},
{
"song_path": "/mnt/raid_storage/Music/Krxziol/ The feeling of a dark cold winter outside [281504034] [2022]/01 - Krxziol - The feeling of a dark cold winter outside.flac",
"crossfade_duration": "0:30.02",
"crossfade_start": "49:27.22",
"start_offset": "0:16.5",
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/Tangerine Dream/ Rubycon (Deluxe Version) [110765710] [1975]/01 - Tangerine Dream - Rubycon (Pt. 1 - Remastered 2018).flac",
"crossfade_duration": "0:24.95",
"crossfade_start": "18:48",
"start_offset": "6:52",
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/Klaus Schulze/ Timewind [3229881] [1975]/01 - Klaus Schulze - Bayreuth Return.flac",
"crossfade_duration": "0:26",
"crossfade_start": "15:38.87",
"start_offset": "0:27.29",
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/Klaus Schulze/ Mirage (Remastered 2017) [82235529] [1977]/02 - Klaus Schulze - Crystal Lake.flac",
"crossfade_duration": "1:12.87",
"crossfade_start": "22:57.39",
"start_offset": "0:21.67",
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/Pauline Anna Strom/ Trans-Millenia Music [79870512] [2017]/05 - Pauline Anna Strom - Energies.flac",
"crossfade_duration": "0:12.90",
"crossfade_start": "17:25.48",
"start_offset": "0:03.30",
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/Art Of Noise/[M] The Ambient Collection [46952148] [1990]/06 - Art Of Noise - Camilla (Remixed by Youth).flac",
"crossfade_duration": "0:33.49",
"crossfade_start": "05:21.06",
"start_offset": "0:03.09",
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/Klaus Schulze/ Kontinuum [380019868] [2007]/01 - Klaus Schulze - Sequencer (from 70 to 07).flac",
"crossfade_duration": "0:11.10",
"crossfade_start": "07:28.27",
"start_offset": "0:10.57",
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/Astral Pilot, Sven Väth/ Electro Acupuncture [63331511] [1995]/06 - Astral Pilot, Sven Väth - The Day After.flac",
"crossfade_duration": "0:10.38",
"crossfade_start": "19:47.06",
"start_offset": "0:00.00",
"tempo_multiplier": 1.0,
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/Biosphere/ Cirque [4186861] [2000]/06 - Biosphere - When I Leave.flac",
"crossfade_duration": "0:02.05",
"crossfade_start": "20:47.80",
"start_offset": "0:48.07",
"tempo_multiplier": 1.0,
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/Primal Code/Primal Code - Caimano Tribe (2019 ep, XW)/04 - Primal Code - Conjuration.flac",
"crossfade_duration": "0:04.28",
"crossfade_start": "04:43.96",
"start_offset": "0:50.75",
"tempo_multiplier": 1.0,
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/Primal Code/La Via della Seta [94401315] [2018]/07 - Primal Code - Magellano.flac",
"crossfade_duration": "0:02.28",
"crossfade_start": "05:25.09",
"start_offset": "0:25.30",
"tempo_multiplier": 1.0,
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/04 Kollektiv Turmstrasse - Ordinary (Lake People's Circle Motive remix).flac",
"crossfade_duration": "0:30.37",
"crossfade_start": "03:32.75",
"start_offset": "0:00.00",
"tempo_multiplier": 1.0,
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/Christian Löffler/York [266760278] [2015]/03 - Christian Löffler - Nordkap (Original Mix).flac",
"crossfade_duration": "0:03.97",
"crossfade_start": "04:57.61",
"start_offset": "0:44.21",
"tempo_multiplier": 1.0,
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/Christian Löffler/Mare [88102248] [2016]/06 - Christian Löffler - Lid.flac",
"crossfade_duration": "0:20.05",
"crossfade_start": "06:17.09",
"start_offset": "0:00.00",
"tempo_multiplier": 1.0,
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/Various Artists/ Naba VA 002 [103500941] [2019]/02 - Münch - Note (Original Mix).flac",
"crossfade_start": "2:40.18",
"crossfade_duration": "2:24.00",
"fade_in_duration": "0:20.00",
"fade_in_power": 1.0,
"fade_out_power": 0.0,
"no_tempo_adjust": true,
"eq_filters": [
{
"type": "high_pass",
"cutoff_hz": 80,
"start_time": "7:21.99",
"end_time": "7:51.99"
},
{
"type": "high_pass",
"cutoff_hz": 120,
"start_time": "7:51.99",
"end_time": "8:21.99"
},
{
"type": "high_pass",
"cutoff_hz": 180,
"start_time": "8:21.99",
"end_time": "8:51.99"
},
{
"type": "high_pass",
"cutoff_hz": 250,
"start_time": "8:51.99",
"end_time": "9:21.99"
}
]
},
{
"song_path": "/mnt/raid_storage/Music/Christian Löffler/A Forest [88101930] [2012]/03 - Christian Löffler - Eleven.flac",
"crossfade_start": "5:36.00",
"crossfade_duration": "10:00.00",
"fade_in_duration": "0:15.00",
"fade_power": 0.0,
"no_tempo_adjust": true,
"eq_filters": [
{
"type": "high_pass",
"cutoff_hz": 250,
"start_time": "0:00.00",
"end_time": "0:30.00"
},
{
"type": "high_pass",
"cutoff_hz": 180,
"start_time": "0:30.00",
"end_time": "1:00.00"
},
{
"type": "high_pass",
"cutoff_hz": 120,
"start_time": "1:00.00",
"end_time": "1:30.00"
},
{
"type": "high_pass",
"cutoff_hz": 80,
"start_time": "1:30.00",
"end_time": "2:00.00"
}
]
},
{
"song_path": "/mnt/raid_storage/Music/Christian Löffler/Young Alaska [88102745] [2014]/04 - Christian Löffler - Beirut.flac",
"start_offset": "0:04.56",
"crossfade_start": "5:36.00",
"crossfade_duration": "1:00.00",
"fade_in_duration": "0:10.00",
"fade_power": 1.0,
"fade_out_power": 0.0,
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/Kiasmos/Kiasmos [103318515] [2014]/03 - Kiasmos - Looped.flac",
"crossfade_start": "6:48.56",
"crossfade_duration": "0:47.75",
"fade_in_duration": "0:05.00",
"fade_in_power": 1.0,
"fade_out_power": 0.0,
"no_tempo_adjust": true,
"loops": [
{
"start_time": "5:46.83",
"end_time": "5:58.78",
"count": 1
}
]
},
{
"song_path": "/mnt/raid_storage/Music/Kiasmos/Blurred [103386930] [2017]/03 - Kiasmos - Jarred.flac",
"crossfade_start": "5:24.04",
"start_offset": "0:00.17",
"crossfade_duration": "1:30.00",
"fade_in_duration": "0:05.00",
"fade_power": 1.0,
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/Marcu Rares/ Soul Bonding [175595586] [2021]/01 - Marcu Rares - Soul Bonding.flac",
"crossfade_start": "5:00.17",
"start_offset": "4:56.13",
"crossfade_duration": "0:35.33",
"fade_in_duration": "0:30.00",
"fade_power": 1.0,
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/Rone/Mirapolis [78562101] [2017]/11 - Rone - Mirapolis.flac",
"crossfade_start": "12:35.64",
"start_offset": "0:02.81",
"crossfade_duration": "2:00.00",
"fade_in_duration": "0:45.00",
"fade_in_power": 1.0,
"fade_out_power": 0.0,
"no_tempo_adjust": false,
"apply_pre_mix_normalization": false,
"target_dBFS": -18.0
},
{
"song_path": "/mnt/raid_storage/Music/Various Artists/ Grand Cru 2008 [18274893] [2008]/02 - Wareika - Fantasy (Wareika Remix).flac",
"crossfade_start": "4:22.32",
"start_offset": "0:00.37",
"crossfade_duration": "2:00.00",
"fade_in_duration": "2:00.00",
"fade_in_power": 1.0,
"fade_out_power": 0.0,
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/Daso/ All My People [86109655] [2012]/02 - Daso - Dan Lyke.flac",
"crossfade_start": "5:35.37",
"start_offset": "0:00.24",
"crossfade_duration": "0:35.22",
"fade_in_duration": "0:35.22",
"fade_in_power": 0.0,
"fade_out_power": 1.0,
"fade_out_delay": "0:25.22",
"no_tempo_adjust": false,
"tempo_ramps": [
{
"start_time": "3:32.61",
"end_time": "4:44.74",
"end_tempo":121.0
}
]
},
{
"song_path": "/mnt/raid_storage/Music/Christian Löffler/A Forest [88101930] [2012]/07 - Christian Löffler - Blind.flac",
"crossfade_start": "6:44.37",
"start_offset": "0:23.80",
"crossfade_duration": "0:43.65",
"fade_in_duration": "0:09.92",
"fade_in_power": 1.0,
"fade_out_power": 0.0,
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/Stephan Bodzin/ Powers of Ten [45241387] [2015]/01 - Stephan Bodzin - Singularity.flac",
"crossfade_start": "4:33.72",
"start_offset": "0:55.53",
"crossfade_duration": "2:11.90",
"fade_in_duration": "0:07.00",
"fade_in_power": 1.0,
"fade_out_power": 0.0,
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/Daniel Avery/Drone Logic [43421119] [2013]/07 - Daniel Avery - Need Electric (Album Version).flac",
"crossfade_start": "5:17.35",
"start_offset": "0:00.17",
"crossfade_duration": "1:43.95",
"fade_in_duration": "0:55.04",
"fade_in_power": 1.0,
"fade_out_power": 0.0,
"no_tempo_adjust": false
},
{
"song_path": "/mnt/raid_storage/Music/Sascha Funke/ Mango [87379506] [2008]/02 - Sascha Funke - We Are Facing the Sun.flac",
"crossfade_start": "3:24.51",
"start_offset": "0:00.12",
"crossfade_duration": "0:31.23",
"fade_in_duration": "0:07.63",
"fade_in_power": 1.0,
"fade_out_power": 0.0,
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/Bicep/Just EP [184785872] [2015]/03 - Bicep - Back 2 U.flac",
"crossfade_start": "6:17.58",
"start_offset": "0:00.01",
"crossfade_duration": "0:52.63",
"fade_in_duration": "0:31.48",
"fade_in_power": 1.0,
"fade_out_power": 0.0,
"no_tempo_adjust": true,
"band_gains": [
{
"start_time": "7:16.73",
"end_time": "7:24.60",
"high_gain_db": -24.0
}
]
},
{
"song_path": "/mnt/raid_storage/Music/Various Artists/ HDC003 [352797419] [2016]/02 - Baltra - Tears Drop.flac",
"crossfade_start": "6:17.71",
"start_offset": "0:00.97",
"crossfade_duration": "1:26.55",
"fade_in_duration": "1:02.95",
"fade_in_power": 1.0,
"fade_out_power": 0.0,
"no_tempo_adjust": true,
"band_gains": [
{
"start_time": "5:59.01",
"end_time": "6:18.68",
"low_gain_db": -24.0
}
]
},
{
"song_path": "/mnt/raid_storage/Music/Various Artists/ Memories, Pt. I [139085472] [2017]/05 - Thomas Wood - Cave.flac",
"crossfade_start": "5:47.20",
"start_offset": "0:00.01",
"crossfade_duration": "0:49.18",
"fade_in_duration": "0:14.76",
"fade_in_power": 1.0,
"fade_out_power": 0.0,
"fade_out_delay": "0:30.00",
"no_tempo_adjust": false,
"loops": [
{
"start_time": "5:33.68",
"end_time": "5:37.61",
"count": 28
}
]
},
{
"song_path": "/mnt/raid_storage/Music/Bicep/Bicep [75160673] [2017]/12 - Bicep - Aura.flac",
"crossfade_start": "4:50.93",
"start_offset": "1:02.44",
"crossfade_duration": "3:59.23",
"fade_in_duration": "0:31.44",
"fade_in_power": 1.0,
"fade_out_power": 1.0,
"no_tempo_adjust": false,
"tempo_ramps": [
{
"start_time": "3:38.54",
"end_time": "4:01.96",
"end_tempo":123.0
}
]
},
{
"song_path": "/mnt/raid_storage/Music/Christian Löffler/A Forest [88101930] [2012]/11 - Christian Löffler - A Hundred Lights.flac",
"crossfade_start": "4:01.96",
"start_offset": "0:00.19",
"crossfade_duration": "1:13.17",
"fade_in_duration": "0:46.83",
"fade_in_power": 1.0,
"fade_out_power": 1.0,
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/Robag Wruhme/ Olgamikks [16676895] [2012]/10 - Extrawelt - Neuland (Robags Rexmow 001).flac",
"crossfade_start": "6:02.63",
"start_offset": "0:00.00",
"crossfade_duration": "0:55.68",
"fade_in_duration": "0:31.22",
"fade_in_power": 1.0,
"fade_out_power": 0.0,
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/Leon Vynehall/ Music for the Uninvited [168277757] [2014]/02 - Leon Vynehall - Goodthing.flac",
"crossfade_start": "5:12.19",
"start_offset": "0:23.45",
"crossfade_duration": "0:42.93",
"fade_in_duration": "0:10.73",
"fade_in_power": 1.0,
"fade_out_power": 0.0,
"no_tempo_adjust": false,
"tempo_ramps": [
{
"start_time": "2:08.26",
"end_time": "4:01.96",
"end_tempo":124
}
]
},
{
"song_path": "/mnt/raid_storage/Music/DJ Boring/ Sunday Avenue [284620418] [2017]/02 - DJ Boring - 6 AM Mimosa.flac",
"crossfade_start": "5:06.03",
"start_offset": "0:00.00",
"crossfade_duration": "0:42.93",
"fade_in_duration": "0:12.10",
"fade_in_power": 1.0,
"fade_out_power": 0.0,
"no_tempo_adjust": true
}
]
}

806
auto_dj_mix.py Normal file
View File

@ -0,0 +1,806 @@
import librosa
import numpy as np
import soundfile as sf
from pydub import AudioSegment
import pyrubberband
import os
from tqdm import tqdm
import logging
import json
import argparse
import subprocess
from multiprocessing import Pool, cpu_count, Manager
import sys
import math
import tempfile
import copy
def apply_ffmpeg_effect(segment, effect_filter_str):
"""Applies an FFmpeg audio filter to an AudioSegment using unique temp files."""
if len(segment) <= 0:
return AudioSegment.empty()
if len(segment) < 10:
segment = segment + AudioSegment.silent(duration=10)
with tempfile.NamedTemporaryFile(suffix='.wav', delete=False) as tmp_in:
tmp_in_path = tmp_in.name
with tempfile.NamedTemporaryFile(suffix='.wav', delete=False) as tmp_out:
tmp_out_path = tmp_out.name
try:
segment.export(tmp_in_path, format="wav")
command = [
"ffmpeg",
"-i", tmp_in_path,
"-af", effect_filter_str,
"-y",
tmp_out_path
]
subprocess.run(command, check=True, capture_output=True, text=True)
processed_segment = AudioSegment.from_file(tmp_out_path)
except subprocess.CalledProcessError as e:
logging.error(f"FFmpeg effect failed! Filter: {effect_filter_str}")
logging.error(f"FFmpeg stderr:\n{e.stderr}")
processed_segment = segment
except Exception as e:
logging.error(f"Unexpected error in apply_ffmpeg_effect: {e}")
processed_segment = segment
finally:
for path in (tmp_in_path, tmp_out_path):
try:
if os.path.exists(path):
os.remove(path)
except:
pass
return processed_segment
def load_tempo_cache(cache_path='tempo_cache.json'):
if os.path.exists(cache_path):
with open(cache_path, 'r') as f:
return json.load(f)
return {}
def save_tempo_cache(cache, cache_path='tempo_cache.json'):
with open(cache_path, 'w') as f:
json.dump(cache, f, indent=4)
def setup_logging(level=logging.INFO):
logging.basicConfig(level=level, format="%(asctime)s - %(levelname)s - %(message)s")
def normalize_audio(audio_segment, target_dbfs=-1.0):
peak_dbfs = audio_segment.max_dBFS
change_in_dbfs = target_dbfs - peak_dbfs
return audio_segment.apply_gain(change_in_dbfs)
def apply_custom_fade(segment, fade_type, duration, fade_power):
if duration == 0 or len(segment) == 0 or fade_power == 0:
return segment
num_samples = int(segment.frame_count())
if num_samples == 0: return segment
t = np.linspace(0.0, 1.0, num_samples)
if fade_type == 'in':
gain_curve = t ** fade_power
elif fade_type == 'out':
gain_curve = (1.0 - t) ** fade_power
else:
return segment
samples = np.array(segment.get_array_of_samples()).astype(np.float64)
samples = samples.reshape((-1, segment.channels))
samples[:] *= gain_curve[:, np.newaxis]
faded_samples = samples.flatten().astype(segment.array_type)
return AudioSegment(data=faded_samples.tobytes(), sample_width=segment.sample_width, frame_rate=segment.frame_rate, channels=segment.channels)
def parse_time(tstr):
parts = str(tstr).split(':')
parts = [float(p) for p in parts]
if len(parts) == 3:
h, m, s = parts
elif len(parts) == 2:
h = 0
m, s = parts
else:
raise ValueError("Invalid time format")
return int((h*3600 + m*60 + s)*1000)
def add_flac_chapters(file_path, chapters):
logger = logging.getLogger(__name__)
logger.info(f"Adding {len(chapters)} chapter markers to {file_path}")
for i, (start_time_ms, title) in enumerate(chapters):
ms = start_time_ms % 1000
secs = (start_time_ms // 1000) % 60
mins = (start_time_ms // (1000 * 60)) % 60
hours = (start_time_ms // (1000 * 3600))
start_time_str = f"{hours:02}:{mins:02}:{secs:02}.{ms:03}"
command = [
"metaflac",
f"--set-tag=CHAPTER{i+1:02}={start_time_str}",
f"--set-tag=CHAPTER{i+1:02}NAME={title}",
file_path
]
try:
subprocess.run(command, check=True, capture_output=True, text=True)
except (subprocess.CalledProcessError, FileNotFoundError):
logger.error(f"Error running metaflac for chapter {i+1}.")
break
def get_reliable_tempo(audio, sample_rate, song_path, tempo_cache, default_tempo=120.0):
logger = logging.getLogger(__name__)
if song_path in tempo_cache:
logger.info(f"Using cached tempo for {song_path}: {tempo_cache[song_path]}")
return tempo_cache[song_path]
try:
tempo = librosa.feature.tempo(y=audio, sr=sample_rate)[0]
if not np.isfinite(tempo) or tempo <= 0:
tempo = default_tempo
tempo_cache[song_path] = float(tempo)
logger.info(f"Detected tempo for {song_path}: {tempo}")
return float(tempo)
except Exception as e:
logger.warning(f"Tempo detection failed for {song_path}: {e}. Using default tempo {default_tempo}")
return default_tempo
def get_normalized_ramps(config, start_offset_ms):
"""Extracts ramps from config and adjusts start/end times by subtracting the start_offset."""
raw_ramps = config.get("tempo_ramps", config.get("temp_ramps", []))
if not raw_ramps:
return []
normalized_ramps = []
for ramp in raw_ramps:
new_ramp = copy.deepcopy(ramp)
s_time = parse_time(ramp["start_time"])
e_time = parse_time(ramp["end_time"])
# Shift times to be relative to the trimmed audio start
adj_s_time = max(0, s_time - start_offset_ms)
adj_e_time = max(0, e_time - start_offset_ms)
new_ramp["start_time_ms"] = adj_s_time
new_ramp["end_time_ms"] = adj_e_time
if adj_e_time > adj_s_time:
normalized_ramps.append(new_ramp)
return sorted(normalized_ramps, key=lambda r: r["start_time_ms"])
def apply_tempo_ramps(y, sr, normalized_ramps, original_tempo, ref_tempo):
logger = logging.getLogger(__name__)
if not normalized_ramps:
return y
# Create paths but don't keep them open
tmp_in = tempfile.NamedTemporaryFile(suffix='.wav', delete=False)
tmp_in_path = tmp_in.name
tmp_in.close()
tmp_out = tempfile.NamedTemporaryFile(suffix='.wav', delete=False)
tmp_out_path = tmp_out.name
tmp_out.close()
tmp_map = tempfile.NamedTemporaryFile(suffix='.txt', delete=False)
tmp_map_path = tmp_map.name
tmp_map.close()
try:
# 1. Write the audio to disk as standard 16-bit PCM WAV
sf.write(tmp_in_path, y, sr, subtype='PCM_16')
# 2. Generate the Time Map
map_points = []
map_points.append(f"0 0\n")
current_sample_in = 0.0
current_sample_out = 0.0
current_tempo = ref_tempo if ref_tempo else original_tempo
CHUNK_SIZE = 1024
total_samples = len(y)
ramps = sorted(normalized_ramps, key=lambda r: r["start_time_ms"])
while current_sample_in < total_samples:
time_ms = (current_sample_in / sr) * 1000.0
instant_tempo = current_tempo
# Find active ramp
for ramp in ramps:
if ramp["start_time_ms"] <= time_ms <= ramp["end_time_ms"]:
ramp_start_tempo = ref_tempo if ref_tempo else original_tempo
for prev_ramp in ramps:
if prev_ramp["end_time_ms"] <= ramp["start_time_ms"]:
ramp_start_tempo = float(prev_ramp["end_tempo"])
dur = ramp["end_time_ms"] - ramp["start_time_ms"]
if dur > 0:
prog = (time_ms - ramp["start_time_ms"]) / dur
instant_tempo = ramp_start_tempo + (float(ramp["end_tempo"]) - ramp_start_tempo) * prog
break
elif time_ms > ramp["end_time_ms"]:
instant_tempo = float(ramp["end_tempo"])
# Calculate stretch ratio
ratio = instant_tempo / original_tempo
# Advance
samples_added = CHUNK_SIZE / ratio
current_sample_in += CHUNK_SIZE
current_sample_out += samples_added
# Only write points that are within the file bounds
if current_sample_in < total_samples:
map_points.append(f"{int(current_sample_in)} {int(current_sample_out)}\n")
# Add the final exact end point to the map to ensure completeness
map_points.append(f"{total_samples} {int(current_sample_out)}\n")
# Write map file
with open(tmp_map_path, 'w') as f:
f.writelines(map_points)
# Calculate total expected duration in seconds for the -D flag
total_duration_sec = current_sample_out / sr
# 3. Run Rubberband CLI
# We use -D to specify the duration (REQUIRED by your version when using --timemap)
# We removed --threading and --precise as they are not supported by your version
# We use -q for quiet mode
command = [
"rubberband",
"--quiet",
"--timemap", tmp_map_path,
"-D", str(total_duration_sec),
tmp_in_path,
tmp_out_path
]
subprocess.run(command, check=True, capture_output=True, text=True)
# 4. Load result
y_processed, _ = sf.read(tmp_out_path, dtype='float32')
# Fix dimensions if mono/stereo mismatch occurs
if y.ndim == 2 and y_processed.ndim == 1:
y_processed = np.column_stack((y_processed, y_processed))
elif y.ndim == 1 and y_processed.ndim == 2:
y_processed = librosa.to_mono(y_processed.T)
return y_processed
except subprocess.CalledProcessError as e:
logger.error("Rubberband CLI failed.")
logger.error(f"Stderr: {e.stderr}")
return y
except Exception as e:
logger.error(f"Map generation failed: {e}")
return y
finally:
for p in [tmp_in_path, tmp_out_path, tmp_map_path]:
if os.path.exists(p):
try:
os.remove(p)
except:
pass
def compute_mapped_time(original_pos_sec, normalized_ramps, original_tempo, ref_tempo, total_original_duration_sec):
"""Computes time in stretched audio using normalized (0-based) ramps."""
if not normalized_ramps and ref_tempo is None:
return original_pos_sec
if not normalized_ramps and ref_tempo is not None:
return original_pos_sec * (original_tempo / ref_tempo)
current_time = 0.0
mapped_time = 0.0
current_tempo = ref_tempo if ref_tempo else original_tempo
for ramp in normalized_ramps:
start = ramp["start_time_ms"] / 1000.0
end = ramp["end_time_ms"] / 1000.0
end_tempo = float(ramp["end_tempo"])
if start < current_time: continue
# Constant segment before ramp
if start > current_time:
seg_dur = min(start, original_pos_sec) - current_time
if seg_dur > 0:
mapped_time += seg_dur * (original_tempo / current_tempo)
current_time += seg_dur
if current_time >= original_pos_sec: return mapped_time
# Ramp segment
ramp_dur = end - start
a = current_tempo
b = (end_tempo - current_tempo) / ramp_dur
u = min(original_pos_sec, end) - start
if u > 0:
if abs(b) < 1e-9:
mapped_time += u * (original_tempo / a)
else:
mapped_time += original_tempo * (math.log(a + b * u) - math.log(a)) / b
current_time += u
if current_time >= original_pos_sec: return mapped_time
current_tempo = end_tempo
current_time = end
# Final constant segment
seg_dur = max(0, original_pos_sec - current_time)
if seg_dur > 0:
mapped_time += seg_dur * (original_tempo / current_tempo)
return mapped_time
def process_song(config, index, tempo_cache, settings, reference_tempo=None, sample_rate=None):
log_messages = []
song_path = config["song_path"]
start_offset = parse_time(config.get("start_offset", "0:00"))
no_tempo_adjust = config.get("no_tempo_adjust", False)
log_messages.append(f"Processing song {index+1}: {song_path}")
try:
audio_segment = AudioSegment.from_file(song_path)
if start_offset > 0:
audio_segment = audio_segment[start_offset:]
# 1. Convert Audio to Arrays for Analysis/Processing EARLY (Needed for Loop Snapping)
full_duration = len(audio_segment)
y_raw = np.array(audio_segment.get_array_of_samples()).astype(np.float32)
y_raw /= (1 << (8 * audio_segment.sample_width - 1))
if audio_segment.channels == 2:
y_stereo = y_raw.reshape((-1, 2))
y_mono = librosa.to_mono(y_stereo.T)
else:
y_mono = y_raw if audio_segment.channels == 1 else librosa.to_mono(y_raw.reshape((-1, audio_segment.channels)).T)
y_stereo = np.column_stack((y_mono, y_mono))
current_sample_rate = audio_segment.frame_rate
if sample_rate is None:
sample_rate = current_sample_rate
# 2. Detect Tempo EARLY
tempo = get_reliable_tempo(y_mono, sample_rate, song_path, tempo_cache)
# --- Apply Loops (With BPM Grid Snapping) ---
if "loops" in config:
# We need to reconstruct audio_segment because loops change the length
# We'll do this by slicing the original audio_segment based on calculated times
new_audio = AudioSegment.empty()
# Sort loops by time to handle them sequentially
loops = sorted(config["loops"], key=lambda x: parse_time(x.get("start_time", "0:00")))
current_pos = 0
for loop in loops:
loop_start_ms = parse_time(loop.get("start_time", "0:00"))
loop_end_ms = parse_time(loop.get("end_time"))
count = int(loop.get("count", 1))
if loop_start_ms >= loop_end_ms: continue
# Add audio BEFORE the loop
if loop_start_ms > current_pos:
new_audio += audio_segment[current_pos:loop_start_ms]
# --- GRID SNAPPING LOGIC ---
# Calculate exact beat duration at this song's tempo
beat_len_ms = (60.0 / tempo) * 1000.0
# How long is the user's manual loop?
user_loop_duration_ms = loop_end_ms - loop_start_ms
# How many beats is that likely to be? (Round to nearest whole beat)
num_beats = round(user_loop_duration_ms / beat_len_ms)
if num_beats == 0: num_beats = 1 # Prevent division by zero for tiny loops
# What is the PERFECT grid length for that many beats?
perfect_duration_ms = num_beats * beat_len_ms
log_messages.append(f"Loop Correction: {user_loop_duration_ms}ms -> {perfect_duration_ms:.2f}ms ({num_beats} beats @ {tempo} BPM)")
# Extract the loop audio
loop_segment = audio_segment[loop_start_ms:loop_end_ms]
# Time-Stretch the loop segment to match perfect_duration_ms exactly
# This ensures 28 loops don't drift by even 1 millisecond.
# Convert loop to numpy for rubberband
l_raw = np.array(loop_segment.get_array_of_samples()).astype(np.float32)
l_raw /= (1 << (8 * loop_segment.sample_width - 1))
if loop_segment.channels == 2:
l_stereo = l_raw.reshape((-1, 2))
else:
l_mono = l_raw
l_stereo = np.column_stack((l_mono, l_mono))
# Stretch Factor
# If user cut is 3.93s and perfect is 3.931s, we stretch by ~1.0002 (imperceptible pitch change)
stretch_ratio = perfect_duration_ms / user_loop_duration_ms
# In rubberband: ratio > 1.0 is shorter/faster. We want longer duration.
# duration_new = duration_old * stretch_rate ?? No.
# pyrubberband time_stretch(y, sr, rate). rate=2.0 makes it half duration.
# We want duration to go from User -> Perfect.
# rate = User / Perfect.
rb_rate = user_loop_duration_ms / perfect_duration_ms
l_stretched_data = pyrubberband.time_stretch(l_stereo, sample_rate, rb_rate)
# Convert back to AudioSegment
# Ensure 16-bit PCM for Pydub compatibility
l_stretched_data_int = (l_stretched_data * (2**15 - 1)).astype(np.int16)
perfect_loop_segment = AudioSegment(
l_stretched_data_int.tobytes(),
frame_rate=sample_rate,
sample_width=2,
channels=2
)
# Append the snapped loop X times
new_audio += (perfect_loop_segment * count)
current_pos = loop_end_ms
# Add remaining audio after the last loop
if current_pos < len(audio_segment):
new_audio += audio_segment[current_pos:]
audio_segment = new_audio
# --- Apply EQ Filters ---
if "eq_filters" in config:
for eq_filter in config["eq_filters"]:
filter_type = eq_filter.get("type")
cutoff_hz = eq_filter.get("cutoff_hz")
start_ms = parse_time(eq_filter.get("start_time", "0:00"))
end_time_str = eq_filter.get("end_time")
end_ms = parse_time(end_time_str) if end_time_str else len(audio_segment)
if not filter_type or not cutoff_hz or start_ms >= end_ms: continue
pre_segment = audio_segment[:start_ms]
segment_to_filter = audio_segment[start_ms:end_ms]
post_segment = audio_segment[end_ms:]
if filter_type == "low_pass":
filtered_slice = segment_to_filter.low_pass_filter(cutoff_hz)
elif filter_type == "high_pass":
filtered_slice = segment_to_filter.high_pass_filter(cutoff_hz)
elif filter_type == "band_pass":
low, high = eq_filter.get("low_cutoff_hz"), eq_filter.get("high_cutoff_hz")
filtered_slice = segment_to_filter.high_pass_filter(low).low_pass_filter(high) if low and high else segment_to_filter
elif filter_type == "band_reject":
low, high = eq_filter.get("low_cutoff_hz"), eq_filter.get("high_cutoff_hz")
filtered_slice = segment_to_filter.low_pass_filter(low).overlay(segment_to_filter.high_pass_filter(high)) if low and high else segment_to_filter
else:
filtered_slice = segment_to_filter
audio_segment = pre_segment + filtered_slice + post_segment
# --- Apply Volume Automation ---
if "volume_automation" in config:
for automation in config["volume_automation"]:
start_ms = parse_time(automation.get("start_time", "0:00"))
end_time_str = automation.get("end_time")
end_ms = parse_time(end_time_str) if end_time_str else len(audio_segment)
gain_db = float(automation.get("gain_db", 0))
if start_ms >= end_ms: continue
pre_segment = audio_segment[:start_ms]
segment_to_automate = audio_segment[start_ms:end_ms]
post_segment = audio_segment[end_ms:]
audio_segment = pre_segment + segment_to_automate.apply_gain(gain_db) + post_segment
# --- Apply Band Gains (With Ramping) ---
if "band_gains" in config:
for band_gain in config["band_gains"]:
start_ms = parse_time(band_gain.get("start_time", "0:00"))
end_time_str = band_gain.get("end_time")
end_ms = parse_time(end_time_str) if end_time_str else len(audio_segment)
target_low_gain_db = float(band_gain.get("low_gain_db", 0))
target_mid_gain_db = float(band_gain.get("mid_gain_db", 0))
target_high_gain_db = float(band_gain.get("high_gain_db", 0))
if start_ms >= end_ms: continue
if target_low_gain_db == 0 and target_mid_gain_db == 0 and target_high_gain_db == 0:
continue
pre_segment = audio_segment[:start_ms]
segment_to_process = audio_segment[start_ms:end_ms]
post_segment = audio_segment[end_ms:]
ramp_duration_ms = len(segment_to_process)
if ramp_duration_ms <= 0: continue
chunk_duration_ms = 250
num_chunks = max(2, int(ramp_duration_ms / chunk_duration_ms))
chunk_duration_ms = ramp_duration_ms / num_chunks
processed_chunks = []
for i in range(num_chunks):
chunk_start_ms = int(i * chunk_duration_ms)
chunk_end_ms = int((i + 1) * chunk_duration_ms)
chunk = segment_to_process[chunk_start_ms:chunk_end_ms]
if len(chunk) == 0: continue
t = (i + 0.5) / num_chunks
low_gain = t * target_low_gain_db
mid_gain = t * target_mid_gain_db
high_gain = t * target_high_gain_db
filter_str = []
if low_gain != 0: filter_str.append(f"bass=g={low_gain}:f=250:w=0.707")
if mid_gain != 0: filter_str.append(f"equalizer=f=1000:t=q:w=1:g={mid_gain}")
if high_gain != 0: filter_str.append(f"treble=g={high_gain}:f=2500:w=0.707")
if filter_str:
processed_chunk = apply_ffmpeg_effect(chunk, ",".join(filter_str))
else:
processed_chunk = chunk
processed_chunks.append(processed_chunk)
processed_segment = AudioSegment.empty()
for chunk in processed_chunks:
processed_segment += chunk
filter_str_post = []
if target_low_gain_db != 0: filter_str_post.append(f"bass=g={target_low_gain_db}:f=250:w=0.707")
if target_mid_gain_db != 0: filter_str_post.append(f"equalizer=f=1000:t=q:w=1:g={target_mid_gain_db}")
if target_high_gain_db != 0: filter_str_post.append(f"treble=g={target_high_gain_db}:f=2500:w=0.707")
if filter_str_post and len(post_segment) > 0:
post_segment = apply_ffmpeg_effect(post_segment, ",".join(filter_str_post))
audio_segment = pre_segment + processed_segment + post_segment
# --- Apply Effects ---
if "effects" in config:
for effect in config["effects"]:
start_ms = parse_time(effect.get("start_time", "0:00"))
end_time_str = effect.get("end_time")
end_ms = parse_time(end_time_str) if end_time_str else len(audio_segment)
effect_type = effect.get("type")
if start_ms >= end_ms: continue
pre_segment = audio_segment[:start_ms]
segment_to_process = audio_segment[start_ms:end_ms]
post_segment = audio_segment[end_ms:]
effect_str = ""
if effect_type == "reverb":
wet = effect.get("wet", 0.4)
effect_str = f"afftfilt=real='hypot(re,im)*cos(random(0))*{wet}+re*(1-{wet})':imag='hypot(re,im)*sin(random(0))*{wet}+im*(1-{wet})'"
elif effect_type == "delay":
delay_ms = effect.get("delay_ms", 500)
effect_str = f"adelay=delays={delay_ms}:all=1"
elif effect_type == "raw_ffmpeg":
effect_str = effect.get("filter_string", "")
if effect_str:
processed_slice = apply_ffmpeg_effect(segment_to_process, effect_str)
audio_segment = pre_segment + processed_slice + post_segment
# Apply pre-mix normalization
pre_mix_target_dbfs = config.get("target_dBFS", settings.get("pre_mix_target_dbfs", -12.0))
if config.get("apply_pre_mix_normalization", True):
audio_segment = normalize_audio(audio_segment, pre_mix_target_dbfs)
full_duration = len(audio_segment)
# Prepare Final Output for Stretch
y_raw = np.array(audio_segment.get_array_of_samples()).astype(np.float32)
y_raw /= (1 << (8 * audio_segment.sample_width - 1))
if audio_segment.channels == 2:
y_stereo = y_raw.reshape((-1, 2))
y_mono = librosa.to_mono(y_stereo.T)
else:
y_mono = y_raw if audio_segment.channels == 1 else librosa.to_mono(y_raw.reshape((-1, audio_segment.channels)).T)
y_stereo = np.column_stack((y_mono, y_mono))
# Tempo Detection (Already done earlier, reusing value)
# Logic for Ramps and Adjustments
normalized_ramps = get_normalized_ramps(config, start_offset)
effective_ref = None if no_tempo_adjust else reference_tempo
final_output_tempo = tempo
stretched_audio = y_stereo
if normalized_ramps:
log_messages.append(f"Applying tempo ramps with initial ref {effective_ref if effective_ref else tempo}")
stretched_audio = apply_tempo_ramps(stretched_audio, sample_rate, normalized_ramps, tempo, effective_ref)
final_output_tempo = float(normalized_ramps[-1]["end_tempo"])
elif index > 0 and not no_tempo_adjust:
stretch_rate = reference_tempo / tempo
stretched_audio = pyrubberband.time_stretch(y_stereo, sample_rate, stretch_rate)
final_output_tempo = reference_tempo
else:
final_output_tempo = tempo
temp_file = f"temp_song{index}.flac"
sf.write(temp_file, stretched_audio, sample_rate)
return temp_file, sample_rate, tempo, full_duration, len(AudioSegment.from_file(temp_file)), log_messages, final_output_tempo, normalized_ramps
except Exception as e:
logging.error(f"Error processing {song_path}: {e}")
return None, None, None, None, None, [f"ERROR: Failed to process {song_path}"], None, []
def mix_songs(playlist_data):
settings = playlist_data["settings"]
song_configs = playlist_data["tracks"]
output_file = settings.get("output_filename", "mix_output.flac")
default_crossfade = settings.get("default_crossfade_duration", "0:10")
final_mix_target_dbfs = settings.get("final_mix_target_dbfs", -1.0)
num_cores = settings.get("num_cores", 0)
logger = logging.getLogger(__name__)
manager = Manager()
tempo_cache = manager.dict(load_tempo_cache())
# --- Processing Phase ---
first_result = process_song(song_configs[0], 0, tempo_cache, settings, None)
if first_result[0] is None: sys.exit(1)
current_chain_tempo = first_result[6]
sample_rate = first_result[1]
processed_configs = [first_result]
for i, config in enumerate(song_configs[1:], 1):
no_adjust = config.get("no_tempo_adjust", False)
ref_tempo = current_chain_tempo if not no_adjust else None
result = process_song(config, i, tempo_cache, settings, ref_tempo, sample_rate)
processed_configs.append(result)
if result[6] is not None:
current_chain_tempo = result[6]
# --- Mixing Phase ---
temp_files = [res[0] for res in processed_configs]
if any(t is None for t in temp_files): sys.exit(1)
current_mix = AudioSegment.from_file(temp_files[0])
chapters = [(0, os.path.basename(song_configs[0]['song_path']))]
song_start_times = [0]
for index, config in enumerate(tqdm(song_configs[1:], desc="Mixing songs", unit="song"), start=1):
prev_song_config = song_configs[index-1]
prev_result = processed_configs[index-1]
prev_song_orig_tempo = prev_result[2]
prev_song_ramps = prev_result[7] # Normalized ramps
if index == 1:
prev_effective_start_tempo = None
else:
p_prev_res = processed_configs[index-2]
p_prev_no_adj = prev_song_config.get("no_tempo_adjust", False)
if p_prev_no_adj:
prev_effective_start_tempo = None
else:
prev_effective_start_tempo = p_prev_res[6]
crossfade_start_str = config.get("crossfade_start")
crossfade_duration = parse_time(config.get("crossfade_duration", default_crossfade))
prev_song_start_offset = parse_time(prev_song_config.get("start_offset", "0:00"))
relative_crossfade_start = parse_time(crossfade_start_str)
original_pos_in_trimmed = max(0, relative_crossfade_start - prev_song_start_offset) / 1000.0
adj_pos_sec = compute_mapped_time(
original_pos_in_trimmed,
prev_song_ramps,
prev_song_orig_tempo,
prev_effective_start_tempo,
prev_result[3] / 1000.0
)
adj_crossfade_in_segment = int(adj_pos_sec * 1000)
next_song_start_time = song_start_times[-1] + adj_crossfade_in_segment
next_song_start_time = max(0, next_song_start_time)
next_song = AudioSegment.from_file(temp_files[index])
fade_in_duration = parse_time(config.get("fade_in_duration")) if config.get("fade_in_duration") else crossfade_duration
fade_out_power = float(prev_song_config.get("fade_out_power", prev_song_config.get("fade_power", 1.0)))
fade_in_power = float(config.get("fade_in_power", config.get("fade_power", 1.0)))
fade_out_delay = parse_time(prev_song_config.get("fade_out_delay", "0:00"))
track1_before_fade = current_mix[:next_song_start_time]
track1_total_overlap = current_mix[next_song_start_time : next_song_start_time + crossfade_duration]
actual_overlap_duration = len(track1_total_overlap)
track1_constant_part = track1_total_overlap[:fade_out_delay]
track1_fade_part = track1_total_overlap[fade_out_delay:]
faded_out_segment = apply_custom_fade(track1_fade_part, 'out', len(track1_fade_part), fade_out_power)
faded_out_part = track1_constant_part + faded_out_segment
track2_overlay_section = next_song[:actual_overlap_duration]
actual_fade_in_duration = min(fade_in_duration, actual_overlap_duration)
track2_fade_in_part = track2_overlay_section[:actual_fade_in_duration]
track2_after_fade_in = track2_overlay_section[actual_fade_in_duration:]
faded_in_part = apply_custom_fade(track2_fade_in_part, 'in', actual_fade_in_duration, fade_in_power)
full_track2_overlay = faded_in_part + track2_after_fade_in
crossfade_result = faded_out_part.overlay(full_track2_overlay)
if crossfade_result.max_dBFS > -0.1:
crossfade_result = normalize_audio(crossfade_result, -0.1)
current_mix = track1_before_fade + crossfade_result + next_song[actual_overlap_duration:]
song_start_times.append(next_song_start_time)
chapters.append((next_song_start_time, os.path.basename(config['song_path'])))
# --- Export ---
logger.info("Exporting raw mix...")
temp_pcm = "temp_raw_mix.raw"
current_mix.export(temp_pcm, format="raw")
temp_raw_file = "temp_raw_mix.flac"
bits = current_mix.sample_width * 8
pcm_format = f"s{bits}le"
subprocess.run(["ffmpeg", "-f", pcm_format, "-ar", str(current_mix.frame_rate), "-ac", str(current_mix.channels), "-i", temp_pcm, "-c:a", "flac", "-y", temp_raw_file], check=True, capture_output=True)
logger.info("Normalizing...")
subprocess.run(["ffmpeg", "-i", temp_raw_file, "-af", f"loudnorm=I=-14:LRA=7:TP={final_mix_target_dbfs}", "-y", output_file], check=True, capture_output=True)
for f in [temp_pcm, temp_raw_file] + temp_files:
if os.path.exists(f): os.remove(f)
add_flac_chapters(output_file, chapters)
save_tempo_cache(tempo_cache.copy())
return output_file, len(current_mix), current_chain_tempo
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--playlist", type=str, default="ambient_mix_settings.json")
parser.add_argument("--debug", action="store_true")
parser.add_argument("--test-last-two", action="store_true")
parser.add_argument("--tracks", type=str)
args = parser.parse_args()
setup_logging(level=logging.DEBUG if args.debug else logging.INFO)
logger = logging.getLogger(__name__)
with open(args.playlist, 'r') as f:
playlist_data = json.load(f)
if args.tracks:
try:
track_numbers = [int(t.strip()) for t in args.tracks.split(',')]
original_tracks = playlist_data['tracks']
playlist_data['tracks'] = [original_tracks[i-1] for i in track_numbers if 0 < i <= len(original_tracks)]
except ValueError:
logger.error("Invalid format for --tracks.")
sys.exit(1)
elif args.test_last_two:
playlist_data['tracks'] = playlist_data['tracks'][-2:]
try:
output_file, final_duration, ref_tempo = mix_songs(playlist_data)
print(f"\nSuccess! Output: {output_file}")
except Exception as e:
logging.error(f"Error: {e}", exc_info=True)

341
dj_mix_playlist.csv Normal file
View File

@ -0,0 +1,341 @@
track_path,genre,tempo,camelot_key,category
Barker/ Utility [113541198] [2019]/07 - Barker - Utility.flac,Trance / IDM / Ambient,70.02409362792969,10A,Ambient
"Plastikman, Richie Hawtin/Artifakts (BC) [137659864] [1998]/01 - Plastikman, Richie Hawtin - Korridor.flac",Ambient Techno / Minimal Techno,96.50098419189453,4A,Ambient
Dead Can Dance/ The Serpent's Egg (Remastered) [2210769] [1988]/04 - Dead Can Dance - The Writing on My Father's Hand (Remastered).flac,Ethereal Wave / Neoclassical Darkwave,105.17031860351562,4A,Ambient
Like weather (2020 remaster) [WEB FLAC]/03 Leila - Underwaters (One for Keni).flac,IDM / Ambient,113.99656677246094,,Ambient
Andy Stott/ Faith in Strangers [176029639] [2014]/01 - Andy Stott - Time Away.flac,Ambient / Deconstructed Club,114.11782836914062,7B,Ambient
Ben Buitendijk - Transcended Being EP (2017) [48521112]/02. Ben Buitendijk - Blank Metal.flac,Ambient Techno,116.9906005859375,10A,Ambient
Dark Sky/ Othona [199635044] [2017]/02 - Dark Sky - Domes.flac,Ambient / Electronic,119.95415496826172,,Ambient
Four Tet/Pink [79549403] [2012]/07 - Four Tet - Peace for Earth.flac,Ambient / Downtempo,120.70010375976562,,Ambient
Linkwood/ Expressions [126108159] [2015]/12 - Linkwood - Love Lost.flac,Ambient / Deep House,122.46846008300781,9B,Ambient
Dead Can Dance/ The Serpent's Egg (Remastered) [2210769] [1988]/01 - Dead Can Dance - The Host of Seraphim (Remastered).flac,Ethereal Wave / Neoclassical Darkwave,122.8890151977539,4A,Ambient
Evigt Mörker/ Drömsyn [403208144] [2016]/01 - Evigt Mörker - Drömsyn.flac,Ambient Techno,123.93344116210938,4A,Ambient
Dark Sky/ Othona [199635044] [2017]/08 - Dark Sky - The Walker.flac,Ambient / Electronic,131.04214477539062,8A,Ambient
Twin Peaks/ Soundtrack From Twin Peaks [4625718] [1990]/01 - Twin Peaks Soundtrack - Twin Peaks Theme (Instrumental).flac,Ambient / Jazz,143.49388122558594,7B,Ambient
"Conrad Schnitzler, Pole/ Con-Struct [88150247] [2017]/06 - Conrad Schnitzler, Pole - Wiegenlied für Katzen.flac",Ambient / Experimental,78.26022339,10B,Ambient
Prins Thomas/Paradise Goulash [188131511] [2015]/43 - Stefan Vincent - Fool Me Again.flac,Techno,129.83639526367188,4A,Main
Casino versus Japan/ Go Hawaii [56559140] [1999]/06 - Casino versus Japan - Dielectric Saints.flac,IDM / Ambient,178.20596313476562,7B,Ambient
Seekae/ +Dome [336407937] [2011]/04 - Seekae - Reset Head.flac,Post-Dubstep / IDM,70.03629302978516,6A,Main
Burial/ Burial [53834442] [2006]/08 - Burial - Gutted.flac,Future Garage / Dubstep,71.3104248046875,,Main
Bicep/Bicep [75160673] [2017]/10 - Bicep - Ayr.flac,Breaks / Ambient,161.50001525878906,5A,Main
Nightmares on Wax/ Smokers Delight [16024766] [1995]/05 - Nightmares on Wax - Stars.flac,Downtempo / Trip-Hop,156.5277557373047,11B,Main
Nightmares on Wax/ Smokers Delight [16024766] [1995]/03 - Nightmares on Wax - Pipes Honour.flac,Downtempo / Trip-Hop,156.55911254882812,,Main
Leon Vynehall/ Music for the Uninvited [168277757] [2014]/06 - Leon Vynehall - Christ Air.flac,Deep House,76.15439606,9B,Main
Modeselektor/ Monkeytown [199583149] [2011]/01 - Modeselektor - Blue Clouds.flac,IDM / Hip Hop,78.00963592529297,8B,Main
"Modeselektor/ Monkeytown [199583149] [2011]/03 - Modeselektor, Thom Yorke - Shipwreck.flac",IDM / Electronic,78.0157241821289,9A,Main
Machinedrum/ Vapor City Archives [36162311] [2014]/03 - Machinedrum - Hard 2 Be.flac,Footwork / Juke / UK Bass,80.02485656738281,10B,Main
Machinedrum/[A] Vapor City [21736061] [2013]/03 - Machinedrum - Dont 1 2 Lose U.flac,Footwork / UK Bass,81.97791290283203,6A,Main
"Burial/ Burial [53834442] [2006]/03 - Burial, Spaceape - Spaceape.flac",Future Garage / Dubstep,84.01387786865234,8B,Main
Machinedrum/[A] Vapor City [21736061] [2013]/01 - Machinedrum - Gunshotta.flac,Footwork / Drum and Bass,85.05208587646484,9A,Main
Art Of Noise/[M] The Ambient Collection [46952148] [1990]/06 - Art Of Noise - Camilla (Remixed by Youth).flac,Ambient,85.25466918945312,9A,Main
Casino versus Japan/ Go Hawaii [56559140] [1999]/02 - Casino versus Japan - It's Very Sunny.flac,IDM / Ambient,85.58793640136719,6A,Main
"Molina, Late Verlane/ Hey Kids [117497586] [2018]/01 - Molina - Hey Kids.flac",Indie Pop / Electronic,86.95806884765625,9A,Main
Gold Panda/ Companion [21583086] [2011]/02 - Gold Panda - Fifth Ave.flac,Chillwave / Folktronica,88.19422149658203,8B,Main
Andy Stott/ Too Many Voices [70320988] [2016]/04 - Andy Stott - First Night.flac,Deconstructed Club / Electronic,89.92286682128906,10A,Main
Vanilla/ Origin [199611226] [2015]/08 - Vanilla - Summer.flac,Chillhop / Instrumental Hip Hop,90.95537567138672,10B,Main
Sahy Uhns/ An Intolerant Disdain of Underlings [404562737] [2011]/01 - Sahy Uhns - Montebello Postpartum.flac,IDM / Glitch,91.96073150634766,4A,Main
Nightmares on Wax/ Smokers Delight [16024766] [1995]/16 - Nightmares on Wax - Gambia Via Vagator Beach.flac,Downtempo / Trip-Hop,92.97482299804688,5A,Main
Jan Hammer/ Escape From Television [3393242] [1987]/01 - Jan Hammer - Crockett's Theme (From -Miami Vice II- Soundtrack).flac,Synth-pop / New Wave,95.67214965820312,7B,Main
Various Artists/[M] Vienna Scientists [13304708] [1998]/05 - Mama Oliver - East West (Stoned Together).flac,Downtempo / Trip-Hop,96.91780853271484,11A,Main
Party Tyme/ Hip Hop & Rap Hits 4 - Party Tyme (Backing Version [314894742] [2023]/CD1/12 - Party Tyme - Zeze (made popular by Kodak Black ft. Travis Scott.flac,Trap,97.96430969238281,,Main
Dabrye/ One - Three [21681300] [2001]/03 - Dabrye - With A Professional.flac,Glitch Hop / Instrumental Hip Hop,97.99185180664062,3B,Main
Rival Consoles/Odyssey - Sonne [103317709] [2015]/08 - Rival Consoles - Haunt.flac,IDM / Ambient Techno,98.20332336425781,6A,Main
Andy Stott/ Too Many Voices [70320988] [2016]/03 - Andy Stott - New Romantic.flac,Deconstructed Club / Electronic,99.90301513671875,5A,Main
Modeselektor/ Monkeytown [199583149] [2011]/07 - Modeselektor - Grillwalker.flac,Techno,100.01006317138672,9A,Main
Plaid/ The Digging Remedy [106693880] [2016]/01 - Plaid - Do Matter.flac,IDM / Electronic,100.04009246826172,,Main
"Plastikman, Richie Hawtin/Artifakts (BC) [137659864] [1998]/03 - Plastikman, Richie Hawtin - Pakard.flac",Minimal Techno,100.0936050415039,4A,Main
Rival Consoles/Odyssey - Sonne [103317709] [2015]/01 - Rival Consoles - Odyssey.flac,IDM / Ambient Techno,100.96162414550781,8A,Main
Nightmares on Wax/ Smokers Delight [16024766] [1995]/13 - Nightmares on Wax - What I'm Feelin (Good).flac,Downtempo / Trip-Hop,100.9806137084961,7B,Main
Modeselektor/ Hello Mom! [87377976] [2005]/03 - Modeselektor - Tetrispack.flac,IDM / Electro,103.00035858154297,6A,Main
"The History Of Trance/ The History of Trance '91-'96, Vol. 1 [392650168] [1996]/04 - The History Of Trance - Contrex Ville.flac",Acid Trance,103.90945434570312,6A,Main
/home/someone/muziek/11 - The Field - No. No... (John Tejada Mix).flac,Tech House / Minimal Techno,109.00038146972656,7A,Main
Prins Thomas/Paradise Goulash [188131511] [2015]/12 - Len Leise - Dance Of The Ghosts.flac,Balearic,109.2009506225586,7B,Main
Andy Stott/ It Should Be Us [176030209] [2019]/04 - Andy Stott - It Should Be Us.flac,Techno / Deconstructed Club,109.56950378417969,5A,Main
Rival Consoles/Odyssey - Sonne [103317709] [2015]/03 - Rival Consoles - Voyager.flac,IDM / Ambient Techno,109.8339614868164,8A,Main
Andy Stott/ Faith in Strangers [176029639] [2014]/06 - Andy Stott - How It Was.flac,Deconstructed Club / Dub Techno,110.00064086914062,,Main
Autechre/Incunabula [16024878] [1993]/06 - Autechre - Eggshell.flac,IDM / Ambient Techno,110.01618194580078,7B,Main
Manuel Göttsching/ E2-E4 [198347885] [1981]/02 - Manuel Göttsching - E2-E4 Ruhige Nervosität 2.flac,Berlin School / Proto-Techno,110.31440734863281,12A,Main
Daniel Avery/Drone Logic [43421119] [2013]/04 - Daniel Avery - These Nights Never End.flac,Techno,111.56741333007812,7A,Main
David August/Diynamic Revisited (By David August) [33582870] [2014]/01 - Kollektiv Turmstrasse - Last Day (David August Revision).flac,Deep House,112.0049057006836,,Main
David August/Diynamic Revisited (By David August) [33582870] [2014]/02 - Stimming - Der Schmelz (David August Revision).flac,Deep House,112.50990295410156,5A,Main
Jean-Michel Jarre/[M] Les concerts en Chine 1981 [335743654] [2015]/02 - Jean-Michel Jarre - Arpegiateur (Live in China).flac,Electronic / Berlin School,114.70527648925781,5A,Main
Burial/ Street Halo [53833720] [2011]/03 - Burial - Stolen Dog.flac,Future Garage,115.63007354736328,12A,Main
"Burial, Four Tet/ Nova - Moth [214180270] [2022]/02 - Burial, Four Tet - Moth.flac",Future Garage / Microhouse,117.50379943847656,10B,Main
Norken/ Southern Soul [72533535] [2017]/01 - Norken - Southern Soul.flac,Deep House,117.79279327392578,10A,Main
Norken/ Southern Soul [72533535] [2017]/01 - Norken - Southern Soul.flac,Deep House,117.79279327392578,10A,Main
David August/ Epikur EP [163672968] [2014]/01 - David August - Epikur (Original).flac,Deep House,117.8792495727539,4A,Main
Marco Bernardi/ Motorways [283557486] [2013]/01 - Marco Bernardi - Motorways.flac,Techno,117.97688293457031,12A,Main
Marco Bernardi/ Motorways [283557486] [2013]/01 - Marco Bernardi - Motorways.flac,Techno,117.97688293457031,12A,Main
Daniel Avery/Drone Logic [43421119] [2013]/08 - Daniel Avery - All I Need.flac,Techno / House,117.98904418945312,6A,Main
"Prins Thomas/Paradise Goulash [188131511] [2015]/18 - Donato Dozzy & Tin Man, Tin Man - Test 7.flac",Acid Techno,118.00253295898438,4A,Main
Bicep/Bicep [75160673] [2017]/06 - Bicep - Spring.flac,Breaks / UK Bass,118.00274658203125,5A,Main
"/home/someone/muziek/09 - Vermont, Dixon - Dschuna (Dixon Mix).flac",Deep House,118.00762939453125,4A,Main
/home/someone/muziek/09 - Jürgen Paape - Manipuri.flac,Microhouse / Pop Ambient,118.31008911132812,9A,Main
"Bicep/Isles [157751887] [2021]/06 - Bicep, Clara La San - X.flac",Breaks / UK Bass,118.33991241455078,,Main
Machinedrum/ Room(s) [230172871] [2011]/10 - Machinedrum - Door(s).flac,Footwork / Juke / UK Bass,76.97500610351562,,Main
Pedestrian/ Pick Your Shots Clean [243104328] [2016]/01 - Pedestrian - Pick Your Shots Clean.flac,Deep House / UK Bass,118.663330078125,7A,Main
Pedestrian/ Pick Your Shots Clean [243104328] [2016]/01 - Pedestrian - Pick Your Shots Clean.flac,Deep House / UK Bass,118.663330078125,7A,Main
Bonobo/[A] The North Borders [19084868] [2013]/03 - Bonobo - Cirrus.flac,Downtempo / Electronic,118.96809387207031,7A,Main
Manikěizt - 2018 - Disco Futurista/14 - MTRLV - Whatever We Go Through.flac,House / Disco,119.00023651123047,9A,Main
Baltra/ No Regrets [95913420] [2017]/02 - Baltra - Fuck All Yall Haters.flac,Lo-Fi House,119.00711059570312,7A,Main
"Plastikman, Richie Hawtin/Artifakts (BC) [137659864] [1998]/02 - Plastikman, Richie Hawtin - Psyk.flac",Minimal Techno / Ambient Techno,119.46066284179688,4A,Main
Leon Vynehall/ Music for the Uninvited [168277757] [2014]/01 - Leon Vynehall - Inside the Deku Tree.flac,Deep House,119.66380310058594,11A,Main
Andy Stott/ Merciless [176028467] [2006]/01 - Andy Stott - Florence.flac,Dub Techno,119.91050720214844,6A,Main
Daniel Avery/Drone Logic [43421119] [2013]/01 - Daniel Avery - Water Jump (Album Version).flac,Techno / Acid House,119.96485900878906,8A,Main
Rone/ Spanish Breakfast [6304551] [2009]/08 - Rone - Tasty City.flac,IDM / Techno,119.97761535644531,10A,Main
DJ Boring/ Sunday Avenue [284620418] [2017]/01 - DJ Boring - Sunday Avenue.flac,Lo-Fi House,119.97834777832031,6A,Main
Prins Thomas/Paradise Goulash [188131511] [2015]/21 - Forever Sound - Glowworm.flac,Deep House,119.97863006591797,8A,Main
Kiasmos/Kiasmos [103318515] [2014]/03 - Kiasmos - Looped.flac,Minimal Techno / Ambient,119.9796142578125,6A,Main
Prins Thomas/Paradise Goulash [188131511] [2015]/22 - Odd Numbers - Riviera.flac,House,119.98377990722656,8A,Main
Various Artists/VA - Electronic Music Anthology (by FG) (2018) [FLAC]/47. Frankey and Sandrino - Acamar.flac,Deep House / Melodic House & Techno,119.98524475097656,8A,Main
Coastdream/ Soft Moon [96721340] [2017]/01 - Coastdream - Soft Moon.flac,Lo-Fi House,119.99015808105469,5A,Main
Laurence Guy/ Saw You for the First Time [307534484] [2017]/10 - Laurence Guy - W.L.Y.B.flac,Deep House,119.99136352539062,,Main
Coastdream/ Shine [100193746] [2018]/03 - Coastdream - 2k7.flac,Lo-Fi House,119.99568176269531,7A,Main
/home/someone/muziek/02 - Coma - Atlantis.flac,Tech House / Pop Ambient,119.99854278564453,6A,Main
Leon Vynehall/ Butterflies - This is the Place [68135678] [2014]/01 - Leon Vynehall - Butterflies.flac,Deep House,120.00247192382812,5A,Main
Coastdream/ Shine [100193746] [2018]/01 - Coastdream - Shine (Euro Mix).flac,Lo-Fi House,120.00251770019531,12B,Main
Kiasmos/Blurred [103386930] [2017]/03 - Kiasmos - Jarred.flac,Minimal Techno / Ambient,120.0053482055664,5A,Main
Groove Armada/[M] Groove Armada Greatest Hits [1189539] [2007]/08 - Groove Armada - Chicago.flac,House,120.00834655761719,,Main
Daniel Klauser/ Always I'm Back Here [67894299] [2015]/03 - Daniel Klauser - Always I'm Back Here.flac,House,120.01665496826172,8A,Main
"Andy Stott/ Never The Right Time [176296284] [2021]/02 - Andy Stott, Alison Skidmore - Never the right time.flac",Deconstructed Club / Trip-Hop,120.02083587646484,5A,Main
Robag Wruhme/ Olgamikks [16676895] [2012]/05 - Kollektiv Turmstrasse - Heimat (Robags Turmkolle Rekksmow).flac,Microhouse / Minimal Techno,120.03728485107422,10A,Main
Gavinco/ Funkula [310361510] [2023]/01 - Gavinco - Funkula.flac,House,120.05329132080078,5A,Main
Monolake/ Gravity [31532897] [2001]/01 - Monolake - Mobile.flac,Dub Techno / Minimal Techno,120.5144271850586,7A,Main
Aleksandir/Yamaha [90897198] [2018]/01 - Aleksandir - Yamaha.flac,Lo-Fi House,120.90277862548828,5A,Main
"Laurence Guy/ Saw You for the First Time [307534484] [2017]/05 - Laurence Guy, Ishmael - Anchor.flac",Deep House,120.94184875488281,11A,Main
Stephan Bodzin/ Powers of Ten [45241387] [2015]/01 - Stephan Bodzin - Singularity.flac,Melodic Techno,120.9670181274414,,Main
Laurence Guy/ Saw You for the First Time [307534484] [2017]/06 - Laurence Guy - Saw You for the First Time.flac,Deep House,120.98542022705078,4A,Main
/home/someone/muziek/05 - Matias Aguayo - Komm.flac,Microhouse / Minimal Techno,120.99076843261719,,Main
Leon Vynehall/ Music for the Uninvited [168277757] [2014]/05 - Leon Vynehall - It's Just (House of Dupree).flac,Deep House,121.30806732177734,4A,Main
so. mind/ Born to Live [106929042] [2019]/02 - so. mind - Callin for Ya.flac,Lo-Fi House / Deep House,121.97224426269531,,Main
"Prins Thomas/Paradise Goulash [188131511] [2015]/25 - Joachim Holm & Alejandro Mosso, Alejandro Mosso - Tre Melodi.flac",Minimal Techno,121.99746704101562,12A,Main
/home/someone/muziek/10 - Dave DK - Smukke Lyde.flac,Deep House / Tech House,121.99961853027344,5A,Main
SLIM HUSTLA - Turnstile Jumps EP/SLIM HUSTLA - Turnstile Jumps EP - 05 Codeine Cups (Ft. DJ ÆDIDIAS).flac,Lo-Fi House,122.00263214111328,11A,Main
Kiasmos/Blurred [103386930] [2017]/02 - Kiasmos - Blurred.flac,Minimal Techno / Ambient,122.0286865234375,12B,Main
Various Artists/ HDC003 [352797419] [2016]/02 - Baltra - Tears Drop.flac,Lo-Fi House,122.02957916259766,12A,Main
Laurence Guy/ Les Mur [147799811] [2015]/01 - Laurence Guy - Les Mur.flac,Deep House,122.03390502929688,10A,Main
so. mind/ Born to Live [106929042] [2019]/03 - so. mind - Good Conditions.flac,Lo-Fi House / Deep House,122.53311157226562,,Main
"Beatport Top 100 Deep House May 2025/A-Trak, Kapote, Sam Ruffillo - La La Tune (A-Trak Remix Extended Version).flac",House / Disco House,122.9247817993164,5A,Main
Robag Wruhme/ Olgamikks [16676895] [2012]/10 - Extrawelt - Neuland (Robags Rexmow 001).flac,Microhouse / Minimal Techno,122.95919036865234,12A,Main
Joseph Ray/ 300 Below - EP [182675724] [2021]/01 - Joseph Ray - 300 Below.flac,Melodic House & Techno,122.95954132080078,,Main
Various Artists/Various - Step Back Trax 003 [SBT003] [2018]/04. Slim Hustla - Remain Unseen.flac,Lo-Fi House,122.9631576538086,7B,Main
Bicep/Bicep [75160673] [2017]/12 - Bicep - Aura.flac,Breaks / Trance,122.975341796875,,Main
Marcu Rares/ Soul Bonding [175595586] [2021]/04 - Marcu Rares - Forever After.flac,Minimal / Deep Tech,122.98562622070312,5A,Main
Claude Vonstroke/ Urban Animal [312337277] [2013]/09 - Claude Vonstroke - Can't Wait.flac,Tech House,122.98572540283203,9A,Main
/home/someone/muziek/08 - Gui Boratto - 22.flac,Progressive House / Tech House,122.98978424072266,,Main
/home/someone/muziek/09 - Raxon - Dark Light.flac,Melodic House & Techno,122.99674987792969,,Main
Bicep/Bicep [75160673] [2017]/01 - Bicep - Orca.flac,Breaks / UK Bass,122.99825286865234,10A,Main
Baltra/ No Regrets [95913420] [2017]/03 - Baltra - No Regrets.flac,Lo-Fi House,122.9984359741211,1B,Main
NiNO/ Odysseia EP [66638063] [2016]/02 - NiNO - Odysseia (Original Mix).flac,Tech House,122.99845123291016,9A,Main
Yatoba Lia/ Moi Aussi Marianne [172522828] [2021]/01 - Yatoba Lia - Moi Aussi Marianne.flac,Deep House,123.00215148925781,10A,Main
Honey Dijon/ DJ-Kicks- Honey Dijon [381057642] [2024]/CD2/15 - Art Of Tones - Praise.flac,House,123.00961303710938,7A,Main
(1993) Far East Recording [FER06858]/10 - Soichi Terada; Shinichiro Yokota - Tokyo XXX.flac,House,123.06609344482422,,Main
Leon Vynehall/ Music for the Uninvited [168277757] [2014]/02 - Leon Vynehall - Goodthing.flac,Deep House,123.33172607421875,2B,Main
geods sorèd/ Findings [279217889] [2023]/02 - geods sorèd - Don't Make Me Wait.flac,Deep House,123.50894165039062,,Main
Orbital/[M] Orbital 2 [82530740] [1993]/09 - Orbital - Halcyon and On and On.flac,Ambient House / Trance,126.92256164550781,12B,Main
Pachanga Boys/ Girlcatcher [78444961] [2012]/03 - Pachanga Boys - Time.flac,Deep House / Tech House,123.79177856445312,7B,Main
Gui Boratto/ The K2 Chapter [154863821] [2013]/01 - Gui Boratto - Arquipelago.flac,Tech House / Progressive House,123.8010025024414,,Main
Floating Points/ Shadows [251631952] [2011]/05 - Floating Points - Sais.flac,Deep House / Broken Beat,135.32374572753906,5A,Main
Raär/ Sometimes I Hear Sirens [162531593] [2015]/01 - Raär - Sometimes I Hear Sirens.flac,Lo-Fi Techno,123.81367492675781,4A,Main
Autechre/Incunabula [16024878] [1993]/05 - Autechre - Basscadet.flac,IDM / Techno,123.87831115722656,8A,Main
"yungpolar/ Lofi House Tape, Vol. 1 [271715763] [2023]/08 - yungpolar - Last Station.flac",Lo-Fi House,123.90953063964844,8A,Main
"yungpolar/ Lofi House Tape, Vol. 1 [271715763] [2023]/06 - yungpolar - Maybe It's Love---.flac",Lo-Fi House,123.918701171875,8A,Main
Stephan Bodzin/ Powers of Ten [45241387] [2015]/10 - Stephan Bodzin - Wir.flac,Melodic Techno,123.92633056640625,7A,Main
Baltra/ Fade Away (Vocal) [182615002] [2016]/01 - Baltra - Fade Away (Vocal).flac,Lo-Fi House,123.95465850830078,8A,Main
Various Artists/ Various Adepts- Volume IV [125526399] [2019]/01 - Primal Code - Moth.flac,Techno,123.97295379638672,4A,Main
Daso/Daso - 2007 - Absinthe EP [FLAC]/03 La Fée Verte.flac,Minimal Techno / Tech House,123.98363494873047,7A,Main
Kiasmos/Blurred [103386930] [2017]/04 - Kiasmos - Paused.flac,Minimal Techno / Ambient,123.98764038085938,11A,Main
Palms Trax/ Equation [60783245] [2013]/02 - Palms Trax - Equation.flac,Deep House,123.9992904663086,6A,Main
Claude Vonstroke/ Urban Animal [312337277] [2013]/03 - Claude Vonstroke - Dood.flac,Tech House,124.00584411621094,12A,Main
Various Artists/ Grand Cru 2008 [18274893] [2008]/06 - Daso - Booker (Original Mix).flac,Tech House,124.01505279541016,10A,Main
Ross from Friends/ You'll Understand [69281351] [2017]/01 - Ross from Friends - Talk To Me You'll Understand.flac,Lo-Fi House,124.01791381835938,12A,Main
Ross from Friends/ You'll Understand [69281351] [2017]/01 - Ross from Friends - Talk To Me You'll Understand.flac,Lo-Fi House,124.01791381835938,12A,Main
John Tejada/ Signs Under Test [39791796] [2015]/07 - John Tejada - Rubric.flac,Tech House,124.33545684814453,8A,Main
micronism/ inside a quiet mind [247257350] [1998]/08 - micronism - engaging causeless mercy.flac,Deep House / Ambient Techno,124.87757873535156,9A,Main
Prins Thomas/Paradise Goulash [188131511] [2015]/35 - Louis Haiman - Ghosts Of Gratiot.flac,Deep House / Dub Techno,124.9041748046875,5A,Main
Shortcut/ Hope [219777058] [2022]/01 - Shortcut - Hope.flac,House,124.94646453857422,7A,Main
808 State/ In Yer Face Bicep Remixes [282358986] [2016]/01 - 808 State - In Yer Face (Bicep Remix).flac,Techno / House,124.94929504394531,8A,Main
Robag Wruhme/ Olgamikks [16676895] [2012]/09 - Gui Boratto - No Turning Back (Robags Likkalize Love Remix).flac,Microhouse / Minimal Techno,124.95291137695312,7B,Main
Floating Points/Ratio [251648888] [2017]/01 - Floating Points - Ratio (Full Mix).flac,Acid Techno,124.96118927001953,,Main
/home/someone/muziek/04 - ANNA - Hidden Beauties.flac,Techno,124.96752166748047,4A,Main
Various Artists/ Grand Cru 2008 [18274893] [2008]/10 - Kollektiv Turmstrasse - Lüchttoorn (Original Mix).flac,Minimal Techno,124.97062683105469,,Main
AljoMen/ Cherrrybomb [255167405] [2022]/01 - AljoMen - Cherrrybomb.flac,House,124.97331237792969,5A,Main
John Tejada/ Signs Under Test [39791796] [2015]/06 - John Tejada - Cryptochrome.flac,Tech House,124.97714233398438,4A,Main
"Bicep/Isles [157751887] [2021]/07 - Bicep, Julia Kent - Rever.flac",Breaks / Ambient,124.9795150756836,5A,Main
John Tejada/ Signs Under Test [39791796] [2015]/03 - John Tejada - Beacht.flac,Tech House,124.98284149169922,7B,Main
Folamour - Naarm's Sunset/Folamour - Naarm's Sunset (Extended Version).aiff,House / Disco House,124.98799896240234,8A,Main
Mark Laird/ Funk That [84287225] [2018]/01 - Mark Laird - Funk That (Original mix).flac,House / Bass House,124.9882583618164,,Main
Mark Laird/ Funk That [84287225] [2018]/02 - Mark Laird - Crazy Things (Original mix).flac,House / Bass House,124.98883819580078,5A,Main
"Silicone Soul-The Answer-WEB-FLAC-2000/03. Silicone Soul - Right on, Right On (Original Instrumental).flac",Deep House,124.98915100097656,,Main
Sascha Funke/ Mango [87379506] [2008]/01 - Sascha Funke - Mango.flac,Minimal Techno / Tech House,124.9942626953125,5A,Main
Sascha Funke/ Mango [87379506] [2008]/01 - Sascha Funke - Mango.flac,Minimal Techno / Tech House,124.9942626953125,5A,Main
Leon Vynehall/ Music for the Uninvited [168277757] [2014]/04 - Leon Vynehall - Pier Children.flac,Deep House,124.9962387084961,10A,Main
Paranoid London/[E] Paranoid London [82666895] [2018]/11 - Paranoid London - Eating Glue (Instrumental).flac,Acid House,124.99907684326172,11B,Main
Audion/ Mouth to Mouth [151255637] [2006]/01 - Audion - Mouth to Mouth.flac,Minimal Techno / Tech House,125.00029754638672,,Main
Extrawelt/ Schöne Neue Extrawelt [63313618] [2008]/12 - Extrawelt - Homing.flac,Techno / Minimal Techno,125.00592041015625,6A,Main
Linkwood/ Expressions [126108159] [2015]/09 - Linkwood - Expressions.flac,Deep House,125.00676727294922,8A,Main
Stephan Bodzin/ Powers of Ten [45241387] [2015]/02 - Stephan Bodzin - IX.flac,Melodic Techno,125.00922393798828,5A,Main
Agoria - 2007 - Les Violons Ivres EP/01 Agoria - Les Violons Ivres (Super Remix).flac,Tech House,125.00953674316406,7B,Main
Mall Grab/ 2015 - 2017 [268521056] [2023]/05 - Mall Grab - I've Always Liked Grime.flac,Lo-Fi House,125.01271057128906,7A,Main
Bicep/Just EP [184785872] [2015]/02 - Bicep - Celeste.flac,Breaks / House,125.01766967773438,7A,Main
Booka Shade/ Movements [212830133] [2006]/10 - Booka Shade - In White Rooms.flac,Tech House,125.01844787597656,5A,Main
"Beatport Top 100 Deep House May 2025/Chris Stussy, S.A.M. - Breather (Original Mix).flac",Deep House,125.0193862915039,8A,Main
"Paranoid London/[E] Paranoid London [82666895] [2018]/01 - Paranoid London, Mutado Pintado - Light Tunnel.flac",Acid House,125.0213851928711,3B,Main
Prins Thomas/Paradise Goulash [188131511] [2015]/36 - Evigt Mörker - Högre.flac,Techno,125.02205657958984,4A,Main
Bicep/ Circles EP [364842690] [2014]/02 - Bicep - NRG106.flac,Techno / House,125.02267456054688,12A,Main
Daso/Daso - 2007 - Absinthe EP [FLAC]/02 Louche.flac,Minimal Techno / Tech House,125.02801513671875,7A,Main
Floating Points/ Shadows [251631952] [2011]/04 - Floating Points - ARP3.flac,Deep House / Broken Beat,125.0283203125,4A,Main
Daso/Meine Idee [151253289] [2007]/01 - Daso - Meine.flac,Minimal Techno / Tech House,125.95564270019531,11A,Main
Mr.Brown/ Blau [333179949] [2022]/01 - Mr.Brown - Blau.flac,Deep House,125.95970916748047,,Main
Various Artists/VA - Electronic Music Anthology (by FG) (2018) [FLAC]/40. Oxia - Domino (Rework Edit).flac,Techno,125.98706817626953,,Main
Various Artists/ Naba VA 002 [103500941] [2019]/01 - Primal Code - Alhambra (Original Mix).flac,Techno,125.99022674560547,6A,Main
Extrawelt/ Schöne Neue Extrawelt [63313618] [2008]/04 - Extrawelt - Messy Machinery.flac,Techno / Minimal Techno,125.99393463134766,10A,Main
Daso/Go Upstairs [87607257] [2006]/01 - Daso - Go Upstairs.flac,Minimal Techno / Tech House,126.00054168701172,4A,Main
"Artmann/A1_July'z,_Artmann_Phenomenal01_VINYL_ONLY_July'z.aiff",Minimal / Deep Tech,126.00304412841797,,Main
Daso/Daso - 2007 - Absinthe EP [FLAC]/01 Thujon.flac,Minimal Techno / Tech House,126.0052261352539,7A,Main
Baltra/ No Regrets [95913420] [2017]/04 - Baltra - Soul 4 Real (Vocal Mix).flac,Lo-Fi House,126.00614929199219,,Main
Daphni/ Joli Mai [79527240] [2017]/06 - Daphni - Vikram.flac,House / Tech House,126.03064727783203,9A,Main
dominica - gotta let you go (2015 edit) - promo/02 - Gotta Let You Go (2015 Edit).flac,House,126.35246276855469,1B,Main
Space/ The Best Of Space [95014591] [2018]/01 - Space - Magic Fly.flac,Disco / Space Disco,126.46379852294922,8A,Main
Space/ The Best Of Space [95014591] [2018]/01 - Space - Magic Fly.flac,Disco / Space Disco,126.46379852294922,8A,Main
Andy Stott/ Faith in Strangers [176029639] [2014]/08 - Andy Stott - Faith in Strangers.flac,Deconstructed Club / Ambient,136.911865234375,8B,Main
Monolake/ Momentum [31300339] [2003]/02 - Monolake - Linear.flac,Dub Techno / Minimal Techno,126.82186126708984,11A,Main
Four Tet/New Energy [79358620] [2017]/14 - Four Tet - Planet.flac,House / Electronic,126.93342590332031,7A,Main
Prins Thomas/Paradise Goulash [188131511] [2015]/20 - Hieroglyphic Being - Imaginary Soundscapes 9.flac,Experimental / Acid House,126.94746398925781,,Main
Robag Wruhme/ Olgamikks [16676895] [2012]/03 - Fenin - None of Them (Robags Berfa Lubb Dubbse).flac,Microhouse / Minimal Techno,126.96561431884766,9A,Main
"Artmann/A2_July'z,_Artmann_Phenomenal02_VINYL_ONLY_July'z.aiff",Minimal / Deep Tech,126.9784164428711,7A,Main
Catlow/ Coming to See You - EP [380269511] [2024]/04 - Catlow - Looking Back.flac,Deep House,126.99139404296875,10A,Main
Rone/ Spanish Breakfast [6304551] [2009]/03 - Rone - Belleville.flac,IDM / Techno,127.00289916992188,,Main
Various Artists/VA - Electronic Music Anthology (by FG) (2018) [FLAC]/14. Soha - Eve.flac,House,127.00386810302734,12A,Main
Merv - Re-Melted (FLAC)/A - Dust.flac,Techno,131.15802001953125,2B,Main
John Tejada/ Parabolas [154466396] [2011]/01 - John Tejada - Farther And Fainter.flac,Tech House,127.01416778564453,,Main
Four Tet/Pink [79549403] [2012]/02 - Four Tet - Lion.flac,Microhouse / UK Funky,127.03502655029297,,Main
Modeselektor/ Monkeytown [199583149] [2011]/05 - Modeselektor - German Clap.flac,Techno / Electro,127.9735336303711,10A,Main
Various Artists/ 15 Years Fuse [158929553] [2009]/05 - Second-Hand Satellites - Orbit 1.4.flac,Deep House / Dub Techno,127.97834014892578,,Main
"Jesse Bru, Harrison BDP/ Happiness Therapy Split, Vol. 2 [186396321] [2018]/04 - Harrison BDP - Parallax.flac",Deep House,127.98197174072266,,Main
Beatport Top 100 Deep House May 2025/M-High - Soulseeker (Original Mix).flac,Deep House,127.99237060546875,,Main
"Artmann/Yogi P, Artmann - Check This Feelin' (PM Mix).aiff",Minimal / Deep Tech,127.99882507324219,6A,Main
Alex Dolby/ Multiple Faces Ep [69040645] [2017]/03 - Alex Dolby - Sintesi (Original mix).flac,Techno,128.01943969726562,12B,Main
"/home/someone/muziek/18 - Danny Daze, Shokh - Aire.flac",Electro / Techno,128.02011108398438,7A,Main
Extrawelt/ Schöne Neue Extrawelt [63313618] [2008]/03 - Extrawelt - Wippsteert.flac,Techno / Minimal Techno,128.02931213378906,11A,Main
Prins Thomas/Paradise Goulash [188131511] [2015]/26 - Robert Hood - Drive (The Age Of Automation).flac,Techno,128.03973388671875,9A,Main
Artmann/ARTMANN - Blockparty Host [OVRDOSE DEEP].aiff,Minimal / Deep Tech,128.04913330078125,,Main
Roy of the Ravers/2 Late 4 Love [283558071] [2020]/02 - Roy of the Ravers - Emotinium.flac,Acid Techno,128.23374938964844,3B,Main
Monolake/ Polygon_Cities [31460017] [2005]/09 - Monolake - Plumbicon.flac,Dub Techno / Minimal Techno,128.33206176757812,8B,Main
Daso/Go Upstairs [87607257] [2006]/03 - Daso - Until I Find You.flac,Minimal Techno / Tech House,128.3930206298828,10A,Main
deadmau5/ Faxing Berlin x4 [83358547] [2018]/01 - deadmau5 - Faxing Berlin.flac,Progressive House,128.50514221191406,7A,Main
Caribou/ Swim [334913585] [2010]/02 - Caribou - Sun.flac,Indietronica / House,128.65695190429688,,Main
Moderat/Moderat [87387741] [2009]/02 - Moderat - Rusty Nails.flac,IDM / Glitch Pop,128.7318572998047,12A,Main
Extrawelt/ Schöne Neue Extrawelt [63313618] [2008]/02 - Extrawelt - Dark Side of My Room.flac,Techno / Minimal Techno,128.74549865722656,8B,Main
Mathew Jonson/ Marionette [165363476] [2005]/01 - Mathew Jonson - Marionette.flac,Minimal Techno / Tech House,128.86192321777344,1B,Main
Bicep/Isles [157751887] [2021]/01 - Bicep - Atlas.flac,Breaks / UK Bass,128.91839599609375,,Main
Four Tet/Sixteen Oceans [133870268] [2020]/06 - Four Tet - Love Salad.flac,Microhouse / Ambient,128.93954467773438,5A,Main
Modeselektor/ Hello Mom! [87377976] [2005]/06 - Modeselektor - Ziq Zaq.flac,IDM / Electro,128.97760009765625,11B,Main
Various Artists/ Vibe 3 [73212039] [2017]/10 - Shanti Celeste - Strung Up.flac,Breakbeat / House,128.998779296875,,Main
Four Tet/New Energy [79358620] [2017]/09 - Four Tet - SW9 9SL.flac,UK Bass / House,129.0614013671875,9A,Main
Bicep/ Circles EP [364842690] [2014]/01 - Bicep - Circles.flac,House,129.1299285888672,6A,Main
Floating Points/Floating Points - LesAlpx & Coorabell (Ninja Tune) [2019]/02 Floating Points - LesAlpx (Extended).flac,Techno,129.6783905029297,4A,Main
"CJ Bolland, The Advent/ Camargue 2019 [291321527] [2019]/01 - CJ Bolland, The Advent - Camargue 2019.flac",Techno,129.70904541015625,5A,Main
Extrawelt/ Soopertrack [2380807] [2005]/01 - Extrawelt - Soopertrack.flac,Techno / Minimal Techno,129.7407989501953,4A,Main
"Phon.o/Black Boulder [199591543] [2012]/02 - Phon.o, Pantasz - Twilight.flac",Bass Music / Techno,129.75804138183594,8A,Main
"Mall Grab/ How The Dogs Chill, Vol.1 [203947228] [2018]/01 - Mall Grab - Liverpool Street In The Rain.flac",Lo-Fi House,129.84495544433594,12A,Main
Orbital/[M] Orbital 2 [82530740] [1993]/03 - Orbital - Lush 3-1.flac,Progressive Trance / Techno,129.87744140625,11A,Main
Robert Miles/ Remember Robert Miles [74123545] [2017]/01 - Robert Miles - Children (Dream Version).flac,Dream Trance,137.02688598632812,4A,Main
Cignol/Guidance Release [296651317] [2023]/04 - Cignol - Modularity.flac,Electro / Techno,129.91163635253906,6A,Main
Cobblestone Jazz/ 23 Seconds [184856920] [2007]/CD1/02 - Cobblestone Jazz - Hired Touch.flac,Minimal Techno / Tech House,129.92376708984375,,Main
"yungpolar/ Lofi House Tape, Vol. 1 [271715763] [2023]/04 - yungpolar - Amsterdam.flac",Lo-Fi House,129.93638610839844,,Main
Floating Points/Grammar [222925710] [2022]/01 - Floating Points - Grammar.flac,Breaks / UK Bass,129.97512817382812,5A,Main
Moderat/Moderat [87387741] [2009]/03 - Moderat - Seamonkey.flac,IDM / Dubstep,129.98109436035156,7B,Main
"yungpolar/ Lofi House Tape, Vol. 1 [271715763] [2023]/01 - yungpolar - Intro.flac",Lo-Fi House,129.9873046875,8A,Main
DVS1/ Klockworks 13 [102237439] [2014]/01 - DVS1 - Black Russian.flac,Techno,129.9974365234375,12A,Main
Gat Decor/ Passion [40846178] [1992]/03 - Gat Decor - Passion (Naked Mix).flac,Progressive House,124.85189819335938,4A,Main
Mathew Jonson/ Learning To Fly [135194536] [2011]/01 - Mathew Jonson - Learning To Fly.flac,Minimal Techno / Tech House,130.0073699951172,,Main
Cobblestone Jazz/ 23 Seconds [184856920] [2007]/CD1/03 - Cobblestone Jazz - Lime In Da Coconut.flac,Minimal Techno / Tech House,130.0281524658203,,Main
Phon.o/Black Boulder [199591543] [2012]/01 - Phon.o - Nightshifts.flac,Techno / Bass Music,130.04795837402344,10A,Main
Burial/ Burial [53834442] [2006]/06 - Burial - Southern Comfort.flac,Future Garage / Dubstep,130.2335968017578,,Main
Cobblestone Jazz/ 23 Seconds [184856920] [2007]/CD2/09 - Cobblestone Jazz - India In Me.flac,Minimal Techno / Tech House,130.3125762939453,,Main
Mathew Jonson/ Typerope EP [63020609] [2013]/01 - Mathew Jonson - Typerope (Original Mix).flac,Minimal Techno / Tech House,130.31776428222656,,Main
"Modeselektor/ Monkeytown [199583149] [2011]/08 - Modeselektor, PVT - Green Light Go.flac",Electro / Techno,130.52467346191406,8B,Main
Severed Heads/ Dead Eyes Opened [71820657] [1984]/01 - Severed Heads - Dead Eyes Opened.flac,Industrial / EBM,130.68795776367188,,Main
Cobblestone Jazz/ 23 Seconds [184856920] [2007]/CD1/10 - Cobblestone Jazz - W.flac,Minimal Techno / Tech House,130.82327270507812,,Main
Fatima Yamaha/ A Girl Between Two Worlds [103709112] [2015]/01 - Fatima Yamaha - Between Worlds.flac,Synth Funk / House,131.0084991455078,,Main
Video Unknown/ Keep Dancing 4ever [197191074] [2021]/01 - Video Unknown - Keep Dancing 4ever.flac,House,131.03497314453125,,Main
"The History Of Trance/ The History of Trance '91-'96, Vol. 1 [392650168] [1996]/05 - The History Of Trance - Acid Eiffel.flac",Acid Trance,131.79476928710938,11A,Main
DVS1/ Klockworks 13 [102237439] [2014]/02 - DVS1 - Creepin.flac,Techno,131.98623657226562,8B,Main
NASCAR20/ 200mph [428807211] [2025]/01 - NASCAR20 - 200mph.flac,Hard Techno,131.98670959472656,9A,Main
"Bicep/Bicep, Ejeca, Omar Odyssey - You_Don't EP (2012) [WEB FLAC] {AUS1239}/01 You.flac",Deep House,131.9957275390625,,Main
Basic Channel/ Bcd-2 [87366018] [2008]/03 - Basic Channel - Inversion.flac,Dub Techno,132.01849365234375,8B,Main
Alena/ Turn It Around [167671314] [1999]/03 - Alena - Turn It Around.flac,House / Garage House,132.02525329589844,12B,Main
Cylone/ Lord of the Land [29168400] [2003]/01 - Cylone - Lord of the Land.flac,Techno,132.0474090576172,3B,Main
Mathew Jonson/ Panna Cotta [63092565] [2012]/01 - Mathew Jonson - Panna Cotta.flac,Minimal Techno / Tech House,132.79100036621094,8A,Main
"DVS1, Zak Khutoretsky/ Love Under Pressure [284770191] [2010]/01 - DVS1, Zak Khutoretsky - Polyphonic Love.flac",Techno,132.9979705810547,8B,Main
Phon.o/Black Boulder [199591543] [2012]/06 - Phon.o - ABAW 723.flac,Bass Music / Techno,133.00787353515625,9A,Main
Four Tet/New Energy [79358620] [2017]/05 - Four Tet - Lush.flac,Downtempo / Electronic,133.02320861816406,12A,Main
Energy 52/ Café Del Mar (The Anthems Edits) [311361549] [1997]/02 - Energy 52 - Café Del Mar (Three 'N One Radio Edit).flac,Trance,133.02474975585938,4A,Main
••• HISTORY OF HOUSE 2024 RELOADED VOL 1/Grooveyard - Mary Go Wild (Original).flac,Techno / Hardcore,133.08197021484375,5A,Main
Dave Clarke/ Archive One (2023 Remaster) [349518415] [1996]/06 - Dave Clarke - Wisdom to the Wise (2023 Remaster).flac,Techno,134.5380859375,9B,Main
Loophole/ Situations (I Love You) [297730958] [2003]/01 - Loophole - Situations (I Love You).flac,Progressive House,134.98391723632812,9A,Main
Shanti Celeste/Make Time [73586001] [2017]/01 - Shanti Celeste - Make Time.flac,Breakbeat / House,135.01539611816406,12A,Main
Nikolai/ Ready to Flow (97) [15797235] [1997]/08 - Nikolai - Ready to Flow (Original Mix).flac,Trance,135.02206420898438,5A,Main
Liquid/ Sweet Harmony [2212256] [2004]/01 - Liquid - Sweet Harmony.flac,Breakbeat Hardcore / Rave,135.08383178710938,8B,Main
Four Tet/Pink [79549403] [2012]/01 - Four Tet - Locked.flac,Microhouse / Downtempo,135.16030883789062,9A,Main
Marco V/ Simulated [16473271] [2001]/02 - Marco V - Simulated (Original Mix).flac,Tech Trance,135.22256469726562,,Main
Marmion/ Schöneberg [285730346] [2023]/01 - Marmion - Schöneberg.flac,Trance / Hard Trance,135.41111755371094,11A,Main
KIKO/ World Cup [348586627] [2024]/04 - KIKO - World Cup.flac,Melodic House & Techno,135.50953674316406,6A,Main
"Bicep/Isles [157751887] [2021]/10 - Bicep, machìna - Hawk.flac",Breaks / Ambient,135.9182586669922,9B,Main
Moderat/Moderat [87387741] [2009]/10 - Moderat - Les Grandes Marches.flac,IDM / Techno,135.93882751464844,,Main
Beatport Top 100 Deep House May 2025/Locklead - Apollo (Original Mix).flac,Deep House,135.9693603515625,8A,Main
"At The Villa People/ Open Your Eyes [240076038] [2011]/02 - At The Villa People, Etienne Vandewiele - Open Your Eyes (2009 Remaster).flac",Hard Trance,135.98733520507812,7A,Main
Push/ The Legacy(Remastered Classic Mixes) [218845580] [2022]/01 - Push - The Legacy (Remastered 2001 Remake).flac,Trance,137.08123779296875,4A,Main
Push/ The Legacy(Remastered Classic Mixes) [218845580] [2022]/01 - Push - The Legacy (Remastered 2001 Remake).flac,Trance,137.08123779296875,4A,Main
Push/ Strange World - Remastered [270344199] [2023]/01 - Push - Strange World (Remastered 2000 Remake).flac,Trance,137.23184204101562,10A,Main
Push/ Strange World - Remastered [270344199] [2023]/01 - Push - Strange World (Remastered 2000 Remake).flac,Trance,137.23184204101562,10A,Main
Carlos/ The Silmarillia Remixes [99717802] [1998]/04 - Carlos - The Silmarillia.flac,Trance,137.56430053710938,5A,Main
Various Artists/ Paradise Garage- Inspirations [95507538] [2018]/04 - DJ Rolando - Knights of the Jaguar (Original Mix).flac,Techno,137.6572265625,7A,Main
Art Of Noise/ (Who's Afraid Of) The Art Of Noise- (Remastered) [86476339] [1984]/06 - Art Of Noise - Moments In Love.flac,Ambient / Synth-pop,137.77627563476562,12A,Main
4 Strings/ Take Me Away (Into The Night) [97208941] [2020]/07 - 4 Strings - Take Me Away (Into The Night).flac,Vocal Trance,138.00697326660156,,Main
Push/ Universal Nation - Remastered Classic Mixes [269947846] [2023]/02 - Push - Universal Nation (Remastered Original Extended Mix.flac,Trance,138.00877380371094,,Main
L.S.G. - Netherworld/2005 - Netherworld 2005 [JOOF 024] WEB/04. L.S.G. - Netherworld (Original Mix).flac,Trance,138.0335693359375,8A,Main
Various Artists/ 15 Years Fuse [158929553] [2009]/07 - Link - Amenity.flac,Techno,138.05128479003906,,Main
Brainchild/ Symmetry C [161022074] [1999]/01 - Brainchild - Symmetry C (Original 12- Mix).flac,Progressive Trance,139.81787109375,4A,Main
The Visions Of Shiva - How Much Can You Take (MFS 7042-3)/02. The Visions Of Shiva - How Much Can You Take (Emotional).flac,Hard Trance,139.8653564453125,,Main
Ramin/ Back to Future 1 [28127024] [2012]/02 - Ramin - Pie Jesu (Tracid-Mix).flac,Hard Trance,139.9711151123047,,Main
MASSI-/ Come Wit' It [286935013] [2023]/01 - MASSI- - Come Wit' It.flac,House,139.974365234375,,Main
"Modeselektor/ Monkeytown [199583149] [2011]/10 - Modeselektor, Thom Yorke - This.flac",IDM / Electronic,139.98606872558594,6A,Main
Bicep/Isles [157751887] [2021]/09 - Bicep - Fir.flac,Breaks / UK Bass,139.98751831054688,5A,Main
Kraftwerk/[M] Tour de France (2009 Remaster) [3131398] [2003]/02 - Kraftwerk - Tour de France (Etape 1) [2009 Remaster].flac,Electronic / Synth-pop,140.0033416748047,4A,Main
Various Artists/VA-Clergy_10_Years__Charlie-CRGX3-24BIT-WEB-FLAC-2025-WAVED/01-usaw-kokedama.flac,Techno,140.00772094726562,12B,Main
Sciahri And Hertz Collision-Echoes Of The Void EP-CRG035-24BIT-WEB-FLAC-2024-WAVED/04-sciahri_and_hertz_collision-echoes_of_the_void.flac,Techno,141.00845336914062,8A,Main
Travmkind/ Travmkinder [411935551] [2025]/03 - Travmkind - Living in my mind.flac,Minimal / Deep Tech,142.13510131835938,,Main
"Various Artists/ Clergy 10 Years - Beta [417327786] [2025]/03 - Hertz Collision, Programma 101 - Concrete Skin.flac",Techno,142.94375610351562,12A,Main
Max Simon/ Flashing Colors [288210570] [2022]/01 - Max Simon - Flashing Colors.flac,Deep House,143.02406311035156,10B,Main
Machinedrum/ Room(s) [230172871] [2011]/01 - Machinedrum - She Died There.flac,Footwork / Juke / UK Bass,143.8229217529297,8B,Main
"Various Artists/VA - We Are Secta, Vol. 1 [SECT001]/Danny Wabbit - Girls Like Wine (Original Mix).aiff",Techno,143.9299774169922,,Main
Max Simon/ Flashing Colors [288210570] [2022]/02 - Max Simon - Clouds.flac,Deep House,144.84609985351562,,Main
Sole Dosi/ The Abyss Blooms [417858969] [2025]/03 - Sole Dosi - The Abyss Blooms.flac,Techno,144.86402893066406,9A,Main
Phon.o/Black Boulder [199591543] [2012]/11 - Phon.o - 12th.flac,Bass Music / Techno,144.93170166015625,5A,Main
Vilchezz/ slash 005 - Camelo's [304299374] [2023]/01 - Vilchezz - Camelo's (Original Mix).flac,Minimal / Deep Tech,144.93194580078125,12A,Main
Various Artists/ Clergy 10 Years - Beta [417327786] [2025]/01 - Stef Mendesidis - Hydra.flac,Techno,144.9584503173828,7B,Main
The Prodigy/[E] More Music for the Jilted Generation [2204688] [1994]/CD1/09 - The Prodigy - No Good (Start the Dance) (Remastered).flac,Breakbeat / Big Beat,144.9822998046875,5A,Main
"Various Artists/VA - We Are Secta, Vol. 1 [SECT001]/BENZA995 - Kinky (Original Mix).aiff",Tech House,146.02333068847656,9B,Main
Basic Channel/ Bcd-2 [87366018] [2008]/01 - Basic Channel - Enforcement.flac,Dub Techno,146.5289306640625,,Main
"Various Artists/VA - We Are Secta, Vol. 1 [SECT001]/Ju Lovett - Alive Again (Original Mix).aiff",Tech House,147.00523376464844,11A,Main
Don't F___ With My Energy EP/Danny Wabbit - Don't F- With My Energy EP -.aiff,Techno,148.0142059326172,5A,Main
Wippenberg/ Neurodancer [15921253] [2011]/01 - Wippenberg - Neurodancer (Original Mix).flac,Hard Trance,150.17022705078125,,Main
Gold Panda/ Companion [21583086] [2011]/13 - Gold Panda - Police.flac,Chillwave / Folktronica,151.95773315429688,,Main
Various Artists/VA - Electronic Music Anthology (by FG) (2018) [FLAC]/37. Aurora Borealis - The Milky Way.flac,Trance,153.94393920898438,8A,Main
CD-3/3-13. Kamasutra - Waterfront.flac,Progressive House,156.46304321289062,9A,Main
"Various Artists/[E] Best Of Liquid, Vol. 1 [147202525] [1994]/01 - Buzz & Ace - Killer (4 Ours Mix).flac",Jungle / Hardcore,161.4998321533203,9B,Main
"Franky Jones, Axel Stephenson, Jones & Stephenson/ The First Rebirth [65558851] [2016]/03 - Franky Jones, Axel Stephenson, Jones & Stephenson - The First Rebirth (Original Remastered Mix).flac",Hard Trance,161.50767517089844,1B,Main
"Roni Size, Reprazent/[E] New Forms (20th Anniversary Edition) [276244735] [1997]/CD3/08 - Roni Size, Reprazent - Heroes (Kruder Long Loose Bossa - Edit).flac",Downtempo,161.5162811279297,9A,Main
Travmkind/ Travmkinder [411935551] [2025]/02 - Travmkind - Nothing but a dream.flac,Minimal / Deep Tech,161.7273712158203,8A,Main
CD-3/3-01. Dune - Hardcore Vibes.flac,Happy Hardcore,163.880859375,8A,Main
Monolake/ Momentum [31300339] [2003]/01 - Monolake - Cern.flac,Dub Techno / Minimal Techno,178.20547485351562,8B,Main
Various Artists/VA - Hardcore Vibes (1997) [FLAC]/04 - Lenny Dee - Forgotten Moments.flac,Hardcore / Gabber,95.50914001464844,10A,Main
Various Artists/VA - Glasgow Underground Ibiza 2021 [Glasgow Underground] FLAC-2021/06-Stanny Abram - Amellebuee (Extended Mix).flac
Various Artists/VA - Glasgow Underground Ibiza 2021 [Glasgow Underground] FLAC-2021/38-Mallin - Off My Mind (Extended Mix).flac MAYBE
Can't render this file because it has a wrong number of fields in line 338.

125
house.json Normal file
View File

@ -0,0 +1,125 @@
{
"settings": {
"output_filename": "/mnt/opslag/test_house.flac",
"default_crossfade_duration": "0:00.00",
"pre_mix_target_dbfs": -12.0,
"final_mix_target_dbfs": -1.0
},
"tracks": [
{
"song_path": "/mnt/raid_storage/Music/Various Artists/ Naba VA 002 [103500941] [2019]/02 - Münch - Note (Original Mix).flac",
"crossfade_start": "7:21.99",
"fade_power": 1.0,
"fade_out_delay": "1:30.00",
"no_tempo_adjust": true,
"volume_automation": [
{
"start_time": "7:21.99",
"end_time": "9:21.99",
"gain_db": -1.94
}
],
"effects": [
{
"type": "raw_ffmpeg",
"filter_string": "equalizer=f=1500:t=q:w=1:g=1.6,equalizer=f=5000:t=q:w=1:g=1.6",
"start_time": "7:21.99",
"end_time": "9:21.99"
}
],
"eq_filters": [
{
"type": "high_pass",
"cutoff_hz": 80,
"start_time": "7:21.99",
"end_time": "7:51.99"
},
{
"type": "high_pass",
"cutoff_hz": 120,
"start_time": "7:51.99",
"end_time": "8:21.99"
},
{
"type": "high_pass",
"cutoff_hz": 180,
"start_time": "8:21.99",
"end_time": "8:51.99"
},
{
"type": "high_pass",
"cutoff_hz": 250,
"start_time": "8:51.99",
"end_time": "9:21.99"
}
]
},
{
"song_path": "/mnt/raid_storage/Music/Christian Löffler/A Forest [88101930] [2012]/03 - Christian Löffler - Eleven.flac",
"crossfade_start": "5:36.00",
"crossfade_duration": "2:00.00",
"fade_in_duration": "0:15.00",
"fade_power": 0.0,
"no_tempo_adjust": true,
"eq_filters": [
{
"type": "high_pass",
"cutoff_hz": 250,
"start_time": "0:00.00",
"end_time": "0:30.00"
},
{
"type": "high_pass",
"cutoff_hz": 180,
"start_time": "0:30.00",
"end_time": "1:00.00"
},
{
"type": "high_pass",
"cutoff_hz": 120,
"start_time": "1:00.00",
"end_time": "1:30.00"
},
{
"type": "high_pass",
"cutoff_hz": 80,
"start_time": "1:30.00",
"end_time": "2:00.00"
}
]
},
{
"song_path": "/mnt/raid_storage/Music/Christian Löffler/Young Alaska [88102745] [2014]/04 - Christian Löffler - Beirut.flac",
"start_offset": "0:04.56",
"crossfade_start": "5:36.00",
"crossfade_duration": "1:00.00",
"fade_in_duration": "0:10.00",
"fade_power": 1.0,
"no_tempo_adjust": true
},
{
"song_path": "/mnt/raid_storage/Music/Kiasmos/Kiasmos [103318515] [2014]/03 - Kiasmos - Looped.flac",
"crossfade_start": "6:48.56",
"crossfade_duration": "0:47.75",
"fade_in_duration": "0:05.00",
"fade_power": 1.0,
"no_tempo_adjust": true,
"loops": [
{
"start_time": "5:46.83",
"end_time": "5:58.78",
"count": 1
}
]
},
{
"song_path": "/mnt/raid_storage/Music/Kiasmos/Blurred [103386930] [2017]/03 - Kiasmos - Jarred.flac",
"crossfade_start": "5:24.04",
"start_offset": "0:00.17",
"crossfade_duration": "1:30.00",
"fade_in_duration": "0:05.00",
"fade_power": 1.0,
"no_tempo_adjust": true
}
]
}

77
tempo_cache.json Normal file
View File

@ -0,0 +1,77 @@
{
"/mnt/opslag/Album/Album/Krxziol/ The feeling of a dark cold winter outside [281504034] [2022]/01 - Krxziol - The feeling of a dark cold winter outside.flac": 123.046875,
"/mnt/opslag/Album/Album/Tangerine Dream/ Rubycon (Deluxe Version) [110765710] [1975]/01 - Tangerine Dream - Rubycon (Pt. 1 - Remastered 2018).flac": 129.19921875,
"/mnt/opslag/Album/Album/Klaus Schulze/ Timewind [3229881] [1975]/01 - Klaus Schulze - Bayreuth Return.flac": 114.84375,
"/mnt/opslag/Album/Album/Klaus Schulze/ Mirage (Remastered 2017) [82235529] [1977]/02 - Klaus Schulze - Crystal Lake.flac": 126.04801829268293,
"/mnt/opslag/Album/Album/Pauline Anna Strom/ Trans-Millenia Music [79870512] [2017]/05 - Pauline Anna Strom - Energies.flac": 126.04801829268293,
"/mnt/opslag/Album/Album/Klaus Schulze/ Kontinuum [380019868] [2007]/01 - Klaus Schulze - Sequencer (from 70 to 07).flac": 139.6748310810811,
"/mnt/opslag/Album/Album/Astral Pilot, Sven V\u00e4th/ Electro Acupuncture [63331511] [1995]/06 - Astral Pilot, Sven V\u00e4th - The Day After.flac": 129.19921875,
"/mnt/opslag/Album/Album/Biosphere/ Cirque [4186861] [2000]/06 - Biosphere - When I Leave.flac": 109.95678191489361,
"/mnt/opslag/Album/Album/Prins Thomas/Paradise Goulash [188131511] [2015]/36 - Evigt M\u00f6rker - H\u00f6gre.flac": 126.04801829268293,
"/mnt/opslag/Album/Album/Yagya/ Rigning (2018) [89007128] [2018]/02 - Yagya - Rigning Tv\u00f6.flac": 112.34714673913044,
"/mnt/opslag/Album/Album/David August/Diynamic Revisited (By David August) [33582870] [2014]/01 - Kollektiv Turmstrasse - Last Day (David August Revision).flac": 112.34714673913044,
"/mnt/opslag/Album/Album/Primal Code/Primal Code - Caimano Tribe (2019 ep, XW)/04 - Primal Code - Conjuration.flac": 139.6748310810811,
"/mnt/opslag/Album/Album/Primal Code/La Via della Seta [94401315] [2018]/07 - Primal Code - Magellano.flac": 139.6748310810811,
"/mnt/opslag/Album/Album/04 Kollektiv Turmstrasse - Ordinary (Lake People's Circle Motive remix).flac": 120.18531976744185,
"/mnt/opslag/Album/Album/Christian L\u00f6ffler/York [266760278] [2015]/03 - Christian L\u00f6ffler - Nordkap (Original Mix).flac": 120.18531976744185,
"/mnt/opslag/Album/Album/Christian L\u00f6ffler/Mare [88102248] [2016]/06 - Christian L\u00f6ffler - Lid.flac": 120.18531976744185,
"/mnt/opslag/Album/Album/Christian L\u00f6ffler/Young Alaska [88102745] [2014]/03 - Christian L\u00f6ffler - Notes.flac": 120.18531976744185,
"/mnt/opslag/Album/Album/Prins Thomas/Paradise Goulash [188131511] [2015]/25 - Joachim Holm & Alejandro Mosso, Alejandro Mosso - Tre Melodi.flac": 97.50884433962264,
"/mnt/opslag/Album/Album/Brian Eno/ Discreet Music [164531] [1975]/01 - Brian Eno - Discreet Music (Remastered 2004).flac": 123.046875,
"/mnt/opslag/Album/Album/Shanti Celeste/ Tangerine [120578211] [2019]/01 - Shanti Celeste - Sun Notification.flac": 123.046875,
"/mnt/opslag/Album/Album/Aphex Twin/ Selected Ambient Works Volume II (Expanded Edition [366456437] [1994]/01 - Aphex Twin - #1.flac": 103.359375,
"/mnt/opslag/Album/Album/Aphex Twin/ Selected Ambient Works Volume II (Expanded Edition [366456437] [1994]/07 - Aphex Twin - #7.flac": 109.95678191489361,
"/mnt/opslag/Album/Album/Aphex Twin/ Selected Ambient Works Volume II (Expanded Edition [366456437] [1994]/19 - Aphex Twin - #19.flac": 126.04801829268293,
"/mnt/opslag/Album/Album/Brian Eno/ Reflection [272550958] [2017]/01 - Brian Eno - Reflection.flac": 123.046875,
"/mnt/opslag/Album/Album/Steve Roach/ Structures From Silence [333370155] [1984]/03 - Steve Roach - Structures from Silence.flac": 123.046875,
"/mnt/opslag/Album/Album/Aphex Twin/ Selected Ambient Works Volume II (Expanded Edition [366456437] [1994]/03 - Aphex Twin - #3.flac": 123.046875,
"/mnt/opslag/Album/Album/CD 02/Brian Eno - Neroli - 01 - New Space Music.flac": 126.04801829268293,
"/mnt/opslag/Album/Album/Art Of Noise/[M] The Ambient Collection [46952148] [1990]/06 - Art Of Noise - Camilla (Remixed by Youth).flac": 114.84375,
"/mnt/raid_storage/Music/Christian L\u00f6ffler/Young Alaska [88102745] [2014]/03 - Christian L\u00f6ffler - Notes.flac": 120.18531976744185,
"/mnt/raid_storage/Music/Various Artists/Prins Thomas/Paradise Goulash [188131511] [2015]/25 - Joachim Holm & Alejandro Mosso, Alejandro Mosso - Tre Melodi.flac": 97.50884433962264,
"/mnt/raid_storage/Music/Various Artists/ Naba VA 002 [103500941] [2019]/02 - M\u00fcnch - Note (Original Mix).flac": 120.18531976744185,
"/mnt/raid_storage/Music/Christian L\u00f6ffler/A Forest [88101930] [2012]/03 - Christian L\u00f6ffler - Eleven.flac": 120.18531976744185,
"/mnt/raid_storage/Music/Christian L\u00f6ffler/Young Alaska [88102745] [2014]/04 - Christian L\u00f6ffler - Beirut.flac": 120.18531976744185,
"/mnt/raid_storage/Music/Brian Eno/ Discreet Music [164531] [1975]/01 - Brian Eno - Discreet Music (Remastered 2004).flac": 123.046875,
"/mnt/raid_storage/Music/Shanti Celeste/ Tangerine [120578211] [2019]/01 - Shanti Celeste - Sun Notification.flac": 123.046875,
"/mnt/raid_storage/Music/Aphex Twin/ Selected Ambient Works Volume II (Expanded Edition [366456437] [1994]/01 - Aphex Twin - #1.flac": 103.359375,
"/mnt/raid_storage/Music/Aphex Twin/ Selected Ambient Works Volume II (Expanded Edition [366456437] [1994]/03 - Aphex Twin - #3.flac": 123.046875,
"/mnt/raid_storage/Music/Aphex Twin/ Selected Ambient Works Volume II (Expanded Edition [366456437] [1994]/07 - Aphex Twin - #7.flac": 109.95678191489361,
"/mnt/raid_storage/Music/Art Of Noise/[M] The Ambient Collection [46952148] [1990]/06 - Art Of Noise - Camilla (Remixed by Youth).flac": 114.84375,
"/mnt/raid_storage/Music/Pauline Anna Strom/ Trans-Millenia Music [79870512] [2017]/05 - Pauline Anna Strom - Energies.flac": 126.04801829268293,
"/mnt/raid_storage/Music/Tangerine Dream/ Rubycon (Deluxe Version) [110765710] [1975]/01 - Tangerine Dream - Rubycon (Pt. 1 - Remastered 2018).flac": 129.19921875,
"/mnt/raid_storage/Music/Biosphere/ Cirque [4186861] [2000]/06 - Biosphere - When I Leave.flac": 109.95678191489361,
"/mnt/raid_storage/Music/Primal Code/Primal Code - Caimano Tribe (2019 ep, XW)/04 - Primal Code - Conjuration.flac": 139.6748310810811,
"/mnt/raid_storage/Music/Primal Code/La Via della Seta [94401315] [2018]/07 - Primal Code - Magellano.flac": 139.6748310810811,
"/mnt/raid_storage/Music/Krxziol/ The feeling of a dark cold winter outside [281504034] [2022]/01 - Krxziol - The feeling of a dark cold winter outside.flac": 123.046875,
"/mnt/raid_storage/Music/Klaus Schulze/ Mirage (Remastered 2017) [82235529] [1977]/02 - Klaus Schulze - Crystal Lake.flac": 126.04801829268293,
"/mnt/raid_storage/Music/Christian L\u00f6ffler/York [266760278] [2015]/03 - Christian L\u00f6ffler - Nordkap (Original Mix).flac": 120.18531976744185,
"/mnt/raid_storage/Music/Christian L\u00f6ffler/Mare [88102248] [2016]/06 - Christian L\u00f6ffler - Lid.flac": 120.18531976744185,
"/mnt/raid_storage/Music/Steve Roach/ Structures From Silence [333370155] [1984]/03 - Steve Roach - Structures from Silence.flac": 123.046875,
"/mnt/raid_storage/Music/04 Kollektiv Turmstrasse - Ordinary (Lake People's Circle Motive remix).flac": 120.18531976744185,
"/mnt/raid_storage/Music/Klaus Schulze/ Timewind [3229881] [1975]/01 - Klaus Schulze - Bayreuth Return.flac": 114.84375,
"/mnt/raid_storage/Music/Aphex Twin/ Selected Ambient Works Volume II (Expanded Edition [366456437] [1994]/19 - Aphex Twin - #19.flac": 126.04801829268293,
"/mnt/raid_storage/Music/Astral Pilot, Sven V\u00e4th/ Electro Acupuncture [63331511] [1995]/06 - Astral Pilot, Sven V\u00e4th - The Day After.flac": 129.19921875,
"/mnt/raid_storage/Music/Klaus Schulze/ Kontinuum [380019868] [2007]/01 - Klaus Schulze - Sequencer (from 70 to 07).flac": 139.6748310810811,
"/mnt/raid_storage/Music/CD 02/Brian Eno - Neroli - 01 - New Space Music.flac": 126.04801829268293,
"/mnt/raid_storage/Music/Brian Eno/ Reflection [272550958] [2017]/01 - Brian Eno - Reflection.flac": 123.046875,
"/mnt/raid_storage/Music/Kiasmos/Kiasmos [103318515] [2014]/03 - Kiasmos - Looped.flac": 120.18531976744185,
"/mnt/raid_storage/Music/Kiasmos/Blurred [103386930] [2017]/03 - Kiasmos - Jarred.flac": 120.18531976744185,
"/mnt/raid_storage/Music/Marcu Rares/ Soul Bonding [175595586] [2021]/01 - Marcu Rares - Soul Bonding.flac": 120.18531976744185,
"/mnt/raid_storage/Music/Plastikman, Richie Hawtin/Artifakts (BC) [137659864] [1998]/02 - Plastikman, Richie Hawtin - Psyk.flac": 120.18531976744185,
"/mnt/raid_storage/Music/Rone/Mirapolis [78562101] [2017]/11 - Rone - Mirapolis.flac": 120.18531976744185,
"/mnt/raid_storage/Music/Various Artists/ Grand Cru 2008 [18274893] [2008]/02 - Wareika - Fantasy (Wareika Remix).flac": 120,
"/mnt/raid_storage/Music/Daso/ All My People [86109655] [2012]/02 - Daso - Dan Lyke.flac": 121,
"/mnt/raid_storage/Music/Christian L\u00f6ffler/A Forest [88101930] [2012]/07 - Christian L\u00f6ffler - Blind.flac": 121,
"/mnt/raid_storage/Music/Stephan Bodzin/ Powers of Ten [45241387] [2015]/01 - Stephan Bodzin - Singularity.flac": 121,
"/mnt/raid_storage/Music/Daniel Avery/Drone Logic [43421119] [2013]/07 - Daniel Avery - Need Electric (Album Version).flac": 122,
"/mnt/raid_storage/Music/Sascha Funke/ Mango [87379506] [2008]/02 - Sascha Funke - We Are Facing the Sun.flac": 122,
"/mnt/raid_storage/Music/Bicep/Just EP [184785872] [2015]/03 - Bicep - Back 2 U.flac": 122,
"/mnt/raid_storage/Music/Various Artists/ HDC003 [352797419] [2016]/02 - Baltra - Tears Drop.flac": 122,
"/mnt/raid_storage/Music/Various Artists/ Memories, Pt. I [139085472] [2017]/05 - Thomas Wood - Cave.flac": 122.1,
"/mnt/raid_storage/Music/Bicep/Bicep [75160673] [2017]/12 - Bicep - Aura.flac": 123,
"/mnt/raid_storage/Music/Christian L\u00f6ffler/A Forest [88101930] [2012]/11 - Christian L\u00f6ffler - A Hundred Lights.flac": 123.046875,
"/mnt/raid_storage/Music/Robag Wruhme/ Olgamikks [16676895] [2012]/10 - Extrawelt - Neuland (Robags Rexmow 001).flac": 123,
"/mnt/raid_storage/Music/Leon Vynehall/ Music for the Uninvited [168277757] [2014]/02 - Leon Vynehall - Goodthing.flac": 123.53,
"/mnt/raid_storage/Music/DJ Boring/ Sunday Avenue [284620418] [2017]/02 - DJ Boring - 6 AM Mimosa.flac": 124
}

83
test_all_features.json Normal file
View File

@ -0,0 +1,83 @@
{
"settings": {
"output_filename": "test_all_features_output.flac",
"default_crossfade_duration": "0:05",
"final_mix_target_dbfs": -1.0
},
"tracks": [
{
"song_path": "/mnt/opslag/Album/Album/Shanti Celeste/ Tangerine [120578211] [2019]/01 - Shanti Celeste - Sun Notification.flac",
"crossfade_duration": "0:08",
"crossfade_start": "4:55.00",
"start_offset": "0:38.64",
"fade_power": 1.0,
"loops": [
{
"start_time": "1:00.00",
"end_time": "1:02.00",
"count": 2
}
],
"volume_automation": [
{
"start_time": "1:30.00",
"end_time": "1:35.00",
"gain_db": -6
}
],
"eq_filters": [
{
"type": "high_pass",
"cutoff_hz": 1000,
"start_time": "2:00.00",
"end_time": "2:05.00"
},
{
"type": "band_reject",
"low_cutoff_hz": 400,
"high_cutoff_hz": 2000,
"start_time": "2:10.00",
"end_time": "2:15.00"
}
],
"effects": [
{
"type": "delay",
"start_time": "3:00.00",
"end_time": "3:02.00",
"delay_ms": 250,
"intensity": 0.5
}
]
},
{
"song_path": "/mnt/opslag/Album/Album/Aphex Twin/ Selected Ambient Works Volume II (Expanded Edition [366456437] [1994]/01 - Aphex Twin - #1.flac",
"start_offset": "0:14.84",
"fade_power": 1.0,
"no_tempo_adjust": true,
"eq_filters": [
{
"type": "low_pass",
"cutoff_hz": 500,
"start_time": "0:30.00",
"end_time": "0:35.00"
},
{
"type": "band_pass",
"low_cutoff_hz": 300,
"high_cutoff_hz": 1500,
"start_time": "0:40.00",
"end_time": "0:45.00"
}
],
"effects": [
{
"type": "reverb",
"start_time": "1:00.00",
"end_time": "1:05.00",
"wet": 0.25
}
]
}
]
}