約 6,209,666 件
https://w.atwiki.jp/dragonkiller/pages/158.html
【DAW】ReWire 公開日:2009年2月3日 更新日:2018年10月29日 概要 ReWireについての情報。対応ソフトと音源。 DAWなどは★関連記事【Computer Music】コンピューターミュージックの歴史参照。 目次 【DAW】ReWire/概要/目次/ページの登録タグReWireについて/公式サイト/特徴/バージョン/非公式ツール 歴史/1990/2000/2010 対応するDAW/Ableton/AH-Software/Apple/Cakewalk(Roland)/Cockos/Digidesign/Imageline/Tracktion/Magix/Mark Of The Unicorn/MUTOOLS/Muzys/Opcode Systems Inc./Propellerhead Software/Presonus/Steinberg(YAMAHA)/Synapse Audio Software 対応する音源 Cycling '74/Tascam 対応する歌声合成ソフト/CRYPTON FUTURE MEDIA, INC/INTERNET .Co.,Ltd./YAMAHA/ZERO-G 検索/ニュース ページの登録タグ Cubase DAW Propellerhead RB-338 ReBirth Reason 免責事項 商品の仕様・内容・デザイン・付属品・品番・価格等は予告なく変更になる場合があります。 掲載されている内容が最新とは限りません。 掲載されている内容に不備がある場合があります。 掲載されている内容を保証するものではありません。 ReWireについて 公式サイト ReWireとは? http //www.propellerheads.jp/technologies/rewire/ReWire.html What is ReWire? http //www.propellerheads.se/products/reason/index.cfm?fuseaction=get_article article=rewire 特徴 2つのコンピュータアプリケーション(CubaseVSTとReBirth RB-338)間で、オーディオデータをリアルタイムに送受信するためのシステムとして開発された。 多くの商用コンピュータアプリケーションにライセンスを発行しているので組み合わせは自由である。ただし、バグや相性があるので動作するとは限らない。 バージョン ReWire 1 ReWire 2 登場 1998年 2001年 再生、停止、巻戻しなど同期機能 有 有 オーディオチャネル 最高64 最高256 MIDIチャネル 無 最高4080 問合せ機能 無 有 非公式ツール V3Sync ReWire Synchronizer https //blogs.yahoo.co.jp/alipapa_p/63025279.html ReWire 64-32 Bridge https //blogs.yahoo.co.jp/alipapa_p/62911864.html 歴史 1990 1997Propellerheadが「ReBirth RB-338」発売。 Propellerheadが「ReBirth RB-338 1.5」アップデート。 1998Propellerheadが「ReBirth RB-338 2.0」発売。 Propellerheadが「ReWire」を発表。Steinberg社CubaseVSTとリンクさせる技術として開発。 Windows用「Cubase VST 3.6」がReWireに対応。★関連記事【DAW】Cubaseシリーズ 2000 2000Propellerheadが「Reason」発売。★関連記事【DAW】Propellerhead Reason 2001Propellerheadが「ReWire 2」を発表。 Steinberg「Nuendo 1.5」がReWire 2に対応。 2002Propellerheadが「Reason 2」発売。OSX対応。 2010 2011Propellerheadが「Reason 6」発売。ソフトとReWireが64bit対応。 対応するDAW Ableton http //www.ableton.com/ ableton / LiveとReWireする http //www.h-resolution.com/ableton/ReWire.html ■Live ReWire 2: ■Live Lite(OEM) ReWire 2: ★関連記事【DAW】Ableton Live AH-Software http //www.ah-soft.com/index.html ■Music Maker(MAGIX社製) ReWire ?:2.0以上 動作:Host Apple http //www.apple.com/jp/ ■Logic Pro / Logic Express ReWire 1: ReWire 2:6.0以上 ■GarageBand ReWire 2:1.0.1以上 ★関連記事【DAW】Logicシリーズ Cakewalk(Roland) http //www.cakewalk.jp/ ■Sonar ReWire 1:1.0以上 ReWire 2:2.0以上 ■Sonar Studio ReWire 2:2004以上 ■Project 5 ReWire 1:1.0以上 ReWire 2:2.0以上 ■Music Creator ReWire 2: ★関連記事【DAW】Cakewalk SONARシリーズ Cockos http //www.reaper.fm/ ■REAPER ReWire 2: ★関連記事【DAW】REAPER Digidesign ■ProTools http //www.digidesign.com/ ReWire 2:7.4以上 ★関連記事[[【DAW】Pro Toolsシリーズ] Imageline ■FL Studio http //flstudio.image-line.com/ ReWire 2:4.5以上 ★関連記事【DAW】FL Studio Tracktion http //www.mackie.com/jp/index.html ■Tracktion ReWire 2:2.0以上 ★関連記事【DAW】Tracktion Magix ■samplitude http //www.samplitude.com/ ReWire 2: ■Music Maker ReWire 2: ■ACID Pro ReWire 2:5.0以上 ★関連記事【DAW】ACID Pro Mark Of The Unicorn http //www.motu.com/ ■Digital Performer ReWire 1:2.7以上 ReWire 2:4.0以上 ★関連記事【DAW】Performerシリーズ MUTOOLS http //www.mutools.com/ ■MU.LAB ReWire 2:2.5以上 Muzys http //www.muzys.com/index.html *閉鎖 ■Muzys *開発終了 ReWire 2: Opcode Systems Inc. http //www.opcode.com/ *閉鎖 ■Vision DSP / Studio Vision *開発終了 ReWire 1:4.5以上 ★関連記事【DAW】Visionシリーズ Propellerhead Software http //www.propellerheads.se/ ■ReBirth RB-338 *開発終了 ReWire 1:2.0以上 ■Reason ReWire 1: ReWire 2: ■Reason Adapted ReWire 2: ★関連記事【DAW】Propellerhead Reason Presonus ■Studio One ReWire 2: ★関連記事DAW】Studio One?未作成ページ? Steinberg(YAMAHA) http //japan.steinberg.net/ ■Cubase ReWire 1:VST 4以上 ReWire 2:SE/SL/SX以上 ■Nuendo ReWire 1: ReWire 2:1.5以上 ★関連記事【DAW】Cubaseシリーズ Synapse Audio Software http //www.synapse-audio.com/ ■Orion ReWire 2: 対応する音源 Cycling 74 ■Max/MSP Tascam http //www.tascam.jp/products/gs3/index.html ■GigaStudio 3 ReWire ?:3.0から 対応する歌声合成ソフト ★関連記事【Computer Music】歌声合成ソフトウェア CRYPTON FUTURE MEDIA, INC クリプトン http //www.crypton.co.jp/mp/pages/prod/vocaloid/ VOCALOID製品対応ホスト - ReWire起動 http //www.crypton.co.jp/mp/pages/support/vocaloid/vocaloid.jsp ■VOCALOID2 キャラクターボーカルシリーズ01 初音ミク ReWire 2: ■VOCALOID2 キャラクターボーカルシリーズ02 鏡音リン・レン ReWire 2: ■VOCALOID2 キャラクターボーカルシリーズ03 巡音ルカ ReWire 2: INTERNET .Co.,Ltd. インターネット http //www.ssw.co.jp/products/vocal/gackpoid/ ■VOCALOID2 がくっぽいど ReWire 2: YAMAHA http //www.vocaloid.com/jp/index.html ■VOCALOID ZERO-G http //www.zero-g.co.uk/ ■PRIMA ReWire 2: 動作:Slave 検索 ニュース ■ニュース1「ReWire」 gnewプラグインエラー「ReWire」は見つからないか、接続エラーです。 ■ニュース2「DAW」 12トラックレコーディングミキサー『Model 12』に新機能 DAWコントロール機能の対応ソフト追加やヘッドホンソースのモニター位置の切り替えを可能にしたファームウェアを無償公開 - PR TIMES ステラが、Wilson Audio「SASHA DAW」「SABRINA X」「TUNE TOT」について、2022年1月17日受注分より価格を改訂。原材料価格、物流コストなどの高騰を受けてやむなく - Stereo Sound ONLINE 小室哲哉も愛用したローランド『JD-800』が復刻 90年代の音色を宿した『JD-08』の魅力とは(リアルサウンド) - Yahoo!ニュース - Yahoo!ニュース Softube、ギター/ベース用スピーカー・プラグイン「Celestion Speaker Shaper」、レミー・キルミスターの「Marshall Murder One Lemmy Signature」(BARKS) - Yahoo!ニュース - Yahoo!ニュース 松武秀樹、土橋安騎夫、東京電子倶楽部らが参加、<シンセフェスタ2021>が2021年12月11日銀座PLUSTOKYOにて開催(BARKS) - Yahoo!ニュース - Yahoo!ニュース Logic ProのDolby Atmos対応は「空間オーディオ民主化」への第一歩 3次元空間でのランダムトレモロを体験してみないか?(ITmedia NEWS) - Yahoo!ニュース - Yahoo!ニュース HOTONE、BluetoothとUSB接続に対応したコンパクトで堅牢なMIDIコントローラー「AMPERO CONTROL」(BARKS) - Yahoo!ニュース - Yahoo!ニュース Vaundy、Kroi、Lucky Kilimanjaro……独自の進化と発展を遂げる国産ダンスミュージックの今(リアルサウンド) - Yahoo!ニュース - Yahoo!ニュース 星野源、楽曲作りへの変化を告白「楽しくてしょうがないっていう感じです」<初耳学>(WEBザテレビジョン) - Yahoo!ニュース - Yahoo!ニュース ジャーニー・ギターズ、マルチエフェクトサウンドが楽しめるヘッドホンアンプ登場(BARKS) - Yahoo!ニュース - Yahoo!ニュース 配信者&演奏者のための便利オーディオインターフェース「iRig Stream Solo / Pro」(ギズモード・ジャパン) - Yahoo!ニュース - Yahoo!ニュース ローランドから無料で使えるMTRアプリが登場。スケッチ感覚で音楽作ってきましょ(ギズモード・ジャパン) - Yahoo!ニュース - Yahoo!ニュース 世界のデジタルオーディオワークステーション(DAW)市場ーコンポーネント別(ソフトウェアおよびサービス)、ソフトウェア展開別、OS互換性別、エンドユーザー別および地域別ー予測2022ー2030年 - PR TIMES Universal Audio、クラシックトーンを追求した低価格オーディオインターフェイス「Volt」シリーズ(BARKS) - Yahoo!ニュース - Yahoo!ニュース Arturia、シンプルなデザインに機能充実のオーディオインターフェースArturia MiniFuse発売(BARKS) - Yahoo!ニュース - Yahoo!ニュース Akai Professional、音楽制作システム「MPC Studio」の最新モデル - マイナビニュース インターネット、PC用サウンドエフェクトソフト「PC Audio FX」が25%オフになるキャンペーン(PHILE WEB) - Yahoo!ニュース - Yahoo!ニュース 米PreSonus、DAWソフト「Studio One」の最新版 - Apple M1にネイティブ対応 - マイナビニュース 谷山浩子、超レア音源を含めたプライベート・ホーム・レコーディング・アルバム『浩子の宅録』発売(CDジャーナル) - Yahoo!ニュース - Yahoo!ニュース グローバルデジタルオーディオワークステーション(DAW)市場規模調査ーコンポーネント別(ソフトウェアとサービス)、ソフトウェア展開別、OS互換性別、エンドユーザー別、地域別ー予測2022-2030年 - PR TIMES AIでメロディーを提案する作曲支援アプリ ソニーCSLが無料配信 音楽制作ソフトとも連携 - ITmedia カンタン操作でポッドキャスト制作、TASCAMから音声コンテンツ制作ワークステーション「Mixcast 4」登場(BARKS) - Yahoo!ニュース - Yahoo!ニュース ローランド、各種DAW対応のプラグインエフェクト「ZENOLOGY FX」を提供開始 - マイナビニュース USBオーディオの遅延がわかる無料ツール「RTL Utility」を試す - AV Watch M1チップ搭載の最新「iPad Pro」で音楽制作、必要な機材や編集ソフトは? - GIZMODO JAPAN 新iPad Proは超強力DAW環境!? DTM対応と音質を検証 - AV Watch ソニー「360 Reality Audio」の作り方。プラグイン299ドルで手軽に制作!? - AV Watch デジタルオーディオワークステーション(DAWs)市場は、2027年まで9.20%のCAGRで成長すると予想されています - PR TIMES 小岩井ことり楽曲がステムデータ配信!? DAWを使った音楽の楽しみ方 - AV Watch M1 Mac、まさかの敗北 Apple純正Logic ProでIntel Macに勝てないとは - ITmedia DAWと人による奇跡的なアンサンブル 鳥居真道が徹底考察 | Rolling Stone Japan(ローリングストーン ジャパン) - http //rollingstonejapan.com/ 無償の本格DAWツール「Studio One Prime」v5.1が公開 ~日本語マニュアルを追加 - 窓の杜 iCON Globalのコンパクトなモーターフェーダー搭載DAWコントロールサーフェスがワイヤレス化、「Platform Nano Air」リリース - BARKS パソコン音楽クラブが伊藤万理華にビートメイクを伝授? TR-707&TB-303で人生初のDTM体験レポート - リアルサウンド 無償でトラック数無制限の本格DAWツール「Studio One 5 Prime」が公開 - 窓の杜 【iOS・Android】デモ制作にオススメの無料DTMアプリ4選 - リアルサウンド 高性能にASIO化できる? 万能仮想ミキサー「VoiceMeeter Banana」のASIO出力を検証 - AV Watch トラック数・時間制限無しの本格DAWソフト無料版「Studio One 5 Prime」 - AV Watch DAWソフト「Studio One 5 Prime」の無償提供開始。トラック数や時間制限なし - PHILE WEB - PHILE WEB MI7、トラック数や時間制限がないフリーDAWソフト「Studio One 5 Prime」 - PC Watch Dos Monos、リリース前の新曲DAW画面を屋外広告として公開(コメントあり) - ナタリー iPad版から8年。DAWソフト「Cubasis」がAndroidにも - PC Watch 大きく進化した「Logic Pro X」 GarageBandのLive Loopsと何が違うのか? - ITmedia アップル DAWアプリ「Logic Pro X 10.5」新機能を解説 (1/3) - ASCII.jp DTM シーケンサー型DAW『ACID』最新版発売『バージョン 10』発売 - uzurea.net 自宅待機に退屈している今こそ、無料アプリで音楽制作にチャレンジしてみよう - ナタリー SERATOがDAWソフト「SERATO STUDIO - THE ULTIMATE BEAT MAKER」無料版を配布開始! - iFLYER 1台で12トラックMTR、USBオーディオ/MIDIインターフェース、DAWコントロールに対応したサウンドクリエイターのためのデスクトップツール『Model 12』を3月27日より新発売 - PR TIMES 「Macの音は問題なくビットパーフェクト出力」は本当なのか? Mojave/Catalinaでテスト - AV Watch 【ライブレポート】声優・小岩井ことりとBSC・RYUのメタルユニット、DAWが初ライブで続編制作決定を発表(写真8枚) - ナタリー iiyamaPC「SENSE∞(センスインフィニティ)」より、DAW(音楽制作)向けBTOパソコンを発売! - アットプレス(プレスリリース) DAWソフト「Studio One」誕生10周年記念セール開催。最大33%OFFで手に入れるチャンス! - Stereo Sound ONLINE DUAL ALTER WORLD「ALTER EGO」インタビュー|声優とメタルギタリストがバンド結成!DTMを共通言語とする2人が世界に変革をもたらす - 音楽ナタリー 特集・インタビュー - 音楽ナタリー ローランド、DAWに再参入 米企業買収でiOS、AndroidからMac、PCまで対応するZenbeats投入 - ITmedia NEWS 声優小岩井ことりのメタルバンドDAWの1stアルバムはインドアメタル!? - PR TIMES 曲作りに重要な「レイテンシー」とは何なのか。小さければOK、じゃない? - AV Watch Skrillex が新曲の作り方が分かるビデオを公開!作曲ノウハウを学ぼう! - iFLYER 無料で使える本格動画編集ソフトDaVinci Resolve、実は強力なDAW機能も! - AV Watch 音が360度自由に動く、Cubase Pro 10の“VRミックス”が面白い - AV Watch 声優・小岩井ことりがメタルデビュー? DAWを駆使した異色バンドが始動【会見画像追加】 - ASCII.jp 無料で作れる“VRサウンド”。Reaper用プラグインで音の位置を自由に動かす - AV Watch Wilson Audioを代表する人気スピーカーの最新モデル「SASHA DAW」がインターナショナルオーディオショウでお披露目! 30年近い人気を持つシリーズの音をぜひ貴方の耳で - Stereo Sound ONLINE “DAW女”ד渋谷系”の新生、AmamiyaMaako 温故知新のスピリットをもつ表現世界 - リアルサウンド 無料の音楽制作DAWソフト「Studio One 4 Prime」。トラック数無制限 - AV Watch ギタリストなら使いたい ハンズフリーでDAWやMIDI機器をコントロールできるペダル型MIDIコントローラー「PACER」 - BARKS Aviciiも愛用していたDAWソフト「FL Studio」の最新バージョンがリリース。Mac OSにも対応 | クラベリア - clubberia PreSonus、内蔵サンプラーなどが強化されたDAW「Studio One 4」 - PC Watch ソースネクスト、64bitやVST3に対応したDAWソフト「ACID Pro 8」など - PC Watch 「対戦型DAW」と話題の音楽制作ソフト『KORG Gadget for Nintendo Switch』の課題、そして今後の期待 - IGN JAPAN ネット生放送の声を、ソフトだけで自由に変化。「Audio Input FX」でできること - AV Watch スマホとPCで曲作り&コラボが全て無料、Androidでも低遅延。「BandLab」でできること - AV Watch 音符が読めなくたって、音痴だって、音楽は作れる! そう、パソコンならね。 - PC Watch 音の遅延を抑えCPU負荷も軽い「Studio One 3.5」の機能強化とは? 待望のDDP入力も - AV Watch Raspberry Pi 3で簡単にDTMできる? DAW「Tracktion Waveform」で音を出す - AV Watch 小岩井ことりがDAWを始めた、いかにも声優らしい理由は? (1/4) - ASCII.jp 知識なしでも曲作りが楽しめる作曲支援ツールが魅力の新DAW「Waveform」登場 - BARKS iOS定番DAWソフト「KORG Gadget」がMac版で登場。今なら19800円で購入可能 | クラベリア - clubberia 1画面ですべての操作が可能なDAW「Cubase Pro 9」12月7日発売 - ASCII.jp 50を超えるプロ向けツールを搭載した最新DAWソフト「Studio One 3.2」発表 - マイナビニュース 【藤本健のDigital Audio Laboratory】 第661回 コルグ「DS-DAC-10R」と「AudioGate 4.0」でDSD録音。他社DAWソフトでも動く? - AV Watch 高音質DAWの最高峰がオーディオ参入。マージングが投入する「NADAC」の全貌を開発責任者に聞く (1/4) - PHILE WEB - Phile-web 【インタビュー】ボカロPのn-bunaが語るメジャー1stアルバム『花と水飴、最終電車』とDAWソフト「SONAR」の魅力 Vol.1 - BARKS フリーのDAW「Studio One Free」の後継「Studio One 3 Prime」の日本語版が公開 - 窓の杜 ドスパラ、音楽制作用DAWソフトとVOCALOIDの動作確認済みPC 2モデル - mynavi.jp 【藤本健のDigital Audio Laboratory】 第634回 約1万円のDAWソフトは“音楽プレーヤー”として使える? - AV Watch 【メーカーさん、こんなPC作ってください!】 「Cubase 8」を使ってパソコン工房のDTM/DAW向けPCを実際に検証 ~上位向けデスクトップと入門向けノートの2機種 - PC Watch 【メーカーさん、こんなPC作ってください!】 DAWソフト「Cubase 8」が動く環境を探る。ドラム音源「BFD3」にも挑戦 ~監修 オーディオライター藤本健氏、協力 パソコン工房 - PC Watch ヤマハ、DAWソフト付属で約1万円のSteinberg USBオーディオインターフェイス - AV Watch 「Singer Song Writer」の後継DAWソフト「ABILITY」を発売- インターネット - マイナビニュース 【藤本健のDigital Audio Laboratory】 第582回 「UbuntuでDTM」の人気再び? USBオーディオやDAWソフトとの連携を試す - AV Watch 【藤本健のDigital Audio Laboratory】 第562回 DAWの“タイムストレッチ”で音質はどう変わる? - AV Watch アップル、iPadからコントロールできるDAW「Logic Pro X」 - AV Watch 基礎の基礎から学ぶ、パソコンを使った音づくり ~SONARで音楽制作始めよう!~(1) パソコンを用いた音作りに欠かせないDAWソフトってなに?? - マイナビニュース 【藤本健のDigital Audio Laboratory】 第481回 軽快/高機能なDAW「Studio One 2」を試す - AV Watch 【藤本健のDigital Audio Laboratory】 第476回 エントリーDAWソフトの定番「MUSIC CREATOR 6」 - AV Watch 【藤本健のDigital Audio Laboratory】 第388回 ギター系ツールを強化したAppleのDAW「Logic Pro 9」 - AV Watch 独MIXOSAURUS DAW DRUMS、122GBのリアルなドラム音源をハードディスクに収めて発売 - BARKS 【藤本健のDigital Audio Laboratory】 第373回 RolandのDAW「SONAR V-STUDIO 100」を試す【後編】 - AV Watch 【藤本健のDigital Audio Laboratory】 第372回 RolandのDAW「SONAR V-STUDIO 100」を試す【前編】 - AV Watch ローランド、簡易DAWシステム「SONAR V-STUDIO 100」 - AV Watch
https://w.atwiki.jp/vstdev/pages/15.html
VST plug-in ver 3.1.0での変更点の詳細はこちら VST 2.x系 基本的なエフェクト処理ならこちらで十分 1イン・1アウト (mono/stereo) 対応DAW多し VST 3.x系 サイドチェイン入力に対応 2.xからプログラミングモデルが激変 対応DAWは少なめ
https://w.atwiki.jp/hmiku/pages/1611.html
ReWireReWire【登録タグ AETA NexTone管理曲 R VOCALOID 初音ミク 曲】 作詞:AETA(イータ) 作曲:AETA(イータ) 編曲:AETA(イータ) 唄:初音ミク 曲紹介 恋とはいつも不安なものなのです AETA氏 のボカロデビュー作。 イラストは 網野コハク氏 が手掛ける。 歌詞 この手をはなさないで 携帯の音 君から届いたメール いつもの様におどけた写真だね 「離れていても平気」と強がり見せた 私の気持ち 早く気づいてよね 切なくて 切なくて そばにいたいのに 君と歩くときは 離れてしまう 気がついて 気がついて 心の奥は あなたとつながりたい 「待ち合わせ場所 変えたくないのはなぜ?」と 不機嫌な君 はぐらかすの 私 ちょっぴりだけど何か違うだけなのに 壊れるかもと 臆病になるの 切なくて 切なくて 胸が痛いのに 君と出会うときは 忘れてしまう 気がついて 気がついて 瞳の奥は あなたしか見えないよ 切なくて 切なくて そばにいたいのに 君と歩くときは 離れてしまう 気がついて 気がついて 心の奥は あなたとつなぐよ この手をはなさないで コメント 名前 コメント
https://w.atwiki.jp/vst_prog/pages/81.html
VST Tips(準備中) VST GUIの作成 VST GUIのウィンドウが開かれるだけのサンプルです。 プロジェクトの作成時は以下のソースファイルもプロジェクトに加える必要がある。 (プロジェクトへの追加方法は「VC++ プロジェクトの準備 No.2」参照) vstcontrols.cpp vstgui.cpp aeffguieditor.cpp (vstsdk2.4\vstgui.sf\vstgui 配下に保存されている。) つまみを追加したサンプルはここ つまみをスライダーに変更したサンプルはここ サンプルコード全体 #define _CRT_SECURE_NO_DEPRECATE 1 #include stdio.h #include stdlib.h #include string.h #include math.h #include windows.h #include "audioeffectx.h"#include "vstcontrols.h" // ============================================================================================// 設計情報の記入// ============================================================================================#define MY_VST_VENDOR "test vendor" //作者(ベンダー)名#define MY_VST_VERSION 1 //このVSTバージョン#define MY_VST_PRODUCT_NAME "Sample VST GUI" //このVSTの製品名#define MY_VST_NAME "GUI" //このVSTの名前 #define MY_VST_INPUT_NUM 2 //入力数。モノラル入力=1、ステレオ入力=2#define MY_VST_OUTPUT_NUM 2 //出力数。モノラル出力=1、ステレオ出力=2 #define MY_VST_UNIQUE_ID SMPL //ユニークID //公開する場合は以下URLで発行されたユニークIDを入力する。 //http //ygrabit.steinberg.de/~ygrabit/public_html/index.html #define MY_VST_PRESET_NUM 1 //プリセットプログラムの数#define MY_VST_PARAMETER_NUM 1 //パラメータの数 float midinum;// ============================================================================================// VST GUIクラス// ============================================================================================class VstGui public AEffGUIEditor, CControlListener{public VstGui (void* effect);virtual ~VstGui (); // GUIのWindowを開いたときと閉じたときに処理を行う関数virtual bool open (void *ptr);virtual void close (); // ボタンやつまみ等が動かされたときに処理を行う関数virtual void valueChanged (CDrawContext *pContext, CControl *pControl); protected }; VstGui VstGui (void* effect) AEffGUIEditor ((AudioEffect*)effect){// 継承元のにあるrect変数を初期化。// このrect変数にGUIのWindowsサイズを設定する。// (設定を行わないとWindowが開けない)rect.left = 0;rect.top = 0;rect.right = 512;rect.bottom = 256;} VstGui ~VstGui (){} void VstGui valueChanged (CDrawContext *pContext, CControl *pControl){} bool VstGui open (void *ptr){// まずは継承元の関数を呼び出す(必須)AEffGUIEditor open (ptr); // 次にフレーム(CFrame)を作成する。// ボタンやつまみ等はこのフレームの上に配置する形になる// ここではWindowと同じサイズのフレームを作成しているCRect size (rect.left, rect.top, rect.right, rect.bottom); CFrame* cframe = new CFrame (size, ptr, this);// 作成したフレームは継承元にあるframe変数に値を保存する必要がある。this- frame = cframe; // 処理に問題がなければtrueを返すreturn true;} void VstGui close (){// frameをdeleteすることを忘れないようにするif (frame){delete frame;}frame = 0;} // ============================================================================================// VSTの基本となるクラス// ============================================================================================class MyVSTGUI public AudioEffectX{public MyVSTGUI (audioMasterCallback audioMaster);~MyVSTGUI (); virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames);}; // ============================================================================================// このVSTのを生成するための関数// ============================================================================================AudioEffect* createEffectInstance (audioMasterCallback audioMaster){//newでこのVSTを生成したポインタを返すreturn new MyVSTGUI (audioMaster);} // ============================================================================================// コンストラクタ、デストラクタ(VSTの初期化、終了処理を記述)// ============================================================================================MyVSTGUI MyVSTGUI (audioMasterCallback audioMaster) AudioEffectX (audioMaster, MY_VST_PRESET_NUM, MY_VST_PARAMETER_NUM){//VSTの初期化を行う。 //以下の関数を呼び出して入力数、出力数等の情報を設定する。//必ず呼び出さなければならない。setNumInputs (MY_VST_INPUT_NUM); //入力数の設定setNumOutputs (MY_VST_OUTPUT_NUM); //出力数の設定setUniqueID (MY_VST_UNIQUE_ID); //ユニークIDの設定 isSynth (false); //このVSTがSynthかどうかのフラグを設定。 //Synthの場合…true、Effectorの場合…false canProcessReplacing (); //このVSTが音声処理可能かどうかのフラグを設定。 //音声処理を行わないVSTはないので必ずこの関数を呼び出す。 // GUIを設定するeditor = new VstGui(this); //このVSTのパラメータを初期化する。} MyVSTGUI ~MyVSTGUI (){//VSTの終了処理をする。//このVSTでは特に実行する処理はなし。 // GUIはdeleteしなくていいっぽい} // ============================================================================================// 音声信号を処理するメンバー関数// ============================================================================================void MyVSTGUI processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames){float *inL = inputs[0]; //入力 左用float *inR = inputs[1]; //入力 右用float *outL = outputs[0]; //出力 左用float *outR = outputs[1]; //出力 右用 for (int i = 0; i sampleFrames ; i++){// 入力をそのまま出力へoutL[i] = inL[i];outR[i] = inR[i];}} VST Tipsトップページへ(準備中)
https://w.atwiki.jp/vst_prog/pages/82.html
VST Tips(準備中) VST GUIの作成 VST GUIのウィンドウが開かれるだけのサンプルにつまみを2つ追加したもの。 追加内容としては以下のとおり。 つまみクラス(Cknobクラス)へのポインターをGUIクラスの変数として定義 GUIクラスにsetParameter()関数を追加 GUIクラスのopen()関数につまみを作成するコードの追加 GUIクラスのvalueChanged()関数に操作されたつまみを特定しsetParameter()関数へ引き渡す処理の追加 GUIクラスのsetParameter()関数につまみの更新処理を追加 リソースファイルを追加する必要がある。リソースファイルの追加方法はCPPファイルを追加する方法と同じ。 なお今回つまみ用いた画像と作成したVSTは以下のとおり。(DLLファイルを利用するときはウィルスチェックをかけてください) ダウンロード サンプルコード全体 【resource.rc】 #include windows.h #include commctrl.h #include richedit.h #include "resource.h" BITMAP_KNOB_BACK BITMAP ".\\knob_back.bmp"BITMAP_KNOB_HANDLE BITMAP ".\\knob_handle.bmp" 【resource.h】 #define BITMAP_KNOB_BACK 100#define BITMAP_KNOB_HANDLE 101 【MyGuiVst2.cpp】 #define _CRT_SECURE_NO_DEPRECATE 1 #include stdio.h #include stdlib.h #include string.h #include math.h #include windows.h #include "resource.h"#include "audioeffectx.h"#include "vstcontrols.h" // ============================================================================================// 設計情報の記入// ============================================================================================#define MY_VST_VENDOR "test vendor" //作者(ベンダー)名#define MY_VST_VERSION 1 //このVSTバージョン#define MY_VST_PRODUCT_NAME "Sample VST GUI" //このVSTの製品名#define MY_VST_NAME "GUI" //このVSTの名前 #define MY_VST_INPUT_NUM 2 //入力数。モノラル入力=1、ステレオ入力=2#define MY_VST_OUTPUT_NUM 2 //出力数。モノラル出力=1、ステレオ出力=2 #define MY_VST_UNIQUE_ID SMPL //ユニークID //公開する場合は以下URLで発行されたユニークIDを入力する。 //http //ygrabit.steinberg.de/~ygrabit/public_html/index.html #define MY_VST_PRESET_NUM 1 //プリセットプログラムの数#define MY_VST_PARAMETER_NUM 2 //パラメータの数 #define MYVST_VOLUME_L 0#define MYVST_VOLUME_R 1// ============================================================================================// VST GUIクラス// ============================================================================================class VstGui2 public AEffGUIEditor, CControlListener{public VstGui2 (void* effect);virtual ~VstGui2 (); // GUIのWindowを開いたときと閉じたときに処理を行う関数virtual bool open (void *ptr);virtual void close (); // ボタンやつまみ等が動かされたときに処理を行う関数virtual void valueChanged (CDrawContext *pContext, CControl *pControl);virtual void setParameter (VstInt32 index, float value); protected // ボリュームを操作するつまみCKnob* knobVolumeL;CKnob* knobVolumeR;}; VstGui2 VstGui2 (void* effect) AEffGUIEditor ((AudioEffect*)effect){// 継承元のにあるrect変数を初期化。// このrect変数にGUIのWindowsサイズを設定する。// (設定を行わないとWindowが開けない)rect.left = 0;rect.top = 0;rect.right = 512;rect.bottom = 256; // VstGui2クラス固有の初期化を行うknobVolumeL = 0;knobVolumeR = 0;} VstGui2 ~VstGui2 (){} void VstGui2 valueChanged (CDrawContext *pContext, CControl *pControl){// どのパラメーターが操作されたかを取得する。VstInt32 index = pControl- getTag(); // パラメーターの値を取得する。float value = pControl- getValue (); // 取得した値をパラメーターに反映させるthis- setParameter(index, value);} void VstGui2 setParameter (VstInt32 index, float value){switch (index){case MYVST_VOLUME_L // つまみに値を設定し、画面を更新する(描画させる。)knobVolumeL- setValue (value); // MyVstGui2(AudioEffectXを継承して作ったクラス)に// 操作されたパラメーターを通知して更新させる// (setParameterAutomatedは内部でsetParameterを呼び出す)effect- setParameterAutomated(index, value);break; case MYVST_VOLUME_R // MYVST_VOLUME_Lの処理とほぼ同様knobVolumeR- setValue (value);effect- setParameterAutomated(index, value);break; default break;}} bool VstGui2 open (void *ptr){// まずは継承元の関数を呼び出す(必須)AEffGUIEditor open (ptr); // 次にフレーム(CFrame)を作成する。// ボタンやつまみ等はこのフレームの上に配置する形になる// ここではWindowと同じサイズのフレームを作成しているCRect size (rect.left, rect.top, rect.right, rect.bottom); CFrame* cframe = new CFrame (size, ptr, this);// 作成したフレームは継承元にあるframe変数に値を保存する必要がある。this- frame = cframe; // -----------------------------------------------------------------// つまみを作成する。// つまみ用の画像をリソースから読み込みCBitmap *KnobBack = new CBitmap (BITMAP_KNOB_BACK);CBitmap *KnobHandle = new CBitmap (BITMAP_KNOB_HANDLE); // つまみの大きさを設定 CRect knobsize (0, 0, KnobBack- getWidth (), KnobBack- getHeight ()); // つまみの位置を設定knobsize.offset (16, 16); // つまみ画像をどこから表示するかの設定。基本的に0, 0でよいはず。CPoint point (0, 0); knobVolumeL = new CKnob (knobsize, this, MYVST_VOLUME_L, KnobBack, KnobHandle, point);// つまみの中心とハンドルまでの長さknobVolumeL- setInsetValue (7);// 現在のボリュームをMyVstGui2(AudioEffectXを継承して作ったクラス)から取得するknobVolumeL- setValue(effect- getParameter(MYVST_VOLUME_L));// つまみをframeに追加するframe- addView (knobVolumeL); // knobVolumeLとほぼ同様knobsize (0, 0, KnobBack- getWidth (), KnobBack- getHeight ());knobsize.offset (64, 16);knobVolumeR = new CKnob (knobsize, this, MYVST_VOLUME_R, KnobBack, KnobHandle, point);knobVolumeR- setInsetValue (7);knobVolumeR- setValue(effect- getParameter(MYVST_VOLUME_R));frame- addView (knobVolumeR); // つまみ用の画像を解放するKnobBack- forget();KnobHandle- forget(); // 処理に問題がなければtrueを返すreturn true;} void VstGui2 close (){// frameをdeleteすることを忘れないようにするif (frame){delete frame;}frame = 0;} // ============================================================================================// VSTの基本となるクラス// ============================================================================================class MyVstGui2 public AudioEffectX{public MyVstGui2 (audioMasterCallback audioMaster);~MyVstGui2 (); // エフェクターのパラメータに関するメンバー関数virtual void setParameter (VstInt32 index, float value); // 音声信号を処理するメンバー関数virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames); protected float volumeL;float volumeR;}; // ============================================================================================// このVSTのを生成するための関数// ============================================================================================AudioEffect* createEffectInstance (audioMasterCallback audioMaster){//newでこのVSTを生成したポインタを返すreturn new MyVstGui2 (audioMaster);} // ============================================================================================// コンストラクタ、デストラクタ(VSTの初期化、終了処理を記述)// ============================================================================================MyVstGui2 MyVstGui2 (audioMasterCallback audioMaster) AudioEffectX (audioMaster, MY_VST_PRESET_NUM, MY_VST_PARAMETER_NUM){//VSTの初期化を行う。 //以下の関数を呼び出して入力数、出力数等の情報を設定する。//必ず呼び出さなければならない。setNumInputs (MY_VST_INPUT_NUM); //入力数の設定setNumOutputs (MY_VST_OUTPUT_NUM); //出力数の設定setUniqueID (MY_VST_UNIQUE_ID); //ユニークIDの設定 isSynth (false); //このVSTがSynthかどうかのフラグを設定。 //Synthの場合…true、Effectorの場合…false canProcessReplacing (); //このVSTが音声処理可能かどうかのフラグを設定。 //音声処理を行わないVSTはないので必ずこの関数を呼び出す。 // GUIを設定するeditor = new VstGui2(this); //このVSTのパラメータを初期化する。volumeL = 0.0f;volumeR = 0.0f;} MyVstGui2 ~MyVstGui2 (){//VSTの終了処理をする。//このVSTでは特に実行する処理はなし。 // GUIはdeleteしなくていいっぽい} void MyVstGui2 setParameter (VstInt32 index, float value){switch (index){case MYVST_VOLUME_L volumeL = value;break; case MYVST_VOLUME_R volumeR = value;break; default break;}} // ============================================================================================// 音声信号を処理するメンバー関数// ============================================================================================void MyVstGui2 processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames){float *inL = inputs[0]; //入力 左用float *inR = inputs[1]; //入力 右用float *outL = outputs[0]; //出力 左用float *outR = outputs[1]; //出力 右用 for (int i = 0; i sampleFrames ; i++){// 入力をそのまま出力へoutL[i] = volumeL * inL[i];outR[i] = volumeR * inR[i];}} VST Tipsトップページへ(準備中)
https://w.atwiki.jp/vst_prog/pages/92.html
トップページ VST GUIの作成 VST GUIのウィンドウが開かれるだけのサンプルにテキストラベルを追加したもの。 追加内容としては以下のとおり。 テキストラベルクラスCTextLabelクラス)へのポインターをGUIクラスの変数として定義 GUIクラスのopen()関数にテキストラベルを作成するコードの追加 なお作成したVSTは以下のとおり。(DLLファイルを利用するときはウィルスチェックをかけてください) ダウンロード サンプルコード全体 【MyGuiVst2.cpp】 #define _CRT_SECURE_NO_DEPRECATE 1 #include stdio.h #include stdlib.h #include string.h #include math.h #include windows.h #include "audioeffectx.h"#include "vstcontrols.h" // ============================================================================================// 設計情報の記入// ============================================================================================#define MY_VST_VENDOR "test vendor" //作者(ベンダー)名#define MY_VST_VERSION 1 //このVSTバージョン#define MY_VST_PRODUCT_NAME "Sample VST GUI" //このVSTの製品名#define MY_VST_NAME "GUI" //このVSTの名前 #define MY_VST_INPUT_NUM 2 //入力数。モノラル入力=1、ステレオ入力=2#define MY_VST_OUTPUT_NUM 2 //出力数。モノラル出力=1、ステレオ出力=2 #define MY_VST_UNIQUE_ID SMPL //ユニークID //公開する場合は以下URLで発行されたユニークIDを入力する。 //http //ygrabit.steinberg.de/~ygrabit/public_html/index.html #define MY_VST_PRESET_NUM 1 //プリセットプログラムの数#define MY_VST_PARAMETER_NUM 2 //パラメータの数 #define MYVST_VOLUME_L 0#define MYVST_VOLUME_R 1// ============================================================================================// VST GUIクラス// ============================================================================================class VstGui4 public AEffGUIEditor, CControlListener{public VstGui4 (void* effect);virtual ~VstGui4 (); // GUIのWindowを開いたときと閉じたときに処理を行う関数virtual bool open (void *ptr);virtual void close (); // ボタンやつまみ等が動かされたときに処理を行う関数// 今回はテキストラベルのみのため、処理すべきことはないが、// valueChanged()関数は必ずオーバーライドしなければならない。virtual void valueChanged (CDrawContext *pContext, CControl *pControl) {}; protected // テキストラベルCTextLabel* textLabel;}; VstGui4 VstGui4 (void* effect) AEffGUIEditor ((AudioEffect*)effect){// 継承元のにあるrect変数を初期化。// このrect変数にGUIのWindowsサイズを設定する。// (設定を行わないとWindowが開けない)rect.left = 0;rect.top = 0;rect.right = 512;rect.bottom = 256;} VstGui4 ~VstGui4 (){} bool VstGui4 open (void *ptr){// まずは継承元の関数を呼び出す(必須)AEffGUIEditor open (ptr); // 次にフレーム(CFrame)を作成する。// ボタンやつまみ等はこのフレームの上に配置する形になる// ここではWindowと同じサイズのフレームを作成しているCRect size (rect.left, rect.top, rect.right, rect.bottom); CFrame* cframe = new CFrame (size, ptr, this);// 作成したフレームは継承元にあるframe変数に値を保存する必要がある。this- frame = cframe; // -----------------------------------------------------------------// テキストラベルの大きさを設定 CRect textsize (0, 0, 80, 25); // テキストラベルの位置を設定textsize.offset (16, 16); // テキストラベルを作成textLabel = new CTextLabel(textsize, "TextLabel", NULL, kLeft); // テキストラベルをframeに追加するframe- addView (textLabel); // 処理に問題がなければtrueを返すreturn true;} void VstGui4 close (){// frameをdeleteすることを忘れないようにするif (frame){delete frame;}frame = 0;} // ============================================================================================// VSTの基本となるクラス// ============================================================================================class MyVstGui4 public AudioEffectX{public MyVstGui4 (audioMasterCallback audioMaster);~MyVstGui4 (); // 音声信号を処理するメンバー関数virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames);}; // ============================================================================================// このVSTのを生成するための関数// ============================================================================================AudioEffect* createEffectInstance (audioMasterCallback audioMaster){//newでこのVSTを生成したポインタを返すreturn new MyVstGui4 (audioMaster);} // ============================================================================================// コンストラクタ、デストラクタ(VSTの初期化、終了処理を記述)// ============================================================================================MyVstGui4 MyVstGui4 (audioMasterCallback audioMaster) AudioEffectX (audioMaster, MY_VST_PRESET_NUM, MY_VST_PARAMETER_NUM){//VSTの初期化を行う。 //以下の関数を呼び出して入力数、出力数等の情報を設定する。//必ず呼び出さなければならない。setNumInputs (MY_VST_INPUT_NUM); //入力数の設定setNumOutputs (MY_VST_OUTPUT_NUM); //出力数の設定setUniqueID (MY_VST_UNIQUE_ID); //ユニークIDの設定 isSynth (false); //このVSTがSynthかどうかのフラグを設定。 //Synthの場合…true、Effectorの場合…false canProcessReplacing (); //このVSTが音声処理可能かどうかのフラグを設定。 //音声処理を行わないVSTはないので必ずこの関数を呼び出す。 // GUIを設定するeditor = new VstGui4(this); //このVSTのパラメータを初期化する。} MyVstGui4 ~MyVstGui4 (){//VSTの終了処理をする。//このVSTでは特に実行する処理はなし。 // GUIはdeleteしなくていいっぽい} // ============================================================================================// 音声信号を処理するメンバー関数// ============================================================================================void MyVstGui4 processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames){float *inL = inputs[0]; //入力 左用float *inR = inputs[1]; //入力 右用float *outL = outputs[0]; //出力 左用float *outR = outputs[1]; //出力 右用 for (int i = 0; i sampleFrames ; i++){// 入力をそのまま出力へoutL[i] = inL[i];outR[i] = inR[i];}} VST Tipsトップページへ(準備中)
https://w.atwiki.jp/vst_prog/pages/83.html
VST Tips(準備中) VST GUIの作成 つまみだけのVST GUIのつまみをスライダーに変更したもの スライダークラス(CSliderクラス)へのポインターをGUIクラスの変数として定義 GUIクラスのopen()関数にスライダーを作成するコードの追加 なお今回スライダー用の画像と作成したVSTは以下のとおり。(DLLファイルを利用するときはウィルスチェックをかけてください) ダウンロード サンプルコード全体 【resource.rc】 #include windows.h #include commctrl.h #include richedit.h #include "resource.h" BITMAP_SLIDER_BACK BITMAP ".\\slider_back.bmp"BITMAP_SLIDER_HANDLE BITMAP ".\\slider_handle.bmp" 【resource.h】 #define BITMAP_SLIDER_BACK 100#define BITMAP_SLIDER_HANDLE 101 【MyGuiVst2.cpp】 #define _CRT_SECURE_NO_DEPRECATE 1 #include stdio.h #include stdlib.h #include string.h #include math.h #include windows.h #include "resource.h"#include "audioeffectx.h"#include "vstcontrols.h" // ============================================================================================// 設計情報の記入// ============================================================================================#define MY_VST_VENDOR "test vendor" //作者(ベンダー)名#define MY_VST_VERSION 1 //このVSTバージョン#define MY_VST_PRODUCT_NAME "Sample VST GUI" //このVSTの製品名#define MY_VST_NAME "GUI" //このVSTの名前 #define MY_VST_INPUT_NUM 2 //入力数。モノラル入力=1、ステレオ入力=2#define MY_VST_OUTPUT_NUM 2 //出力数。モノラル出力=1、ステレオ出力=2 #define MY_VST_UNIQUE_ID SMPL //ユニークID //公開する場合は以下URLで発行されたユニークIDを入力する。 //http //ygrabit.steinberg.de/~ygrabit/public_html/index.html #define MY_VST_PRESET_NUM 1 //プリセットプログラムの数#define MY_VST_PARAMETER_NUM 2 //パラメータの数 #define MYVST_VOLUME_L 0#define MYVST_VOLUME_R 1// ============================================================================================// VST GUIクラス// ============================================================================================class VstGui3 public AEffGUIEditor, CControlListener{public VstGui3 (void* effect);virtual ~VstGui3 (); // GUIのWindowを開いたときと閉じたときに処理を行う関数virtual bool open (void *ptr);virtual void close (); // ボタンやつまみ等が動かされたときに処理を行う関数virtual void valueChanged (CDrawContext *pContext, CControl *pControl);virtual void setParameter (VstInt32 index, float value); protected // ボリュームを操作するスライダーCSlider* sliderVolumeL;CSlider* sliderVolumeR;}; VstGui3 VstGui3 (void* effect) AEffGUIEditor ((AudioEffect*)effect){// 継承元のにあるrect変数を初期化。// このrect変数にGUIのWindowsサイズを設定する。// (設定を行わないとWindowが開けない)rect.left = 0;rect.top = 0;rect.right = 512;rect.bottom = 256; // VstGui3クラス固有の初期化を行うsliderVolumeL = 0;sliderVolumeR = 0;} VstGui3 ~VstGui3 (){} void VstGui3 valueChanged (CDrawContext *pContext, CControl *pControl){// どのパラメーターが操作されたかを取得する。VstInt32 index = pControl- getTag(); // パラメーターの値を取得する。float value = pControl- getValue (); // 取得した値をパラメーターに反映させるthis- setParameter(index, value);} void VstGui3 setParameter (VstInt32 index, float value){switch (index){case MYVST_VOLUME_L // スライダーに値を設定し、画面を更新する(描画させる。)sliderVolumeL- setValue (value); // MyVstGui3(AudioEffectXを継承して作ったクラス)に// 操作されたパラメーターを通知して更新させる// (setParameterAutomatedは内部でsetParameterを呼び出す)effect- setParameterAutomated(index, value);break; case MYVST_VOLUME_R // MYVST_VOLUME_Lの処理とほぼ同様sliderVolumeR- setValue (value);effect- setParameterAutomated(index, value);break; default break;}} bool VstGui3 open (void *ptr){// まずは継承元の関数を呼び出す(必須)AEffGUIEditor open (ptr); // 次にフレーム(CFrame)を作成する。// ボタンやつまみ等はこのフレームの上に配置する形になる// ここではWindowと同じサイズのフレームを作成しているCRect size (rect.left, rect.top, rect.right, rect.bottom); CFrame* cframe = new CFrame (size, ptr, this);// 作成したフレームは継承元にあるframe変数に値を保存する必要がある。this- frame = cframe; // -----------------------------------------------------------------// スライダーを作成する。// スライダー用の画像をリソースから読み込みCBitmap *sliderBack = new CBitmap (BITMAP_SLIDER_BACK);CBitmap *sliderHandle = new CBitmap (BITMAP_SLIDER_HANDLE); // スライダーの大きさを設定 CRect slidersize (0, 0, sliderBack- getWidth (), sliderBack- getHeight ()); // スライダーの位置を設定slidersize.offset (16, 16); // スライダー画像をどこから表示するかの設定。基本的に0, 0でよいはず。CPoint point (0, 0); // スライダーのハンドルの下限位置と上限位置を計算int minpos = slidersize.top;int maxpos = slidersize.top + sliderBack- getHeight () - sliderHandle- getHeight (); // 縦方向(下限位置が0.0、上限位置が1.0)のスライダーを作成する。sliderVolumeL = new CSlider (slidersize, this, MYVST_VOLUME_L, minpos, maxpos, sliderHandle, sliderBack, point, kBottom | kVertical);// 現在のボリュームをMyVstGui3(AudioEffectXを継承して作ったクラス)から取得するsliderVolumeL- setValue(effect- getParameter(MYVST_VOLUME_L));// スライダーをframeに追加するframe- addView (sliderVolumeL); // sliderVolumeLとほぼ同様slidersize (0, 0, sliderBack- getWidth (), sliderBack- getHeight ());slidersize.offset (64, 16);minpos = slidersize.top;maxpos = slidersize.top + sliderBack- getHeight () - sliderHandle- getHeight ();sliderVolumeR = new CSlider (slidersize, this, MYVST_VOLUME_R, minpos, maxpos, sliderHandle, sliderBack, point, kBottom | kVertical);sliderVolumeR- setValue(effect- getParameter(MYVST_VOLUME_R));frame- addView (sliderVolumeR); // スライダー用の画像を解放するsliderBack- forget();sliderHandle- forget(); // 処理に問題がなければtrueを返すreturn true;} void VstGui3 close (){// frameをdeleteすることを忘れないようにするif (frame){delete frame;}frame = 0;} // ============================================================================================// VSTの基本となるクラス// ============================================================================================class MyVstGui3 public AudioEffectX{public MyVstGui3 (audioMasterCallback audioMaster);~MyVstGui3 (); // エフェクターのパラメータに関するメンバー関数virtual void setParameter (VstInt32 index, float value); // 音声信号を処理するメンバー関数virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames); protected float volumeL;float volumeR;}; // ============================================================================================// このVSTのを生成するための関数// ============================================================================================AudioEffect* createEffectInstance (audioMasterCallback audioMaster){//newでこのVSTを生成したポインタを返すreturn new MyVstGui3 (audioMaster);} // ============================================================================================// コンストラクタ、デストラクタ(VSTの初期化、終了処理を記述)// ============================================================================================MyVstGui3 MyVstGui3 (audioMasterCallback audioMaster) AudioEffectX (audioMaster, MY_VST_PRESET_NUM, MY_VST_PARAMETER_NUM){//VSTの初期化を行う。 //以下の関数を呼び出して入力数、出力数等の情報を設定する。//必ず呼び出さなければならない。setNumInputs (MY_VST_INPUT_NUM); //入力数の設定setNumOutputs (MY_VST_OUTPUT_NUM); //出力数の設定setUniqueID (MY_VST_UNIQUE_ID); //ユニークIDの設定 isSynth (false); //このVSTがSynthかどうかのフラグを設定。 //Synthの場合…true、Effectorの場合…false canProcessReplacing (); //このVSTが音声処理可能かどうかのフラグを設定。 //音声処理を行わないVSTはないので必ずこの関数を呼び出す。 // GUIを設定するeditor = new VstGui3(this); //このVSTのパラメータを初期化する。volumeL = 0.0f;volumeR = 0.0f;} MyVstGui3 ~MyVstGui3 (){//VSTの終了処理をする。//このVSTでは特に実行する処理はなし。 // GUIはdeleteしなくていいっぽい} void MyVstGui3 setParameter (VstInt32 index, float value){switch (index){case MYVST_VOLUME_L volumeL = value;break; case MYVST_VOLUME_R volumeR = value;break; default break;}} // ============================================================================================// 音声信号を処理するメンバー関数// ============================================================================================void MyVstGui3 processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames){float *inL = inputs[0]; //入力 左用float *inR = inputs[1]; //入力 右用float *outL = outputs[0]; //出力 左用float *outR = outputs[1]; //出力 右用 for (int i = 0; i sampleFrames ; i++){// 入力をそのまま出力へoutL[i] = volumeL * inL[i];outR[i] = volumeR * inR[i];}} VST Tipsトップページへ(準備中)
https://w.atwiki.jp/vst_prog/pages/93.html
トップページ VST GUIの作成 一定間隔でGUIの描画更新するサンプル。 テキストラベルを表示するサンプルをもとにしている。 テキストラベルを表示するサンプルからの追加内容としては以下のとおり。 idle()関数(100ミリ秒ごとに呼び出される関数)をオーバーライド idle()関数の中にカウンタを用意し、呼び出されることにカウントアップし描画する。 なお作成したVSTは以下のとおり。(DLLファイルを利用するときはウィルスチェックをかけてください) ダウンロード サンプルコード全体 【MyGuiVst5.cpp】 #define _CRT_SECURE_NO_DEPRECATE 1 #include stdio.h #include stdlib.h #include string.h #include math.h #include windows.h #include "audioeffectx.h"#include "vstcontrols.h" // ============================================================================================// 設計情報の記入// ============================================================================================#define MY_VST_VENDOR "test vendor" //作者(ベンダー)名#define MY_VST_VERSION 1 //このVSTバージョン#define MY_VST_PRODUCT_NAME "Sample VST GUI" //このVSTの製品名#define MY_VST_NAME "GUI" //このVSTの名前 #define MY_VST_INPUT_NUM 2 //入力数。モノラル入力=1、ステレオ入力=2#define MY_VST_OUTPUT_NUM 2 //出力数。モノラル出力=1、ステレオ出力=2 #define MY_VST_UNIQUE_ID SMPL //ユニークID //公開する場合は以下URLで発行されたユニークIDを入力する。 //http //ygrabit.steinberg.de/~ygrabit/public_html/index.html #define MY_VST_PRESET_NUM 1 //プリセットプログラムの数#define MY_VST_PARAMETER_NUM 2 //パラメータの数 #define MYVST_VOLUME_L 0#define MYVST_VOLUME_R 1// ============================================================================================// VST GUIクラス// ============================================================================================class VstGui5 public AEffGUIEditor, CControlListener{public VstGui5 (void* effect);virtual ~VstGui5 (); // GUIのWindowを開いたときと閉じたときに処理を行う関数virtual bool open (void *ptr);virtual void close (); // 他の処理がアイドル状態の際に呼び出される関数// GUI描画の更新等を行う。// おそらく100ミリ秒ごとに呼び出される。virtual void idle (); // ボタンやつまみ等が動かされたときに処理を行う関数// 今回はテキストラベルのみのため、処理すべきことはないが、// valueChanged()関数は必ずオーバーライドしなければならない。virtual void valueChanged (CDrawContext *pContext, CControl *pControl) {}; protected // テキストラベルCTextLabel* textLabel;}; VstGui5 VstGui5 (void* effect) AEffGUIEditor ((AudioEffect*)effect){// 継承元のにあるrect変数を初期化。// このrect変数にGUIのWindowsサイズを設定する。// (設定を行わないとWindowが開けない)rect.left = 0;rect.top = 0;rect.right = 512;rect.bottom = 256;} VstGui5 ~VstGui5 (){} bool VstGui5 open (void *ptr){// まずは継承元の関数を呼び出す(必須)AEffGUIEditor open (ptr); // 次にフレーム(CFrame)を作成する。// ボタンやつまみ等はこのフレームの上に配置する形になる// ここではWindowと同じサイズのフレームを作成しているCRect size (rect.left, rect.top, rect.right, rect.bottom); CFrame* cframe = new CFrame (size, ptr, this);// 作成したフレームは継承元にあるframe変数に値を保存する必要がある。this- frame = cframe; // -----------------------------------------------------------------// テキストラベルの大きさを設定 CRect textsize (0, 0, 80, 25); // テキストラベルの位置を設定textsize.offset (16, 16); // テキストラベルを作成textLabel = new CTextLabel(textsize, "TextLabel", NULL, kLeft); // テキストラベルをframeに追加するframe- addView (textLabel); // 処理に問題がなければtrueを返すreturn true;} void VstGui5 close (){// frameをdeleteすることを忘れないようにするif (frame){delete frame;}frame = 0;} void VstGui5 idle (){// まずは継承元の関数を呼び出す(必須)AEffGUIEditor idle (); // このVSTGUI固有の処理を記載する static int i = 0;char text[256]; sprintf_s(text, 256,"%d", i); //テキストラベルの文字を設定するtextLabel- setText (text); // テキストラベルの描画を更新するtextLabel- setDirty(); i++;} // ============================================================================================// VSTの基本となるクラス// ============================================================================================class MyVstGui5 public AudioEffectX{public MyVstGui5 (audioMasterCallback audioMaster);~MyVstGui5 (); // 音声信号を処理するメンバー関数virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames);}; // ============================================================================================// このVSTのを生成するための関数// ============================================================================================AudioEffect* createEffectInstance (audioMasterCallback audioMaster){//newでこのVSTを生成したポインタを返すreturn new MyVstGui5 (audioMaster);} // ============================================================================================// コンストラクタ、デストラクタ(VSTの初期化、終了処理を記述)// ============================================================================================MyVstGui5 MyVstGui5 (audioMasterCallback audioMaster) AudioEffectX (audioMaster, MY_VST_PRESET_NUM, MY_VST_PARAMETER_NUM){//VSTの初期化を行う。 //以下の関数を呼び出して入力数、出力数等の情報を設定する。//必ず呼び出さなければならない。setNumInputs (MY_VST_INPUT_NUM); //入力数の設定setNumOutputs (MY_VST_OUTPUT_NUM); //出力数の設定setUniqueID (MY_VST_UNIQUE_ID); //ユニークIDの設定 isSynth (false); //このVSTがSynthかどうかのフラグを設定。 //Synthの場合…true、Effectorの場合…false canProcessReplacing (); //このVSTが音声処理可能かどうかのフラグを設定。 //音声処理を行わないVSTはないので必ずこの関数を呼び出す。 // GUIを設定するeditor = new VstGui5(this); //このVSTのパラメータを初期化する。} MyVstGui5 ~MyVstGui5 (){//VSTの終了処理をする。//このVSTでは特に実行する処理はなし。 // GUIはdeleteしなくていいっぽい} // ============================================================================================// 音声信号を処理するメンバー関数// ============================================================================================void MyVstGui5 processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames){float *inL = inputs[0]; //入力 左用float *inR = inputs[1]; //入力 右用float *outL = outputs[0]; //出力 左用float *outR = outputs[1]; //出力 右用 for (int i = 0; i sampleFrames ; i++){// 入力をそのまま出力へoutL[i] = inL[i];outR[i] = inR[i];}} VST Tipsトップページへ(準備中)
https://w.atwiki.jp/vst_prog/pages/75.html
トップページ MIDIメッセージを処理するVSTについて ここでは最小構成のVSTで作成したVSTを基にMIDIメッセージにあわせて動作するVSTを作成する。 作成するVSTはロードされると常にノイズを発生させる(音量注意)。このノイズのボリュームをMIDI CC7でコントロールできるVSTを作成する。 最小構成のVSTのソースコード全体はここにある。 MIDIメッセージを処理するに当たって最小構成のVSTに以下の追加を行う。 受け取ったMIDIメッセージを確保するための変数の追加 ホストアプリケーション(Cubase,Sonar等)からのMIDIメッセージを上記変数に保存するprocessEvents()関数の追加 processReplacing()関数内に受け取ったMIDIメッセージを処理するコードの追加 なお、ここに記載している内容についてはMIDIメッセージについてある程度の知識があることを前提としている。 また、ここで作成するVSTサンプルのソースコード全体はここにある。 MIDIメッセージ用の構造体の定義 まず始めにMIDIメッセージ用の構造体を定義する。 MIDIメッセージ用の構造体ではMIDIメッセージ・チャンネル番号・MIDIデータ1・MIDIデータ2に加え、MIDIメッセージの処理タイミングを示すVstInt32型の変数を定義するとよい。 (MIDIメッセージの処理タイミングを示すVstInt32型の変数の詳細は後述。) 具体的には以下のようになる。 struct MidiMessage{VstInt32 deltaFrames; //MIDIメッセージを処理するタイミングunsigned char message; //MIDIメッセージ番号unsigned char channel; //MIDIチャンネルunsigned char data1; //MIDIデータ1unsigned char data2; //MIDIデータ2}; VSTのクラス定義 続いてVSTの基本となるクラスを作成する。 最小構成のVSTに、先ほど定義したMidiMessage型のバッファとホストアプリケーションからMIDIメッセージを受け取るためのprocessEvents()関数を追加で定義する。 具体的には以下のようになる。 #define MIDIMSG_MAXNUM 255 class MyMidiSampleVST public AudioEffectX{protected int midimsgnum; //受け取ったMIDIメッセージの数MidiMessage midimsgbuf[MIDIMSG_MAXNUM]; //受け取ったMIDIメッセージを保管するバッファ // ノイズのボリュームfloat volume;public MyMidiSampleVST (audioMasterCallback audioMaster); // 音声信号を処理するメンバー関数virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames); // MIDIメッセージをホストアプリケーションから受け取るためのメンバー関数VstInt32 processEvents (VstEvents* events);}; 次へ 同一カテゴリのTips 項目 No. 概要 MIDIメッセージ処理 No.1 MIDIメッセージ処理で最小構成の自作VSTに追加する変数・関数 No.2 VSTの初期化とMIDIメッセージ処理関連の変数の初期化 No.3 ホストアプリケーションからMIDIメッセージを受け取る方法 No.4 MIDIメッセージをprocessReplacing()関数中で処理する方法 No.5 MIDIメッセージ処理で作成したVSTのサンプルソースコード全体(暫定版)
https://w.atwiki.jp/vst_prog/pages/23.html
Steinberg VST Audio Plug-Ins SDK 2.4のインストール方法(2010年4月14日) Steinberg VST Audio Plug-Ins SDK 2.4のダウンロード Steinberg 開発者ページへ移動 再度、下記URLへアクセスする。 URL http //www.steinberg.net/en/company/3rd_party_developer.html ページ左にある「SDK Download Portal」をクリックする。 Steinberg 開発者ページへログイン 登録したユーザとパスワードを入力し、「Login」をクリックする。 「You are now logged in as ユーザ名 」 と表示されるとログイン完了。 VST Audio Plug-Ins SDK(Version2.4)ダウンロードページへ移動 ページ左にある「VST2.4 Audio Plug-Ins SDK」をクリックする。 開いたページで「I agree to the license agreement」にチェックをいれ、「Download VST 2.4 Audio Plug-ins SDK」をクリックする。 VST Audio Plug-Ins SDK(Version2.4)のダウンロード 開いたページで「VST 2.4 Audio Plug-Ins SDK(Format zip, 6.74 MB)」をクリックする。 ダウンロード先フォルダを選択して、ダウンロードする。 ダウンロードされたファイルの解凍 ダウンロードされたファイルを解凍する。 解凍したフォルダを「C \」に移動させる。 (解凍したフォルダはどの場所でよいが、説明のためC \とする) 次へ 合計: - 今日: - 昨日: -