示例#1
0
    public static void LogScaleNoteNames(int rootNoteIndex, int[] scaleIntervals, int count, int divider)
    {
        int[] fullRangeNotes = GetFullRangeNotes(rootNoteIndex, scaleIntervals);

//		Debug.Log("root is " + QNoteHelper.GetNameForIndex(rootNoteIndex));
//
//		Debug.Log("now root is " + QNoteHelper.GetNameForIndex(rootNoteIndex));
//
//		Debug.Log("root note index " + rootNoteIndex);

        StringBuilder sb = new StringBuilder();

        for (int c = 0; c < count; c++)
        {
            int relativeNoteIndex = GetRelativeNoteIndex(fullRangeNotes, rootNoteIndex, c);

            if (c != 0)
            {
                if (c % divider == 0)
                {
                    sb.Append("|");
                }
                else
                {
                    sb.Append(',');
                }
            }

            sb.Append(QNoteHelper.GetNameForIndex(relativeNoteIndex));
        }
        Debug.Log(sb.ToString());
    }
示例#2
0
    // Update is called once per frame
    void Update()
    {
        for (int i = 0; i < 128; i++)
        {
            if (MidiInput.GetKeyUp(i))
            {
                foreach (var glow in glows)
                {
                    if (glow.note == i)
                    {
                        glow.note             = -1;
                        glow.renderer.enabled = false;
                    }
                }
//				Debug.Log("Releasing " + i + "!");
            }

            if (MidiInput.GetKeyDown(i))
            {
                hasPressedDown = true;

                foreach (var glow in glows)
                {
                    if (glow.note == -1)
                    {
                        glow.note             = i;
                        glow.renderer.enabled = true;

                        int offsetIndex = GetOffsetFromMiddleC(i);                         //60 is middleC

                        glow.offsetFromMiddleC = offsetIndex;

                        glow.transform.localPosition = new Vector3(0, MIDDLEY + (float)offsetIndex * SPREADY / 2f, 0);

                        glow.audioSource.Stop();

                        glow.audioSource.pitch = QNoteHelper.GetFrequencyForIndex(i) / QNoteHelper.GetFrequencyForIndex(60);

                        glow.audioSource.Play();

                        break;
                    }
                }

//				Debug.Log("Pressing " + i + "!");
            }
        }

        NoteTarget currentTarget = null;
        int        futureTargets = 0;

        for (int r = 0; r < targets.Count; r++)
        {
            var target = targets[r];
            //remove far left targets here

            if (targets.Count > TOTAL_TARGETS)
            {
                targets.Remove(target);
                target.Remove();
                r--;
            }
            else
            {
                if (!target.hasBeenPlayed)
                {
                    if (currentTarget == null)
                    {
                        currentTarget = target;
                    }
                    else
                    {
                        futureTargets++;
                    }
                }
            }
        }

        if (currentTarget == null)
        {
            currentTarget = CreateTarget();
        }

        while (futureTargets < FUTURE_TARGETS)
        {
            CreateTarget();
            futureTargets++;
        }

        bool wasNoteTouched = false;

        if (hasPressedDown)        //must press before we start to touch the note
        {
            foreach (var glow in glows)
            {
                if (glow.note != -1 && glow.offsetFromMiddleC == currentTarget.offsetFromMiddleC)
                {
                    currentTarget.energy -= Time.deltaTime;
                    wasNoteTouched        = true;
                }
            }
        }

        if (wasNoteTouched)
        {
            currentTarget.renderer.color = Color.green;
        }
        else
        {
            currentTarget.renderer.color = Color.white;
            currentTarget.energy         = TIME_TO_SELECT;
        }


        if (currentTarget.energy <= 0)        //played the note!
        {
            currentTarget.hasBeenPlayed = true;
            scrollXTarget -= SPREADX;             //scroll timeline
            hasPressedDown = false;
        }

        scrollX += (scrollXTarget - scrollX) * 0.1f;       //ease towards scroll target

        foreach (var target in targets)
        {
            target.transform.localPosition = new Vector3(scrollX + target.baseX, target.baseY, 0);
        }
    }