// play random tone from given variables - scale and range public void PlayTone(string instrument, ToneDuration duration, MusicTone baseTone, ToneRange toneRange, string scale) { string toneString = MusicScale.MusicScales[scale].GetRandomTone(toneRange, baseTone); MusicTone tone; int octave; MusicUtilities.StringToToneOctave(toneString, out tone, out octave); PlayTone(instrument, duration, tone, octave); }
public bool IsToneInRange(MusicTone tone, int octave) { int toneIndex = (int)tone + octave * 12; if (toneIndex >= MinToneIndex && toneIndex <= MaxToneIndex) { return(true); } else { return(false); } }
// Get all the tone names from scale public List <string> GetToneNames(MusicTone baseTone, ToneRange toneRange) { List <string> toneNames = GetToneNames(baseTone, toneRange.MinOctave, toneRange.ToneCount); for (int i = 0; i < toneNames.Count; i++) { if (!toneRange.IsToneInRange(toneNames[i])) { toneNames.RemoveAt(i); i--; } } return(toneNames); }
// PLAYS A SPECIFIC TONE public void PlayTone(string instrument, ToneDuration duration, MusicTone tone, int octave) { string toneClipName = instrument + Underline + duration.ToString() + Underline + tone + Underline + octave; Debug.Log(toneClipName); ToneInfo info = new ToneInfo() { Tone = tone, Octave = octave, Duration = duration, TimeOfPlaySinceStartup = Time.realtimeSinceStartup }; RecordToneInfo(info); AudioController.Play(toneClipName); }
/// <summary> /// Gets names of tones made from MusicTone and its octave index /// </summary> /// <param name="baseTone">Starting tone of the scale</param> /// <param name="startOctave">Index of starting tone octave</param> /// <param name="toneCount">Number of tones, including starting tone</param> /// <returns></returns> public List <string> GetToneNames(MusicTone baseTone, int startOctave, int toneCount) { List <string> tones = new List <string>(); tones.Add(baseTone.ToString() + "_" + startOctave.ToString()); List <int> offsets = MusicUtilities.GetAbsoluteListFromRelativeList(this.ToneOffsets, toneCount - 1); int currentOctave; foreach (int toneOffset in offsets) { currentOctave = startOctave + toneOffset / 12; tones.Add(((MusicTone)(toneOffset % 12)).ToString() + "_" + currentOctave.ToString()); } return(tones); }
public void SetMusicTone(MusicTone newTone) { // Debug.Log("Changing music to: " + newTone); if(newTone != MusicTone.Title) { weatherGameplaySong = newTone; } if(MenuStateMachine.instance.MenusAllowInGameMusic() == false) { newTone = MusicTone.Title; // Debug.Log("In-menu, overriding music to: " + newTone); } switch(newTone) { case MusicTone.Title: songEvt.setParameterValue("Level", 0.0f); break; case MusicTone.Calm: songEvt.setParameterValue("Level", 1.0f); break; case MusicTone.Storm: songEvt.setParameterValue("Level", 2.0f); break; } }
// returns merged tone name and octave public string GetRandomTone(ToneRange toneRange, MusicTone baseTone) { List <string> toneNames = GetToneNames(baseTone, toneRange); return(toneNames[Random.Range(0, toneNames.Count)]); }
public static void StringToToneOctave(string toneString, out MusicTone tone, out int octave) { string[] toneData = toneString.Split('_'); tone = (MusicTone)Enum.Parse(typeof(MusicTone), toneData[0]); octave = int.Parse(toneData[1]); }
/// <summary> /// Plays the specific tone with current instrument and current duration /// </summary> /// <param name="tone"></param> /// <param name="octave"></param> public void PlayTone(MusicTone tone, int octave) { PlayTone(CurrentInstrument, ToneDuration, tone, octave); }