0421605-20080204

Java言語による
「DTM アプリケーション」の開発
~Java Sound API の利用~
北海道情報大学 情報メディア学部
情報メディア学科 新井山ゼミ
0421605 迫 大志
発表内容(目次)
1.
2.
3.
4.
制作概要
制作目的
研究内容
開発成果
5.
6.
7.
8.
評価
考察
今後の課題
参考文献
制作概要
• 制作目的
– DTMアプリケーションの開発
• 制作手順
– 1.必要機能の洗い出し
– 2.機能の実現手段の模索
– 3.機能を実装
– 4.2~3繰り返し
• 成果
– 実際のアプリケーション
制作目的
• 目的
– Javaプログラミング能力向上
• アプリケーション制作
• GUIの制作技術向上
• DTMプログラミングの知識修得
– DTMの新規参入者獲得
• DTMソフトウェアが高価
研究内容
• Java Sound API
– 入出力への効果と制御のための低レベル API
– 利用パッケージ
• Java.Sound.midi.*
– MIDI イベントの転送
– シーケンシング
– イベントからのサウンドを合成
研究内容
• MIDI基礎知識
– MIDI Message
• ノートオン,ノートオフ,プログラムチェンジ,etc...
– Tick
• MIDIで使われる時間の単位
– Event
• MIDI MessageにTickを指定
– Track
• Eventの集まり
研究内容
• MIDIファイルの構造
– SMF(Standard MIDI File)
• MIDIファイルの共通保存形式
• ヘッダーブロック
– ファイルデータの基本情報
» フォーマット等
• トラックブロック
– 実際の演奏情報
» MIDIチャンネルメッセージ等
研究内容
• GM(General MIDI)
– 音色の種類や番号などを共通に定義したもの
– GM基本仕様
• チャンネル
– 音声情報を伝達するケーブルのようなもの
» 各チャンネルで個別の音色を演奏
» 10chのみ鍵盤(ピッチ)ごとにリズム音色指定
• 音色数
– プログラムナンバーに対応した128音色
– パーカッションマップに対応した47音色
開発成果
• DTMアプリケーション
– 動作環境
• JRE 1.6.0_03以上
– SMFファイルフォーマット1
• フォーマット0
– 1Trackで構成されたファイル
• フォーマット1
– 複数Trackを含む、主にチャンネルを2系統以上
使用したい時に使われる仕様
開発成果
• Fileメニュー
– 新規作成
– ファイル入力
– ファイル出力
• Trackメニュー
– Track追加削除
• プロジェクトタブ
– プロジェクトファイル
名などを表示
開発成果
• Sound Panelタブ
–
–
–
–
Trackの表示
チャンネル表示
音色情報表示
ミュート設定
開発成果
• Piano Rollタブ
– Track内イベント表示
– Eventの設置
• 1px1Tickの設定
• クリックでノートオン・オフ時のTickを指定
– Sequencerの再生・停止・一時停止
評価
• Javaプログラミング能力の向上
– GUIについての理解と知識は向上
– JavaでのDTMプログラミングに必要な知識不足
• DTMアプリケーション
– 改善点多々
– 機能不足
– 市販のものとは比べ物にならない
– DTMアプリケーションを制作する上でのノウハウ
獲得
考察
• 知識の不足箇所
– Channelのミュート方法
• 機能不足
– Event設置時のマーカー表示
– Tickを固定長にして選択
– Velocityの変化
– 他規格への互換
– etc...
• DTMプログラミング
– Java Sound APIでの実現方法の模索
今後の課題
• 不足機能の実装
– MIDI MessageにVelocityの変化を実装
– Tickを固定長にして選択
• 音符ごとの固定長に指定
– Soundbankの選択
• デフォルトのsoundbankが存在すると認識しないので
JREに含まれるsoundbank.gmを削除すること
– 他規格への互換
– GUI外装の装飾
• 機能の拡張
– VSTなどソフトウェア・シンセサイザの利用
– MIDI機器への入出力
参考文献
• Java で Hello World サウンド編
– http://www.hellohiro.com/sound.htm
• Java で MIDI にこんにちは
– http://www.cwbp.com/mdpw/java/
• Java Sound プログラマーズガイド
– http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/
sound/programmer_guide/contents.html
• 詳説MIDI規格
– http://www.pluto.dti.ne.jp/~daiki/Midi/Midi.html