←戻る

MIDIセント

MIDIセントは、ピアノの中央のドを6000とし、音の高さをセント単位で表したものである。MIDIノート番号に100をかけた数と考えることもできる。これは、MIDIのノート番号を拡張した考え方で、微分音についても整数で表現できるようにOpenMusicなどで使用されている。

やっていることは単純で、次のようなMIDIセント(n)と周波数(f)の関係式を利用しているだけである。(基準ピッチは必要に応じて440から変化させる)

[ f = 440 \times 2 ^ \frac{n - 6900}{1200} ]

以下に、MIDIセントと周波数を相互に変換するプログラムを掲載した。

freq2midicent <- function(freq, concert.pitch=440) {
  ## Convert frequency (Hz) to MIDI cent value (MIDI note number times
  ## 100 for representing partial pitch).
  midicent <- log2(freq / concert.pitch) * 1200 + 6900
  return(midicent)
}

midicent2freq <- function(midicent, concert.pitch=440) {
  ## Convert MIDI cent value (MIDI note number times 100 for
  ## representing partial pitch) to frequency (Hz).
  freq <- concert.pitch * 2^((midicent - 6900) / 1200)
  return(freq)
}

たとえばMIDIセントから周波数に変換するときには

midicent2freq(6000)
## [1] 261.6256

のように、中央のCは261.6 Hzであることがわかる。ここで基準ピッチはデフォルトで440 Hzにしてあるが、基準ピッチを変えたいときには

midicent2freq(6000, concert.pitch=442)
## [1] 262.8148

などとする。

逆に、周波数からMIDIセントに変換するときには以下のようにする。

freq2midicent(1000, concert.pitch=442)
## [1] 8313.458


[←戻る](index.html)