Esempio n. 1
0
    void Start()
    {
        sequence = gameObject.AddComponent <AudioSequence>();
        sequence.Play(introClip, loopClip);
        AudioSequenceData data = sequence.GetData(loopClip);

        data.source.loop = true;
    }
Esempio n. 2
0
    public void LoadAudio(string projectFolder, string clipName)
    {
        //  Already loaded, bail out.
        if (audioSequences.ContainsKey(clipName))
        {
            return;
        }

        //  Create entry.
        audioSequences[clipName] = new List <AudioSequence>();

        //ClearAudio();

        //  Load sound sequences from xml data.
        List <XML_Types.XML_SoundSequence> soundSequences = XML_StageLoader.loadSoundSequences(projectFolder, clipName);

        foreach (XML_Types.XML_SoundSequence soundSequence in soundSequences)
        {
            //Message.Log( "sound sequence: " + soundSequence._name + " startFrame: " + soundSequence._startFrame );

            //  Retrieve audio clip from asset database.  If it's not already in asset database, copy clip
            //  from projectFolder to asset database.
            string soundName = Path.GetFileNameWithoutExtension(soundSequence._name);
            if (!string.IsNullOrEmpty(audioFolder))
            {
                soundName = audioFolder + "/" + soundName;
            }

            AudioClip clip = Resources.Load <AudioClip>(soundName);
            if (clip == null)
            {
                //  Download audio file into resources.  This is only useful to test Harmony Export in Unity.
                //  For final game, sound files should be copied in Resources.
                string soundFilename = projectFolder + "/audio/" + soundSequence._name;
                if (File.Exists(soundFilename))
                {
                    Message.Log("Copying from '" + soundFilename + "'");

                    WWW www = new WWW("file://" + System.Uri.EscapeUriString(soundFilename));
                    scheduledDownloads.Add(www); //  Add download to list of scheduled downloads.

                    clip = www.GetAudioClip(true /*threeD*/, false /*stream*/);
                }
            }

            //  Create new audio sequence with audio clip.
            //  Clip starts with a delay specified by startFrame when animation is initiated.
            if (clip != null)
            {
                AudioSequence audioSequence = new AudioSequence();
                audioSequence.audioClip  = clip;
                audioSequence.startFrame = soundSequence._startFrame;

                audioSequences[clipName].Add(audioSequence);
            }
        }
    }
Esempio n. 3
0
 public void Boot()
 {
     if (GetComponent <Game>().playMusic)
     {
         sequence = gameObject.AddComponent <AudioSequence>();
         sequence.Play(introClip, loopClip);
         AudioSequenceData data = sequence.GetData(loopClip);
         data.source.loop = true;
     }
 }
Esempio n. 4
0
        public static void Main(string[] args)
        {
            AudioDevice device = new AudioDevice();

            AudioSource channel0 = new AudioSource();

            AudioClip guitar = new AudioClip("Assets/korg_m3r_rock.wav");

            AudioSequence ozzy = new AudioSequence("Assets/ozzy_osbourne_crazy_train.mid");

            Window window = new Window(1024, 576, "Aiv.Audio.Example.Midi");

            while (window.opened)
            {
                if (window.GetKey(KeyCode.Space))
                {
                    channel0.Play(guitar);
                }
                window.Update();
            }
        }
Esempio n. 5
0
    public void Init()
    {
        int sequenceLength = 0;

        if (sequenceType == AudioSequenceType.None)
        {
            sequenceSources = new AudioSource[1] {
                GetComponent <AudioSource>()
            };
        }
        else
        {
            sequenceSources = GetComponentsInChildren <AudioSource>();
            sequenceLength  = sequenceSources.Length;
        }

        sequenceNameTable = new Dictionary <string, int>();
        for (int i = 0; i < sequenceSources.Length; i++)
        {
            sequenceNameTable[sequenceSources[i].gameObject.name] = i;
        }

        sequence = new AudioSequence(sequenceType, sequenceLength);
    }
