- BACKNUMBERS -
2024年 5月分
2024年 6月分
2024年 7月分
2024年 8月分
2024年 9月分
2024年 10月分
2024年 11月分
2024年 12月分
最新月

web6047 - 2025年 1月

私がプログラミングを好きなのは、探求心創造性を満たしてくれるからです。

会話 AI の Gemini との会話にて

- Special Documents -

特別な記事へのリンク

▼3DCG プログラミングの方法
▼書籍「はじめて読む486」の
サンプル動作環境の作成方法
▼3Dお姉さんによるプログラミング解説
▼RPG のルーツ(PDF)

ゲームコーナー 

▼クレイジーバルーン
(↑, ↓, ←, →)
▼テトリス
(←, →, ↓, x, y)

その他 単発のアプリ

▼矩形波は複数の波形の合成です

- 以降は日記です -

2025年1月1日

MIDI ピアノ鍵盤を考える 

ピアノなどの鍵盤には、白鍵盤と黒鍵盤があります。

 


音階

隣の音階(前の2倍の周波数)

白鍵盤と黒鍵盤を区別なく左から順番に押すと、周波数としては前の鍵盤と比べて、約1.06倍の周波数になっていることがわかりました。(Excelで計算しました)

そして、音階が1つ上がると、周波数としては前の音階と比べて、約 2 倍の周波数になっていることもわかりました。

1つの音階には、白鍵盤と黒鍵盤合わせて12個の鍵盤があります。

1.06 の 12 乗は 2.012196471 で、約 2 倍ということで合っています。

なぜ白鍵盤と黒鍵盤に分かれているのかというと、ChatGPT に聞いたところ、それは複数の理由があると言っていました。

MIDI 鍵盤にいろいろ書く 

買った鍵盤には、予定通り、「符号」と、「周波数」、「12個の通し番号」を書きました。

▼やっぱり鍵盤って見栄えがするなぁ…

「綺麗にはがせるシール」を使ったので、あと腐れがないです。

「周波数」の表示はいまいち役に立たない気がしますが、C4, D4 などの「符号」は自分が今何を押しているのかわかって良さそう。

1, 2, 3 の「通し番号」は白鍵盤が1、3と飛び飛びになっていれば周波数の離れ具合が大きめ、5,6となっていれば周波数の離れ具合が少ない、と分かるのでその辺の感覚をつかむのに役立つかな、、役立たないかな、、という感じ。

ファルコムは楽曲の著作権を限定的に許しているところがあるので、ファルコムのロードモナークのエンディングテーマソング(リンクは Apple Music ウェブサイトのその曲のページ。「プレビュー」ボタンを押します)を練習しようと思っています。その曲はメロディが分かりやすいです。

曲の冒頭だけ演奏して MIDI を通してソフトウェア(シーケンサー)上に記録し、微調整して、.wav 形式で Export したものがこれです。


▼ロードモナークのエンディングテーマソング、の冒頭だけ

[ミュージック・フロム・ロードモナーク/アドバンスド・ロードモナーク] エンディング(ロードモナーク)/ファルコム・スペシャル BOX’93/Copyright© Nihon Falcom Corporation

メロディラインだけなので、お粗末に聞こえるかもしれません。

でもこの MIDI 鍵盤、打鍵の強弱まで記録してくれてて、私の打ち込みの強弱を生で伝えることができています。


▼MIDI を通してソフトウェア(シーケンサー)上に記録、の様子です。

ゴホッゴホッ、インフル、ゴホッゴホッ、エンザっていう感じで遊んでいます。(インフルエンザにかかったっぽい)


私が MIDI 鍵盤をやるのは、基本的に RPG 開発における作曲を行うためです。

できるのか、できないのかは問題ではなく、やるんです

2025年1月4日

MIDI ASIOドライバ 

1/9. MIDI 信号の遅延が発生した

RPG 開発において作曲をしたいということで、ある RPG 製作サイトの「作曲講座」を読み始めました。

その講座では作曲用ソフトとして「Domino」というシーケンサーを使用しています。

ダウンロードして、講座ページを読みながら進めましたが、メロディを入力するところで、個人的に「Domino に MIDI鍵盤をつなげてみよう」と思いたち、つなげてみました。


▼Domino と MIDI 鍵盤

鍵盤を押すと、確かに Domino に入力されますが、鍵盤を押してから音が発生するまで 500ms くらい遅れる感じがしました。

2/9. MIDI 信号の遅延についていろいろ調べた

そういえば Amazon の商品レビューにそんなことが書いてあったと思ってレビューを探しました。

というわけでドライバーの設定とやらを探しましたが、それっぽいものは見つけられず…


製品のユーザーガイドを見ると、おおまかなことしか書かれていません。

「高品位のオーディオ・インターフェースを買え」と言われてもね…


この鍵盤の名前を検索ワードに入れて、「keystation 遅延」でウェブ検索しました。

すると、いくつかのページで、


>ASIOドライバがあればそれ使ってみて、…

>ASIO4ALLを導入する方法もあります。…


どうやら ASIO というドライバーを導入すれば解決するようです。

3/9. 図解

遅延の原因について調べました。

図に表すとこんな感じです。

スマートホンで見ている人は図中の文字が小さくなっています。ピンチインして拡大してください。

Windows 標準の処理だと、内部でいろいろやっているのでその分時間を取るとかそういうことらしいです。


それを改善するのが「ASIO(Audio Stream Input Output、アシオ、アジオ、エイシオ)ドライバー」です。

4/9. ASIO ドライバーを導入

ASIO ドライバをインストールすれば良いということですが、「ASIO」は規格であり、「ASIO ドライバー」という単一のものがあるわけではないのだそうです。

そのオーディオ・デバイスのメーカーが、ASIO に対応したドライバーを作って、そのとき初めてそのデバイスの ASIO ドライバ―が手に入る、のだそうです。

というわけで、デバイス マネージャーのオーディオ・デバイスの社名が「Synaptics」(シナプティクス)だったので、

…その名前でウェブ検索しました。

でもその会社、Synaptics は一般ユーザーにドライバを提供している様子がまったくありませんでした。

また、私が使っているパソコンのメーカーサポート(ヒューレットパッカード)のドライバ ダウンロードを探しても ASIO ドライバーは提供されていませんでした。

普通に ASIO に非対応。。


そこで、"ASIO 非対応のオーディオ機器を ASIO に対応させるソフト"、「ASIO4ALL」(代表的なフリーの 汎用 ASIO ドライバー)をインストールすることにしました。

https://asio4all.org/

(サイトは英語なので、リンク先は「Google翻訳-ウェブサイト」で翻訳しています)

問題なくインストールできました。

5/9. あいだで必要なソフトウェアを用意

もしもの話で Domino に音源があり、音源の出力先を選択する設定があれば、出力先として ASIO を選択することができますが、残念ながら Domino にその設定はありません。

Domino は『音源を持たないシーケンサー・ソフトウェア』であり、備える出力ポートは MIDI OUT だけです。音声信号は出せません。

一方、ASIO は『オーディオ・デバイスのドライバー』であり、音声信号のみをアプリから受信するものです。MIDI 信号は受け付けません。

互いに接続する方法が無く、音源もありません。

…というわけで、『あいだで中継を行うソフトウェア』が必要になります。

「loopMIDI」と、「VSTHost」です。


6/9. VSTHost のプラグイン2つ

プラグインは、VST という規格にそっており、DTM の世界ではよく使われているそうです。


▼これらのプラグインの音を試している動画です。(MP4/46MB/1920x1080/0:03:55)


それから、ある RPG 製作サイトの「作曲講座」のほかに、「Domino」の公式サイトの「MIDI 講座」もとても役に立ちました。

7/9. 鳴らない原因(…の1つ)

VSTHost は最初なかなか音を出してくれませんでしたが、、

  1. 下図のように、VSTHost の Devices メニューから Wave... を選びます。
    (このとき ASIO 以外のオーディオ・ドライバーが設定されていると、図のように ASIO についてのメニューがグレーアウトしています)

    ▼Devices メニューから Wave... を選ぶ。
  2. Output Port の設定で「ASIO: ASIO4ALL v2」を選びます。

    ▼出力先として ASIO を選ぶ。
  3. するとグレーアウトしていたメニューが選べるようになります。
    「Asio Control Panel...」を選びます。

    ▼Devices メニューでグレーアウトしていたものが選べる状態に
  4. すると、ASIO4ALL のコントロールパネルが表示されます。

    図のように自分のパソコンの「オーディオ・デバイス」について、すべて、 の状態にしていると音が鳴らないことがあるようです。

    ▼Synaptics HD Audio の下に5項目ある。



    下図のように音の発生を阻害するものを探し当てて、 の状態にすることで音が鳴るようになりました。

    ▼Conexant HD Audio capture が同名で3つあるがそのうちの1つが鳴らない原因だった。


    探し当てるには、この5つの項目をすべて の状態にしてから、上から順に の状態にします。

























    以降同様

    音が鳴っていたのに、音が鳴らなくなったらその項目が犯人ということです。

    なお、 と、 は、クリックすると切り替わりますが、切り替わるまで 5 ~ 10 秒くらい時間がかかります。


    もちろん音が鳴らない原因はこれだけではなくいろいろあるので、この解決は一例です。
8/9. 肝心の遅延について

VSTHost において、出力先のオーディオ・ドライバーは下図のように選べるわけですが、、

それぞれ比べてみたところ、なんと、、


遅延音質競合
MME の場合 ○特に問題ない? ×音が大人しい? ◎iTunes鳴らしながら可
DS の場合 ○特に問題ない? ×音が大人しい? ◎iTunes鳴らしながら可
ASIO の場合 ◎特に問題ない ◎音に広がりがある? ×iTunes鳴らしながら不可
表の「遅延」について

表の「遅延」についてはどれも問題がありませんでした。

遅延を改善するために ASIO を入れたのに、どのオーディオ・ドライバーでも鍵盤を押した瞬間に遅延なく音が鳴りました。

…この記事を書く前、DS(Microsoft DirectSound)で試したときに、少し遅延していたのですが、改めて調べてみると遅延がなくなっていました。状態が少し変わったのだろうか…

たぶんですが、MME(Windows Multi-Media Extensions)や DS(Microsoft DirectSound)は他のアプリの音声出力と同時発生ができるので、もしかしたら、他のアプリが多いときなど処理がかさんで状態が悪いときに遅延が起こるのかもしれません。またはパソコン全体が重いときに遅延するとか…。

それは正しいようで、Wikipedia では、MME と DS では遅延が発生する、と言っています。

Wikipedia - DirectSound より、

(DirectSound は、)ASIO や WASAPI 等と異なり、低遅延やビットパーフェクト(データが 1 bit たりとも変化しない入出力)保証しないため、商業レベルでの音楽制作といった特殊な用途には不向きである。

Wikipedia - ASIO より、

>Windows 旧来の MME ではそのレイテンシ(データ送信から音声が出力されるまでの遅延時間) 200 から 500 ミリ秒

>DirectSound でも 50 から 100 ミリ秒

>Mac OS の Sound Manager で 20 から 50 ミリ秒とされているが、

>ASIO の場合は数ミリ秒から 10 ミリ秒以下で、環境によっては 1 ミリ秒以下となる場合もある。

▼上記 Wikipedia のレイテンシの数値をグラフにした図

このグラフを見ると、ASIO がいかに低遅延であるかがわかります。

ただし、最近の Windows の WASAPI(ワサピー、Windows Audio Session API)、macOS の Core Audio は ASIO と同じくらいの低遅延を実現しているらしく、音楽ソフトがそれらに対応していれば、ASIO を導入する必要は無いようです。

(WASAPI では低遅延にするためには「排他モード」にする必要があります。Core Audio のほうはよく知りません)

逆に、WASAPI や Core Audio の対応がない場合は ASIO を導入すれば良い、ということです。


遅延について はっきりと問題が出るのはこの記事で一番最初に示した、

Domino から直接「Windows 標準のオーディオ処理+Microsoftr GS Wavetable Synth」へつなげて音を出したとき

です。確実に 500ms 遅れるので、たぶん MME につながっているのではと思います。

表の「音質」について

表の「音質」についてはウェブの情報を見ると、「ASIO は音質が良い」と言われているようです。

確かに、ASIO のときだけ、音に深みがある気がしました。

表の「競合」について

表の「競合」については、 MME(Multi-Media Extensions)と DS(DirectSound)は Windows のマルチメディア機能のためにあるしくみということで、もともと他ソフトと一緒に音を鳴らせるものなので、競合しなくて当たり前なのかな…と思います。

ASIO の場合は、ASIO で動いているときは、ASIO がオーディオを占有するらしく、他ソフトの音声が止まります。

でも、そのおかげで ASIO では遅延がない、というのが実現できるわけです。


通常は MME や DS の設定にして他ソフトとの音の共存を可能にしておいて、MIDI 鍵盤を使って遅延が気になる場合に、ASIO に切り替える、という使い方が良いのかなと思いました。

あと、VSTHost のプラグインが使えるようになったのは良かった!

9/9. VSTHost のフィルタの理解

VSTHost にて、Devices メニュー>MIDI... を選ぶと、

▼「MIDI Settings」- タブ「MIDI Input Devices」
▼「MIDI Settings」- タブ「MIDI Output Devices」

このような画面が表示されます。

また、

この赤緑青、ピンクの で示した MIDI 端子のアイコンをクリックすると、それぞれで下図のように同じような画面が出てきます。複数の場所でほぼ同一の設定ができる状態で、違いや意味が分からず混乱します。

▼「Engine Input」- タブ「MIDI Input Devices」
▼「Engine Input」- タブ「MIDI Output Devices」

これらは、『それぞれの段階で、どの MIDI 信号を通し、どの MIDI 信号を通さないか』をフィルタしています。


「Domino」や MIDI 鍵盤などから MIDI 信号が流れてきて、VSTHost アプリに伝わったときのフィルタ(MIDI Settings - タブ「MIDI Input Devices」)で、一番最初のフィルタリングが行われます。

フィルタの画面で選択した信号だけが、後段へ流れます。

選択しなかった信号は、その時点でフィルタされるので破棄されます。

次のフィルタ(Engine Input - タブ「MIDI Input Devices」)で、2回目のフィルタリングが行われます。

例の図では、「* Keyboard Bar *」(画面上のソフトウェアキーボード鍵盤の押下)と「loopMIDI Port 1」(私が購入した MIDI 鍵盤)の信号だけを選択しているので、その信号だけが後段へ流れます。


各プラグイン(Synth1 や Magical8bitPlugなど)で処理したい信号だけをそこに通す、ということができるわけです。

VSTHost のフィルタは、そういうしくみになっています。

2025年1月5日

MIDI 「作曲したい人の本」 

本を手に取った

自作 RPG に BGM を付けるために今やっていることは、

  1. ファルコムのゲームの「ロードモナーク」のエンディングテーマを MIDI 鍵盤を使って弾けるように練習する。
  2. ある RPG 製作サイトの「作曲講座」を読み進める。
  3. 作曲関係の本をいくつか持っているので、読み進める。

の3点です。

今回のお話は3番の本についてです。

作曲したい人の本(リンクはAmazonです)

