あなたの天然記念物
ホーム更新雑談鉄ゲタランドナーコースガイド自転車JKFFハードソフトダウンロードLinuxリンク(Amiga)リンク(その他)連絡先経歴
    目次 ↓下へ ↑上へ
  1. メールソフトYAMでJISを使う方…
  2. 簡単なMakefile作成方法
  3. WWWサーバー Apacheを使ってみる
  4. ネットワークプログラミング
  5. Scala MM400を使いました
  6. メールソフトYAMで漢字を使う方法
  7. AWebIIで漢字を表示する方法
  8. インターネットでNiftyServeへログイ…
  9. チャットしませんか?
  10. インターネットでチャット(IRC)…
  11. あなたのブラウザに挑戦
  12. JKFFについて知っている二、三の…
  13. CD-ROMを焼き焼き
  14. Professional File System 2を使用開…
  15. 日本語エディタJKED
  16. P-MODELから曲を買ってCD-ROMに
  17. OS3.5インストール方法
  18. TAINACO-Eスクリーンブランカ
  19. Linuxとパラレル接続
  20. 動画ファイルを再生
  21. Real time graphics display trigger …
  22. JKFF最新リリース
  23. AmigaDOS3.9(アイコン編)
  24. AmigaDOS3.9(ファイルリクエスタ…
  25. AmigaDOS3.9(パーティション編)
  26. AmigaDOS3.9(AmiDock編)
  27. AmigaDOS3.9(Unarc編)
  28. AmigaDOS3.9(アイコン修正編)
  29. JKFFDisp最新リリース
  30. YAM用日本語マクロ
  31. 最強のAmigaエミュレータAmithlon
  32. MSでぇ得ぬ
  33. HDToolBoxの使い方
  34. 超高速起動のAmithlon
  35. HTMLのテンプレート処理(解説)
  36. ARexxでWorkbenchを制御(Ram D…
  37. ARexxでWorkbenchを制御(メニュ…
  38. あなたのブラウザに挑戦2
  39. BIOS変更で便利に楽しく
  40. Amithlon Contrib3bリリース
  41. Amithlonでキーボードマップを変更
  42. Amithlonでディジタルサウンド
  43. Perlに夢中
  44. ホームページ製作に夢中
  45. ホームページ作成スクリプト完成
  46. スクリプトのモジュール追加
  47. 文字コードチェックのモジュール追加
  48. 画像サイズ追加のモジュール追加
  49. 確率計算スクリプト
  50. タグIMG自動生成スクリプト
  51. ヘッダ生成モジュール改良
  52. 変換モジュール作成
  53. メニューを簡単に変更してみました
  54. Amithlonでアナログ録音
  55. 行変換のモジュール追加
  56. ページ末尾用のモジュール改善
  57. AmigaOSのシャットダウン用スクリ…
  58. ダウンロード用のモジュール追加
  59. ドローソフトの作成
  60. hpwakeのフロントエンド
  61. AmithlonでMIDI演奏
  62. 改行用のモジュール追加
  63. EはエンハンスドのEです
  64. Amithlonを使う方法-01
  65. Amithlonを使う方法-02
  66. Amithlonを使う方法-03
  67. Amithlonを使う方法-04
  68. フォント名の秘密
  69. 画像収集スクリプト
  70. やったね!AmigaOS4.0漢字表示サポ…
  71. 一言メモ-1
  72. DVD-Rを焼き焼き
  73. 海外送金も楽じゃない
  74. シューティングゲーム(の土台)作りま…
  75. Amithlonと行くLinux Kernelの旅
  76. メールソフトYAMで漢字を使う方法
  77. CDプレーヤ MCDPlayer
  78. 痛車が北海道に来るとAmigaで音声合…
  79. はちゅねをAmigaに連れてって
  80. パレット再配置スクリプト
  81. アクセス規制チェックスクリプト
  82. ニコニコ動画のサムネ表示モジュール…
  83. favicon表示対応
Real time graphics display trigger by MIDI (2002.01.01)



MIDIの「ノートオン」メッセージを受けて、
画像を表示するプログラムを作ってみました。
平沢さん(P-MODEL)がやっていますが、
昔のソフトを駆使されていて、DCTVでの出力が限界となっています。

そこで、一番安定しているAmigaDOS3.1での限界に挑戦すべく
  1. CyberGraphX V4でフルカラー表示
  2. DataTypeで画像ファイル読込
  3. ARexxでの設定、および、制御
をサポートしました。
本当は、AmigaDOSや他のライブラリに任せて、手を抜いています。


用意するもの(カッコ内は開発環境)

プログラムebitai

CyberGraphX V4
ひょっとするとV3で動作するかもしれません。

ビデオボード
CyberGraphXがサポートしているもの
(PicassoIV)

MIDIインターフェース
(HiSOFT ProMIDI Interface)

MIDIシーケンサー
(KAWAI Q-80)
実機のシーケンサーは、Windowsより便利(笑)。

ライブラリ
Bars & Pipes、CyberGraphX、ProMIDIをインストールすると
おそらく一緒にインストールされます。
動作しなかったときだけ、Aminetから捜してインストールしてください。


動作内容

CLIからプログラム「ebitai」を起動すると、
ARexxポート「EBITAI1」を開き、
設定スクリプト「ebitai.rexx」を起動し、
ARexxポートからのコマンドを待ちます。

ebitai.rexxが起動される
「MIDIチャンネル、ノートナンバー、画像ファイル名」の組みを
コマンド「LOAD」で登録し、
最後にコマンド「PLAY」で待機させて、
スクリプトは終了します。

MIDIシーケンサーから「ド、レ、ミ」を入力すると、
ノートナンバーに対応した画像が表示されます。

CLIから「ctrl + c」で終了します。


表示性能

ビデオボードでの表示は、当初、「CPUにオンブにダッコ」だったのですが、
複数画面を保持する方法が判明し、
解像度や環境によっては、極めて高速に表示できることを確認しました。
確認は、開発環境(=PicassoIVとCyberGraphX V4)で行ないました。
開発環境は、PPC604e/233MHz、68060/50MHzですが、ほぼ060/50MHzと考えてください。
フルカラーの640×480を10面保持できるので、ebitaiの全画面を一瞬で表示できます。
フルカラーの1024×768は1面だけだったので、CPUにオンブします。
ただし、ビデオボードの出力をebitai専用にすると2面以上持てるかも知れません。

画面を1面しか保持できなかった場合、画面に画像を転送するのが主な処理ですから、
表示速度《フレーム/秒》=転送速度《バイト/秒》÷(高さ×幅×深度÷8)
と考えています。

項番解像度深度(色数)表示速度《フレーム/秒》
640×48024(フルカラー)超高速(計測不可)
640×4808(256)超高速(計測不可)

深度8で画像ごとにパレットが異なる場合、
パレットの切換と、画像データの切換のタイミングが合わなくて、
かなり汚ない表示になります。


コマンド一覧
ebitai.rexxからでも、他のARexxスクリプトからでも発行できます。

コマンド「VERBOSE」
 VERBOSE <スイッチ>
 <スイッチ>:0(表示終了)、1(表示開始)
 処理経過を表示しますが、表示速度が落ちるので、
 調子が悪い際のチェック用に使ってください。
 
コマンド「LOAD」
 drum.MIDICHANNEL = <MIDIチャンネル>
 drum.NOTENUMBER = <ノートナンバー>
 drum.GRAPHICSFILE = <画像ファイル>
 LOAD drum
 <MIDIチャンネル>:1〜16
 <ノートナンバー>:ド=60、レ=62、ミ=64でおなじみの数字
 <画像ファイル>:ファイル名
 画像ファイルをメモリ上に読込んで、
 MIDIチャンネルやノートナンバーと対応させます。
 DataTypeで読める画像なら何でも良いハズですが、
 フルカラーのBMPファイルが確実です。
 最初の画像を利用して、画面の大きさと深度を決めています。
 2個目以降の画像が最初と異なると、どうなるかわかりません。
 10個まで読込めます。

コマンド「PLAY」
 PLAY
 MIDIのノートオンを待ちます。
 最初からPLAY状態なのですが、
 将来のMIDI設定の追加に備えました。

コマンド「STOP」
 STOP
 将来のMIDI設定の追加に備えました。

コマンド「QUIT」
 QUIT
 プログラムを終了します。


ebitai.rexxのサンプルと説明

行番号ソース説明
1/*1行目は必らずコメント
2 ebitai.rexx for startup ebitai
3*/
4
5OPTIONS RESULTSよくわからないけど、とりあえず
6
7verbose 01にすると表示開始
8
9drum.midichannel = 1MIDIチャンネルを1に設定
10
11drum.notenumber = 60ノートナンバーを60(ド)に設定
12drum.graphicsfile = demo60.bmp画像ファイルはdemo60.bmpに設定
13load drum上の3行で設定した内容をLOADで登録
14
15drum.notenumber = 62
16drum.graphicsfile = demo62.bmp
17load drumこのときMIDIチャンネルは1個目と同じ
18
19drum.notenumber = 64
20drum.graphicsfile = demo64.bmp
21load drum3個目を登録
22
23play待機
どのページも無断でリンクして構いません。
Valid HTML 4.01 Transitional