未来技術を既存事業に導入する
経営者や事業責任者で、心の技術に共鳴し、既存事業への導入を検討されている場合、議題とともに面会を予約いただけます。
概要
サウンドアーティストや音楽家、そして技術者向けのツールです。周波数を入力すると、音階を周波数で返却するコマンドをつくりました。
作曲や装置の開発に役立つツール
昨日の朝、Pythonでツールをつくりました。作業をラクにする、純正律の周波数を一括計算するための小道具です。筆者は音楽理論の専門家ではないので、純正律や平均律などの調律理論は他の書籍にゆずります。
カンタンに説明すると、音階ド(ノートC)の周波数をターミナルから入力すると、メジャースケールとマイナースケールの各周波数を計算し、画面に表示してくれるという単純な計算ツールです。
こういう便利ツールはネットを探すのもいいですが、オフライン環境でもサクッと使えるように小道具化しておくと労力が減ります。本作業に集中することができます。
実際のコードは、マインド技研の公開貯蔵庫(レポジトリ)にて取得できます。この研究ノートでは、コードに少しだけ解説を加えたいと思います。
前提として、コマンドライン・シェルスクリプトに関する初級レベルの知識が必要です。コマンドを認識するためのパスの設定や、実行権限の付与を行う必要があるからです。
筆者は現役プログラマーではないので、コードは汚いです。自分用なので、正式な入力チェックもしていません。そのあたりにこだわりがある方は、改善して利用いただければと思います!
# Filename = just_intonation.py
import sys
from decimal import Decimal, ROUND_HALF_UP
base_freq = float(sys.argv[1])
decimal_places = ".001"
major_scale = (1, 9/8, 5/4, 4/3, 3/2, 5/3, 15/8, 2/1)
minor_scale = (1, 9/8, 6/5, 4/3, 3/2, 8/5, 9/5, 2/1)
print("\nMAJOR SCALE")
for freq in major_scale:
freq = base_freq * freq
freq = Decimal(str(freq))
freq = freq.quantize(Decimal(decimal_places), rounding=ROUND_HALF_UP)
print(freq)
print("\n\nMINOR SCALE")
for freq in minor_scale:
freq = base_freq * freq
freq = Decimal(str(freq))
freq = freq.quantize(Decimal(decimal_places), rounding=ROUND_HALF_UP)
print(freq)
print("\n")
まずは計算プログラムです。Pythonで書いていますが、まるでシェルスクリプトのように時系列で実装しています。試作品ですので、ご容赦願います(笑)
要は「周波数ド = 変数ド」を入力すると、その音から「レミファソラシド」の周波数を返します。メジャースケールとマイナースケールがあるので、両方計算して返します。
#!/bin/zsh
# Filename = jifreq
# Replace "$HOME/YOUR_DIR/scripts" with your directory path
SCRIPT_DIR=$HOME/YOUR-DIR/scripts
if [ $# -eq 1 ]; then
python $SCRIPT_DIR/just_intonation.py $1
else
exit 1
fi
Pythonプログラムをラップするシェルスクリプト(コマンド)がこちらです。ご自身の環境に合わせてコマンドとスクリプトを配置し、それを変数にセットし、実行権限を付与(chmod +x)すれば完了です。
Pythonプログラムを直接実行したい場合は、Pythonプログラムを編集してください。その際、入力インターフェイスを修正する必要があります。
% jifreq 264
最終的に、上記のように使います。コマンド名「jifreq」の後に特定の周波数を入力する要領です。264 Hzを低いドにセットした場合、オクターブ上が528 Hzとなります。
他のツールと合わせ、オープンソースとしてGitLabに公開してありますので、ご自由にお使いください。
音階と周波数で気づいたこと
このツールをテストしていて気づいたことがあります。それは「3, 6, 9」の関係です。
巷ではこの3つの数字には特別な意味があるとか、秘密があるとかいわれています。詳しく調べたことはないのでわかりませんが、計算すると関係が見えてきました。
% jifreq 33
MAJOR SCALE
33.000
37.125
41.250
44.000
49.500
55.000
61.875
66.000
上記のように、528 Hzの低い方の倍音33 Hzで計算すると、66 Hzはオクターブです。もちろん、入力が3でも333でも同じです。つまり、3と6には(純正律でなくても)オクターブの関係があります。
% jifreq 66
MAJOR SCALE
66.000
74.250
82.500
88.000
99.000
110.000
123.750
132.000
66 Hzと99 Hzの関係は5度です。いわゆる「完全五度(perfect fifth)」です。つまり「オクターブ + 5度」という関係にあることがわかります。これは純正律でも平均律でも同じだと思います。
5度の音は、鳩の鳴き声に近く、ギターでいうパワーコードです。基音に対し、5度上を重ねる和音奏法です。筆者のように理論がわからない人向けにいうと、NIRVANAのカート・コバーンがよく使うのがパワーコードとその変化系です。
ちなみにソルフェジオ周波数396 Hzは、純正律で計算すると、528 Hzのオクターブ下から5度に当たります。
% jifreq 264
MAJOR SCALE
264.000
297.000
330.000
352.000
396.000
440.000
495.000
528.000
正直、音楽理論のことはぜんぜんわかりませんので、理屈はここまでにしておきます。昔ジャズベースを少し習っていた時、譜面やスケールの講義を受けたのですが、全然身につきませんでした…。
重要なのは、ここに何の秘密があるかということです。
ひとつは、音階という変数、相対的なフレームワークにどんな周波数を入れても、調律が変わっても、オクターブはオクターブ、5度は5度です。絶対和音・ブレないハーモニーということでしょうか。
気になるのは「その構成・距離が振動的にどんな影響を及ぼすのか」ということです。例えば、先ほど計算した528 Hzに係る音階で、3-6-9の倍音を使うとある種の装置が開発でき、何かに影響を及ぼすことができるのでしょうか。
まだ何もわからないので、疑問はいったんネガティブ・ケイパビリティしておくことにします。
こういう数字の遊び(頭でっかちな理屈こね回し)はソルフェジオ周波数でも可能です。すべての周波数をテーブルに並べて足したり、パターンを見出したりすることはできます。しかし、やはり重要なのは 「その理屈や周期を使って一体何ができるのか」 という技術的で実践的な理解です。
この振動技術とでもいうべきものが公益のために実用化されるだけでなく、オープンソースとして公開されたり、一見すると装置とは気づかない形式で配布されていたりすると「あぁ、再魔術化がはじまったな」とか「隠れた術式が変わったな」と感じるようになるわけです。
マインド技研では、これからの時代を「透明性と複雑性の時代」と呼んでいます。それは知識がすべての人に無償提供され、誰でも "ペイウォール" や "情報の非対称性" なしで研究できる時代でもあります。その公開されている技術を使って公益のための事業を行う。そういう利権争いの回避戦略があると面白そうです。