From 30ac957bca560c81e9f4c60b55a612f9eb64fa88 Mon Sep 17 00:00:00 2001 From: Jamie Hardt Date: Thu, 17 Sep 2020 22:41:32 -0700 Subject: [PATCH] Fixed grouping issue --- operator_adm_export.py | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/operator_adm_export.py b/operator_adm_export.py index 4f1cf14..7b82874 100644 --- a/operator_adm_export.py +++ b/operator_adm_export.py @@ -151,11 +151,14 @@ def group_speakers(speakers, scene) -> List[List[bpy.types.Object]]: ret_val = [[]] for spk in by_priority: + success = False # flaggy-flag because I can't do a break->continue from the inner for elem in ret_val: if list_can_accept_speaker(elem, spk): elem.append(spk) + success = True break - ret_val.append([spk]) + if not success: + ret_val.append([spk]) for i in range(len(ret_val)): ret_val[i] = speakers_by_start_time(ret_val[i]) @@ -265,15 +268,8 @@ def load_infiles_for_muxing(mixdowns): return infiles, shortest_file -def rm_object_mixes(mixdowns): - print("rm_object_mixes entered") - for elem in mixdowns: - os.unlink(elem[0]) - - - def write_muxed_wav(mixdowns, scene, out_format, room_size, outfile, shortest_file, object_count, infiles): - print("write_muxed_wav entered") + #print("write_muxed_wav entered") READ_BLOCK=1024 speaker_groups = list(map(lambda x: x[1], mixdowns)) @@ -302,9 +298,11 @@ def mux_adm_from_object_mixdowns(scene, mixdowns_spk_list_tuple, output_filename """ mixdowns are a tuple of wave filename, and corresponding speaker object """ + #print("mux_adm_from_object_mixdowns entered") + object_count = len(mixdowns_spk_list_tuple) assert object_count > 0 - + infiles, shortest_file = load_infiles_for_muxing(mixdowns_spk_list_tuple) out_file = output_filename or os.path.join(os.path.dirname(mixdowns_spk_list_tuple[0][0]), @@ -319,8 +317,12 @@ def mux_adm_from_object_mixdowns(scene, mixdowns_spk_list_tuple, output_filename for infile in infiles: infile._buffer.close() - - rm_object_mixes(mixdowns_spk_list_tuple) + + +def rm_object_mixes(mixdowns): + #print("rm_object_mixes entered") + for elem in mixdowns: + os.remove(elem[0]) def all_speakers(scene): @@ -351,6 +353,7 @@ def create_mixdown_for_object(scene, speaker_group, basedir): fn = os.path.join(basedir, "%s_%s.wav" % (scene_name, speaker_name) ) bpy.ops.sound.mixdown(filepath=fn, container='WAV', codec='PCM', format='S24') + print("Created mixdown named {}".format(fn)) return fn @@ -393,11 +396,16 @@ def write_some_data(context, filepath, room_size, max_objects): too_far_speakers = [] if len(object_groups) > max_objects: too_far_speakers = object_groups[max_objects:] - object_groups =object_groups[0:max_objects] + object_groups = object_groups[0:max_objects] print("Will create {} objects for {} sources, ignoring {} sources".format( len(object_groups), len(sound_sources), len(too_far_speakers))) + for i, group in enumerate(object_groups): + print("Object Group %i"%i) + for source in group: + print(" - %s" % source.name) + mixdowns_spk_list_tuple = list(generate_speaker_mixdowns(scene, object_groups, filepath)) mixdown_count = len(mixdowns_spk_list_tuple) @@ -410,6 +418,8 @@ def write_some_data(context, filepath, room_size, max_objects): room_size=room_size) #cleanup + #print("Will delete {} input object files".format(len(mixdowns_spk_list_tuple))) + rm_object_mixes(mixdowns_spk_list_tuple) unmute_all_speakers(scene) restore_output_state(ctx, context) return {'FINISHED'}