Esempio n. 6
0
  public void LoadAudio( string projectFolder, string clipName )
  {
    //  Already loaded, bail out.
    if ( audioSequences.ContainsKey( clipName ) )
      return;

    //  Create entry.
    audioSequences[clipName] = new List< AudioSequence >();

    //ClearAudio();

    //  Load sound sequences from xml data.
    List<XML_Types.XML_SoundSequence> soundSequences = XML_StageLoader.loadSoundSequences(projectFolder, clipName);
    foreach ( XML_Types.XML_SoundSequence soundSequence in soundSequences )
    {
      //Message.Log( "sound sequence: " + soundSequence._name + " startFrame: " + soundSequence._startFrame );

      //  Retrieve audio clip from asset database.  If it's not already in asset database, copy clip
      //  from projectFolder to asset database.
      string soundName = Path.GetFileNameWithoutExtension(soundSequence._name);
      if ( !string.IsNullOrEmpty(audioFolder ) )
      {
        soundName = audioFolder + "/" + soundName;
      }

      AudioClip clip = Resources.Load<AudioClip>(soundName);
      if ( clip == null )
      {
        //  Download audio file into resources.  This is only useful to test Harmony Export in Unity.
        //  For final game, sound files should be copied in Resources.
        string soundFilename = projectFolder + "/audio/" + soundSequence._name;
        if ( File.Exists(soundFilename) )
        {
          Message.Log( "Copying from '" + soundFilename + "'" );

          WWW www = new WWW("file://" + System.Uri.EscapeUriString(soundFilename) );
          scheduledDownloads.Add(www);  //  Add download to list of scheduled downloads.

          clip = www.GetAudioClip(true /*threeD*/, false /*stream*/);
        }
      }

      //  Create new audio sequence with audio clip.
      //  Clip starts with a delay specified by startFrame when animation is initiated.
      if ( clip != null )
      {
        AudioSequence audioSequence = new AudioSequence();
        audioSequence.audioClip = clip;
        audioSequence.startFrame = soundSequence._startFrame;

        audioSequences[clipName].Add(audioSequence);
      }
    }
  }
Esempio n. 7
0
    public int ScheduleAudioClips(string clipName, float delay, float startFrame, float frameRate)
    {
        //Message.Log( "ScheduleAudioClips delay: " + delay + " startFrame: " + startFrame + " frameRate: " + frameRate );

        if (!audioSequences.ContainsKey(clipName))
        {
            return(-1);
        }

        AudioEvent audioEvent = new AudioEvent();

        List <AudioSequence> clipAudioSequences = audioSequences[clipName];

        for (int i = 0; i < clipAudioSequences.Count; ++i)
        {
            AudioSequence audioSequence = clipAudioSequences[i];
            if (audioSequence.startFrame >= startFrame)
            {
                AudioSource audioSource = null;
                if (audioSourcePool.Count > 0)
                {
                    audioSource = audioSourcePool[0];
                    audioSourcePool.RemoveAt(0);
                }
                else
                {
                    string audioName = "audioObject_" + string.Format("{0:0,0}", ++audioIndex);

                    //  Parent audio game object to current game object.
                    GameObject audioObject = new GameObject(audioName);
                    audioObject.transform.parent = gameObject.transform;

                    //  Reset transform in audioObject
                    audioObject.transform.localPosition = Vector3.zero;
                    audioObject.transform.localScale    = Vector3.one;
                    audioObject.transform.localRotation = Quaternion.identity;

                    //  Create default AudioSource object.
                    audioSource = audioObject.AddComponent <AudioSource>();

                    audioSource.playOnAwake = false; // handled by us.
                    audioSource.loop        = false; // handled by us.

                    AudioSource templateAudioSource = gameObject.GetComponent <AudioSource>();
                    if (templateAudioSource != null)
                    {
                        //  Could not find any better way to copy parameters from template AudioSource
                        //  to target AudioSource.  Cannot only Instantiate a Component without its
                        //  GameObject, and Type.GetFields returns empty collection for Unity Components.
                        audioSource.mute          = templateAudioSource.mute;
                        audioSource.bypassEffects = templateAudioSource.bypassEffects;
                        audioSource.priority      = templateAudioSource.priority;
                        audioSource.volume        = templateAudioSource.volume;
                        audioSource.pitch         = templateAudioSource.pitch;

                        //  3D sound settings.
                        audioSource.dopplerLevel = templateAudioSource.dopplerLevel;
                        audioSource.minDistance  = templateAudioSource.minDistance;
                        audioSource.maxDistance  = templateAudioSource.maxDistance;
#if UNITY_4_3 || UNITY_4_5 || UNITY_4_6
                        audioSource.panLevel = templateAudioSource.panLevel;
#else // UNITY_5_0
                        audioSource.spatialBlend = templateAudioSource.spatialBlend;
#endif
                        audioSource.spread      = templateAudioSource.spread;
                        audioSource.rolloffMode = templateAudioSource.rolloffMode;

                        //  2D sound settings.
#if UNITY_4_3 || UNITY_4_5 || UNITY_4_6
                        audioSource.pan = templateAudioSource.pan;
#else // UNITY_5_0
                        audioSource.panStereo = templateAudioSource.panStereo;
#endif
                    }
                }

                audioSource.clip = clipAudioSequences[i].audioClip;

                float clipDelay = ((audioSequence.startFrame - startFrame) / frameRate) + delay;
                audioSource.PlayScheduled(AudioSettings.dspTime + clipDelay);

                audioEvent.audioSources.Add(audioSource);
            }
        }

        if (audioEvent.audioSources.Count > 0)
        {
            int id = ++audioEventId;
            audioEvents.Add(id, audioEvent);

            return(id);
        }

        return(-1);
    }