summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Sounds/Noise_Off.wavbin0 -> 159822 bytes
-rw-r--r--Sounds/Noise_On.wavbin0 -> 90190 bytes
-rw-r--r--libunity.py94
-rw-r--r--transcribe.py5
4 files changed, 63 insertions, 36 deletions
diff --git a/Sounds/Noise_Off.wav b/Sounds/Noise_Off.wav
new file mode 100644
index 0000000..7c8a9bf
--- /dev/null
+++ b/Sounds/Noise_Off.wav
Binary files differ
diff --git a/Sounds/Noise_On.wav b/Sounds/Noise_On.wav
new file mode 100644
index 0000000..925b3ed
--- /dev/null
+++ b/Sounds/Noise_On.wav
Binary files differ
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()