S.F. Page

Programming,Music,etc...

VST Host

VstHostアプリの作成(49) シーケンス部分実装(12)

今日もいろいろ忙しく特に進展なし。

VstHostアプリの作成(47) シーケンス部分実装(10)

ハリボテを作ってさあ、実装しようと考えたけれどこのままJUCEベースで作っていくと動作速度的に破綻しそうな気がする。JUCEライブラリの場合オフスクリーンビットマップにソフトウェアでWidgetをレンダリングしてスクリーンに転送するしくみになっているの…

VstHostアプリの作成(46) シーケンス部分実装(9)

ぼちぼちSTed2の取り込みを開始。 とりあえずハリボテ作成。 Revision 47 - WinAudioJuce - SourceForge.JP Microsoft Visual Studio 2010 Professionalposted with amazlet at 10.07.24マイクロソフト (2010-06-18)売り上げランキング: 2875Amazon.co.jp で…

VstHostアプリの作成(45) シーケンス部分実装(8)

とりあえず、WinAudioJuceのソースコードにSTed2のソースコードをマージ。IntelliSenseが効くのでソースコード読みの効率が上がる。今は時間管理のしくみがわかったのでWindows APIでiocs周りをエミュレートする部分を引き続き読んでいる。X68000ってVRAMが…

VstHostアプリの作成(44) シーケンス部分実装(7)

STed2のソースコード読み中。 ようやく時間管理している部分を発見。デルタタイム(1ステップに要する時間)が1ms以上だとタイマ起動。そうじゃない場合はそのままループ。1msがしきい値なのはタイマの分解能や平均的なMIDIイベントを送る時間が約1msという…

VstHostアプリの作成(43) シーケンス部分実装(6)

STed2のソースコードを引き続き眺め中。どこでどのようにシーケンスの時間管理をしているのかはまだわかっていない。暑いしなかなか進まない。

VstHostアプリの作成(42) シーケンス部分実装(5)

ソースコードをぼちぼちと眺めている。 どのような方法でテンポコントロールをしているのかをチェックしているところ。タイマ割り込みを使用しているのかな。。 IOCSあたりもチェックしておいたほうがよいのだろうか。 http://blea.ch/~squidman/wiki/index.…

VstHostアプリの作成(41) シーケンス部分実装(4)

STed2 for WindowsをVC2010でビルドしなおしてみた。少し#include部分をいじる必要があったけどそれ以外はすんなりビルドでき、Windows 7でもちゃんと動いている。 STed2 for Windowsの作りは、できるだけSTedのソースコードを変更せずに動作させるという感…

VstHostアプリの作成(40) シーケンス部分実装(3)

STED2のソースコード読み。 なんとなく、Windows版のほうのソースコードでdriversフォルダに入っているソースコードをJUCE向けに書き換えればあんまりコードを書き換えずに済みそうだ。

VstHostアプリの作成(39) シーケンス部分実装(2)

少しずつではあるがSTEDのソースコードを読んでいる。 Cなので少し読みづらいかな。

VstHostアプリの作成(38) シーケンス部分実装(1)

次からはシーケンス部分をまともにしていこうと思う。 まずはSTEDのソースコードをベースにそのまんま持ってくることにする。

VstHostアプリの作成(37) Undo・Redo機能の実装(9)

Undo・Redoがとりあえず実装できたので動画にしてみた。 変更ソース

VstHostアプリの作成(36) Undo・Redo機能の実装(8)

Undo・Redoの実装を続けている。 とりあえずBUGはFIXした。 コードの整理はまだ。

VstHostアプリの作成(35) Undo・Redo機能の実装(7)

Undo・Redoの実装を続けている。 ただいまBUGと格闘中。 BUGが直ったらすこしコードを整理しないと。。試行錯誤コードを残しっぱなしなので。。 ソース

VstHostアプリの作成(34) Undo・Redo機能の実装(6)

Undo・Redoの実装を続けている。 juce::UndoManagerを改造し、UndoableActionをネストできるようにしてみた。こうすれば複数のUndo可能コマンドを組み合わせられるのでUndoの実装が簡単になる。

VstHostアプリの作成(33) Undo・Redo機能の実装(5)

ただいまUndo・Redoを実装中。

VstHostアプリの作成(32) Undo・Redo機能の実装(4)

Undo・Redoのベースとなる実装は終了。 続いてコマンドを実装していく。これが面倒くさい。 JUCEのUndo・Redoの実装はコマンドパターンによるものでオーソドックスなもの。トランザクション(複数コマンドの一括Undo・Redo)にも対応している。 ついでにUndo…

VstHostアプリの作成(31) Undo・Redo機能の実装(3)

