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()); }
// 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); } }