Skip to content

Commit

Permalink
return filepaths and weights in
Browse files Browse the repository at this point in the history
  • Loading branch information
rabitt committed Jun 3, 2017
1 parent 5a55c3a commit f1f4a7d
Show file tree
Hide file tree
Showing 3 changed files with 119 additions and 11 deletions.
13 changes: 9 additions & 4 deletions medleydb/mix.py
Expand Up @@ -36,6 +36,13 @@ def mix_multitrack(mtrack, output_path, stem_indices=None,
List of tuples of (filepath, mixing_coefficient) pairs to additionally
add to final mix.
Returns
-------
filepaths : list
List of filepaths used in the mix
weights : list
List of weights used to mix filepaths
"""
filepaths, weights = _build_mix_args(
mtrack, stem_indices, alternate_weights, alternate_files,
Expand All @@ -50,6 +57,8 @@ def mix_multitrack(mtrack, output_path, stem_indices=None,
filepaths, output_path, 'mix', input_volumes=weights
)

return filepaths, weights


def _build_mix_args(mtrack, stem_indices, alternate_weights, alternate_files,
additional_files):
Expand Down Expand Up @@ -213,16 +222,12 @@ def mix_mono_stems(mtrack, output_path, include_percussion=False):
stem_indices = []
mono_indices = []
for i in stems.keys():
print(stems[i].instrument)
print(stems[i].f0_type)
mono = all([
f0_type == 'm' for f0_type in mtrack.stems[i].f0_type
])
unvoiced = all([
f0_type == 'u' for f0_type in mtrack.stems[i].f0_type
])
print(mono)
print(unvoiced)
if mono:
stem_indices.append(i)
mono_indices.append(i)
Expand Down
2 changes: 1 addition & 1 deletion medleydb/version.py
Expand Up @@ -2,4 +2,4 @@
# -*- coding: utf-8 -*-
"""Version info"""

version = "1.3.0"
version = "1.3.1"
115 changes: 109 additions & 6 deletions tests/test_mix.py
Expand Up @@ -22,53 +22,156 @@ def setUp(self):

def test_defaults(self):
clean_output()
mix.mix_multitrack(
actual_fullpaths, actual_weights = mix.mix_multitrack(
self.mtrack, OUTPUT_PATH
)

self.assertTrue(os.path.exists(OUTPUT_PATH))

actual_basenames = [os.path.basename(f) for f in actual_fullpaths]
expected_basenames = [
'LizNelson_Rainfall_STEM_01.wav',
'LizNelson_Rainfall_STEM_02.wav',
'LizNelson_Rainfall_STEM_03.wav',
'LizNelson_Rainfall_STEM_04.wav',
'LizNelson_Rainfall_STEM_05.wav'
]
expected_weights = [
0.9138225670999782,
0.88655832334783,
0.7820245646673145,
0.9709353677932278,
0.7734022629465723
]
self.assertEqual(expected_basenames, actual_basenames)
self.assertEqual(expected_weights, actual_weights)

clean_output()

def test_less_stems(self):
clean_output()
mix.mix_multitrack(
actual_fullpaths, actual_weights = mix.mix_multitrack(
self.mtrack, OUTPUT_PATH, stem_indices=[2, 4]
)
self.assertTrue(os.path.exists(OUTPUT_PATH))

actual_basenames = [os.path.basename(f) for f in actual_fullpaths]
expected_basenames = [
'LizNelson_Rainfall_STEM_02.wav',
'LizNelson_Rainfall_STEM_04.wav'
]
expected_weights = [
0.88655832334783,
0.9709353677932278
]
self.assertEqual(expected_basenames, actual_basenames)
self.assertEqual(expected_weights, actual_weights)

clean_output()

def test_alt_weights(self):
clean_output()
mix.mix_multitrack(
actual_fullpaths, actual_weights = mix.mix_multitrack(
self.mtrack, OUTPUT_PATH, alternate_weights={2: 2.0, 4: 0.5}
)
self.assertTrue(os.path.exists(OUTPUT_PATH))

actual_basenames = [os.path.basename(f) for f in actual_fullpaths]
expected_basenames = [
'LizNelson_Rainfall_STEM_01.wav',
'LizNelson_Rainfall_STEM_02.wav',
'LizNelson_Rainfall_STEM_03.wav',
'LizNelson_Rainfall_STEM_04.wav',
'LizNelson_Rainfall_STEM_05.wav'
]
expected_weights = [
0.9138225670999782,
2.0,
0.7820245646673145,
0.5,
0.7734022629465723
]
self.assertEqual(expected_basenames, actual_basenames)
self.assertEqual(expected_weights, actual_weights)

clean_output()

def test_alt_files(self):
clean_output()
mix.mix_multitrack(
actual_fullpaths, actual_weights = mix.mix_multitrack(
self.mtrack, OUTPUT_PATH,
alternate_files={1: self.mtrack.mix_path}
)
self.assertTrue(os.path.exists(OUTPUT_PATH))

actual_basenames = [os.path.basename(f) for f in actual_fullpaths]
expected_basenames = [
'LizNelson_Rainfall_MIX.wav',
'LizNelson_Rainfall_STEM_02.wav',
'LizNelson_Rainfall_STEM_03.wav',
'LizNelson_Rainfall_STEM_04.wav',
'LizNelson_Rainfall_STEM_05.wav'
]
expected_weights = [
0.9138225670999782,
0.88655832334783,
0.7820245646673145,
0.9709353677932278,
0.7734022629465723
]
self.assertEqual(expected_basenames, actual_basenames)
self.assertEqual(expected_weights, actual_weights)

clean_output()


def test_additional_files(self):
clean_output()
mix.mix_multitrack(
actual_fullpaths, actual_weights = mix.mix_multitrack(
self.mtrack, OUTPUT_PATH,
additional_files=[(self.mtrack.mix_path, 2.1)]
)
self.assertTrue(os.path.exists(OUTPUT_PATH))

actual_basenames = [os.path.basename(f) for f in actual_fullpaths]
expected_basenames = [
'LizNelson_Rainfall_STEM_01.wav',
'LizNelson_Rainfall_STEM_02.wav',
'LizNelson_Rainfall_STEM_03.wav',
'LizNelson_Rainfall_STEM_04.wav',
'LizNelson_Rainfall_STEM_05.wav',
'LizNelson_Rainfall_MIX.wav'
]
expected_weights = [
0.9138225670999782,
0.88655832334783,
0.7820245646673145,
0.9709353677932278,
0.7734022629465723,
2.1
]
self.assertEqual(expected_basenames, actual_basenames)
self.assertEqual(expected_weights, actual_weights)

clean_output()

def test_one_stem_mix(self):
clean_output()
mix.mix_multitrack(
actual_fullpaths, actual_weights = mix.mix_multitrack(
self.mtrack, OUTPUT_PATH, stem_indices=[2]
)
self.assertTrue(os.path.exists(OUTPUT_PATH))

actual_basenames = [os.path.basename(f) for f in actual_fullpaths]
expected_basenames = [
'LizNelson_Rainfall_STEM_02.wav'
]
expected_weights = [
0.88655832334783
]
self.assertEqual(expected_basenames, actual_basenames)
self.assertEqual(expected_weights, actual_weights)

clean_output()


Expand Down

0 comments on commit f1f4a7d

Please sign in to comment.