Example #1
0
    void ToggleBackgroundChange()
    {
        //ColorBlock newColorBlock;
        print(count);
        if (count == 0)
        {
            if (currentCat.catType != "supreme")
            {
                ColorBlock prevcolor = patternElements[15].colors;
                prevcolor.normalColor      = initColor;
                patternElements[15].colors = prevcolor;
            }
            else
            {
                ColorBlock prevcolor = patternElements[30].colors;
                prevcolor.normalColor      = initColor;
                patternElements[30].colors = prevcolor;
            }
        }
        else
        {
            if (currentCat.catType != "supreme")
            {
                ColorBlock prevcolor = patternElements[count - 1].colors;
                prevcolor.normalColor             = initColor;
                patternElements[count - 1].colors = prevcolor;
            }
            else
            {
                ColorBlock prevcolor = patternElements[count - 2].colors;
                prevcolor.normalColor             = initColor;
                patternElements[count - 2].colors = prevcolor;
            }
        }
        ColorBlock currentColor = patternElements[count].colors;

        currentColor.normalColor      = new Color(initColor.r + 0.2f, initColor.g + 0.2f, initColor.b + 0.2f);
        patternElements[count].colors = currentColor;

        //count = (count + 1) % 16;
        //count = ((int)sequencer.GetSequencerPosition() + 3 + 15) % 16;
        if (currentCat.catType != "supreme")
        {
            count = ((int)sequencer.GetSequencerPosition() + 3) % beat;
        }
        else
        {
            count = ((((int)sequencer.GetSequencerPosition() + 3)) * 2) % beat;
        }
    }
Example #2
0
/// <summary>
/// Return the Vector3 position of a to-be-douplicated recordObject (with the given sequencer data). Calc complicated, because otherwise would become inprecise after time.
/// </summary>
/// <param name="recordObject"></param>
/// <param name="sequencer">The relevant sequencer.</param>
/// <param name="recordObj_startPos">The start position of the midi note in the sequencer.</param>
/// <param name="recordObj_loopStart">The loop start position in the sequencer</param>
/// <returns></returns>
    public Vector3 NextLoopPosition(Sequencer sequencer, float recordObj_startPos)
    {
        //var playerPos = Player.inst.transform.position;
        //float curSeqencerPos = (float)sequencer.GetSequencerPosition();

        //var curSequencerPosPercentage = SequencerPositionPercentage(sequencer, curSeqencerPos, recordObj_loopStart);
        //var chordStartPos = recordObj_startPos;
        //var chordStartPosPercentage = SequencerPositionPercentage(sequencer, chordStartPos, recordObj_loopStart);

        //var position = playerPos + 
        //    (1 - curSequencerPosPercentage) * LoopData.distancePerRecLoop * Vector3.forward +
        //    chordStartPosPercentage * LoopData.distancePerRecLoop * Vector3.forward;

        var playerPos = Player.inst.transform.position;
        float curSequencerPos = (float)sequencer.GetSequencerPosition();

        var sequencer_curPosPercentage =  SequencerPositionPercentage(sequencer, curSequencerPos);
        var chordObj_startPosPercentage = SequencerPositionPercentage(sequencer, recordObj_startPos);

        var position = playerPos +
            (1 - sequencer_curPosPercentage) * LoopData.distancePerRecLoop * Vector3.forward +
            chordObj_startPosPercentage * LoopData.distancePerRecLoop * Vector3.forward;

        return position;
    }
    // ------------------------------ Public functions ------------------------------



    /// <summary>
    /// Change controller channel and sequencer reference.
    /// </summary>
    /// <param name="layer"></param>
    public void ChangeLayer(int layer)
    {
        bool isPlaying      = Player.inst.actionState == Player.ActionState.Play;
        var  sequencerPos   = (float)curSequencer.GetSequencerPosition();
        var  sequencerNotes = MyAudioHelmHelper.GetCurrentNotes(curSequencer, sequencerPos);

        // 1. Stop curChord (if not being played in the sequencer)
        if (isPlaying)
        {
            foreach (int curNote in curChord.notes)
            {
                bool isPlayedInSequencer = false;
                foreach (Note seqNote in sequencerNotes)
                {
                    if (curNote == seqNote.note)
                    {
                        isPlayedInSequencer = true;
                        break;
                    }
                }

                if (!isPlayedInSequencer)
                {
                    controller.NoteOff(curNote);
                }
            }
        }

        // 2. Change sequencer & controller reference
        curSequencer       = Recorder.inst.sequencers[layer];
        controller.channel = layer;
    }
    /// <summary>
    /// Check if a given note is currently played in the given sequencer.
    /// </summary>
    /// <param name="note"></param>
    /// <param name="sequencer"></param>
    /// <returns></returns>
    public static bool IsNoteOn(this Sequencer sequencer, int note)
    {
        // 1. Check if the current notes are played in the sequencer
        var curPos      = (float)sequencer.GetSequencerPosition();
        var curSeqNotes = GetCurrentNotes(sequencer, curPos);

        bool noteIsPlayed = false;

        foreach (Note sequencerNote in curSeqNotes)
        {
            if (sequencerNote.note == note)
            {
                noteIsPlayed = true;
                //Debug.Log("seq note.end: " + sequencerNote.end);
                break;
            }
        }

        return(noteIsPlayed);
    }
    void attachNextSequencer(Sequencer sequencer)
    {
        int beat_index = ((int)sequencer.GetSequencerPosition()) % 16;

        print(beat_index);
        if (beat_index == 15) // beat index = 15 : prepare next sequencers
        {
            if (order + 1 < CatPlayList.Length)
            {
                print("next order : " + (order));
                nextSequencer = ExtractSequencersFromCatList(CatPlayList[order]); //Prepare next sequencers
                foreach (Sequencer seq in nextSequencer)
                {
                    SequencerReadyToStart(seq);
                }
            }
        }
        else if (beat_index == 0)   // beat index = 0 : set current sequencer's active = false (except pivot)
        {
            print("it this true?");
            order = order + 1;
            foreach (Sequencer seq in currentSequencer)
            {
                if (pivot_sequencer != seq)
                {
                    print("this is not pivot sequencer");
                    seq.gameObject.SetActive(false);
                }
                else
                {
                    seq.loop = false;
                }
            }
            currentSequencer = nextSequencer;
        }
    }