示例#1
0
    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;
        }
    }
示例#2
0
 // 尚未讀取才會去讀取
 // 建議在初始化場景時就先讀取
 // 並留下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;
         }
     }
 }
示例#3
0
        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();
        }
示例#4
0
        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);
        }
示例#5
0
 private static void UnRegisterActiveAudioUnit(AudioUnit unit)
 {
     if (s_AudioUnitMap.ContainsKey(unit.id))
     {
         s_AudioUnitMap.Remove(unit.id);
     }
     unit.id = -1;
 }
示例#6
0
    public AudioUnit Play3D(int id, Transform follow_target)
    {
        AudioUnit unit = Play(id);

        if (unit != null)
        {
            unit.FollowTarget(follow_target);
        }
        return(unit);
    }
示例#7
0
        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;
        }
示例#8
0
        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);
        }
示例#9
0
 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();
 }
示例#10
0
    protected void Start()
    {
        Status             = GrappleStatus.Base;
        startPosition      = head.transform.position;
        line.positionCount = 2;
        fastClearDone      = false;

        grappleMoveUnitSound = grappleMoveSound.Play();
        grappleFallUnitSound = grappleFallSound.Play();

        Init();
    }
示例#11
0
        public bool SetOnFinishListener(int id, Action <int> l)
        {
            AudioUnit unit = AudioUnit.GetAudioUnitByID(id);

            if (unit == null)
            {
                return(false);
            }

            unit.SetOnFinishListener(l);
            return(true);
        }
示例#12
0
        public bool SetPitch(int id, float pitch)
        {
            AudioUnit unit = AudioUnit.GetAudioUnitByID(id);

            if (unit == null)
            {
                return(false);
            }

            unit.SetPitch(pitch);
            return(true);
        }
示例#13
0
        public bool SetVolume(int id, float volume)
        {
            AudioUnit unit = AudioUnit.GetAudioUnitByID(id);

            if (unit == null)
            {
                return(false);
            }

            unit.SetVolume(volume);
            return(true);
        }
示例#14
0
        public bool Stop(int id)
        {
            AudioUnit unit = AudioUnit.GetAudioUnitByID(id);

            if (unit == null)
            {
                return(false);
            }

            unit.Stop();
            return(true);
        }
示例#15
0
    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);
    }
示例#16
0
        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();
        }
示例#17
0
 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;
 }
示例#18
0
        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();
        }
示例#19
0
        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();
        }
示例#21
0
    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);
    }
示例#22
0
        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);
        }
示例#23
0
 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);
         }
     }
 }
示例#24
0
        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)
            };
        }
示例#25
0
    /// <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();
    }
示例#26
0
        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();
        }
示例#27
0
 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();
 }
示例#28
0
 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;
     }
 }
示例#29
0
    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;
    }
示例#30
0
        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();
        }
示例#31
0
        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
        }
示例#32
0
 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();
 }
示例#33
0
 static extern int AUGraphAddRenderNotify(IntPtr inGraph, AudioUnit.AURenderCallback inCallback, IntPtr inRefCon );