Initial commit
This commit is contained in:
commit
bffebe4d1c
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
backup/
|
||||||
1
.python-version
Normal file
1
.python-version
Normal file
@ -0,0 +1 @@
|
|||||||
|
3.13.3
|
||||||
BIN
__pycache__/auto_dj_mix_readable.cpython-313.pyc
Normal file
BIN
__pycache__/auto_dj_mix_readable.cpython-313.pyc
Normal file
Binary file not shown.
BIN
__pycache__/search_and_mix.cpython-313.pyc
Normal file
BIN
__pycache__/search_and_mix.cpython-313.pyc
Normal file
Binary file not shown.
501
ambient_test_mix.json
Normal file
501
ambient_test_mix.json
Normal 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
806
auto_dj_mix.py
Normal 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
341
dj_mix_playlist.csv
Normal 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 - Don’t 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 Y’all 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
125
house.json
Normal 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
77
tempo_cache.json
Normal 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
83
test_all_features.json
Normal 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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user