いつ買ったか、2014/10/20 発売で、本屋に並んでいたものを買ったので、5~10年前に買ったんですかね。

ずっと読まずに私の自室図書館(棚)に埋蔵されていました。

こんなふうに買ったはいいけど1ページも読まずに読む日を待っている本が何冊かあります。

今回、RPG の開発がだいぶ進んで、そろそろ BGM が必要だと思い、MIDI 鍵盤を買い、作曲をしようと思い、それでやっとこの本を読み始めたわけです。

BGM だけ人に作ってもらうとか、BGM 素材を使うとか、そういう手段もあるんですが、私が聴いている音楽というのは90%がゲーム音楽であり、それは小学生のころからずっと続いています。聴いていると「カッコイイな」と思うことが多々あり、憧れているわけです。なので、人の手を借りるというのは考えにくいみたいです。

「自分一人で全部やるよりは人々と協力してやる方が…」という考えも持っていますが、とりあえず、今の私は自分でやりたいみたいなので、やることにしたわけです。

それで、最近、2、3、作曲っぽいものをこじんまりとやっているわけで、今回、本にならって作ったものがコレです。

(MP4/3.2MB/960x540/0:01:00)

作曲の方法について

作曲にはいくつか方法があるそうです。

  1. 歌詞が先にあり歌詞から起こす。
  2. メロディの断片が頭にあり、そこから起こす。
  3. コード進行があり、そこから。
  4. 伴奏オケのアレンジなどから(ギターフレーズパターンなど)

今回は「歌詞から起こすのをやりましょう」ということで、


~こいをしたけどしつれんしたよ~


という歌詞が例題として出されました。ポップスって愛をテーマにしないと成立しないみたいなところがありますよね。

この歌詞は15文字で、15個のリズムを刻んだものが、動画の一番最初です。

動画の2番目には、私がそのリズムに音を付けたものが演奏されています。


ある RPG 製作サイトの「作曲講座」もそうだったんですが、この本では肝心なところで、

>では、このリズムに音を付けましょう。

>ここではシンプルなメロディをつけてみました(手本)

>歌詞に対して健康的ですね。

みなさんも鼻歌でかまいませんので言葉に音をつけてみてください。

…と、適当にこれで終わっているんですよね。これでやれと。

もしかして、作曲って適当なのか??と思ってしまう。

メロディを音符ひとつひとつ打ち出すための、特別なノウハウはないのかもしれません。


その次に、本の「step 5 メロディに和音をつける」のところで、「メロディに使った音を集めて、和音を付けます。」と書かれていて、『集めて付ける?コードってそういうものなのか?』と思って、集めた音に合いそうなコードを付けて、それを伴奏みたいに付けたのが、動画の最後の曲です。

「Dsus4」なんていうよくわからないコードを選んだりしたんですが、問題なくイケました。

めんどうな絵、めんどうな作曲

step 6 がまだ残っていますが、今回はここまでです。

めんどうくさいなぁ

と思ったりするんですが、重い腰を上げて取り組んだのが、今回のこの作曲でした。

『面倒だと思ってやらなければ、習得は遠い』と思って自分を説得して、やっとで取り組んでいます。

絵もそうなんですけど、基本的に私はやる気になって動くのが鈍いんですよね。

プログラミングならわりと意欲的なんだけど…

2025年1月9日

知恵袋 カテゴリマスターになりました。

「JavaScript」カテゴリのカテゴリマスターになりましたねぇ。

でも同じカテゴリマスターでも、「毎週の集計で条件をクリアした場合になることができるタイプのカテゴリマスター」なので、来週か再来週にその条件から外れると、カテゴリマスターの称号は消えてなくなります。

2025年1月13日

知恵袋 カテゴリマスターから外れました。

>来週か再来週にその条件から外れると、カテゴリマスターの称号は消えてなくなります。

言った通り消えました。

さようならカテゴリマスター、こんにちはその他の回答者。