Example #1
0
    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);
    }