Undo・Redoを少し実装。 JUCEにUndo・Redoのフレームワークがあるのでそれをそのまま使って実装するので、はまる部分も特にないのだが、モチベーションが下がっているので遅々として進まない。

VstHostアプリの作成(30) Undo・Redo機能の実装(2)

ワールドカップやなにやらでプログラミングへのモチベーション下がりっぱなし。

VstHostアプリの作成(29) Undo・Redo機能の実装(1)

UNDO機能について思案中。

VstHostアプリの作成(28) SequeceFilterの実装(19) シリアライズ

昨日のコードではxml_woarchive実行時に例外が出る。正しくは下記。 namespace boost { namespace serialization { template<class Archive> inline void save(Archive & ar, const juce::String & s, const unsigned int version) { ar & boost::serialization::make_nvp("</class>…

VstHostアプリの作成(27) SequeceFilterの実装(18) シリアライズ

そういえばSequenceFilterクラスのパラメータ保存(シリアライズ)について考えてなかった。Boost.Serialization使って実装するかな。。 下記は思い出しがてら作ったjuce::Stringの非侵入タイプのシリアライズ関数。かなりいい加減。。 namespace boost { na…

VstHostアプリの作成(26) SequeceFilterの実装(17) パラアウト

とりあえずMIDIマルチアウトは実現出来た。 開発環境もVS 2010 Expressにした。 次は何をしようか。。 UNDO・REDOできるようにして、その次にSequenceFilterの編集部分をSTED2やRECOPコードを参考にレコポライクなエディタにしていくことにしよう。 後気にな…

VstHostアプリの作成(25) SequeceFilterの実装(16) パラアウト

ようやくBUGが直り、パラで音が鳴るようになった。 http://sourceforge.jp/projects/winaudiojuce/svn/view?view=rev&root=winaudiojuce&revision=30

VstHostアプリの作成(24) SequeceFilterの実装(15) パラアウト

これまでの成果をアマレココで動画にしてみた。 マウスカーソルが無いのでいまいち何をしているのかよく分からないけど。

VstHostアプリの作成(23) SequeceFilterの実装(14) パラアウト

MIDIマルチアウト部分を実装中。 ようやく画面上に出現。でもまだちゃんと動かない。。

VstHostアプリの作成(22) SequeceFilterの実装(13) パラアウト

MIDIマルチアウト部分を実装中。 ペースは1日5行くらいのペースで、とても遅い。

VstHostアプリの作成(21) SequeceFilterの実装(13) パラアウト

ちょっと停滞気味。

VstHostアプリの作成(20) SequeceFilterの実装(12) パラアウト

MIDIマルチアウト部分の実装を始めたところ。

VstHostアプリの作成(19) SequeceFilterの実装(11) パラアウト

MIDIマルチアウトを実現するため、AudioProcessorGraphコードのお勉強。肝であるRenderingOpSequenceCalculatorクラスをようやく大まかに理解できた。 AudioProcessorGraphコードを改造すればマルチアウトは実現できそうだ。

VstHostアプリの作成(18) SequeceFilterの実装(10) パラアウト

MIDIのパラアウトを実現しようとAudioProcessorGraphコードを眺めているところ。一度理解したつもりだったのだけれど、すっかり忘れてしまった。 後、レコンポーザに似たステップ入力シーケンスソフトを2つ見つけた。 ・Recop ・Sted2 両方共ソースコード付…

VstHostアプリの作成(17) SequeceFilterの実装(9) パラアウト

SequenceFilterの実装の続きを行っている。ToDoをやりつつ、確認用に簡単なUI画面を作ってみた。 ようやく再生コントロールがtick単位でできるようになった。でもまだまだいい加減な実装。 ソースコード: SequenceFilter.h SequenceFilter.cpp SequenceEdito…

VstHostアプリの作成(16) SequeceFilterの実装(8) 時間管理

今後のToDO: SequenceFilterの実装の続き ・タイムベースを意識した再生管理部分の考え方整理 ・メソッドの整理 ・サンプル数→テンポ変動を考慮したタイムベース単位のtick変換コードの実装 SequenceFilter.h sequenceFilter.cpp

VstHostアプリの作成(15) SequeceFilterの実装(7) 時間管理

ぼちぼちと実装を続けている。 タイムベースでなんとか音がなるようになった。 でもまずい点が発覚したのでもう少し頑張らなくてはならない。 これが終わったらMIDIのパラアウトに挑戦しようと思う。

VstHostアプリの作成(14) SequeceFilterの実装(6)

ぼちぼちと実装を続けている。

VstHostアプリの作成(13) SequeceFilterの実装(5) 時間管理

とりあえずMIDIパラアウトの件は置いておいて、シーケンサの時間管理をどうしようか考えている。 MC-4やレコンポーザのようなステップタイプのシーケンサを実装したいのだけれど、その際MIDIイベントの時間をタイムベースで表す方がよいのか実時間で表す方が…

VstHostアプリの作成(12) SequeceFilterの実装(5) パラアウト

テンポが倍で演奏されてしまうBugは修正。 しかし今の:AudioPluginの仕様だとMIDIの入出力は1系統しか実装できない。パラアウトしたいのだが少々改造が必要そうだ。 SequenceFilter.h SequenceFilter.cpp

VstHostアプリの作成(11) SequeceFilterの実装(4)

MIDIファイルを読み込んでシーケンスデータを出力する部分を実装している。再生できるようになったが、何故かテンポが倍で演奏されてしまう。。。。

VstHostアプリの作成(10) SequeceFilterの実装(3)

MIDIファイルを読み込んでシーケンスデータを出力する部分を実装している。JOSTを参考に少しコードを追加してみた程度。 SequenceFilter.h SequenceFilter.cpp

VstHostアプリの作成(9) SequeceFilterの実装(2)

Audio Plugin HostサンプルをベースにSequenceFilterを実装している。 Pluginとして認識するレベルの簡単な実装をした。 本格的な実装はこれから。 今後のToDo。 JOSTコードを参考に、MIDIファイルを読み込んでシーケンスデータを出力する部分を実装する。 M…

VstHostアプリの作成(8) SequeceFilterの実装

引き続き電車の中でJUCEのオーディオ周りのクラスをチェック。 今はソースコードをMicroSDにコピーして携帯アプリ(Tree Exploer)で見ているが、画面が小さいのでソースコードが回り込みとても見辛い。 iPod Touchでなんと見れないかと思ったらいろいろあるよ…

VstHostアプリの作成(7) ソースコードを電車でチェック

ホスト上でMIDIファイルを読み込み、再生する部分の作成。 ただいまJUCEのAudioProcessor周りを勉強中。 なかなかややこしい。

VstHostアプリの作成(6) JUCEが1.51にバージョンアップ!

JUCEが1.51にバージョンアップ! WASAPIのサポートが自分にとっては大きいところ。 Changelist for version 1.51 - Huge amounts of code cleaning-up and bugfixing! Modernised vast amounts of old code to follow C++ best practice guidelines recommen…

VstHostアプリの作成(5) MIDI Sequence部分を考える

Midi Sequence部分を考えているところ。 JOSTというJUCEライブラリベースのVSTホストアプリの中に、MidiSequenceXXXというソースコードがあり、これがまさに私の作りたいものであるということで、中身を解析中。 MidiSequencePluginBase.h MidiSequencePlugi…

VstHostアプリの作成(4) Bug再現

起動時に音が割れるBUGはどうもバッファのクリアミスでもないようで、また再現してしまった。 とりあえずこれは置いておいてSequence部分を作ることにする。 作成するにあたり、良いサンプルを見つけた。 http://blog.assemblism.com/basic-drum-machine/ 早…

VstHostアプリの作成(3) Bug直ったかな?

起動時に音が割れるBUGはどうもバッファのクリアミスであったようだ。 次にMIDIファイルをVSTで再生してみることにする。 イメージは以下の通り。 これができるとMIDIデータで音を鳴らしながら演奏することができるようになる。 WAVプログラミング―C言語で学…

VstHostアプリの作成(2) まだまだ不安定

WASAPIデバイスをなんとかJUCEのAudioDevice化したのは良いのだが、いまいち不安定である。 起動時に発音が割れたりする。再度設定すると音がなったりするのだが。 おそらくWASAPIのお作法にバグが潜んでいるのだろう。 もう少しするとJUCE作者がWASAPIをサ…

VstHostアプリ作成(1)

あ、やっぱりJUCEでUI+WASAPIでVSTホストアプリを作ることにしよう。スキンをDirect2Dで頑張るとしよう。

WASAPI+Direc2Dでホストアプリを作ってみたい(2)

まずは手持ちの古いコードのうち、VSTホスト部分だけを切り出す。それが終わればSDKのサンプルを参考にWASAPIを使ってI/Oのラッパクラスを作りVSTホストコードとくっつけ、音がでるまで頑張ってみようと思う。UI作りはその後になるだろう。 といってもかなり…

WASAPI+Direc2Dでホストアプリを作ってみたい

JUCEでUI+WASAPIでVSTホストアプリを作ろうと思っていたんだけれど、やっぱりやめてDirect2D+WinAPIでUI+Windows Core Audio+つなぎはboostでVSTホストアプリを作ってみようかなと思う。