以下の投稿は「それ自体は直接観測不可能な人間の知覚をブラックボックスに見立て、外部からの物理的刺激への反応に関心を集中させた」精神物理学(独Psychophysik/英psychophysics)の話でした。
【数理考古学】ヴェーバー‐フェヒナーの法則
しかしこの世にはもっと厳格な形で人間の感性と対数法則が結びついているジャンルもあったりするのです。
楽論とは - コトバンク
【中国音楽】より…しかし墨子は《非楽》を著し,為政者が楽舞を行うのに,民を搾取して過剰な経費をかけるとの理由から,音楽活動には否定的態度をとった。これに対して,荀子は〈楽論〉(前3世紀)で反駁(はんばく)し,音楽は人間の自然の欲求だから,むしろこれを正しい方向に導くことが,為政者の役割だと主張した。孔子が周朝初期の為政者によって制定された音楽を理想とし,彼の時代(前6~前5世紀)の娯楽性に富んだものを排斥した言を荀子は受けて,古学あるいは先王の楽と雅楽の概念を鮮明にし,目前の民間音楽(俗楽)と対峙させた。…
#音階論の世界
音楽で使う音の高さを世界共通で扱うために決めた特定の周波数を標準高度と呼ぶ。古くからいろいろな標準高度が使われてきたけど、19世紀末からはパリ会議(1859年)とウィーン会議(1885年)によって、オクターブ4のラ(A)の音を435Hzとする標準高度が代表的に使われるようになった。しかし、現在ではシュトゥットガルト会議(1834年)で決められたオクターブ4のラ(A)の音を440Hzとする標準高度が演奏会高度やMIDIなどコンピュータを使ったDTM(Desktop Music) の基準として広く使われている。
この基準周波数を少し高くして441Hzにすると音が全体的に少し高くなる分、音楽が明るくなったような印象を受けるので、演奏家などの注文によって440Hzでなく、441Hzや442Hz、あるいは439Hzで調律して欲しいという要望に応じて調整することもある。
この様にオクターブとはある音からその2倍の高さの音に聞こえる音の範囲を表しているが、オクターブずつ離れた音だけでは音の数が少なすぎて音楽を作るのに不十分である。そこで、1オクターブ内にいくつかの音を作り出し、それらの音に名前(音名)を与える。音楽で普通使われる音名はドレミファソラシドである。ドレミファソラシドはピアノの白鍵の音で、幹音と言われる。国によって違った言い方もあるが、1オクターブ内でこれらの音を使うのは西洋音楽をはじめとして世界の主流になっている。音を絶対的に指定する場合には「オクターブ4のラのシャープ(A#4)」というように指定する。
音再生ルーチン(Win/Mac共用)
library(tuneR)
#音再生ルーチン(Win/Mac振り分け)
#ちなみにWindowsの場合は、Sys.info()["sysname"] == "windows"
ex_play<-function(song){
if(Sys.info()["sysname"] == "Darwin"){
filename <- tempfile("tuneRtemp", fileext = ".wav")
writeWave(song, filename)
system(paste("open -a iTunes", filename))
return(invisible())
}else{
play(song)
return(invisible())
}}
#サンプル再生例
beep<- sine(440)
ex_play(beep)
Macで"/wav"ファイルを鳴らすもっとスマートな方法
library(tuneR)
#Rであらかじめ以下を入力
setWavPlayer("/usr/bin/afplay")
#サンプル再生例
beep<- sine(440)
ex_play(beep)
Do,Re, Mi,Fa,Sol, Laは、なんとなくドイツ語かな、と思っていましたが実はラテン語です。聖ヨハネ賛歌というラテン語の曲があり、この曲では各小節の頭の音が、C, D, E, F, G, Aになっています。該当する音のラテン語の歌詞は、「Ut」「Resonare」「Mira」「Famuli」「Solve」「Labii」となっていますので、そこから音をとり、「Ut」「Re」「Mi」「Fa」「So」「La」となり、「Ut」は言いにくいので「Do」となったということです。
第7節の2つの単語の頭をとると、「SJ」ですが、JはIの異体字であり、「Johannes」はフランス語で「Ian」なので、「Si」になりました。こうして、イタリア語の音名「ドレミファソラシド」ができあがったのです。
American_and_British | German | Italian | French | Japanese | |
---|---|---|---|---|---|
1 | C | C | Do | Do(Ut) | イ(I) |
2 | C#=D♭ | Cis=Des | Do#=Re♭ | Do(Ut)dièse=Re bémol | 嬰イ(I)=変ロ(Ro) |
3 | D | D | Re | Re | ロ(Ro) |
4 | D#=E♭ | Dis=Ees | Re#=Mi♭ | Re dièse=Mi bémol | 嬰ロ(Ro)=変ハ(Ha) |
5 | E | E | Mi | Mi | ハ(Ha) |
6 | E#=F | Eis=Fes | Mi#=Fa♭ | Mi dièse=Fa bémol | 嬰ハ(Ha)=変ニ(Ni) |
7 | F | F | Fa | Fa | ニ(Ni) |
8 | G | G | So | So | ホ(Ho) |
9 | G#=A♭ | Gis=Aes | So#=Ra♭ | So dièse=Ra bémol | 嬰ホ(Ho)=変ヘ(He) |
10 | A | A | Ra | Ra | ヘ(He) |
11 | A#=B♭ | Ais=Hes | Ra#=Si♭ | Ra dièse=Si bémol | 嬰ヘ(He)=変ト(To) |
12 | B | H | Si | Si | ト(To) |
#世界各国の音階表示
american_and_british<-c("C","C#=D♭","D","D#=E♭","E","E#=F","F","G","G#=A♭","A","A#=B♭","B")
german<-c("C","Cis=Des","D","Dis=Ees","E","Eis=Fes","F","G","Gis=Aes","A","Ais=Hes","H")
italian<-c("Do","Do#=Re♭","Re","Re#=Mi♭","Mi","Mi#=Fa♭","Fa","So","So#=Ra♭","Ra","Ra#=Si♭","Si")
french<-c("Do(Ut)","Do(Ut)dièse=Re bémol","Re","Re dièse=Mi bémol","Mi","Mi dièse=Fa bémol","Fa","So","So dièse=Ra bémol","Ra","Ra dièse=Si bémol","Si")
japanese<-c("イ(I)","嬰イ(I)=変ロ(Ro)","ロ(Ro)","嬰ロ(Ro)=変ハ(Ha)","ハ(Ha)","嬰ハ(Ha)=変ニ(Ni)","ニ(Ni)","ホ(Ho)","嬰ホ(Ho)=変ヘ(He)","ヘ(He)","嬰ヘ(He)=変ト(To)","ト(To)")
Music_scales<-data.frame(American_and_British=american_and_british, German=german,Italian=italian,French=french,Japanese=japanese)
library(xtable)
print(xtable(Music_scales), type = "html")
オクターブの上限と下限
普通音楽で使われるオクターブは0から8ぐらいまでである。88鍵ピアノは27.5Hz~4096Hzまで出せ、オクターブ0から7の途中までとなる。
オクターブ0のラ(A)の音の周波数は27.5Hzであり、どうせそれより低いオクターブ-1を作っても人間にはほとんど聞こえない。
オクターブ8以上の音は実際には聞くことができるが音楽ではあまり使われない。オクターブ10のラ(A)の音の周波数は28160Hzであり、人間には聞こえないと言ってよい。
また、MIDIでは鍵盤の数が0から127であり、ノートナンバー(鍵盤番号)127の周波数は42192.3Hzであり、人間には全然聞こえないと言ってよいから、これ以上の番号を用意する必要がない。ちなみに、このようにノートナンバーで音を指定する場合、ギターなどの弦楽器で滑らかに音の高さを変化させる演奏(ポルタメント奏法と言う)は再現できないのではないかと思うかもしれないが、そんな心配は御無用で、ポルタメント奏法を指定する命令もあるからMIDIはいろいろな楽器に対応できる。
1<-function(x){440*2^x}
plot(f1,xlim=c(-4,4),ylim=c(0,4000),type="l",col=rgb(0,0,0), main="Music Scale",xlab="Octave",ylab="Hz")
#第一区間(2^-4(27.5Hz)~2^-3(55.0Hz))
tc <- round(seq(-4,-3,length=10)) #0から1までを10等分
tcvals <- f1(tc) #それぞれの縦軸の値
polygon(c(-4,tc,-3), #x
c(0,tcvals,0), #y
density=c(30), #塗りつぶす濃度
angle=c(45), #塗りつぶす斜線の角度
col=rgb(1,0,0)) #塗りつぶす色
#第2区間(2^-3(55.0Hz)~2^-2(110Hz))
tc <- seq(-3, -2, length=10) #1から2までを10等分
tcvals <- f1(tc) #それぞれの縦軸の値
polygon(c(-3,tc,-2), #x
c(0,tcvals,0), #y
density=c(30), #塗りつぶす濃度
angle=c(45), #塗りつぶす斜線の角度
col=rgb(1,0,1)) #塗りつぶす色
#第3区間(2^-2(110Hz)~2^-1(220Hz))
tc <- seq(-2, -1, length=10) #3から8までを10等分
tcvals <- f1(tc) #それぞれの縦軸の値
polygon(c(-2,tc,-1), #x
c(0,tcvals,0), #y
density=c(30), #塗りつぶす濃度
angle=c(45), #塗りつぶす斜線の角度
col=rgb(0,0,1)) #塗りつぶす色
#第4区間(2^-1(220Hz)~2^0(440Hz))
tc <- seq(-1, 0, length=10) #8から16までを10等分
tcvals <- f1(tc) #それぞれの縦軸の値
polygon(c(-1,tc,0), #x
c(0,tcvals,0), #y
density=c(30), #塗りつぶす濃度
angle=c(45), #塗りつぶす斜線の角度
col=rgb(0,1,0)) #塗りつぶす色
#第5区間(2^0(440Hz)〜2^1(880Hz))
tc <- seq(0, 1, length=10) #16から32までを10等分
tcvals <- f1(tc) #それぞれの縦軸の値
polygon(c(0,tc,1), #x
c(0,tcvals,0), #y
density=c(30), #塗りつぶす濃度
angle=c(45), #塗りつぶす斜線の角度
col=rgb(0,1,1)) #塗りつぶす色
#第6区間(2^2(1760Hz)~2^3(1760Hz))
tc <- seq(1, 2, length=10) #32から64までを10等分
tcvals <- f1(tc) #それぞれの縦軸の値
polygon(c(1,tc,2), #x
c(0,tcvals,0), #y
density=c(30), #塗りつぶす濃度
angle=c(45), #塗りつぶす斜線の角度
col=rgb(1,1,0)) #塗りつぶす色
#第8区間(2^3(3520Hz)~2^4(4186Hz))
tc <- seq(3, 4, length=10) #32から64までを10等分
tcvals <- f1(tc) #それぞれの縦軸の値
polygon(c(3,tc,4), #x
c(0,tcvals,0), #y
density=c(30), #塗りつぶす濃度
angle=c(45), #塗りつぶす斜線の角度
col=rgb(0,0,0)) #塗りつぶす色
Music_Scale | Frequency | Approximation | |
---|---|---|---|
1 | C | 2^0 | 1.000000 |
2 | C#=D♭ | 2^(1/12) | 1.059463 |
3 | D | 2^(2/12) | 1.122462 |
4 | D#=E♭ | 2^(3/12) | 1.189207 |
5 | E | 2^(4/12) | 1.259921 |
6 | F | 2^(5/12) | 1.33484 |
7 | F#=G♭ | 2^(6/12) | 1.414214 |
8 | G | 2^(7/12) | 1.498307 |
9 | G#=A♭ | 2^(8/12) | 1.587401 |
10 | A | 2^(9/12) | 1.681793 |
11 | A#=B♭ | 2^(10/12) | 1.781797 |
12 | B | 2^(11/12) | 1.887749 |
#音階の対数表現
music_scale<-c("C","C#=D♭","D","D#=E♭","E","F","F#=G♭","G","G#=A♭","A","A#=B♭","B")
frequency<-c("2^0","2^(1/12)","2^(2/12)","2^(3/12)","2^(4/12)","2^(5/12)","2^(6/12)","2^(7/12)","2^(8/12)","2^(9/12)","2^(10/12)","2^(11/12)")
approximation<-c("1.000000","1.059463","1.122462","1.189207","1.259921","1.33484","1.414214","1.498307","1.587401","1.681793","1.781797","1.887749")
scale_calculation<-data.frame(Music_Scale=music_scale, Frequency=frequency,Approximation=approximation)
library(xtable)
print(xtable(scale_calculation), type = "html")
「ドレミファソラシド、ドシラソファミレド」再生例
library(tuneR)
f1<-function(x){(440*2^(-3/12))*2^x} #チューンダウン
c0<-f1(c(0,2/12,4/12,5/12,7/12,9/12,11/12,1))
c1<-c(c0,rev(c0))
for (i in c1) {
beep<- sine(i);
play(beep)
}
#参考
c0
[1] 440.0000 493.8833 554.3653 622.2540 659.2551 739.9888 830.6094 880.0000
そう、コンピューターは楽器でもあり、その働きを理論的に支えているのもまた数理という話なんですね。