示例#1
0
        public static int SchedulePercussion(PercussionEnum percussionEnum, int volume, float scheduleTime = 0)
        {
            if (!instance)
            {
                return(0);
            }

            if (scheduleTime <= 0)
            {
                return(Percussion(percussionEnum, volume));
            }
            else
            {
                instance.percussionAudioClip = percussionSettings.GetAudioClip(percussionEnum);
                if (instance.percussionAudioClip)
                {
                    var item = new ScheduledPercussion();
                    item.clip    = instance.percussionAudioClip;
                    item.volume  = volume.ToVolume();
                    item.dspTime = AudioSettings.dspTime + scheduleTime;
                    instance.scheduledPercussionItems.Add(item);

                    //Debug.Log("Adding percussion : " + item.dspTime);

                    instance.scheduledPercussionItems.Sort((a, b) =>
                    {
                        return(-1 * a.dspTime.CompareTo(b.dspTime));
                    });

                    return(1);
                }
            }
            return(0);
        }
示例#2
0
 /// <summary>
 /// Throws an exception if percussion is not valid.
 /// </summary>
 /// <param name="percussion">The percussion to validate.</param>
 /// <exception cref="ArgumentOutOfRangeException">The percussion is out-of-range.
 /// </exception>
 public static void Validate(this PercussionEnum percussion)
 {
     if (!percussion.IsValid())
     {
         throw new ArgumentOutOfRangeException("Percussion out of range");
     }
 }
示例#3
0
    public AudioClip GetAudioClip(PercussionEnum percussionEnum)
    {
        int index = (int)percussionEnum - (int)PercussionEnum.AcousticBassDrum;

        if (index >= 0 && index < percussionClips.Length)
        {
            return(percussionClips[index]);
        }

        return(null);
    }
示例#4
0
        static int Percussion(PercussionEnum percussionEnum, int volume)
        {
            if (!instance)
            {
                return(0);
            }

            instance.percussionAudioClip = percussionSettings.GetAudioClip(percussionEnum);
            if (instance.percussionAudioClip)
            {
                instance.audioSource.PlayOneShot(instance.percussionAudioClip, volume.ToVolume());
                return(1);
            }

            return(0);
        }
示例#5
0
 public static int Percussion(PercussionEnum aPercussion, int aVolume = 80)
 {
     return(NoteOn((int)aPercussion, aVolume, 9));
 }
示例#6
0
 public static int SchedulePercussion(PercussionEnum aPercussion, int aVolume = 80, float scheduleTime = 0)
 {
     return(MIDI.SchedulePercussion(aPercussion, aVolume, scheduleTime));
 }
示例#7
0
 /// <summary>
 /// Returns the human-readable name of a MIDI percussion.
 /// </summary>
 /// <param name="percussion">The percussion.</param>
 public static string Name(this PercussionEnum percussion)
 {
     percussion.Validate();
     return(PercussionNames[(int)percussion - 35]);
 }
示例#8
0
 /// <summary>
 /// Returns true if the specified percussion is valid.
 /// </summary>
 /// <param name="percussion">The percussion to test.</param>
 public static bool IsValid(this PercussionEnum percussion)
 {
     return((int)percussion >= 35 && (int)percussion <= 81);
 }