From 65676ec21b581375ea23138ff3323adcc9590834 Mon Sep 17 00:00:00 2001 From: Jamie Hardt Date: Sun, 20 Sep 2020 14:26:42 -0700 Subject: [PATCH] More refactoring --- sound_objects/intern/generate_adm.py | 18 +++++++++++------- sound_objects/intern/object_mix.py | 8 ++++++++ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/sound_objects/intern/generate_adm.py b/sound_objects/intern/generate_adm.py index e97f483..b07b1c8 100644 --- a/sound_objects/intern/generate_adm.py +++ b/sound_objects/intern/generate_adm.py @@ -83,7 +83,7 @@ def group_speakers(speakers, scene) -> List[List[bpy.types.Object]]: return ret_val -def adm_for_object(scene, sound_object: ObjectMix, room_size, adm_builder, object_index, wav_format): +def adm_for_object(scene, sound_object: ObjectMix, room_size, adm_builder, object_index): fps = scene.render.fps frame_start = scene.frame_start frame_end = scene.frame_end @@ -95,11 +95,11 @@ def adm_for_object(scene, sound_object: ObjectMix, room_size, adm_builder, objec created.audio_object.start = Fraction(frame_start, fps) created.audio_object.duration = Fraction(frame_end - frame_start, fps) - created.track_uid.sampleRate = wav_format.sampleRate - created.track_uid.bitDepth = wav_format.bitsPerSample + created.track_uid.sampleRate = sound_object.sample_rate + created.track_uid.bitDepth = sound_object.bits_per_sample -def adm_for_scene(scene, sound_objects: List['ObjectMix'], wav_format, room_size): +def adm_for_scene(scene, sound_objects: List['ObjectMix'], room_size): adm_builder = ADMBuilder() frame_start = scene.frame_start @@ -113,7 +113,7 @@ def adm_for_scene(scene, sound_objects: List['ObjectMix'], wav_format, room_size adm_builder.create_content(audioContentName="Objects") for object_index, sound_object in enumerate(sound_objects): - adm_for_object(scene, sound_object, room_size, adm_builder, object_index, wav_format) + adm_for_object(scene, sound_object, room_size, adm_builder, object_index) adm = adm_builder.adm @@ -149,13 +149,18 @@ def write_muxed_wav(mix_pool: ObjectMixPool, scene, out_format, room_size, outfi READ_BLOCK = 1024 sound_objects = mix_pool.object_mixes - adm, chna = adm_for_scene(scene, sound_objects, out_format, room_size=room_size) + adm, chna = adm_for_scene(scene, sound_objects, room_size=room_size) outfile.axml = lxml.etree.tostring(adm, pretty_print=True) outfile.chna = chna outfile.bext = bext_data(scene, out_format.sampleRate, room_size=room_size) cursor = 0 + + # Not sure if this is necessary but lets do it + for obj in mix_pool.object_mixes: + obj.mixdown_reader.seek(0) + while True: remainder = shortest_file - cursor to_read = min(READ_BLOCK, remainder) @@ -221,6 +226,5 @@ def generate_adm(context: bpy.types.Context, filepath: str, room_size: float, ma output_filename=filepath, room_size=room_size) - print("generate_adm exiting") return {'FINISHED'} diff --git a/sound_objects/intern/object_mix.py b/sound_objects/intern/object_mix.py index 042763d..8af599a 100644 --- a/sound_objects/intern/object_mix.py +++ b/sound_objects/intern/object_mix.py @@ -30,6 +30,14 @@ class ObjectMix: def frame_end(self): return self.scene.frame_end + @property + def sample_rate(self): + return self.mixdown_reader.sampleRate + + @property + def bits_per_sample(self): + return self.mixdown_reader.bitdepth + @property def mixdown_reader(self) -> Bw64Reader: if self._mixdown_reader is None: