まったり アイマス2

アイドルマスター2 超ライトユーザーのプレイ日記

2418. 純正調キーボードの調律

2018年07月01日 | 日記

 本来はステラステージの本編の進行を一刻も早くこなさないといけないのですけど、今日の日曜日は少し前に買った純正調キーボード、ローランド JUSTY HK-100の調律の調査に費やしました。どうしても知りたかったからです。なぜかどのように調整されているかが公開されていません。

 純正調の調律に特許も何もないと思いますが、もしかしたらローランドのノウハウが含まれている可能性があるので、webですぐに手に入る表と違う部分は書きません。あしからず。

 以下、C#と書いてあるのは白鍵Cの右隣の黒鍵を指します。平均律以外ではC#とD♭の音高がが異なりますが、この記事では純粋にキーボードのキーを指します。

 このキーボードは初期設定で A = 442Hz となっているので、その次のCは(平均律で) 525.6Hzになります。ここから一オクターブ12音の周波数とC (主音)との周波数比、平均律の場合の周波数を書きます。

  C : 525.6 (1/1), 525.6
  C#: * 556.9
  D : 591.3 (9/8), 590.0
  D#: 630.7 (6/5), 625.1
  E : 657.0 (5/4), 662.3
  F : 700.8 (4/3), 701.6
  F#: * 743,4
  G : 788.4 (3/2), 787.6
  G#: * 834.4
  A : 876.0 (5/3), 884.0
  A#: 919.8 (7/4), 936.6
  B : 985.5 (15/8), 992.3

 *のあるところがwebと食い違う部分です。平均律の周波数のみ書いています。
 A#がこのキーボード独特の第7倍音です。通常の純正律の調律は、なんと本キーボードとwebで異なるので書きません。

 つまり、主音は平均律の12音で、そこから有理数比に各キーのピッチが(瞬時に)微調整されます。最初から設定されている調律は3種類(純正長調、純正短調、純正属七)で、いずれも黒鍵の調律に特色があります。

 さて、多少蛇足ですが、どうやって上記の数字を出したのかを述べておきます。一応webを探したのですけど、役立ちそうなチューナーなどのソフトがなく、やむなく低周波オシレータのソフトを日曜大工風にC言語で書いてみました。大体2時間で完成。

#include "stdafx.h"
#include <math.h>

FILE *fp;
errno_t err;
double pit = 442.0;

int main()
{
  int it1, iv1;
  double v1;

  pit = pit / 48000.0 * atan(1.0) * 8.0;

  err = fopen_s(&fp, "t.wav", "wb");

  fputc('R', fp); fputc('I', fp); fputc('F', fp); fputc('F', fp);
  fputc(0x24, fp); fputc(0xf2, fp); fputc(0x2b, fp); fputc(0x00, fp);
  fputc('W', fp); fputc('A', fp); fputc('V', fp); fputc('E', fp);
  fputc('f', fp); fputc('m', fp); fputc('t', fp); fputc(' ', fp);
  fputc(0x10, fp); fputc(0x00, fp); fputc(0x00, fp); fputc(0x00, fp);
  fputc(0x01, fp); fputc(0x00, fp);
  fputc(0x01, fp); fputc(0x00, fp);
  fputc(0x80, fp); fputc(0xbb, fp); fputc(0x00, fp); fputc(0x00, fp);
  fputc(0x80, fp); fputc(0xbb, fp); fputc(0x00, fp); fputc(0x00, fp);
  fputc(0x01, fp); fputc(0x00, fp);
  fputc(0x08, fp); fputc(0x00, fp);
  fputc('d', fp); fputc('a', fp); fputc('t', fp); fputc('a', fp);
  fputc(0x00, fp); fputc(0xf2, fp); fputc(0x2b, fp); fputc(0x00, fp);

  for (it1 = 0; it1 < 48000 * 60; it1++) {
    v1 = sin((double)it1 * pit) * 100.0 + 128.0;
    iv1 = (int)v1;
    fputc(iv1, fp);
  }

  err = fclose(fp);
  printf("complete.\n");
  return err;
}

 このプログラムをコンパイルして動作させると、同じディレクトリに「t.wav」と言う名のWindows波形ファイルが生成されますので、Windowsのメディアプレーヤーなどで再生させます。出てくるのは442.0Hzのサイン波です。5行目の442.0を他の数字に変えるとその周波数の音のファイルが出てきます。
 あとはキーボードを同時に鳴らして、いわゆるうなりを耳で聞いて周波数を合わせて行きます。このプログラムだと周波数を変えるたびにいちいち再コンパイルですけど、当初の目的は果たせます。


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 2417. 数学史の本 | トップ | 2419. スマホアプリの年齢層 »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

日記」カテゴリの最新記事