Exemple #1
0
        private int NoteFromScalePosition(ScalePosition pos)
        {
            int oct  = Mathf.Clamp(5 + pos.octaveChange, 1, 10);
            int note = pos.noteNum + key + oct * 12;

            return(Mathf.Clamp(note, 0, 127));
        }
Exemple #2
0
        private int GetSingleNote(int interval, NoteMode mode)
        {
            ScalePosition pos = new ScalePosition();

            // Handle Static Mode
            if (mode == NoteMode.STATIC_MODE)
            {
                pos = Scales.GetNoteFromScale(interval, minOctave, maxOctave);
            }
            if (mode == NoteMode.RELATIVE_MODE)
            {
                currInterval += interval;
                int finalInterval = currInterval; // octave offset (middle c at 0 octave)
                pos    = Scales.GetNoteFromScale(finalInterval, minOctave, maxOctave);
                octave = pos.octaveChange;        // need to update octave if changed
            }

            // center around 4th octave (middle c)
            return(NoteFromScalePosition(pos));
        }