スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

シーケンサその5

やっとこさ演奏可能になった。
全チャンネル使用可能。1つのチャンネルで和音もできる。
まだ一般のノートしか置けないのでテンポ固定、音色固定。
変換はそれ用のデータなのでMobileDJよりは高速。


しっかし、完全自前にも限界を感じる…

正しいノートオフ命令を書き込むのが大変だった~。ノートオンイベントしか記録していないので、ゲートから計算して止めるべき時間のあとのオンイベントがきたらその前に割り込んで先にノートを止める。。。うまくいえないが絶対に賢くない方法。

先にオフイベントをオンイベントと同等に扱えば楽チンになるかも?…ゲートという値を持たないでオンとオフの差でやる。これだとノートオフがきたらそれにしたがって止めるだけでよくなる。

でも、それだと編集画面を作るのが大変になりそーだ・・・
スポンサーサイト

シーケンサその4

シーケンサXPっぽい配色にしてみたw
さっき書いた通り同時押しが利くようになったので同時押しによる画面の拡大縮小、ノートの長さ、ベロシティの長さの変更ができるようになった。チャンネル切り替えも同時押しでできるようにしたらあっというまに16ch対応に化けます。(チャンネル変更は変数1つ弄るだけで変わるんでサクッと。)

あとは再生ができればそれっぽくなりますね~。
テンポ変更とかは0Chノートをおいてできるわけですが、その辺は特殊なんで別途作らねばいけません。

ディレイってのもあれば便利らしい。
2Chを1Chのディレイチャンネルとして使用する、みたいな設定もできるようにしてみよう。まぁどうせ変換に少し手を加えるだけだし…

シーケンサ その3

シーケンサガツガツいくぜ!カーソルをつけて4分音符のみだけどノートをおけるようにした。一度ノートの上に描画順つけてきっちりリンクリストが機能していることも確認しました、念入りにwリストの順番がおかしいとノートが置けても意味がないですからね~。常にカーソル位置の直前のノートの参照を持つようにしているんで、描画は、その参照から描画されないノートまで逆にたどって、今度はそこからまた反対にたどりながら描画範囲外なとこまで描画し続けるという複雑怪奇、ぐちゃぐちゃのプログラムによってなされています。もうちょい綺麗にしないと…


まだノートを置くときに、そこにノートがすでにあるかどうかをチェックしてないのでだめだめ。それにノートの長さも変えれるようにしなくては~。



■追記
いろいろググッたけど有名だったまふぃんが公開停止中で作曲アプリはいまんとこ3つくらいしかないらしい。(メロディ職人とかiMUSIA)しかもほぼすべてピアノロール。半音を独立させたラインにはしてないようですが、まぁほぼすべてピアノロール。さすがピアノロール。

で、いろいろ見て回って自分のアプリの仕様も改めて考えた。
・多分900i以降対応。
・ピアノロール方式。
・作った音楽は直接本体メモリに移せる。
・SMFが基本。(MLD化も可。)
・SMFモードでは最大分解能は1920。MLDモードは192、だっけ…
・トラック数は16。(内1つはドラムパート。)
・プログラムチェンジノートで音色変更。
・テンポは専用トラックにプログラムチェンジノートをおくことで変更可能。
・メモリが続く限りノートを追加可能。(小節数は問わない。演奏できるかはわからないw)
・編集グリッドの拡大縮小可能。
・範囲選択による編集も…なんとか。(できるかな・・・)
・ベロシティ編集用画面を用意。(グリッドの下部に表示ってのもできるかも。)
・最大和音数は機種依存。(平均128くらい?)

要はDomino風w要望あったら言ってください 汗

シーケンサ その2

シーケンサ飾り付け中。だんだん手本にしてるシーケンサと似てきたな~まずいまずい。。。見かけ自体は前回とさほどかわりませんが、いろんな分解能に対応できるように改良しました→前回は表示を分解能にあわせていたんですが(表示1dotが分解能分の1分音符分の長さだった、みたいな。)、拡大縮小機能に邪魔だったんで切り離す処置をしといた。あくまで内容にあわせて表示をおこなわないとね~。

拡大縮小って意外にやっかい。さっぱり進まない。
(あぁ自分でも言ってる意味がわからなくなってきた…テスト末期症状)

MIDIシーケンサ

いろんなものと平行してMIDIシーケンサ(MIDIを作るツール)を作ってみようと思う。もちろんiアプリ。まぁすぐあきるだろうけどせめて曲っぽいものがならせるくらいまでにはしようw

一応BMSプレイヤーでノート情報からMIDIは作れるようにはなってるわけだから、ノートを並べるシステムを作ってしまえばもうできたようなものですな。ノートデータはチャンネル分のリンクリストで管理すればいいんだろか。追加、挿入、削除を頻繁に行われるわけだから普通の配列ではちとつらいし。

チャンネル分持っておくと表示するときも楽だしね~。

で、各ノートデータには、
小節番号、小節内での開始タイミング、長さ、ベロシティなんかを保持しとけば変換もできるか。変換するときはデルタタイムが必要だけどコレだけあれば余裕で計算できるはず。

何はともあれいろいろやってみるしかない!



■追記
シーケンサまずは形から。拡大縮小、さらにはQVGA以上の解像度に対応したかったんで結構一苦労。拡大縮小するんで横のキーの絵に画像使えないのつらかった~。メインのグリッドの縦が12分割なのにキーは7分割ですよ。。。で黒鍵があったりで・・・まぁなんとかなりました。
あとはカーソルとカーソルによってグリッドを縦横無尽に動かせるようになればおk。



■さらに追記
縦横無尽に動くようになった。
とりあえずチャンネル数1でいいからノートを並べれるようにしよう。

↓操作方法構想

○横カーソル
・4分音符単位で移動。
・キーを押しながらカーソルで192分(最小)、16分、8分単位移動をできるようにする。
・キーを押しながらカーソルでその部分のノートの長さを192分(最小)、16分、8分単位で調節できるようにする。

○縦カーソル
・音程移動。
・キーを押しながらカーソルでそのノートのベロシティ調整。

○決定キー
・4分音符ノートを置く。
・キー押しながら決定でノート削除。
・キー押しながら決定でプログラムチェンジノートを置く。
・キー押しながら決定で空白の挿入。(以降のノート全横スライド。)

(キー+カーソル同時押し使わないとひどく使いづらそ…)

こんなもんでいいか。
最終的には範囲選択→ドラッグ→貼り付けみたいなこともできるようにしたい。
再生はソフトキー→再生。
ベロシティ曲線なんかは後回し。。
カーソルをノートの上に置いたら下部に簡易的な情報もださないとな。
Go To 物置。
プロフィール

書いてる人:つん

まったりのんびり。書いてる人の息抜きブログです。

多分連絡先↓
metal_tsun@yahoo.co.jp

カテゴリー
リンク
月別アーカイブ
バロメーター
Java歴:2005年2月から今まで。
3DCG歴:2005年8月から数年。
C歴:2006年4月から今まで。
VB歴:2007年3月からちょっと。
Delphi歴:2007年3月からちょっと。
PIC歴:2007年5月から数年。
イラスト歴:2007年12月から今まで。
DTM歴2008年2月からちょっと。
PHP歴2008年4月からちょっと。
C++歴2008年4月から今まで。
C#歴2009年1月から今まで。
Objective-C歴2009年4月から今まで。
CSS歴2012年5月から今まで。

ブログ開始日2005/10/11


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。