public void SetSequencerNote(Toggle toggle) { int selected_idx = -1; for (int i = 0; i < patternElements.Length; i++) { if (patternElements[i] == toggle) { selected_idx = i; break; } } Debug.Log("selected_idx : " + selected_idx.ToString()); if (selected_idx == -1) { Debug.Log("PatternHandler : SetSequencerNoteErr"); } else { if (toggle.isOn == true) { AudioHelm.Note note = sequencer.AddNote(key, (selected_idx) / beatdivider, (selected_idx + 1) / beatdivider, velocity); existingNotes = sequencer.GetAllNotes(); //Debug.Log("After AddNote : " + existingNotes.Count); } else { AudioHelm.Note existing_note = sequencer.GetNoteInRange(key, (selected_idx) / beatdivider, (selected_idx + 1) / beatdivider); sequencer.RemoveNote(existing_note); existingNotes.Remove(existing_note); } } }
/// <summary> /// Get all the notes that play at the given sequencer position. Also those that extent over the sequencer-end. /// </summary> /// <param name="sequencer"></param> /// <param name="pos"></param> /// <returns></returns> public static List <Note> GetCurrentNotes(Sequencer sequencer, float pos) { var allNotes = sequencer.GetAllNotes(); var notes = new List <Note>(); foreach (Note note in allNotes) { if (note == null) { continue; } // Regular notes (start < end) if (pos >= note.start && pos <= note.end) { notes.Add(note); } // Notes that extend over the sequencer end else if (note.start > note.end) { if (pos >= note.start || pos <= note.end) { notes.Add(note); } } } return(notes); }
/// <summary> /// Get all the currently unplayed notes, that extend over the sequencer-end. /// </summary> /// <param name="sequencer"></param> /// <param name="curPos"></param> /// <returns></returns> public static List <Note> UnplayedBridgeNotes(Sequencer sequencer, float curPos) { var allNotes = sequencer.GetAllNotes(); var notes = new List <Note>(); foreach (Note note in allNotes) { if (note.start > note.end) { if (curPos < note.start && curPos > note.end) { notes.Add(note); } } } return(notes); }