エクセルで円周率などの「無理数」を音楽データに変換

2011年に17歳で『円周率を音階に変換した演奏』がYouTubeに発表され話題になっていたようですが、聞いてみると確かに素晴らしい音楽です。

目的が円周率を記憶するためとは発想が凄いです。

こんな素晴らしい演奏にはならなくても、いろいろな数字の並び、特に無理数などはどんな風に聞こえるか試してみたくなりました。

いろいろ調べてみると私のような音楽の演奏ができない素人でも何とか演奏らしき事ができそうな有名なソフト『サクラ』があることがわかりました。



ドレミファソラシドとカタカナで入力するだけで音楽をmidi音源で鳴らすことが簡単にできます。

そこで今回は、このソフトを使っていろいろな「数列」を自動的にこのソフトの音階データ、つまりドレミ表現に変換するソフトをエクセルのマクロのVBAで作ってみました。

セルに表示できるのは 1,024 文字まで 数式バーでは 32,767 文字。つまり実際のデータはセルに表示されないだけであります。

数列を「ドレミ」表現に手動で変更するのは大変ですから~~~

家族で楽器を演奏できないのは私だけなので、そのレベルで作った変換ソフトなのでミスがあるかも知れませんが、悪しからず(笑)

因みに最初のYouTubeの円周率は「Aハーモニックマイナースケール」という以下の音階を使っているようですが、私にはチンプンカンプン。

0=ソ#
1=ラ 
2=シ
3=ド
4=レ
5=ミ
6=ファ
7=ソ#
8=ラ
9=シ






今回は深い意味はないのですが、試しなのでエクセルでは「ラ・シ・ド・レ・ミ・ファ・ソ・ラ・シ・ド」にしています。「ドレミファソラシド」音階を基準に和音でも鳴らせるようにしましたが、ドレミ表現ではないですが和音構成は以下の関係コードで作成しています。

B D# F#  
A C# E  
C E G  
D F# A  
E G# B  
F A C  
G B D

以下のコードをエクセルのVBAにコピーします。マクロのコマンドとしてはソースコードに書いてあります。


Sub N_Code1()
'単音演奏
' N_Code1 Macro
'
 Cells.Select
 Selection.NumberFormatLocal = "@"
 Range("A1:O10").Select
'
 Cells(1, 2) = Replace(Cells(1, 2), ".", "")
 Cells(1, 2) = Replace(Cells(1, 2), " ", "")
 Cells(3, 2) = Cells(1, 2)
 Cells(3, 2) = Replace(Cells(1, 2), " ", "")

 For i = 0 To 9
   Cells(3, 2) = Replace(Cells(3, 2), i, Cells(7, i + 2))
 Next i

 Range("B3").Select
       
End Sub

Sub N_Code3()
'和音演奏
' N_Code3 Macro
'
 Cells.Select
 Selection.NumberFormatLocal = "@"
 Range("A1:O10").Select
'
 Cells(1, 2) = Replace(Cells(1, 2), ".", "")
 Cells(1, 2) = Replace(Cells(1, 2), " ", "")
 Cells(3, 2) = Cells(1, 2)
 Cells(3, 2) = Replace(Cells(1, 2), " ", "")

 For i = 0 To 9
   Cells(3, 2) = Replace(Cells(3, 2), i, Cells(8, i + 2))
 Next i

 Range("B3").Select
       
End Sub


Sub init0()
'初期設定
' init0 Macro
'
 Cells(1, 2).Select
 Selection.NumberFormatLocal = "@"

 Range(Cells(7, 1), Cells(8, 1)).HorizontalAlignment = xlRight
 Cells(8, 1) = "和音コード"
 Cells(7, 1) = "コード"

 Cells(7, 2) = "↓ラ↑"
 Cells(7, 3) = "↓シ↑"
 Cells(7, 4) = "ド"
 Cells(7, 5) = "レ"
 Cells(7, 6) = "ミ"
 Cells(7, 7) = "ファ"
 Cells(7, 8) = "ソ"
 Cells(7, 9) = "ラ"
 Cells(7, 10) = "シ"
 Cells(7, 11) = "↑ド↓"

 Cells(8, 2) = "「↓ラ↑ド#ミ」"
 Cells(8, 3) = "「↓シ↑レ#ファ#」"
 Cells(8, 4) = "「ドミソ」"
 Cells(8, 5) = "「レファ#ラ」"
 Cells(8, 6) = "「ミソ#シ」"
 Cells(8, 7) = "「ファラ↑ド↓」"
 Cells(8, 8) = "「ソシ↑レ↓」"
 Cells(8, 9) = "「ラ↑ド#ミ↓」"
 Cells(8, 10) = "「シ↑レ#ファ#↓」"
 Cells(8, 11) = "「↑ドミソ↓」"

End Sub

①最初に初期設定マクロを実行。
②演奏する「数列」を”B1"にコピー。
③単音演奏か和音演奏のマクロを実行
④”B3"のドレミ音階をコピー
⑤「サクラ」ソフトを立ち上げてエディター画面に貼り付け
⑥演奏ボタンをクリック

初期のtemp=120が基準なので上部のメニューの「100%」表示をプルダウンで選択してスピードも簡単に変更できます。

この「サクラ」は色々できそうなので使いこなせれば楽しい音楽演奏ができそう。

エクセルのコード、和音コードの「ドレミ」表現を書換えれば好きな音階に変更が簡単にできます。

参考に無理数の一部を以下に書いておきます。

円周率「π」
3. 1415926535 8979323846 2643383279 5028841971 6939937510 5820974944 5923078164 0628620899 8628034825 3421170679 8214808651 3282306647 0938446095 5058223172 5359408128 4811174502 8410270193 8521105559

ネイピア数「e」
2. 7182818284 5904523536 0287471352 6624977572 4709369995. 9574966967 6277240766 3035354759 4571382178 5251664274. 2746639193 2003059921 8174135966 2904357290 0334295260. 5956307381 3232862794 3490763233

別に無理数でなくてもよく、例えば電話番号を続けて意味のない数列を作るとかいろいろ試せます。


人間の演奏のようにアレンジができなため、YouTubeのような素晴らしい音楽とは行きませんでしたが、味わいのある感じの演奏の数列に巡りあえるかも...

こんどはエクセルで音楽理論を真面目に少し勉強してみます。




<<
続きは