Initial Commit

This commit is contained in:
Lillith Rose (Device: Lucia) 2025-06-18 12:00:40 -04:00
commit 13767d3f40
160 changed files with 51070 additions and 0 deletions

View file

@ -0,0 +1,74 @@
using UnityEngine;
using UnityEngine.Audio;
using System.Linq;
#if UNITY_EDITOR
using UnityEditor;
#endif
[RequireComponent(typeof(AudioSource))]
public class SystemAudioCapture : MonoBehaviour
{
private AudioSource audioSource;
[SerializeField] private string deviceName;
[SerializeField] private AudioMixerGroup audioMixerGroup; // Assign a muted mixer group
private int sampleRate = 48000;
private int bufferSize = 1024;
public AudioClip CapturedAudio => audioSource.clip;
void Start()
{
audioSource = GetComponent<AudioSource>();
audioSource.loop = true;
audioSource.mute = false; // Allow processing
audioSource.outputAudioMixerGroup = audioMixerGroup; // Route to a muted mixer group
StartCapture();
}
private void StartCapture()
{
if (string.IsNullOrEmpty(deviceName)) return;
if (Microphone.IsRecording(deviceName))
Microphone.End(deviceName);
audioSource.clip = Microphone.Start(deviceName, true, 10, sampleRate);
while (Microphone.GetPosition(deviceName) <= 0) { } // Wait for microphone to initialize
audioSource.Play(); // Ensure playback for Audio Link
}
public void RestartCapture()
{
if (Microphone.IsRecording(deviceName))
Microphone.End(deviceName);
StartCapture();
}
#if UNITY_EDITOR
[CustomEditor(typeof(SystemAudioCapture))]
public class SystemAudioCaptureEditor : Editor
{
public override void OnInspectorGUI()
{
SystemAudioCapture script = (SystemAudioCapture)target;
var devices = Microphone.devices;
int selectedIndex = Mathf.Max(0, devices.ToList().IndexOf(script.deviceName));
selectedIndex = EditorGUILayout.Popup("Audio Device", selectedIndex, devices);
if (selectedIndex >= 0 && selectedIndex < devices.Length)
{
script.deviceName = devices[selectedIndex];
}
script.audioMixerGroup = (AudioMixerGroup)EditorGUILayout.ObjectField("Audio Mixer Group", script.audioMixerGroup, typeof(AudioMixerGroup), false);
if (GUILayout.Button("Restart Capture"))
{
script.RestartCapture();
}
if (GUI.changed)
{
EditorUtility.SetDirty(script);
}
DrawDefaultInspector();
}
}
#endif
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 61b0e75002246a146a1fac6161b02527
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,104 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!244 &-8518242826334645401
AudioMixerEffectController:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_EffectID: b47807d6588481b418cfd1b03a992946
m_EffectName: Attenuation
m_MixLevel: 1de6082d702acdf40ae222067f4f1db0
m_Parameters: []
m_SendTarget: {fileID: 0}
m_EnableWetMix: 0
m_Bypass: 0
--- !u!243 &-2904293998249763307
AudioMixerGroupController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Silent
m_AudioMixer: {fileID: 24100000}
m_GroupID: 42b906f295624304aab92090d94f4b5c
m_Children: []
m_Volume: 82b743a12a7857749a202545eccc99ae
m_Pitch: 8ecf05f078429454ea47564301ce3523
m_Send: 00000000000000000000000000000000
m_Effects:
- {fileID: -8518242826334645401}
m_UserColorIndex: 0
m_Mute: 0
m_Solo: 0
m_BypassEffects: 0
--- !u!241 &24100000
AudioMixerController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: NewAudioMixer
m_OutputGroup: {fileID: 0}
m_MasterGroup: {fileID: 24300002}
m_Snapshots:
- {fileID: 24500006}
m_StartSnapshot: {fileID: 24500006}
m_SuspendThreshold: -80
m_EnableSuspend: 1
m_UpdateMode: 0
m_ExposedParameters: []
m_AudioMixerGroupViews:
- guids:
- 1cc603b6426b4ca429cefd980c46a3b8
- 42b906f295624304aab92090d94f4b5c
name: View
m_CurrentViewIndex: 0
m_TargetSnapshot: {fileID: 24500006}
--- !u!243 &24300002
AudioMixerGroupController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Master
m_AudioMixer: {fileID: 24100000}
m_GroupID: 1cc603b6426b4ca429cefd980c46a3b8
m_Children:
- {fileID: -2904293998249763307}
m_Volume: 87d2ad79b28cd7643bfcffebd031ac5d
m_Pitch: 2d3a374f0780b114f8708060419e9981
m_Send: 00000000000000000000000000000000
m_Effects:
- {fileID: 24400004}
m_UserColorIndex: 0
m_Mute: 0
m_Solo: 0
m_BypassEffects: 0
--- !u!244 &24400004
AudioMixerEffectController:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_EffectID: 8c62407025a23a6409b162409b3460e1
m_EffectName: Attenuation
m_MixLevel: 9fa416b2b7b6d71408527ba8d9563b77
m_Parameters: []
m_SendTarget: {fileID: 0}
m_EnableWetMix: 0
m_Bypass: 0
--- !u!245 &24500006
AudioMixerSnapshotController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Snapshot
m_AudioMixer: {fileID: 24100000}
m_SnapshotID: 3a343ed8de1d5914f9167c99797d8e38
m_FloatValues:
82b743a12a7857749a202545eccc99ae: -80
m_TransitionOverrides: {}

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: cc0ec66b60b791f47863b58f56075d35
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 24100000
userData:
assetBundleName:
assetBundleVariant: