private void RecycleUnit(AudioUnit unit) { if (unit == null || !unit.isAllocated) { #if UNITY_EDITOR print("try to recycle invalid unit"); #endif return; } #if UNITY_EDITOR print("recycle unit"); #endif LinkedListNode <AudioUnit> node = unit.selfNode; unit.selfNode = null; unit.OnRecycle -= RecycleUnit; unit.gameObject.transform.parent = transform; unit.gameObject.transform.localPosition = Vector3.zero; if (node.Value.source.isPlaying) { node.Value.source.Stop(); } node.Value.StopAllCoroutines(); node.Value.gameObject.SetActive(false); _unitPool.Remove(node); _unitPool.AddLast(node); if (_nextUnit == null) { _nextUnit = node; } }
// 尚未讀取才會去讀取 // 建議在初始化場景時就先讀取 // 並留下AudioUnit public static void LoadSound(string _name, out AudioUnit _audioUnit) { // 檢查是否已經讀取 if (Instance.audioList.ContainsKey(_name)) { // 已經存在則直接回傳 _audioUnit = Instance.audioList[_name]; } else { // 不存在則試著產生 AudioClip audioClip = (AudioClip)Resources.Load("Sounds/" + _name); if (audioClip != null) { // 有該資源則產生 _audioUnit = new AudioUnit(audioClip); Instance.audioList.Add(_name, _audioUnit); } else { // 沒有該資源則return null _audioUnit = null; } } }
void prepareAudioUnit() { // creating an AudioComponentDescription of the RemoteIO AudioUnit AudioComponentDescription cd = new AudioComponentDescription() { componentType = AudioComponentDescription.AudioComponentType.kAudioUnitType_Output, componentSubType = AudioComponentDescription.AudioComponentSubType.kAudioUnitSubType_RemoteIO, componentManufacturer = AudioComponentDescription.AudioComponentManufacturerType.kAudioUnitManufacturer_Apple, componentFlags = 0, componentFlagsMask = 0 }; // Getting AudioComponent using the audio component description _audioComponent = AudioComponent.FindComponent(cd); // creating an audio unit instance _audioUnit = AudioUnit.CreateInstance(_audioComponent); // setting audio format _audioUnit.SetAudioFormat(_dstFormat, AudioUnit.AudioUnitScopeType.kAudioUnitScope_Input, 0 // Remote Output ); // setting callback method _audioUnit.RenderCallback += new EventHandler <AudioUnitEventArgs>(_audioUnit_RenderCallback); _audioUnit.Initialize(); }
public int PlaySoundSingleton(string name, bool replace) { if (m_SingletonSoundMap.ContainsKey(name)) { if (replace) { m_SingletonSoundMap[name].Stop(); m_SingletonSoundMap.Remove(name); } else { return(-1); } } int id = PlaySound(name, false); if (id < 0) { return(id); } AudioUnit unit = AudioUnit.GetAudioUnitByID(id); unit.SetOnStopListener(OnSingleAudioFinish); m_SingletonSoundMap.Add(name, unit); return(unit.id); }
private static void UnRegisterActiveAudioUnit(AudioUnit unit) { if (s_AudioUnitMap.ContainsKey(unit.id)) { s_AudioUnitMap.Remove(unit.id); } unit.id = -1; }
public AudioUnit Play3D(int id, Transform follow_target) { AudioUnit unit = Play(id); if (unit != null) { unit.FollowTarget(follow_target); } return(unit); }
public override void OnSingletonInit() { m_IsSoundEnable = PlayerPrefs.GetInt(SOUND_STATE_RECORD_KEY, 1) > 0; m_IsMusicEnable = PlayerPrefs.GetInt(MUSIC_STATE_RECORD_KEY, 1) > 0; ObjectPool <AudioUnit> .S.Init(m_MaxCacheSoundCount, 1); m_MainUnit = AudioUnit.Allocate(); m_MainUnit.usedCache = false; }
void prepareAudioUnit() { // Creating AudioComponentDescription instance of RemoteIO Audio Unit AudioComponentDescription cd = new AudioComponentDescription() { componentType = AudioComponentDescription.AudioComponentType.kAudioUnitType_Output, componentSubType = AudioComponentDescription.AudioComponentSubType.kAudioUnitSubType_RemoteIO, componentManufacturer = AudioComponentDescription.AudioComponentManufacturerType.kAudioUnitManufacturer_Apple, componentFlags = 0, componentFlagsMask = 0 }; // Getting AudioComponent from the description _component = AudioComponent.FindComponent(cd); // Getting Audiounit _audioUnit = AudioUnit.CreateInstance(_component); // setting AudioStreamBasicDescription int AudioUnitSampleTypeSize; if (MonoTouch.ObjCRuntime.Runtime.Arch == MonoTouch.ObjCRuntime.Arch.SIMULATOR) { AudioUnitSampleTypeSize = sizeof(float); } else { AudioUnitSampleTypeSize = sizeof(int); } AudioStreamBasicDescription audioFormat = new AudioStreamBasicDescription() { SampleRate = _sampleRate, Format = AudioFormatType.LinearPCM, //kAudioFormatFlagsAudioUnitCanonical = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagsNativeEndian | kAudioFormatFlagIsPacked | kAudioFormatFlagIsNonInterleaved | (kAudioUnitSampleFractionBits << kLinearPCMFormatFlagsSampleFractionShift), FormatFlags = (AudioFormatFlags)((int)AudioFormatFlags.IsSignedInteger | (int)AudioFormatFlags.IsPacked | (int)AudioFormatFlags.IsNonInterleaved | (int)(kAudioUnitSampleFractionBits << (int)AudioFormatFlags.LinearPCMSampleFractionShift)), ChannelsPerFrame = 2, BytesPerPacket = AudioUnitSampleTypeSize, BytesPerFrame = AudioUnitSampleTypeSize, FramesPerPacket = 1, BitsPerChannel = 8 * AudioUnitSampleTypeSize, Reserved = 0 }; _audioUnit.SetAudioFormat(audioFormat, AudioUnit.AudioUnitScopeType.kAudioUnitScope_Input, 0); // setting callback /* * if (MonoTouch.ObjCRuntime.Runtime.Arch == MonoTouch.ObjCRuntime.Arch.SIMULATOR) * _audioUnit.RenderCallback += new EventHandler<AudioUnitEventArgs>(simulator_callback); * else * _audioUnit.RenderCallback += new EventHandler<AudioUnitEventArgs>(device_callback); * */ _audioUnit.RenderCallback += new EventHandler <AudioUnitEventArgs>(device_callback); }
public static void UnloadAllAudio() { foreach (KeyValuePair <string, AudioUnit> kvp in Instance.audioList) { AudioUnit audioUnit = kvp.Value; audioUnit.Stop(); Resources.UnloadAsset(audioUnit.audioSource.clip); Destroy(audioUnit.audioSource.gameObject); } Instance.audioList.Clear(); }
protected void Start() { Status = GrappleStatus.Base; startPosition = head.transform.position; line.positionCount = 2; fastClearDone = false; grappleMoveUnitSound = grappleMoveSound.Play(); grappleFallUnitSound = grappleFallSound.Play(); Init(); }
public bool SetOnFinishListener(int id, Action <int> l) { AudioUnit unit = AudioUnit.GetAudioUnitByID(id); if (unit == null) { return(false); } unit.SetOnFinishListener(l); return(true); }
public bool SetPitch(int id, float pitch) { AudioUnit unit = AudioUnit.GetAudioUnitByID(id); if (unit == null) { return(false); } unit.SetPitch(pitch); return(true); }
public bool SetVolume(int id, float volume) { AudioUnit unit = AudioUnit.GetAudioUnitByID(id); if (unit == null) { return(false); } unit.SetVolume(volume); return(true); }
public bool Stop(int id) { AudioUnit unit = AudioUnit.GetAudioUnitByID(id); if (unit == null) { return(false); } unit.Stop(); return(true); }
public bool Allocate3dSound(SoundType type, Transform parent, Vector3 localPos, out AudioUnit unit) { if (!AllocateUnit(out unit)) { return(false); } unit.source.clip = clipDict[type]; unit.gameObject.transform.parent = parent != null ? parent : transform; unit.gameObject.transform.localPosition = localPos; return(true); }
void prepareAUGraph() { // Creating audio graph instance _auGraph = AUGraph.CreateInstance(); // getting audio node and audio unit AudioComponentDescription cd = new AudioComponentDescription() { componentType = AudioComponentDescription.AudioComponentType.kAudioUnitType_Output, componentSubType = AudioComponentDescription.AudioComponentSubType.kAudioUnitSubType_RemoteIO, componentManufacturer = AudioComponentDescription.AudioComponentManufacturerType.kAudioUnitManufacturer_Apple, componentFlags = 0, componentFlagsMask = 0 }; int remoteIONode = _auGraph.AddNode(cd); AudioUnit remoteIOUnit = _auGraph.GetNodeInfo(remoteIONode); // turning on microphone remoteIOUnit.SetEnableIO(true, AudioUnit.AudioUnitScopeType.kAudioUnitScope_Input, 1 // remote input ); // audio canonical format AudioStreamBasicDescription audioFormat = CanonicalASBD(44100, 1); remoteIOUnit.SetAudioFormat(audioFormat, AudioUnit.AudioUnitScopeType.kAudioUnitScope_Output, // output bus of Remote input 1 // Remote input ); remoteIOUnit.SetAudioFormat(audioFormat, AudioUnit.AudioUnitScopeType.kAudioUnitScope_Input, 0 // Remote output, ); // Connecting Remote Input to Remote Output _auGraph.ConnnectNodeInput( remoteIONode, 1, remoteIONode, 0); // getting output audio format _audioUnitOutputFormat = remoteIOUnit.GetAudioFormat( AudioUnit.AudioUnitScopeType.kAudioUnitScope_Output, // Remote output bus 0 // Remote output ); _auGraph.RenderCallback += new EventHandler <AudioGraphEventArgs>(_auGraph_RenderCallback); // graph initialization _auGraph.Initialize(); }
public void Init() { maxUnitNumber = Mathf.Clamp(maxUnitNumber, 0, UNIT_NUM_LIMIT); _unitPool = new LinkedList <AudioUnit>(); for (int i = 0; i < maxUnitNumber; i++) { GameObject unitObj = new GameObject(string.Format("Audio Unit {0}", i), typeof(AudioUnit)); unitObj.transform.parent = transform; unitObj.SetActive(false); AudioUnit unit = unitObj.GetComponent <AudioUnit>(); _unitPool.AddLast(unit); } _nextUnit = _unitPool.First; }
void prepareAudioUnit() { // Updated for deprecated AudioSession var session = AVAudioSession.SharedInstance(); NSError error; if (session == null) { var alert = new UIAlertView("Session error", "Unable to create audio session", null, "Cancel"); alert.Show(); alert.Clicked += delegate { alert.DismissWithClickedButtonIndex(0, true); return; }; } session.SetActive(true); session.SetCategory(AVAudioSessionCategory.PlayAndRecord); session.SetPreferredIOBufferDuration(0.005, out error); // Getting AudioComponent Remote output _audioComponent = AudioComponent.FindComponent(AudioTypeOutput.Remote); // creating an audio unit instance _audioUnit = new AudioUnit(_audioComponent); // turning on microphone _audioUnit.SetEnableIO(true, AudioUnitScopeType.Input, 1 // Remote Input ); // setting audio format _audioUnit.SetAudioFormat(_dstFormat, AudioUnitScopeType.Input, 0 // Remote Output ); var format = AudioStreamBasicDescription.CreateLinearPCM(_sampleRate, bitsPerChannel: 32); format.FormatFlags = AudioStreamBasicDescription.AudioFormatFlagsNativeFloat; _audioUnit.SetAudioFormat(format, AudioUnitScopeType.Output, 1); // setting callback method _audioUnit.SetRenderCallback(_audioUnit_RenderCallback, AudioUnitScopeType.Global); _audioUnit.Initialize(); _audioUnit.Start(); }
private void OnSingleAudioFinish(int id) { AudioUnit unit = AudioUnit.GetAudioUnitByID(id); if (unit == null) { Log.e("WTF! Not Impossible."); return; } if (m_SingletonSoundMap.ContainsKey(unit.audioName)) { m_SingletonSoundMap.Remove(unit.audioName); } }
void prepareAudioUnit() { // AudioSession AudioSession.Initialize(); AudioSession.SetActive(true); AudioSession.Category = AudioSessionCategory.PlayAndRecord; AudioSession.PreferredHardwareIOBufferDuration = 0.005f; // creating an AudioComponentDescription of the RemoteIO AudioUnit AudioComponentDescription cd = new AudioComponentDescription() { componentType = AudioComponentDescription.AudioComponentType.kAudioUnitType_Output, componentSubType = AudioComponentDescription.AudioComponentSubType.kAudioUnitSubType_RemoteIO, componentManufacturer = AudioComponentDescription.AudioComponentManufacturerType.kAudioUnitManufacturer_Apple, componentFlags = 0, componentFlagsMask = 0 }; // Getting AudioComponent using the audio component description _audioComponent = AudioComponent.FindComponent(cd); // creating an audio unit instance _audioUnit = AudioUnit.CreateInstance(_audioComponent); // turning on microphone _audioUnit.SetEnableIO(true, AudioUnit.AudioUnitScopeType.kAudioUnitScope_Input, 1 // Remote Input ); // setting audio format _audioUnit.SetAudioFormat(_dstFormat, AudioUnit.AudioUnitScopeType.kAudioUnitScope_Input, 0 // Remote Output ); _audioUnit.SetAudioFormat(AudioUnitUtils.AUCanonicalASBD(_sampleRate, 2), AudioUnit.AudioUnitScopeType.kAudioUnitScope_Output, 1 // Remote input ); // setting callback method _audioUnit.RenderCallback += new EventHandler <AudioUnitEventArgs>(_audioUnit_RenderCallback); _audioUnit.Initialize(); _audioUnit.Start(); }
public AudioUnit _internal_play(SoundCnf info, float fade_in, float fade_out) { I_PoolObjectAbility object_ability = _pool_factory.Pop(); AudioUnit unit = object_ability as AudioUnit; if (unit != null) { _list.Add(unit); unit.Play(info, SoundVolume, fade_in, fade_out); } else { LogManager.Error("_internal_play Error"); } return(unit); }
public int PlaySound(string name, bool loop = false, Action <int> callBack = null, int customEventID = -1) { if (string.IsNullOrEmpty(name)) { return(-1); } AudioUnit unit = AudioUnit.Allocate(); if (unit == null) { return(-1); } unit.SetAudio(gameObject, name, loop, m_IsSoundEnable); unit.SetOnFinishListener(callBack); unit.customEventID = customEventID; return(unit.id); }
public static void Play(string _name, bool _loop = false) { if (Instance.audioList.ContainsKey(_name)) { // 存在則撥放 Instance.audioList[_name].Play(_loop); } else { // 不存在則讀取 AudioUnit audioUnit = null; LoadSound(_name, out audioUnit); if (audioUnit != null) { // 讀取成功則撥放 audioUnit.Play(_loop); } } }
public IOSAudioProcessor() { var inputComponent = AudioComponent.FindNextComponent( null, new AudioComponentDescription { ComponentFlags = 0, ComponentFlagsMask = 0, ComponentManufacturer = AudioComponentManufacturerType.Apple, ComponentSubType = (int)AudioTypeOutput.Remote, ComponentType = AudioComponentType.Output }); recorder = inputComponent.CreateAudioUnit(); recorder.SetEnableIO(true, AudioUnitScopeType.Input, inputBus); recorder.SetEnableIO(false, AudioUnitScopeType.Output, outputBus); var audioFormat = new AudioStreamBasicDescription { SampleRate = StudentDemo.Globals.SAMPLERATE, Format = AudioFormatType.LinearPCM, FormatFlags = AudioFormatFlags.IsSignedInteger | AudioFormatFlags.IsPacked, FramesPerPacket = 1, ChannelsPerFrame = 1, BitsPerChannel = 16, BytesPerPacket = 2, BytesPerFrame = 2 }; recorder.SetAudioFormat(audioFormat, AudioUnitScopeType.Output, inputBus); recorder.SetAudioFormat(audioFormat, AudioUnitScopeType.Input, outputBus); recorder.SetInputCallback(AudioInputCallBack, AudioUnitScopeType.Global, inputBus); // TODO: Disable buffers (requires interop) aBuffer = new AudioBuffer { NumberChannels = 1, DataByteSize = 512 * 2, Data = System.Runtime.InteropServices.Marshal.AllocHGlobal(512 * 2) }; }
/// <summary> /// Play an audioclip /// </summary> /// <param name="clip">The audioclip you want to play. </param> /// <param name="position">Where you want to hear the sound. </param> /// <param name="pitchVariation">How much random pitch variation you want. Use 0 if you want none. </param> /// <param name="group">What AudioMixerGroup you want the clip to use </param> public void Play3D(AudioClip clip, Vector3 position, float pitchVariation, AudioMixerGroup group = null) { AudioUnit _unit = null; if (group == null) { group = defaultGroup; } // Try to find an unused audioUnit for (int i = 0; i < _audioUnits.Count; i++) { if (!_audioUnits[i].audioSource.isPlaying) { _unit = _audioUnits[i]; break; } } // Else we create a new audioUnit if (_unit == null) { _unit = new AudioUnit(); _audioUnits.Add(_unit); } if (pitchVariation != 0) { float variation = Random.Range(-pitchVariation, pitchVariation); _unit.audioSource.pitch = (1f + variation) * Time.timeScale; _unit.pitch = 1f + variation; // storing pitch for when we need to reset } else { _unit.audioSource.pitch = 1f; } _unit.audioSource.outputAudioMixerGroup = group; _unit.myTransform.position = position; _unit.audioSource.clip = clip; _unit.audioSource.Play(); }
void prepareAudioUnit() { // Creating AudioComponentDescription instance of RemoteIO Audio Unit var cd = new AudioComponentDescription() { componentType = AudioComponentDescription.AudioComponentType.kAudioUnitType_Output, componentSubType = AudioComponentDescription.AudioComponentSubType.kAudioUnitSubType_RemoteIO, componentManufacturer = AudioComponentDescription.AudioComponentManufacturerType.kAudioUnitManufacturer_Apple, componentFlags = 0, componentFlagsMask = 0 }; // Getting AudioComponent from the description _component = AudioComponent.FindComponent(cd); // Getting Audiounit _audioUnit = AudioUnit.CreateInstance(_component); // turning on microphone _audioUnit.SetEnableIO(true, AudioUnit.AudioUnitScopeType.kAudioUnitScope_Input, 1 // Remote Input ); // setting AudioStreamBasicDescription var audioFormat = AudioUnitUtils.AUCanonicalASBD(44100.0, 2); _audioUnit.SetAudioFormat(audioFormat, AudioUnit.AudioUnitScopeType.kAudioUnitScope_Input, 0 // Remote output ); _audioUnit.SetAudioFormat(audioFormat, AudioUnit.AudioUnitScopeType.kAudioUnitScope_Output, 1 // Remote input ); // setting callback _audioUnit.RenderCallback += new EventHandler <AudioUnitEventArgs>(_audioUnit_RenderCallback); // initialize _audioUnit.Initialize(); }
public override void Dispose() { disposeChilderen(); #if iOS OS.CurrentApplication.PauseCallback -= Pause; OS.CurrentApplication.ResumeCallback -= resume; #endif if (instance != null) { Stop(); instance.RenderCallback -= render1Channel8BitCallback; instance.RenderCallback -= render2Channel16BitCallback; instance.RenderCallback -= render1Channel8BitCallback; instance.RenderCallback -= render2Channel16BitCallback; #if OSX instance.Dispose(); // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< FAILS ON iOS #endif instance = null; } base.Dispose(); }
void OnGUI() { foreach (KeyValuePair <string, AudioUnit> kvp in audioList) { AudioUnit audioUnit = kvp.Value; if (GUILayout.Button(audioUnit.audioSource.clip.name)) { audioUnit.audioSource.Play(); } } if (ox && GUILayout.Button("LoadAllAudio")) { AudioManager.LoadAllAudio(); ox = !ox; } if (!ox && GUILayout.Button("UnloadAllAudio")) { AudioManager.UnloadAllAudio(); ox = !ox; } }
private IEnumerator Chat_CR() { AudioUnit unit = null; if (AudioManager.currAudioManager.earphonePlugged) { if (AudioManager.currAudioManager.AllocateRand3dSound(SoundCollection.Whispering, transform, centerPos, out unit)) { unit.source.volume = AudioManager.currAudioManager.chatVolume * Random.Range(0.8f, 1.2f); unit.source.pitch = Random.Range(0.8f, 1.2f); unit.Play(); } } yield return(new WaitForSeconds(CrowdSimulator.currSim.chatLength)); if (AudioManager.currAudioManager.earphonePlugged) { unit.StopAndRecycle(); } shouldChat = false; }
public void Initialize() { InputManager = new InputMapManager(this); InputManager.Add(new KeyboardInputMap(InputUnit.Keyboard, InputUnit.Mouse)); InputManager.Add(new GamePadInputMap(InputUnit.GamePads[0])); AudioUnit.Load("pulse_low_alt"); AudioUnit.Load("pulse_low"); AudioUnit.Load("pulse_mid"); AudioUnit.Load("pulse_high"); AudioUnit.Load("select"); AudioUnit.Load("refill"); AudioUnit.Load("bgm"); AudioUnit.Load("bgm1"); AudioUnit.Load("bgmboss"); AudioUnit.Load("boss_defeat"); ActiveScene = new IntroScreen(); }
public SoundWAVInstance(SoundWAV sound, bool looped) : base(sound) { this.sound = sound; this.looped = looped; State = SoundStates.Stopped; volume = 1; instance = new AudioUnit(sound.audio.component); instance.SetAudioFormat(sound.desc, AudioUnitScopeType.Input, 0); if (sound.channels == 2) { switch (sound.bitDepth) { case 8: instance.RenderCallback += render2Channel8BitCallback; break; case 16: instance.RenderCallback += render2Channel16BitCallback; break; default: Debug.ThrowError("SoundWAVInstance", "Unsuported WAV bit depth"); break; } } else { switch (sound.bitDepth) { case 8: instance.RenderCallback += render1Channel8BitCallback; break; case 16: instance.RenderCallback += render1Channel16BitCallback; break; default: Debug.ThrowError("SoundWAVInstance", "Unsuported WAV bit depth"); break; } } instance.Initialize(); #if iOS OS.CurrentApplication.PauseCallback += Pause; OS.CurrentApplication.ResumeCallback += resume; #endif }
public override void Dispose() { disposeChilderen(); #if iOS OS.CurrentApplication.PauseCallback -= Pause; OS.CurrentApplication.ResumeCallback -= resume; #endif if (instance != null) { Stop(); instance.RenderCallback -= render1Channel8BitCallback; instance.RenderCallback -= render2Channel16BitCallback; instance.RenderCallback -= render1Channel8BitCallback; instance.RenderCallback -= render2Channel16BitCallback; #if OSX instance.Dispose();// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< FAILS ON iOS #endif instance = null; } base.Dispose(); }
static extern int AUGraphAddRenderNotify(IntPtr inGraph, AudioUnit.AURenderCallback inCallback, IntPtr inRefCon );