Преобразуйте числа примечания Midi для именования и октава

Вы можете сделать это так:

let parent = this;
$.getJSON('?json=json&action=E&id=' + event['recid'], function(data) {
//    do some work
      parent.reload();
    });
13
задан Jon 3 April 2009 в 16:28
поделиться

2 ответа

Я не убежден, что Ваше предложение настолько утомительно. Это - действительно просто divide-modulo операция, каждый получает октаву, другой получает примечание.

octave = int (notenum / 12) - 1;
note = substring("C C#D D#E F F#G G#A A#B ",(notenum % 12) * 2, 2);

В реальном Java, в противоположность тому псевдокоду выше, можно использовать что-то как:

public class Notes {
  public static void main(String [] args) {
    String notes = "C C#D D#E F F#G G#A A#B ";
    int octv;
    String nt;
    for (int noteNum = 0; noteNum < 128; noteNum++) {
      octv = noteNum / 12 - 1;
      nt = notes.substring((noteNum % 12) * 2, (noteNum % 12) * 2 + 2);
      System.out.println("Note # " + noteNum + " = octave " + octv + ", note " + nt);
    }
  }
}
14
ответ дан 1 December 2019 в 23:48
поделиться

В JFugue класс Note имеет утилитный метод, который делает именно это - смотрите public static String getStringForNote(byte noteValue).

EDIT: Начиная с версии JFugue 5.0 и выше, класс Note имеет несколько утилитных методов получения строкового представления из значения MIDI-заметки:

  • getToneString(byte noteValue) преобразует значение 60 в строку C5
  • getToneStringWithoutOctave(byte noteValue) преобразует значение 60 в строку C
  • getPercussionString(byte noteValue) преобразует a значение 60 к строке "[AGOGO]"

Они заменяют оригинальный метод getStringForNote().

3
ответ дан 1 December 2019 в 23:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: