some sound bug fixes

This commit is contained in:
Timur Nizamov
2025-11-16 16:01:23 +02:00
parent e12c5f2f98
commit ef3b4c363e
40 changed files with 476 additions and 322 deletions
@@ -28,6 +28,7 @@ public class CarDrivingRoutine : NetworkBehaviour
private EventInstance CarMovement;
private void Awake()
{
//Debug.LogError("AUDIO MANAGER:");
@@ -39,6 +40,7 @@ public class CarDrivingRoutine : NetworkBehaviour
CarMovement = AudioManager.Instance.CreateInstance(FMODEvents.Instance.BoltCarSimpleDriving); //initialising the variable
CarMovement.setParameterByName("EasyBoltLogic", 0); //"Driving - 0 in FMOD"
CarMovement.set3DAttributes(FMODUnity.RuntimeUtils.To3DAttributes(gameObject)); //setting 3d attributes
}
private void Start()
{
@@ -123,7 +123,7 @@ public class KeyboardManager : NetworkBehaviour
void OnEnterPressed()
{
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.Hover, gameObject);
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.Click, gameObject);
if (_input.Length > 0)
{
@@ -9,7 +9,11 @@ public class FloorButtonVisualizer : MonoBehaviour
public Sprite ActiveSprite;
public bool ActiveState;
private Image buttonImage;
// Start is called before the first frame update
// --- Static tracking for selection change ---
private static FloorButtonVisualizer lastActiveButton = null;
private static bool initialized = false;
void Start()
{
buttonImage = gameObject.GetComponent<Image>();
@@ -19,12 +23,20 @@ public class FloorButtonVisualizer : MonoBehaviour
{
this.ActiveState = true;
buttonImage.sprite = ActiveSprite;
//Debug.Log("Floorbutton of " + gameObject.name + " activated");
// --- Only play hover if selection actually changed ---
if (initialized && lastActiveButton != this)
{
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.Hover, gameObject);
}
lastActiveButton = this;
initialized = true;
}
public void Deactivate()
{
this.ActiveState = false;
buttonImage.sprite = InactiveSprite;
//Debug.Log("Floorbutton of " + gameObject.name + " deactivated");
}
}
@@ -25,6 +25,9 @@ public class MenuTeleportButton : MonoBehaviour
private EventInstance TeleportingSound;
FMOD.Studio.Bus SpecialBus; //FMOD bus variable
private static MenuTeleportButton lastSelectedButton = null;
private static bool initialized = false;
private void Awake()
{
TeleportingSound = AudioManager.Instance.CreateInstance(FMODEvents.Instance.Teleport); //initialise the instance
@@ -58,12 +61,19 @@ public class MenuTeleportButton : MonoBehaviour
public void SetStateSelected()
{
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.Hover, gameObject);
if (button != null && HoverSprite != null)
{
button.targetGraphic.GetComponent<Image>().sprite = HoverSprite;
// --- Only play hover sound if selection actually changed ---
if (initialized && lastSelectedButton != this)
{
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.Hover, gameObject);
}
lastSelectedButton = this;
initialized = true;
}
}
public void SetStateDefault()
@@ -106,7 +116,7 @@ public class MenuTeleportButton : MonoBehaviour
button.interactable = false;
button.interactable = true;
StartCoroutine(MuteBusForSeconds(1.5f));
StartCoroutine(MuteBusForSeconds(2.0f));
TeleportingSound.start(); //playing 2d oneshot
}
@@ -14,10 +14,16 @@ public class TutorialAudioListener : MonoBehaviour
private TeleportationProvider teleportationProvider;
private float lastStepTime;
[SerializeField] private float baseStepCooldown = 0.5f; // base interval at speed = 1
private float stepCooldown;
[Header("Settings")]
[SerializeField] private float baseStepRate = 0.5f; // Step interval at joystick = 1 and slider = 1
[SerializeField] private float joystickThreshold = 0.1f; // Minimum stick movement to count as walking
private float settingsSpeedMultiplier = 1f; // From slider (1 = default)
private bool locomotionEnabled = false;
private Vector2 currentMoveVector;
private void Awake()
{
if (tutorialController == null)
@@ -32,14 +38,15 @@ public class TutorialAudioListener : MonoBehaviour
turnAction = tutorialController.turnProvider.rightHandSnapTurnAction.action;
teleportationProvider = tutorialController.teleportProvider;
}
stepCooldown = baseStepCooldown;
}
private void OnEnable()
{
if (moveAction != null)
moveAction.performed += OnMovePerformed;
{
moveAction.performed += OnMoveInput;
moveAction.canceled += OnMoveCanceled;
}
if (turnAction != null)
turnAction.performed += OnTurnPerformed;
@@ -57,7 +64,10 @@ public class TutorialAudioListener : MonoBehaviour
private void OnDisable()
{
if (moveAction != null)
moveAction.performed -= OnMovePerformed;
{
moveAction.performed -= OnMoveInput;
moveAction.canceled -= OnMoveCanceled;
}
if (turnAction != null)
turnAction.performed -= OnTurnPerformed;
@@ -75,26 +85,48 @@ public class TutorialAudioListener : MonoBehaviour
private void HandleLocomotionToggled(bool enabled)
{
locomotionEnabled = enabled;
Debug.Log($"[TutorialAudioListener] Locomotion toggled: {enabled}");
}
private void HandleSpeedChanged(float newSpeed)
{
// Invert proportionality: faster speed = shorter step interval
float calculatedCooldown = baseStepCooldown / Mathf.Max(newSpeed, 0.01f);
// Clamp the result between 0.4 and 0.6 seconds
stepCooldown = Mathf.Clamp(calculatedCooldown, 0.3f, 0.69f);
Debug.Log($"[TutorialAudioListener] Step cooldown adjusted: {stepCooldown}");
// Slider is allowed to range normally but we clamp for stability
settingsSpeedMultiplier = Mathf.Clamp(newSpeed, 0.4f, 1.2f);
}
private void OnMovePerformed(InputAction.CallbackContext context)
private void OnMoveInput(InputAction.CallbackContext ctx)
{
currentMoveVector = ctx.ReadValue<Vector2>();
}
private void OnMoveCanceled(InputAction.CallbackContext ctx)
{
currentMoveVector = Vector2.zero;
}
private void Update()
{
TryPlayStep();
}
private void TryPlayStep()
{
if (!locomotionEnabled)
return;
if (Time.time - lastStepTime < stepCooldown)
float joystickMagnitude = currentMoveVector.magnitude;
if (joystickMagnitude < joystickThreshold)
return; // Not moving enough to walk
// --- NEW: Slider influence (very light touch) ---
float sliderInfluence = 1f + (settingsSpeedMultiplier) * 0.25f;
float effectiveMagnitude = joystickMagnitude * sliderInfluence;
// --- NEW: Step cooldown ---
float dynamicCooldown = baseStepRate / Mathf.Max(effectiveMagnitude, 0.01f);
dynamicCooldown = Mathf.Clamp(dynamicCooldown, 0.33f, 0.65f);
if (Time.time - lastStepTime < dynamicCooldown)
return;
lastStepTime = Time.time;
@@ -103,13 +135,16 @@ public class TutorialAudioListener : MonoBehaviour
private void OnTurnPerformed(InputAction.CallbackContext context)
{
// If magnitude above threshold = walking don't play spin sound
if (currentMoveVector.magnitude > joystickThreshold)
return;
// Otherwise play turning sound
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.StepSpin, gameObject);
}
private void OnTeleportEnd(LocomotionSystem locomotionSystem)
{
// Optional: Uncomment if teleport should play sound
// AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.Steps, gameObject);
// Optional teleport sound
}
}
@@ -3221,6 +3221,7 @@ GameObject:
- component: {fileID: 2567477070120516364}
- component: {fileID: 5667922335807455518}
- component: {fileID: 9130699439852735294}
- component: {fileID: 244862221083601452}
m_Layer: 5
m_Name: Level 1 button
m_TagString: Untagged
@@ -3346,6 +3347,35 @@ MonoBehaviour:
InactiveSprite: {fileID: 21300000, guid: 9b9161f51c7cdb84eba98c454b3f542c, type: 3}
ActiveSprite: {fileID: 21300000, guid: 594b1f27343305e4e99551b5fb8a1b76, type: 3}
ActiveState: 0
--- !u!114 &244862221083601452
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4006117569149960393}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0b148fe25e99eb48b9724523833bab1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Delegates:
- eventID: 0
callback:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 9130699439852735294}
m_TargetAssemblyTypeName: FloorButtonVisualizer, Assembly-CSharp
m_MethodName: Activate
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!1 &4122378368372937094
GameObject:
m_ObjectHideFlags: 0
@@ -3395,6 +3425,7 @@ GameObject:
- component: {fileID: 735405659653074444}
- component: {fileID: 1877344747539671532}
- component: {fileID: 2993125651756248496}
- component: {fileID: 5719623585416982853}
m_Layer: 5
m_Name: Level 2 button
m_TagString: Untagged
@@ -3520,6 +3551,35 @@ MonoBehaviour:
InactiveSprite: {fileID: 21300000, guid: 28748e86c9a1f0c4694006461434eca7, type: 3}
ActiveSprite: {fileID: 21300000, guid: a84b9455a04a3ca459595ecb5810fb98, type: 3}
ActiveState: 1
--- !u!114 &5719623585416982853
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4441188026596657465}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0b148fe25e99eb48b9724523833bab1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Delegates:
- eventID: 0
callback:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 2993125651756248496}
m_TargetAssemblyTypeName: FloorButtonVisualizer, Assembly-CSharp
m_MethodName: Activate
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!1 &4552840262979230797
GameObject:
m_ObjectHideFlags: 0
@@ -7700,7 +7760,9 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
tutorialController: {fileID: 8296457994299276779}
stepCooldown: 0.4
locomotionConfigurator: {fileID: 0}
baseStepRate: 0.5
joystickThreshold: 0.1
--- !u!4 &4954755430420460766 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 1894017693134941767, guid: d90913a7f0b00844a8c4482b2afc2c66,
Binary file not shown.
@@ -0,0 +1,164 @@
using UnityEngine;
using FMODUnity;
using FMOD.Studio;
using System.Collections;
public class FirstPersonOcclusion : MonoBehaviour
{
[Header("FMOD Event")]
[SerializeField] private EventReference SelectAudio;
private EventInstance AudioOccluded;
private EventDescription AudioDes;
private StudioListener Listener;
private PLAYBACK_STATE pb;
[Header("Occlusion Options")]
[SerializeField][Range(0f, 10f)] private float SoundOcclusionWidening = 1f;
[SerializeField][Range(0f, 10f)] private float PlayerOcclusionWidening = 1f;
[SerializeField] private LayerMask OcclusionLayer;
private bool AudioIsVirtual;
private float MaxDistance;
private float ListenerDistance;
private float lineCastHitCount = 0f;
private Color colour;
private bool initialisedExternally = false;
// ============================================================
// NEW — Optional external initialiser
// ============================================================
public void InitialiseWithInstance(EventInstance instance)
{
AudioOccluded = instance;
initialisedExternally = true;
RuntimeManager.AttachInstanceToGameObject(
AudioOccluded,
gameObject,
GetComponent<Rigidbody>()
);
AudioOccluded.getDescription(out AudioDes);
AudioDes.getMinMaxDistance(out float min, out MaxDistance);
}
// ============================================================
// ORIGINAL START — kept exactly the same unless external init used
// ============================================================
private IEnumerator Start()
{
// If already initialised, skip internal creation
if (!initialisedExternally)
{
AudioOccluded = RuntimeManager.CreateInstance(SelectAudio);
RuntimeManager.AttachInstanceToGameObject(AudioOccluded, gameObject);
AudioOccluded.start();
AudioOccluded.release();
AudioDes = RuntimeManager.GetEventDescription(SelectAudio);
AudioDes.getMinMaxDistance(out float minDistance, out MaxDistance);
}
// Find listener (kept exactly as before)
yield return new WaitUntil(() => FindObjectOfType<StudioListener>() != null);
Listener = FindObjectOfType<StudioListener>();
}
// ============================================================
// UNCHANGED core functionality
// ============================================================
private void FixedUpdate()
{
if (Listener == null) return;
AudioOccluded.isVirtual(out AudioIsVirtual);
AudioOccluded.getPlaybackState(out pb);
ListenerDistance = Vector3.Distance(transform.position, Listener.transform.position);
if (!AudioIsVirtual && pb == PLAYBACK_STATE.PLAYING && ListenerDistance <= MaxDistance)
{
OccludeBetween(transform.position, Listener.transform.position);
}
lineCastHitCount = 0f;
}
private void OccludeBetween(Vector3 sound, Vector3 listener)
{
Vector3 SoundLeft = CalculatePoint(sound, listener, SoundOcclusionWidening, true);
Vector3 SoundRight = CalculatePoint(sound, listener, SoundOcclusionWidening, false);
Vector3 ListenerLeft = CalculatePoint(listener, sound, PlayerOcclusionWidening, true);
Vector3 ListenerRight = CalculatePoint(listener, sound, PlayerOcclusionWidening, false);
Vector3 SoundAbove = new Vector3(sound.x, sound.y + SoundOcclusionWidening, sound.z);
Vector3 SoundBelow = new Vector3(sound.x, sound.y - SoundOcclusionWidening, sound.z);
Vector3 ListenerAbove = new Vector3(listener.x, listener.y + PlayerOcclusionWidening * .5f, listener.z);
Vector3 ListenerBelow = new Vector3(listener.x, listener.y - PlayerOcclusionWidening * .5f, listener.z);
CastLine(SoundLeft, ListenerLeft);
CastLine(SoundLeft, listener);
CastLine(SoundLeft, ListenerRight);
CastLine(sound, ListenerLeft);
CastLine(sound, listener);
CastLine(sound, ListenerRight);
CastLine(SoundRight, ListenerLeft);
CastLine(SoundRight, listener);
CastLine(SoundRight, ListenerRight);
CastLine(SoundAbove, ListenerAbove);
CastLine(SoundBelow, ListenerBelow);
colour = (PlayerOcclusionWidening == 0f || SoundOcclusionWidening == 0f) ? Color.blue : Color.green;
SetParameter();
}
private Vector3 CalculatePoint(Vector3 a, Vector3 b, float m, bool posOrneg)
{
float n = Vector3.Distance(new Vector3(a.x, 0f, a.z), new Vector3(b.x, 0f, b.z));
if (n == 0f) return a;
float mn = (m / n);
float x, z;
if (posOrneg)
{
x = a.x + (mn * (a.z - b.z));
z = a.z - (mn * (a.x - b.x));
}
else
{
x = a.x - (mn * (a.z - b.z));
z = a.z + (mn * (a.x - b.x));
}
return new Vector3(x, a.y, z);
}
private void CastLine(Vector3 Start, Vector3 End)
{
RaycastHit hit;
bool isHit = Physics.Linecast(Start, End, out hit, OcclusionLayer);
if (isHit)
{
lineCastHitCount++;
Debug.DrawLine(Start, End, Color.red);
}
else
{
Debug.DrawLine(Start, End, colour);
}
}
private void SetParameter()
{
float occlusionValue = lineCastHitCount / 11;
AudioOccluded.setParameterByName("Occlusion", occlusionValue);
}
}
-195
View File
@@ -1,195 +0,0 @@
using UnityEngine;
using FMODUnity;
using FMOD.Studio;
using System.Collections;
public class FirstPersonOcclusion : MonoBehaviour
{
[Header("FMOD Event")]
[SerializeField]
private FMODUnity.EventReference SelectAudio;
private EventInstance AudioOccluded;
private EventDescription AudioDes;
private StudioListener Listener;
private PLAYBACK_STATE pb;
[Header("Occlusion Options")]
[SerializeField]
[Range(0f, 10f)]
private float SoundOcclusionWidening = 1f;
[SerializeField]
[Range(0f, 10f)]
private float PlayerOcclusionWidening = 1f;
[SerializeField]
private LayerMask OcclusionLayer;
private bool AudioIsVirtual;
private float MaxDistance;
private float ListenerDistance;
private float lineCastHitCount = 0f;
private Color colour;
private IEnumerator Start()
{
Debug.Log("--- Start Method ---");
// 1. Event Instance Creation
AudioOccluded = RuntimeManager.CreateInstance(SelectAudio);
//Debug.Log($"Created FMOD Event Instance for: {SelectAudio.Path}");
// 2. Attaching Instance
RuntimeManager.AttachInstanceToGameObject(AudioOccluded, gameObject);
Debug.Log($"Attached FMOD Event Instance to GameObject: {gameObject.name}");
// 3. Starting Audio
AudioOccluded.start();
Debug.Log("Started FMOD Event Instance.");
// 4. Releasing Instance (This allows the event to self-manage its lifetime, which is fine)
AudioOccluded.release();
Debug.Log("Released FMOD Event Instance.");
// 5. Getting Event Description and Max Distance
AudioDes = RuntimeManager.GetEventDescription(SelectAudio);
AudioDes.getMinMaxDistance(out float minDistance, out MaxDistance);
Debug.Log($"FMOD Event Min/Max Distance: {minDistance:F2} / {MaxDistance:F2}");
// 6. Finding Listener
yield return new WaitUntil(() => FindObjectOfType<StudioListener>() != null);
Listener = FindObjectOfType<StudioListener>();
Debug.Log($"FMOD StudioListener found on {Listener.gameObject.name}");
Debug.Log("--- End Start Method ---");
}
private void FixedUpdate()
{
// Debug.Log("--- FixedUpdate Method ---"); // Too frequent, only log conditions
if (Listener == null) return; // Skip until listener exists
AudioOccluded.isVirtual(out AudioIsVirtual);
AudioOccluded.getPlaybackState(out pb);
ListenerDistance = Vector3.Distance(transform.position, Listener.transform.position);
// 7. Check Occlusion Condition
if (!AudioIsVirtual && pb == PLAYBACK_STATE.PLAYING && ListenerDistance <= MaxDistance)
{
Debug.Log($"Occlusion Check: Not Virtual, Playing, Distance {ListenerDistance:F2} <= Max {MaxDistance:F2}. Calling OccludeBetween.");
OccludeBetween(transform.position, Listener.transform.position);
}
else
{
// Log reasons why occlusion is NOT being checked
if (AudioIsVirtual) Debug.Log("Occlusion Skipped: Audio is Virtual.");
if (pb != PLAYBACK_STATE.PLAYING) Debug.Log($"Occlusion Skipped: Playback State is not PLAYING. State: {pb}");
if (ListenerDistance > MaxDistance) Debug.Log($"Occlusion Skipped: Distance {ListenerDistance:F2} > Max Distance {MaxDistance:F2}.");
}
// 8. Reset Hit Count
// Debug.Log($"Resetting lineCastHitCount from {lineCastHitCount:F0} to 0.");
lineCastHitCount = 0f;
}
private void OccludeBetween(Vector3 sound, Vector3 listener)
{
Debug.Log("--- OccludeBetween Method ---");
// 9. Calculate Points (Log only a few to avoid clutter)
Vector3 SoundLeft = CalculatePoint(sound, listener, SoundOcclusionWidening, true);
Vector3 SoundRight = CalculatePoint(sound, listener, SoundOcclusionWidening, false);
// Debug.Log($"Sound Positions: Center {sound}, Left {SoundLeft}, Right {SoundRight}");
Vector3 ListenerLeft = CalculatePoint(listener, sound, PlayerOcclusionWidening, true);
Vector3 ListenerRight = CalculatePoint(listener, sound, PlayerOcclusionWidening, false);
// Debug.Log($"Listener Positions: Center {listener}, Left {ListenerLeft}, Right {ListenerRight}");
Vector3 SoundAbove = new Vector3(sound.x, sound.y + SoundOcclusionWidening, sound.z);
Vector3 SoundBelow = new Vector3(sound.x, sound.y - SoundOcclusionWidening, sound.z);
Vector3 ListenerAbove = new Vector3(listener.x, listener.y + PlayerOcclusionWidening * 0.5f, listener.z);
Vector3 ListenerBelow = new Vector3(listener.x, listener.y - PlayerOcclusionWidening * 0.5f, listener.z);
// 10. Casting Lines (The line casts themselves will log hits)
CastLine(SoundLeft, ListenerLeft);
CastLine(SoundLeft, listener);
CastLine(SoundLeft, ListenerRight);
CastLine(sound, ListenerLeft);
CastLine(sound, listener);
CastLine(sound, ListenerRight);
CastLine(SoundRight, ListenerLeft);
CastLine(SoundRight, listener);
CastLine(SoundRight, ListenerRight);
CastLine(SoundAbove, ListenerAbove);
CastLine(SoundBelow, ListenerBelow);
if (PlayerOcclusionWidening == 0f || SoundOcclusionWidening == 0f)
{
colour = Color.blue;
}
else
{
colour = Color.green;
}
SetParameter();
Debug.Log("--- End OccludeBetween Method ---");
}
private Vector3 CalculatePoint(Vector3 a, Vector3 b, float m, bool posOrneg)
{
// Debug.Log($"Calculating offset point for: {a} to {b} with magnitude {m} and posOrneg {posOrneg}");
float x;
float z;
// n is the 2D distance between a and b
float n = Vector3.Distance(new Vector3(a.x, 0f, a.z), new Vector3(b.x, 0f, b.z));
float mn = (m / n);
// Safety check for division by zero (if sound and listener are exactly on top of each other horizontally)
if (n == 0f)
{
// If points are on the same XZ position, just return the point 'a'
// Debug.LogWarning("CalculatePoint: Division by zero avoided. Sound and Listener are at the same XZ position.");
return a;
}
if (posOrneg)
{
x = a.x + (mn * (a.z - b.z));
z = a.z - (mn * (a.x - b.x));
}
else
{
x = a.x - (mn * (a.z - b.z));
z = a.z + (mn * (a.x - b.x));
}
return new Vector3(x, a.y, z);
}
private void CastLine(Vector3 Start, Vector3 End)
{
RaycastHit hit;
// 11. Raycast result
bool isHit = Physics.Linecast(Start, End, out hit, OcclusionLayer);
if (isHit)
{
lineCastHitCount++;
Debug.Log($"Linecast HIT! Hit Count: {lineCastHitCount:F0}/11. Object hit: {hit.collider.name}.");
Debug.DrawLine(Start, End, Color.red);
}
else
{
Debug.DrawLine(Start, End, colour);
}
}
private void SetParameter()
{
float occlusionValue = lineCastHitCount / 11; // 11 is the total number of line casts
// 12. Final Parameter Value
Debug.Log($"Setting FMOD Parameter 'Occlusion' to: {occlusionValue:F2} (Hits: {lineCastHitCount:F0}/11)");
AudioOccluded.setParameterByName("Occlusion", occlusionValue);
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -69,7 +69,7 @@
</object>
<object class="EventAutomatableProperties" id="{c76e816d-57c8-456c-a329-17eb0603d09f}">
<property name="maximumDistance">
<value>60</value>
<value>45</value>
</property>
</object>
<object class="MarkerTrack" id="{59eaef25-4ee8-45f7-92cb-43f884ffe19f}" />
@@ -60,7 +60,7 @@
<destination>{99406875-ba7e-46e6-8a1c-583c35145678}</destination>
</relationship>
<relationship name="output">
<destination>{c751273e-6b77-46b1-8c19-a99f6f08e61e}</destination>
<destination>{ce68ea24-56d6-4af5-a850-87bda0652ecc}</destination>
</relationship>
</object>
<object class="EventAutomatableProperties" id="{9d7e6e68-4635-4e3b-a66b-975d89419ca5}">
@@ -64,7 +64,7 @@
<destination>{785a0218-171c-43b0-a400-ed5b478e0e52}</destination>
</relationship>
<relationship name="output">
<destination>{c751273e-6b77-46b1-8c19-a99f6f08e61e}</destination>
<destination>{ce68ea24-56d6-4af5-a850-87bda0652ecc}</destination>
</relationship>
</object>
<object class="EventAutomatableProperties" id="{bae5b038-7025-49bb-a46b-664b3b2cf708}">
@@ -60,7 +60,7 @@
<destination>{d6578bd3-e81d-4e23-9b1f-d98a017a7b35}</destination>
</relationship>
<relationship name="output">
<destination>{c751273e-6b77-46b1-8c19-a99f6f08e61e}</destination>
<destination>{ce68ea24-56d6-4af5-a850-87bda0652ecc}</destination>
</relationship>
</object>
<object class="EventAutomatableProperties" id="{6a901485-ac65-4417-b96f-749644c60b5f}">
@@ -53,7 +53,7 @@
<destination>{cd5d92df-177f-4077-b83b-a1d3846825e9}</destination>
</relationship>
<relationship name="output">
<destination>{c751273e-6b77-46b1-8c19-a99f6f08e61e}</destination>
<destination>{ce68ea24-56d6-4af5-a850-87bda0652ecc}</destination>
</relationship>
</object>
<object class="EventAutomatableProperties" id="{009221a7-eede-4793-b2fe-d8fe720d1052}">
@@ -54,7 +54,7 @@
<destination>{692e7fb8-403d-4ed5-99e4-7e138fa06823}</destination>
</relationship>
<relationship name="output">
<destination>{8431e203-753a-4633-bbee-15f9c2412d0a}</destination>
<destination>{9f27e443-4657-4fe2-9f99-cb50bf4bb534}</destination>
</relationship>
</object>
<object class="EventAutomatableProperties" id="{b0d3a5ad-8759-4304-af27-29078fab72f3}">
@@ -53,7 +53,7 @@
<destination>{b883c971-d553-41c9-8d37-3b20092b7741}</destination>
</relationship>
<relationship name="output">
<destination>{69ee688f-dc4e-4df2-a125-df79ed93217e}</destination>
<destination>{9f27e443-4657-4fe2-9f99-cb50bf4bb534}</destination>
</relationship>
</object>
<object class="EventAutomatableProperties" id="{88cc1d43-9b50-4bde-a353-56b0e49c0812}" />
@@ -56,7 +56,7 @@
<destination>{6721f316-4c14-42f0-abed-906731885df2}</destination>
</relationship>
<relationship name="output">
<destination>{9f27e443-4657-4fe2-9f99-cb50bf4bb534}</destination>
<destination>{69ee688f-dc4e-4df2-a125-df79ed93217e}</destination>
</relationship>
</object>
<object class="EventAutomatableProperties" id="{27b9bba1-5a4c-4886-9adf-acfd3ae2c80e}" />
@@ -53,7 +53,7 @@
<destination>{9fa374b5-4d33-4d57-9e95-cbd43def38b3}</destination>
</relationship>
<relationship name="output">
<destination>{9f27e443-4657-4fe2-9f99-cb50bf4bb534}</destination>
<destination>{69ee688f-dc4e-4df2-a125-df79ed93217e}</destination>
</relationship>
</object>
<object class="EventAutomatableProperties" id="{0521ae5c-7f73-4be8-9de7-1d9031eb4f5c}">
@@ -54,7 +54,7 @@
<destination>{e9d8a9af-9a9b-4cdc-921e-bdc5b1db9955}</destination>
</relationship>
<relationship name="output">
<destination>{c751273e-6b77-46b1-8c19-a99f6f08e61e}</destination>
<destination>{8431e203-753a-4633-bbee-15f9c2412d0a}</destination>
</relationship>
</object>
<object class="EventAutomatableProperties" id="{3ddbb4f1-4569-45de-9f6b-4cdda476e6ff}">
@@ -87,7 +87,7 @@
</object>
<object class="EventMixerMaster" id="{09541088-24f8-4cef-ad4f-6e713e129f95}">
<property name="volume">
<value>6</value>
<value>8</value>
</property>
<relationship name="effectChain">
<destination>{0fee013d-657b-47c5-85d1-475195a25a23}</destination>
@@ -35,7 +35,7 @@
</relationship>
<relationship name="parameters">
<destination>{052e1f9c-5b6f-476b-946d-b2bdcdc8f8eb}</destination>
<destination>{9abe2acc-a8b4-4415-840b-2ac27847b4ff}</destination>
<destination>{68bf40d2-7df8-4b0c-a6bc-9d3c36d63439}</destination>
</relationship>
<relationship name="banks">
<destination>{9d1145b0-e099-4ee4-ab1d-23cc274af901}</destination>
@@ -49,6 +49,7 @@
<object class="MasterTrack" id="{cd01f012-7f74-4693-8f68-395acd8b0d35}">
<relationship name="automationTracks">
<destination>{087063af-72f8-4cca-b56a-eda53b878587}</destination>
<destination>{980354c8-26a3-47a1-80a6-769cbf436bda}</destination>
</relationship>
<relationship name="modules">
<destination>{05ec5f01-3eb6-4f68-b75b-e99b7c476eee}</destination>
@@ -118,12 +119,15 @@
<destination>{c6ed1c8a-6317-4b6e-9c2f-a9de5d998f05}</destination>
</relationship>
</object>
<object class="ParameterProxy" id="{9abe2acc-a8b4-4415-840b-2ac27847b4ff}">
<object class="ParameterProxy" id="{68bf40d2-7df8-4b0c-a6bc-9d3c36d63439}">
<relationship name="preset">
<destination>{8d183079-30c4-4cbb-837b-5db8c493ed3b}</destination>
<destination>{fb894807-eb7f-48db-b3de-e2f5dd3322a2}</destination>
</relationship>
</object>
<object class="EventMixerMaster" id="{783c2004-c047-4bf0-a1b5-05f363b1ec24}">
<relationship name="automators">
<destination>{93017814-5ff7-41bb-a85c-fc00228d6511}</destination>
</relationship>
<relationship name="effectChain">
<destination>{5ac38b31-98b7-473d-8882-03fa4bb5da28}</destination>
</relationship>
@@ -139,6 +143,11 @@
<destination>{6d4159b3-ea9e-461b-ba14-b1be5405eb95}</destination>
</relationship>
</object>
<object class="AutomationTrack" id="{980354c8-26a3-47a1-80a6-769cbf436bda}">
<relationship name="automator">
<destination>{93017814-5ff7-41bb-a85c-fc00228d6511}</destination>
</relationship>
</object>
<object class="TransitionSourceSound" id="{05ec5f01-3eb6-4f68-b75b-e99b7c476eee}">
<property name="length">
<value>0</value>
@@ -317,6 +326,14 @@
<destination>{7007bc9b-631e-461e-b46e-f1cb71b0a9e3}</destination>
</relationship>
</object>
<object class="Automator" id="{93017814-5ff7-41bb-a85c-fc00228d6511}">
<property name="nameOfPropertyBeingAutomated">
<value>volume</value>
</property>
<relationship name="automationCurves">
<destination>{c6483dc0-3132-49c3-9ba3-ef97f7f31091}</destination>
</relationship>
</object>
<object class="MixerBusEffectChain" id="{5ac38b31-98b7-473d-8882-03fa4bb5da28}">
<relationship name="effects">
<destination>{17b6686c-b69a-4290-9a34-f1615792f5c3}</destination>
@@ -414,6 +431,17 @@
<destination>{c6ed1c8a-6317-4b6e-9c2f-a9de5d998f05}</destination>
</relationship>
</object>
<object class="AutomationCurve" id="{c6483dc0-3132-49c3-9ba3-ef97f7f31091}">
<relationship name="parameter">
<destination>{fb894807-eb7f-48db-b3de-e2f5dd3322a2}</destination>
</relationship>
<relationship name="automationPoints">
<destination>{6511c4b5-301e-45ff-b07e-2dc25691ad3c}</destination>
<destination>{f27b755e-124b-49b8-8d3f-d69403044a53}</destination>
<destination>{2f40e6d1-2e17-4ac1-93ec-f9cdf454778e}</destination>
<destination>{9c80fde5-1b08-459f-a1d1-e3b7830cc8f9}</destination>
</relationship>
</object>
<object class="MixerBusFader" id="{17b6686c-b69a-4290-9a34-f1615792f5c3}" />
<object class="SpatialiserEffect" id="{fe7fa346-05af-4c7e-900c-1772749be6a1}" />
<object class="MultibandEqEffect" id="{c43e9d3e-ce29-4e53-8209-26b736863d02}">
@@ -516,61 +544,93 @@
</property>
</object>
<object class="MixerBusFader" id="{b99da5db-4add-462e-999e-35bad8a56417}" />
<object class="AutomationPoint" id="{6511c4b5-301e-45ff-b07e-2dc25691ad3c}">
<property name="position">
<value>0.001076426264800861</value>
</property>
<property name="value">
<value>3.81469727e-06</value>
</property>
</object>
<object class="AutomationPoint" id="{f27b755e-124b-49b8-8d3f-d69403044a53}">
<property name="position">
<value>0.47631862217438103</value>
</property>
<property name="value">
<value>-7</value>
</property>
</object>
<object class="AutomationPoint" id="{2f40e6d1-2e17-4ac1-93ec-f9cdf454778e}">
<property name="position">
<value>0.99946178686759946</value>
</property>
<property name="value">
<value>-80</value>
</property>
</object>
<object class="AutomationPoint" id="{9c80fde5-1b08-459f-a1d1-e3b7830cc8f9}">
<property name="position">
<value>0.9903121636167922</value>
</property>
<property name="value">
<value>-10.9341545</value>
</property>
</object>
<object class="Automator" id="{6d4159b3-ea9e-461b-ba14-b1be5405eb95}">
<property name="nameOfPropertyBeingAutomated">
<value>frequencyA</value>
</property>
<relationship name="automationCurves">
<destination>{2e2c0b59-cd7c-4f56-a6fb-948fb66056bf}</destination>
<destination>{6c505241-c058-47cb-b714-f520fdbe0caa}</destination>
</relationship>
</object>
<object class="AutomationCurve" id="{2e2c0b59-cd7c-4f56-a6fb-948fb66056bf}">
<object class="AutomationCurve" id="{6c505241-c058-47cb-b714-f520fdbe0caa}">
<relationship name="parameter">
<destination>{8d183079-30c4-4cbb-837b-5db8c493ed3b}</destination>
<destination>{fb894807-eb7f-48db-b3de-e2f5dd3322a2}</destination>
</relationship>
<relationship name="automationPoints">
<destination>{50d95503-71eb-40cd-bf3c-9c81df86ce9c}</destination>
<destination>{dd976ac6-fd76-433d-9529-838cfc6b729f}</destination>
<destination>{271ac30f-9855-4d8d-9c3f-e9decd599a63}</destination>
<destination>{ca5c5e24-641a-4abe-a446-fb75c5add4a8}</destination>
<destination>{c5d1b0fa-4a02-495b-b7b9-213d29640d30}</destination>
<destination>{0b8a39b4-4ce2-4b14-b5f9-09d0d5ecb004}</destination>
<destination>{3d47a52a-5449-42c0-b0b3-b7dbb7694761}</destination>
<destination>{411906cd-ff80-4c62-8a5b-d2d075404e9e}</destination>
</relationship>
</object>
<object class="AutomationPoint" id="{50d95503-71eb-40cd-bf3c-9c81df86ce9c}">
<object class="AutomationPoint" id="{c5d1b0fa-4a02-495b-b7b9-213d29640d30}">
<property name="position">
<value>0</value>
<value>0.001076426264800861</value>
</property>
<property name="value">
<value>22000</value>
<value>18000</value>
</property>
<property name="curveShape">
<value>-0.12912713</value>
</property>
</object>
<object class="AutomationPoint" id="{0b8a39b4-4ce2-4b14-b5f9-09d0d5ecb004}">
<property name="position">
<value>0.47524219590958017</value>
</property>
<property name="value">
<value>4500</value>
</property>
</object>
<object class="AutomationPoint" id="{3d47a52a-5449-42c0-b0b3-b7dbb7694761}">
<property name="position">
<value>0.98170075349838526</value>
</property>
<property name="value">
<value>150</value>
</property>
<property name="curveShape">
<value>0.0435885787</value>
</property>
</object>
<object class="AutomationPoint" id="{411906cd-ff80-4c62-8a5b-d2d075404e9e}">
<property name="position">
<value>1</value>
</property>
<property name="isSCurve">
<value>true</value>
</property>
</object>
<object class="AutomationPoint" id="{dd976ac6-fd76-433d-9529-838cfc6b729f}">
<property name="position">
<value>39.604519774011301</value>
</property>
<property name="value">
<value>30</value>
</property>
</object>
<object class="AutomationPoint" id="{271ac30f-9855-4d8d-9c3f-e9decd599a63}">
<property name="position">
<value>25.5</value>
</property>
<property name="value">
<value>35</value>
</property>
</object>
<object class="AutomationPoint" id="{ca5c5e24-641a-4abe-a446-fb75c5add4a8}">
<property name="position">
<value>14.5</value>
</property>
<property name="value">
<value>3500</value>
<value>20</value>
</property>
</object>
</objects>
@@ -152,7 +152,7 @@
</object>
<object class="EventMixerGroup" id="{cdf80f01-e74c-4af6-98fc-be0a8a66d5fa}">
<property name="volume">
<value>9.5</value>
<value>7.5</value>
</property>
<property name="name">
<value>Audio 2</value>
@@ -1,28 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<objects serializationModel="Studio.02.03.00">
<object class="ParameterPreset" id="{319559ef-04bf-4399-ad4d-f2857201675d}">
<property name="name">
<value>Car</value>
</property>
<relationship name="folder">
<destination>{72821a40-1f9b-449e-9f29-45c4d8800c81}</destination>
</relationship>
<relationship name="parameter">
<destination>{8d183079-30c4-4cbb-837b-5db8c493ed3b}</destination>
</relationship>
</object>
<object class="GameParameter" id="{8d183079-30c4-4cbb-837b-5db8c493ed3b}">
<property name="parameterType">
<value>3</value>
</property>
<property name="maximum">
<value>40</value>
</property>
<property name="initialValue">
<value>0</value>
</property>
<property name="isExposedRecursively">
<value>false</value>
</property>
</object>
</objects>
@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<objects serializationModel="Studio.02.03.00">
<object class="ParameterPreset" id="{78b39a91-4363-470b-94f5-ebddc0e41885}">
<property name="name">
<value>CafeEQ</value>
</property>
<relationship name="folder">
<destination>{72821a40-1f9b-449e-9f29-45c4d8800c81}</destination>
</relationship>
<relationship name="parameter">
<destination>{f83835cd-446d-4f3c-9fc6-2c0e984edbad}</destination>
</relationship>
</object>
<object class="GameParameter" id="{f83835cd-446d-4f3c-9fc6-2c0e984edbad}">
<property name="initialValue">
<value>0</value>
</property>
</object>
</objects>
@@ -13,7 +13,7 @@
</object>
<object class="GameParameter" id="{fb894807-eb7f-48db-b3de-e2f5dd3322a2}">
<property name="initialValue">
<value>0</value>
<value>1</value>
</property>
<relationship name="modulators">
<destination>{a1523d7a-fecc-424f-8e27-bd2c5cb9a80f}</destination>
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<objects serializationModel="Studio.02.03.00">
<object class="MixerVCA" id="{162960f4-09a2-4526-a61e-7ac7e219d27d}">
<property name="name">
<value>SFX</value>
</property>
<relationship name="mixer">
<destination>{a1197cab-76c8-4da4-a41f-969ff1afdca4}</destination>
</relationship>
</object>
</objects>
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<objects serializationModel="Studio.02.03.00">
<object class="MixerVCA" id="{6a1a7123-bd44-49b1-9092-22ef5bb105ec}">
<property name="name">
<value>UI</value>
</property>
<relationship name="mixer">
<destination>{a1197cab-76c8-4da4-a41f-969ff1afdca4}</destination>
</relationship>
</object>
</objects>
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<objects serializationModel="Studio.02.03.00">
<object class="MixerVCA" id="{7db632b8-c5c2-4e3e-ab97-f087b29d2976}">
<property name="name">
<value>Ambiences</value>
</property>
<relationship name="masters">
<destination>{abdd8187-ee40-4826-82f2-b919c3daf22c}</destination>
</relationship>
<relationship name="mixer">
<destination>{a1197cab-76c8-4da4-a41f-969ff1afdca4}</destination>
</relationship>
</object>
</objects>
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<objects serializationModel="Studio.02.03.00">
<object class="MixerVCA" id="{abdd8187-ee40-4826-82f2-b919c3daf22c}">
<property name="name">
<value>Master</value>
</property>
<relationship name="mixer">
<destination>{a1197cab-76c8-4da4-a41f-969ff1afdca4}</destination>
</relationship>
</object>
</objects>
+4
View File
@@ -4,6 +4,10 @@
"name": "iopprnbb ,,p",
"score": 491.0
},
{
"name": "timmi",
"score": 469.0
},
{
"name": "jtimu",
"score": 465.0