コード例 #1
0
        /// <summary>
        /// Plays the next step in the measure.
        /// </summary>
        /// <param name="set"></param>
        /// <param name="timeStepIN"></param>
        /// <param name="stepsTaken"></param>
        public override void TakeStep(InstrumentSet set, eTimestep timeStepIN, int stepsTaken = 0)
        {
            for (int instIndex = 0; instIndex < set.mInstruments.Count; instIndex++)
            {
                if (set.mInstruments[instIndex].mData.Group >= set.mMusicGenerator.mGeneratorData.mGroupOdds.Count || set.mData.mProgressionRate < 0)
                {
                    return;
                }

                Instrument instrument     = set.mInstruments[instIndex];
                bool       groupIsPlaying = set.mMusicGenerator.mGroupIsPlaying[(int)instrument.mData.Group];

                if (instrument.mData.mTimeStep == timeStepIN && groupIsPlaying && instrument.mData.mIsMuted == false)
                {
                    PlayNotes(set, instrument, stepsTaken, instIndex);
                }
            }
        }
コード例 #2
0
        /// Takes a measure step.
        public override void TakeStep(InstrumentSet set, eTimestep timeStepIN, int value = 0)
        {
            for (int i = 0; i < set.mInstruments.Count; i++)
            {
                if (set.mInstruments[i].mData.mIsMuted == false)
                {
                    for (int j = 0; j < set.mInstruments[i].mData.ChordSize; j++)
                    {
                        int note = set.mInstruments[i].mClipNotes[set.mRepeatCount][value][j];
                        if (note != InstrumentSet.mUnplayed)
                        {
                            /// set percussion to 0
                            if (set.mInstruments[i].mData.InstrumentType.Contains("p_"))
                            {
                                note = 0;
                            }

                            set.mMusicGenerator.PlayAudioClip(set, (int)set.mInstruments[i].InstrumentTypeIndex, note, set.mInstruments[i].mData.Volume, i);
                        }
                    }
                }
            }
        }
コード例 #3
0
        /// <summary>
        /// Takes a single step through the measure:
        /// </summary>
        /// <param name="set"></param>
        /// <param name="timeStepIN"></param>
        /// <param name="stepsTaken"></param>
        public override void TakeStep(InstrumentSet set, eTimestep timeStepIN, int stepsTaken = 0)
        {
            bool usingTheme       = set.mMusicGenerator.mGeneratorData.mThemeRepeatOptions == eThemeRepeatOptions.eUseTheme;
            bool repeatingMeasure = set.mMusicGenerator.mGeneratorData.mThemeRepeatOptions == eThemeRepeatOptions.eRepeat;

            for (int instIndex = 0; instIndex < set.mInstruments.Count; instIndex++)
            {
                Instrument instrument = set.mInstruments[instIndex];
                int        instType   = (int)instrument.InstrumentTypeIndex;

                if ((instrument.mData.mTimeStep == timeStepIN || set.mMusicGenerator.OnUIPlayerIsEditing()) && instrument.mData.mIsMuted == false)
                {
                    if (instType >= set.mMusicGenerator.AllClips.Count)
                    {
                        throw new ArgumentOutOfRangeException("Single clip instrument has not been loaded into the generator");
                    }

                    int instrumentSubIndex = UnityEngine.Random.Range(0, set.mMusicGenerator.AllClips[instType].Count);
                    if (set.mMusicGenerator.OnUIPlayerIsEditing())
                    {
                        for (int chordNote = 0; chordNote < instrument.mData.ChordSize; chordNote++)
                        {
                            set.mMusicGenerator.RepeatNotePlayed.Invoke(new RepeatNoteArgs(instIndex, chordNote, set.SixteenthRepeatCount, instrumentSubIndex, set));
                        }
                    }
                    else if (usingTheme)
                    {
                        PlayThemeNotes(set, instrument, instType, instrumentSubIndex, instIndex);
                    }
                    else if (repeatingMeasure)
                    {
                        PlayRepeatNotes(set, instrument, instIndex, instrumentSubIndex);
                    }
                }
            }
        }
コード例 #4
0
 ///<summary>  Takes a single measure step.</summary>
 public abstract void TakeStep(InstrumentSet set, eTimestep timeStepIN, int stepsTaken = 0);