今midiについて勉強中なんですが
デルタタイムがどうしても分かりません。
エクセルでバイナリのデータから16(10)進数に変換していて
http://www.geocities.jp/stdmidi/03.html
上のサイトに書いてあることはできましたが
http://www.geocities.jp/stdmidi/t0.html
デルタタイムの83 60を480(10進数)にすることがどうしてもできません。
vbaでもワークシート関数でもどちらでもいいのでお願いします。
No.1ベストアンサー
- 回答日時:
MIDI なんて 20年ぐらいぶり。
しかもバイナリでなんか気にも留めたことなかった。
タイムベースが 0x01E0 となっているので、10進数に直してみると 480になる。
つまり四分音符の分解能は 480ってこと。
んで四分音符と同じ長さでデルタタイムを記述したいのなら 480 をセットする。
480 を 2進数にすると 00000001 11100000 となる。
ただしこの 2進数は 8bit で素直に算出したもの。
これを MIDI の 7bit 区切りにすると
10000011 01100000 となる。
これを 16進数にすると 0x8360 になる。
逆に言えば、
バイナリ中のデルタ値が 0x8360 になっていたとすると
これを 2進数にすると 10000011 01100000 となる。
これは MIDI のお約束で 7bit化された値を 8bitで表したもの。
これを純粋な 8bit に直す。
下位 01100000 の先頭の 0 を捨てると 1100000 となる。
先頭の 1ビットは上位の一番ケツの値から持ってくる。
上位 の一番ケツの値は 1 なので、こいつをもらう。
そうすると下位の値は 11100000 になる。
上位 10000011 は、ケツの 1 を下位にくれてやり、全体を右にシフトする。
ただし先頭の 1 は 「下位とつながってる」 というフラグ値なので捨てる。
そうすると上位 10000011 は 00000001 になる。
上位と下位を並べると 00000001 11100000 となる。
これは 16進数だと 0x01E0 になる。
タイムベースで指定している値と同じなので、四分音符ぶん待つよう書かれていることが分かる。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(IT・Webサービス) MacとWindows Google検索した時のURL表示の違いについて 1 2022/11/17 10:38
- 統計学 統計分析とExcelに詳しい方、何卒よろしくお願いいたします。 6 2022/05/27 10:30
- その他(自然科学) 三相三線 電圧降下 デルタ結線 3 2022/10/05 12:04
- 物理学 初等関数じゃないものは、名前を忘れてしまいましたけど、デルタ関数など、あります それらをいぱい使うぶ 2 2022/08/10 09:48
- その他(病気・怪我・症状) 新型コロナワクチン接種後の抗体原罪についてどう思われますか? 今のワクチンはアルファ株、デルタ株に対 4 2022/05/19 14:57
- パチンコ・スロット パチンコ店での詐欺と思われる事案 5 2023/07/07 09:15
- Excel(エクセル) VBA セルの値と同じ名前のシートにデータを貼り付けするやり方を教えてください 2 2022/05/17 16:26
- その他(プログラミング・Web制作) .htaccessの設定で、httpはhttpsに、且つ、wwwありに統一、の記述方法 2 2023/06/22 10:54
- F1・モータースポーツ F1でのピットインでの考え方と、普通のビジネスマンの睡眠時間について 3 2023/07/29 11:42
- その他(ニュース・時事問題) コロナ終息の兆し? 5 2022/05/31 20:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
ExcelでGaussian fittingをした...
-
VB初心者。小数点以下の表示で...
-
VB.NETでコンボボックスの1行目...
-
ユーザーフォームのテキストボ...
-
【ASP.NET】 DataTextFieldの値...
-
Excel VBA 複数選択したリスト...
-
変数名の取得
-
変数に代入してある数値を表示...
-
power BI クエリエディター 〇...
-
【C++/CLI.NET】コンボボックス...
-
値を返さないコード パス
-
マクロ 特定のセル値のみクリ...
-
ListBoxでオートフィルター表示
-
VB.NETでアクティブなformを知...
-
チェックした値を取得したい(C...
-
Excel VBAのリストボックスの値...
-
RegisterClassExのエラー原因
-
ダブルクリックをした順番に数...
-
Excel vba ユーザーフォームテ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
マクロ 特定のセル値のみクリ...
-
VB.NETでコンボボックスの1行目...
-
変数名の取得
-
値を返さないコード パス
-
Excel VBAのリストボックスの値...
-
VB初心者。小数点以下の表示で...
-
ハッシュテーブル(連想配列)が...
-
textboxとLabelを動的に変更する
-
PL/SQLでのTO_DATEの時間取得に...
-
VB.NETでアクティブなformを知...
-
Excel vba ユーザーフォームテ...
-
マクロで奇数と偶数の値を2か所...
-
DataTableに対するLINQについて
-
【C++/CLI.NET】コンボボックス...
-
[VBA]選択範囲の下から上に処理...
-
範囲が指定されている乱数について
-
[VB.net] DataGridViewのコンボ...
-
変数に代入してある数値を表示...
-
vbscriptを使いexcelを参照して...
おすすめ情報