diff options
| -rw-r--r-- | Sounds/Noise_Off.wav | bin | 0 -> 159822 bytes | |||
| -rw-r--r-- | Sounds/Noise_On.wav | bin | 0 -> 90190 bytes | |||
| -rw-r--r-- | libunity.py | 94 | ||||
| -rw-r--r-- | transcribe.py | 5 |
4 files changed, 63 insertions, 36 deletions
diff --git a/Sounds/Noise_Off.wav b/Sounds/Noise_Off.wav Binary files differnew file mode 100644 index 0000000..7c8a9bf --- /dev/null +++ b/Sounds/Noise_Off.wav diff --git a/Sounds/Noise_On.wav b/Sounds/Noise_On.wav Binary files differnew file mode 100644 index 0000000..925b3ed --- /dev/null +++ b/Sounds/Noise_On.wav diff --git a/libunity.py b/libunity.py index 94e5ef2..f9e9e28 100644 --- a/libunity.py +++ b/libunity.py @@ -797,7 +797,49 @@ class UnityAnimator(): #print("len float curves: {}".format(len(new_clip.mapping['m_FloatCurves'].sequence)), file=sys.stderr) - def generateOffAnimations(self, guid_map, generated_anim_dir): + def generateOffAnimationForGuid(self, guid_map, generated_anim_dir, guid): + # Looking at an animation. + if not guid in guid_map.keys(): + return + + animation_path = guid_map[guid] + print("Checking animation at {}".format(animation_path), file=sys.stderr) + parser = UnityParser() + parser.parseFile(animation_path) + anim = UnityAnimator() + anim.addNodes(parser.nodes) + + clip = anim.peekNodeOfClass('74') + + has_nonzero = False + curve_members = ["m_FloatCurves", "m_EditorCurves"] + for memb in curve_members: + for curve in clip.mapping['AnimationClip'].mapping[memb].sequence: + attr = curve.mapping['attribute'] + path = curve.mapping['path'] + + for m_curve in curve.mapping['curve'].mapping['m_Curve'].sequence: + if m_curve.mapping['value'] != '0': + has_nonzero = True + m_curve.mapping['value'] = '0' + + if not has_nonzero: + print("Animation does not set anything nonzero") + return + + print("Animation sets things nonzero, fixing") + + new_anim_path = "OFF_{}".format(os.path.basename(animation_path)) + new_anim_path = "{}/{}".format(generated_anim_dir, new_anim_path) + + with open(new_anim_path, "w") as f: + f.write(str(anim)) + + meta = Metadata() + with open(new_anim_path + ".meta", "w") as f: + f.write(str(meta)) + + def generateOffAnimationsAnimStates(self, guid_map, generated_anim_dir): animator_state_id = '1102' for node in self.nodes: if node.class_id != animator_state_id: @@ -808,47 +850,27 @@ class UnityAnimator(): if not 'guid' in motion.mapping: continue guid = motion.mapping['guid'] + self.generateOffAnimationForGuid(guid_map, generated_anim_dir, guid) - # Looking at an animation. - if not guid in guid_map.keys(): - continue - - animation_path = guid_map[guid] - print("Checking animation at {}".format(animation_path), file=sys.stderr) - parser = UnityParser() - parser.parseFile(animation_path) - anim = UnityAnimator() - anim.addNodes(parser.nodes) - - clip = anim.peekNodeOfClass('74') - - has_nonzero = False - curve_members = ["m_FloatCurves", "m_EditorCurves"] - for memb in curve_members: - for curve in clip.mapping['AnimationClip'].mapping[memb].sequence: - attr = curve.mapping['attribute'] - path = curve.mapping['path'] - - for m_curve in curve.mapping['curve'].mapping['m_Curve'].sequence: - if m_curve.mapping['value'] != '0': - has_nonzero = True - m_curve.mapping['value'] = '0' - if not has_nonzero: - print("Animation does not set anything nonzero") + def generateOffAnimationsBlendTrees(self, guid_map, generated_anim_dir): + animator_state_id = '206' + for node in self.nodes: + if node.class_id != animator_state_id: continue - print("Animation sets things nonzero, fixing") - - new_anim_path = "OFF_{}".format(os.path.basename(animation_path)) - new_anim_path = "{}/{}".format(generated_anim_dir, new_anim_path) + # Looking at an animation state. + for child in node.mapping['BlendTree'].mapping['m_Childs'].sequence: + motion = child.mapping['m_Motion'] - with open(new_anim_path, "w") as f: - f.write(str(anim)) + if not 'guid' in motion.mapping: + continue + guid = motion.mapping['guid'] + self.generateOffAnimationForGuid(guid_map, generated_anim_dir, guid) - meta = Metadata() - with open(new_anim_path + ".meta", "w") as f: - f.write(str(meta)) + def generateOffAnimations(self, guid_map, generated_anim_dir): + self.generateOffAnimationsAnimStates(guid_map, generated_anim_dir) + self.generateOffAnimationsBlendTrees(guid_map, generated_anim_dir) def addTransitionBooleanCondition(self, from_state, trans, param, branch): # Populate the transition's condition logic. diff --git a/transcribe.py b/transcribe.py index 48a97ba..f9aee9f 100644 --- a/transcribe.py +++ b/transcribe.py @@ -13,6 +13,9 @@ from pydub import effects as pydub_effects # License: MIT. import pyaudio import numpy as np +# python3 -m pip install playsound==1.2.2 +# License: MIT. +from playsound import playsound import steamvr import string_matcher import sys @@ -314,11 +317,13 @@ def readControllerInput(audio_state): if state == RECORD_STATE: state = PAUSE_STATE osc_ctrl.indicateSpeech(audio_state.osc_client, False) + playsound(os.path.abspath("Sounds/Noise_Off.wav")) audio_state.audio_paused = True elif state == PAUSE_STATE: state = RECORD_STATE osc_ctrl.indicateSpeech(audio_state.osc_client, True) + playsound(os.path.abspath("Sounds/Noise_On.wav")) audio_state.transcribe_lock.acquire() audio_state.audio_lock.acquire() |
