約 4,663,656 件
https://w.atwiki.jp/dragonkiller/pages/772.html
【PPG】【waldorf】シンセサイザーの歴史 公開日:2023年09月10日 更新日:2023年09月10日 概要 PPG/Waldorfのシンセサイザーの歴史と製品。 シンセサイザー全体については★関連記事【SYNTHESIZER】シンセサイザーの歴史を参照。 目次 【PPG】【waldorf】シンセサイザーの歴史/概要/目次/ページの登録タグ歴史/1970/1980/1990/2000/2010/2020 特徴/公式サイト/代理店 製品一覧(PPG)/シンセ 製品一覧/シンセ/アナログモジュール/ソフトシンセ、ソフトエフェクト/スマホアプリ/エフェクター 動画 掲示板/wardolf 外部リンク/資料 検索/キーワード/ニュース ページの登録タグ PPG Waldorf ウェーブテーブル シンセサイザー 免責事項 商品の仕様・内容・デザイン・付属品・品番・価格等は予告なく変更になる場合があります。 掲載されている内容が最新とは限りません。 掲載されている内容に不備がある場合があります。 掲載されている内容を保証するものではありません。 歴史 1970 1975Wolfgang Palm(ウルフガング・パーム)氏がPPG(Palm Products Germany GmbH)設立。 1976SYNTHSIZER 1020 SYNTHSIZER 1002 1977 1978 1979PPG Wavecomputer 340 PPG Wavecomputer 380 1980 1980PPG Wavecomputer 360 1981PPG Wave 2発売。 1982PPG Wave 2.2発売。 1983 1984PPG Wave 2.3発売。 1985 1986PPG Realizer発表。 1987PPG倒産。 1988Wolfgang Duren(ウルフガング・デューレン)氏がWaldorf Electronics GmbH設立。ウルフガング・パーム氏が参加。 1989モジュール「MicroWave」発売。 1990 1990 1991 1992 1993「The Wave」発売。 1994モジュール「MicroWave 2」発売。 1995 1996 1997 1998Steinbergがソフトエフェクト「D-pole」発売。 モジュール「Microwave XT」発売。オレンジ。 1999 2000 2000Steinbergがソフトシンセ「PPG Wave 2.V」発売。 2001Steinbergがソフトシンセ「Attack」発売。 2002Steinbergが「Cubase SX」発売。ソフトシンセ「Waldorf A1」付属。★関連記事【DAW】Cubaseシリーズ Steinbergがソフトシンセ「PLEX」発売。 2003Steinbergがソフトシンセ「The Waldorf Edition」発売。 代理店をmegafusionからハイ・リゾリューションへ移行。 2004Waldorf Music AG倒産。 2005 2006Waldorf Music GmbH設立。 2007「Blofeld Desktop」発表。 2008 2009ソフトシンセ「Largo」発売。 「Blofeld Keyboard」発売。PCM音源を搭載。 オプション音色アップグレードキット「BLOFELD SAMPLE OPTION UPGRADE」発売。 2010 2010 2011ボコーダーソフトウェア「LECTOR」発売。 ソフトシンセ「PPG Wave 3.V」発売。 「PLEX2」無償公開。http //plex.hermannseib.com/ 20121月、エレピ「Zarenbourg(ザレンバーグ)」発表。 20136月、iPad対応ソフトシンセ「NAVE」発売。 アナログ・テーブルトップ・モジュール「Pulse 2」発売。 エレクトリック・ピアノ「Zarenbourg(ザレンバーグ)」発売。 シンセサイザー「ROCKET」発売。デスクトップ 2014アナログ・フィルター「2-pole」発売。デスクトップ ストリング・シンセサイザー「Streichfett」発売。デスクトップ 20156月、iPad対応ソフトシンセ「Attack Drums」発売。 ソフトシンセ「NAVE PLUG-IN」発売。ウェーブテーブル方式 ソフトシンセ「The Waldorf Edition2」発売。「PPG Wave2.2V」「Attack」「D-Pole」収録。 ユーロラック・ウェーブテーブル・モジュール nw1 2016ユーロラック対応コントローラーキーボード「KB37」 ユーロラック・デュアル VCAモジュール「dvca1」発売。 ユーロラック・コンプレッサー・モジュール cmp1発売。 2017ユーロラック・モジュレーター・モジュール mod1発売。 「Zarenbourg Piano Module」発表 アナログ・フィルター・モジュール「vcf1」発表 8ボイス・ハイブリッドシンセサイザー「Quantum」発表。 2018エレピ Waldorf Zarenbourg発売 「STVC」発表。 2019「Kyra」発表。 代理店をフックアップから福参起業へ移行。http //fukusan.com/2019/04/04/waldorf/ ストリングス&ボコーダー・シンセサイザー「STVC」発売。 2020 202016ボイス・デスクトップ・シンセサイザー「Iridium」発売。 2021 2022WAVEテーブルシンセサイザーモジュール「M」発売。 シンセサイザー「Iridium Keyboard」発売。49鍵盤。 2023ソフトシンセ「Streichfett Plugin」発売。 WAVEテーブルシンセサイザーモジュール「M 16Voice」発売。16ボイスバージョン発売。 「M Voice Expansion」発売。16ボイスに拡張 デジタル アナログ・ハイブリッド・シンセサイザー「Quantum MK2」発表。61鍵盤。 「」発売。 「」発売。 2024 2025 2026 2027 2028 2029 特徴 公式サイト Waldorf Music http //www.waldorfmusic.de/ http //www.waldorf-music.info/en/ WaldorfMusicChannel https //www.youtube.com/channel/UCU1I1uxJppjWp5kW7gzumsQ Wolfgang Palm http //www.wolfgangpalm.com/ 代理店 megafusion(~2003) ハイ・リゾリューション(2003~) フックアップ(~2019) http //hookup.co.jp/ 福参起業(2019~) http //fukusan.com/products/waldorf/ 製品一覧(PPG) シンセ PPG Wave 2:8音ポリ。 PPG Wave 2.2:8音ポリ。8bit。 PPG Wave 2.3:8音ポリ。12bit、MIDI対応。 Waveterm A:8bit。 Waveterm B:16bit。 製品一覧 シンセ MicroWave:ラック音源。 The Wave MicroWave 2:ラック音源。 Microwave XTk Microwave XT Microwave XT Black Edition Streichfett デスクトップ音源。ストリングス・シンセサイザー Rocket デスクトップ音源。モノフォニック・シンセサイザー Blofeld デスクトップ音源。モデリングシンセ http //fukusan.com/products/waldorf/blofeld_desktop/ Blofeld Keyboard モデリングシンセ http //fukusan.com/products/waldorf/blofeld_keyboard/ Quantum アナログ・ハイブリッド・シンセサイザー http //fukusan.com/products/waldorf/quantum/ STVC ストリングス・シンセサイザー / ボコーダー Pulse 2 Kyra デスクトップ音源。 Iridium デスクトップ音源。 アナログモジュール vcf1 nw1 mod1 dvca1 cmp1 KB37 ユーロラック・モジュールケース/キーボード ソフトシンセ、ソフトエフェクト D-Pole フィルター Attack ドラムシンセ PPG Wave 3.x シンセ Waldorf A1 シンセ Cubase SX~Cubase SX3に搭載。 Waldorf Edition2 Lector ボコーダー/シンセサイザー Largo シンセ Nave スマホアプリ Nave iOS https //waldorfmusic.com/en/nave-overview Attack iOS https //waldorfmusic.com/en/attack-drums-overview エフェクター 2-Pole アナログ・フィルター 動画 Waldorf blofeld Keyboard 紹介ビデオ https //www.youtube.com/watch?v=jsGZZGTcnps Waldorf blofeld Keyboard Demo Review https //www.youtube.com/watch?v=HFofAhlc9UY Waldorf blofeld Demo Review [Remaster] https //www.youtube.com/watch?v=5bc4mGTVyus Waldorf Kyra Demo Review https //www.youtube.com/watch?v=l6nJfY5WWYc Waldorf Iridium Demo Review https //www.youtube.com/watch?v=FXBFK2hICjg 掲示板 wardolf ■2001 wardolf 総合スレッド http //piza.2ch.net/dtm/kako/984/984315392.html MicroWaveXTってどうなんっすか? http //pc3.2ch.net/test/read.cgi/dtm/1008882567/ ■2002 Waldorfのシンセを語るスレ http //pc3.2ch.net/test/read.cgi/dtm/1012406292/ http //pc.2ch.net/dtm/kako/1012/10124/1012406292.html QQQQ Waldorfのシンセを語るスレ・Wavetable2 QQQQ http //pc3.2ch.net/test/read.cgi/dtm/1040099251/ ■2003 QQQQ Waldorfのシンセを語るスレ・Wavetable3 QQQQ http //pc3.2ch.net/test/read.cgi/dtm/1069223461/ ■2004 【さよなら】 Waldorf 倒産 【Qちゃん】(実質4) http //pc3.2ch.net/test/read.cgi/dtm/1077033940/ ■2005 【Wavetableよ】Waldorfを語るスレ4【永遠なれ】(実質5) http //pc11.2ch.net/test/read.cgi/dtm/1122120241/ ■2007 Waldorf ver.2(実質6) hhttp //pc11.2ch.net/test/read.cgi/dtm/1186854435/ ■2009 【ガンバレ】Waldorf V7【Qちゃん】 http //hibari.2ch.net/test/read.cgi/dtm/1234877387/ ■2010 【反撃の狼煙】Waldorf V8【PPG Wave 3.V】 https //anago.2ch.net/test/read.cgi/dtm/1293439508/ 外部リンク 資料 waldorf-history http //www.waldorf-music.info/en/waldorf-history 検索 キーワード ■Google http //www.google.com/search?hl=ja q=PPG http //www.google.com/search?hl=ja q=Waldorf ニュース ■ニュース1「Waldorf」 J.D. パワー 2023年北米ホテル宿泊客満足度調査 - PR TIMES マクドナルドのソースを巡る争いで米16歳高校生が死亡。新学期 ... - ハフポスト日本版 今世紀で最も魅力的なソングライターの1人、スフィアン ... - MUSIC LIFE CLUB ウォルドルフ・アストリア、最も愛される高級ホテル番付首位に浮上 - ブルームバーグ Some of the Most Hard-to-Book, Invitation-Only Restaurants in Tokyo - Prestige Online Thailand Korg Wavestate mkII, SE und SE Platinum – drei neue Wavestate ... - Bonedo.de ドナルド・キーンが描いた日本--生誕100年に:/31 ... - 毎日新聞 Superbooth 23 Neuzeit Instruments Warp, Wavetable/Additive ... - Amazona.de State-by-state look at every player selected in the NFL Draft over last ... - MaxPreps.com NAMM 2023 Sound Particles SkyDust 3D – 3D-Synth für die DAW - Bonedo.de J.W. Anderson x Uniqlo Does British Prep for Spring 2023 - Fashionista 牛尾憲輔『チェンソーマン』劇伴インタビュー〜田渕ひさ子の参加やAI ... - サンレコ Sabian präsentiert HHX Complex Aero Crashes und weitere ... - Bonedo.de テレヴィジョンの故トム・ヴァーレインが「究極のギターゴッド ... - http //rollingstonejapan.com/ ヒルトン、低予算旅行者向けのホテルブランドを発表…1泊約1万円 ... - Business Insider Japan DAWとは? 基礎知識とオススメのDAWソフトを紹介 - サンレコ WALDORF Quantum MK2 〜ポリフォニック・アフタータッチに対応した ... - サンレコ 立体音響をヘッドフォンで体験できる無料配信イベント「Immersive ... - サンレコ 一度は泊まってみたい、NYの老舗有名ホテル。歴史と有名 ... - 特派員ブログ Lindell Audio LIN76 y LIN2A y equipos estudio Vanguard, Tegeler ... - Hispasonic 【イタすぎるセレブ達・番外編】カニエ・ウェストが極秘挙式 お ... - Techinsight japan 1010music Bitbox Micro Black Edition - Eurorack-Sampler jetzt auch ... - Bonedo.de タイ・バンコクのホテル「ウォルドーフ・アストリア・バンコク ... - 特派員ブログ 開発進む大阪・うめきた ファッションショーで「国際都市」へ変化アピール - WWD JAPAN.com GeG(変態紳士クラブ)のプライベート・スタジオ|Private Studio 2023 - サンレコ 12/4(日)サンレコフェス2022開催!セミナーとハンズオンを集め ... - サンレコ Michael Kanekoの「WOW!iSM―L!VE―」バイノーラル収録現場に潜入! - サンレコ シドニーで高級住宅・ホテル開発/三菱地所 - (株)不動産流通研究所 バンクーバーで「ビーガン・ナイトマーケット」食品から ... - バンクーバー経済新聞 ゴシップガール ロケ地 徹底紹介!ニューヨーク有名ロケ地ツアー ... - - mikissh 「ゴシップガール」ブレアのヘアメイクがリバイバル! アイコン ... - ELLE JAPAN サカナクションの使用楽器&機材を写真で振り返る!〜Essential Tools ... - サンレコ 2020年ドバイ万博に別れを告げ、2025年大阪・関西万博に ... - ARAB NEWS 「ゴシップガール」エド・ウェストウィック、じつはチャック役じゃないキャラの ... - TVグルーヴ・ドット・コム 【オリックス不動産】米ヒルトンの最上級ホテルブランド ... - PR TIMES 【プロミュージシャンのスペシャル楽器が見たい】GARNiDELiA toku ... - BARKS トランプ一族、ワシントンのホテル売却合意-名称も変更と関係者 - ブルームバーグ 9.11で米ポップカルチャーはどう変わった - Wall Street Journal 全面改修工事中の超高級ホテル、ウォルドーフ・アストリア「1億円 ... - Business Insider Japan 3/19 「COOK JAPAN PROJECT」記念本出版のご案内 - PR TIMES シンセウェーブの音作りや制作テクニックを徹底解説! 〜シンセウェーブ ... - サンレコ ラシャド・ベッカーのプライベート・スタジオ 〜Private Studio 2021 - サンレコ yukihiro(L Arc-en-Ciel/ACID ANDROID)のプライベート・スタジオ ... - サンレコ 飲食店閉鎖で D2C へ、収益400%増「食器ブランド」の挑戦 :「マージン ... - DIGIDAY[日本版] 日本初進出!「ヒルトン」の最上級ブランドホテルが2026年に開業 ... - TABI LABO ウォルドーフ・アストリア東京日本橋、2026年に開業 | - 観光経済新聞 ジャスティン・ティンバーレイク、バイデン候補の選挙 ... - VOGUE JAPAN ヒルトンの最上級ラグジュアリーブランド「ウォルドーフ ... - PR TIMES Nujabes(Hyde Out Productions)〜People & Tools(2003年) - サンレコ 自然とのつながりを感じられる子どもは「子ども自身が幸せなだけ ... - GIGAZINE(ギガジン) 2019注目すべき次世代リアリティ・スター【ピーチズのOM(F)G!】 - ELLE JAPAN 「ゴシップガール」が復活 米新ストリーミングサービスで - WWD JAPAN.com 北欧のミシュラン星付きレストランで研鑽を積み、5ツ星ホテルで ... - PR TIMES ヒルトンの最上級ブランド、ウォルドーフ・アストリアが ... - PR TIMES ラスベガス観光局、旧モンテカルロ/マンダリンの新ホテルなど最新 ... - トラベル Watch 米ヒルトン、NY高級ホテルを中国企業に売却 - AFPBB News ロックンロールの先駆者ボ・ディドリー氏、死去 - AFPBB News University of Alabama Honors List Fall 2018 - The Tuscaloosa News グランド・ワイレア・ウォルドーフ・アストリア・リゾート ... - allhawaii NYのランドマーク、クライスラービルが売却へ - Mashup Reporter Avengers 4 Pepper Potts super-héroïne aux côtés de Tony Stark ? - NextPlz 東南アジアで初の「ウォルドーフ・アストリア・バンコク」開業 - 海外旅行情報 Risvel(リスヴェル) ヒルトンの最上級ブランド、ウォルドーフ・アストリアが ... - PR TIMES NY・ブルックリンのレストラン「和参」で本マグロ中落ち体験 ... - ニューヨーク経済新聞 初代シボレー・コルベット、熱烈ファンの父娘が復元 - Wall Street Journal CRCK/LCKS、誰もが認める「超絶テクバンド」の制作スタジオへ - CINRA.NET(シンラドットネット) 電子ロックに脆弱性、ホテル全室を解錠できるマスターキーを作成 ... - ZDNET Japan 家で持て余したあの食材がスイーツへと大変身!「フードロス」を ... - PR TIMES Tinder3年カップルのその後。ハワイの初デートは最高だったみたい! - TABI LABO NYウォルドーフ・アストリア、改装後の姿 - Wall Street Journal Native Instrumentsが厳選!Applied Acoustic Systems製品の特別半額セールを開催! - iFLYER 「SLATE DIGITAL Virtual Microphone System」製品レビュー:古今東西 ... - サンレコ 長く暗い冬には、ちょっと優雅にアムステルダムのアフタヌーン・ティー - ポートフォリオ・オランダニュース 【海外発!Breaking News】NY五つ星ホテルでトコジラミ ... - Techinsight japan 【藤本健のDigital Audio Laboratory】 第662回 USB 3.0対応で20入 ... - AV Watch ウォルドーフ・アストリア・ホテルズ&リゾーツ、世界の25都市で ... - Business Wire IK Multimedia、ピアノ音源アプリ2種のAndroid版を配信開始 - マイナビニュース 高音質でバンドの一発レコーディングやドラムのマルチマイク収録が可能 ... - BARKS 【藤本健のDigital Audio Laboratory】 第627回 16入力とDSP搭載で ... - AV Watch 500の音色が高品質! プロが憧れたドイツ製シンセのiPad版は納得 ... - ASCII.jp 秘密の通路もあるマリリン・モンローやジェームス・ディーンも ... - TABIZINE 【特集】グレース・ケリー - AFPBB News RIETI - 日中経済関係の課題と今後の展開 (議事概要) - 経済産業研究所 ヒルトンホテル、スマホをルームキー代わりに2016年末までに実施 - ITmedia NEWS ウォルドーフ・アストリア・ホテルズ&リゾーツがアムステルダム ... - Business Wire デジタルエリートに大人気の教育法は超アナログだった!シリコン ... - greenz.jp ドイツWALDORFのシンセサイザー「BLOFELD」が買いやすい価格に - BARKS 伝統のウェーブテーブル波形68個で特異な音作りが可能なシンセ - サンレコ ■ニュース2「PPG」 葉ろう石市場規模・シェア分析-成長動向・予測(2023年~2028年) - NEWSCAST エアロスミス、フェアウェル・ツアー「Peace Out」が開幕 - MUSIC LIFE CLUB 秋から走るならコレ! Amazfitのランナー向けスマートウォッチ ... - Yahoo!ニュース 【WWE】中邑真輔は日本男子初の最高位王座獲得ならず ロリンズ必殺技で撃沈 武藤敬司も観戦 - ニッカンスポーツ キービジュアルに鈴鹿央士さんを起用!【LIPPS】からサロン級の ... - PR TIMES トラヴィス・スコット、全米No.1作品『ユートピア』を引っさげた ... - Yahoo!ニュース 非有機スズ・非シブトリン防汚方法リストを更新 - ペイント&コーティングジャーナル CoatingMedia Online 【WWE】中邑真輔が世界王者ロリンズを顔面蹴りでKO「ロリンズを解体したい」9・2王座挑戦 - ニッカンスポーツ 女性脱毛サロンストラッシュのスキンケアシリーズ【HADA ... - PR TIMES 充電不要の活動量計「MOTHER Bracelet(マザー)」 - sourcenext.com ドンチッチが平均35.5得点で現在1位、日本代表ホーキンソンが平均 ... - Yahoo!ニュース 【9月限定】女性脱毛サロンストラッシュのオリジナルスキンケア ... - PR TIMES 【WWE】中邑真輔が王者セス・ロリンズに9・2挑戦「背中のことを知っている」古傷破壊を予告 - ニッカンスポーツ PPGの2024年カラー・オブ・ザ・イヤーに「リミットレス」、無限 ... - 時事通信ニュース 高齢患者の消化管手術における目標指向型輸液療法の輸液反応性の ... - 時事通信ニュース 365日。美しさを更新。未来へ。新生「SHISEIDOアルティミューン ... - 資生堂 最大約10日間稼働するASUSのヘルストラッカーで生活の質を ... - au Webポータル 空自F-15J戦闘機プラモ、Ankerの新バッテリーやASUS ... - 価格.com ASUS、デュアルセンサーで高精度に健康状態を把握できるスマート ... - PC Watch イソブタノールの世界市場規模調査・予測、タイプ別(合成、バイオベース)、用途別(石油・ガス、溶剤・塗料、化学中間体、その他)、地域別分析、2023-2030年 - NEWSCAST 空港ホスピタリティ大手 プラザ・プレミアム・グループが、新規顧客獲得に ... - 河北新報オンライン 顔映像から非接触・高精度で心拍数推定、環境光変動のノイズも低減 東京理?... - 医療ITをドライブするメディア Med IT Tech 顔の映像から非接触・高精度で心拍数を推定する手法を開発 - PR TIMES Xiaomi Smart Band 7が4441円! 楽天でスマートバンドがお買い得 - こまめブログ Amazfit初のランナー向けスマートウォッチ「チーター」、49900円 ... - マイナビニュース Amazfit GTR 4が24%オフの2万5245円! 高機能スマートウオッチが ... - こまめブログ Xiaomi Smart Band 7が実質4540円! 楽天でスマートバンドが激安 - こまめブログ サウナを記録し分析可能。ChatGPT-4と連携し「睡眠と健康の質 ... - PR TIMES IMF、ラオス経済に関するIMF4条協議を公表(ラオス) | ビジネス短信 ... - ジェトロ(日本貿易振興機構) 八村塁にレイカーズがクオリファイング・オファー提示と発表 ... - 月バス Amazfit、アウトドアGPSスマートウォッチ「Amazfit T-Rex Ultra」 - 価格.com 新感覚のとろけるクレンジング&美容液洗顔で、毛穴の目立たない ... - PR TIMES 血圧大事! ASUSのスマートウォッチ「Vivo Watch 5」で血圧を測った - ASCII.jp 「Google Cloud Day 23 Tour in TOKYO」登壇レポートパーソル ... - PR TIMES 中国のガンフォン・リチウム、アルゼンチンで炭酸リチウム生産を ... - ジェトロ(日本貿易振興機構) ふきとりケアにネガティブなイメージを持つ人の使用感満足度約94 ... - PR TIMES ポリプロピレングリコール生産でタッグ、LLP設立 - ペイント&コーティングジャーナル CoatingMedia Online ザ・1975、9月から12月にかけて行う新たな北米ツアーの日程を発表 - NME Japan #21 エリック・ジェイコブセン選手 契約合意(継続)のご報告 - 茨城ロボッツ 【6/9 13時】Amazfit GTR Miniが半額の9900円! 3月発売のGPS搭載 ... - こまめブログ あなたの書くコードはイケてる?paiza、楽しみながら ... - PR TIMES 光が海の色を変えるように表情までも変える12色。クレ・ド・ポー ... - PR TIMES Xiaomi Smart Band 7が4990円! お手軽スマートバンドが特選 ... - こまめブログ 世界銀行、ラオスの公共・公的保証債務がGDPの110%超と推測 ... - ジェトロ(日本貿易振興機構) 資生堂、「クレ・ド・ポー ボーテ」の「シナクティフ」から新アイマスク発売 - 国際商業オンライン ウェアラブル型で高感度な圧電式血圧センサーを開発 韓国|韓国科学 ... - Science Portal Asia Pacific SHISEIDO MENから快適なうるおい肌へ導く3秒間、たっぷりと水分 ... - 資生堂 RISE with SAP による ERP システムのクラウド化事例をご紹介 ... - amazon.com Snapdragon W5+ Gen 1搭載の「TicWatch」シリーズ最新モデル ... - PR TIMES パーソルキャリア 柿田 一が「@IT NETWORK Live Week 2023 夏 ... - PR TIMES ヨキッチがチェンバレンに次ぐ2つの偉業同時達成…残す悲願の ... - BASKETBALL KING ラジカルを活用した新たなケージド化法の開発 ―アセチルコリン ... - 金沢大学 三井化学と三洋化成、国内のPPG生産協力で有限責任事業組合を ... - Yahoo!ニュース #7 浅井修伍選手 契約合意(継続)のご報告 - 茨城ロボッツ 千葉J×A東京、琉球×横浜BC、セミファイナルが5/20から開催 - 月バス 東京羽田から自由契約となった鷹のはし公歌のシャンソン化粧品 ... - 月バス クレ・ド・ポー ボーテ シナクティフからくっきりと鮮明な印象の目 ... - PR TIMES ラジカルを活用した新たなケージド化法の開発―アセチルコリン ... - 京都大学 Amazfit GTR 4レビュー:充実した機能と情報量が楽しいスマート ... - こまめブログ AEROSMITHがフェアウェル・ツアーを発表! 今年9月に米東海岸 ... - BURRN! ONLINE 富永啓生がアーリーエントリーを申請、NBAが242選手のリストを公開 - 月バス 手首以外での計測にも対応可能な『Epson Wellness SDK』をリリース - PR TIMES 【AsianScientist】非侵襲的なバイタルサイン・モニタリングを簡便 ... - Science Portal Asia Pacific 携帯→時計→指輪?…サムスン・アップル、今度は「スマート ... - Yahoo!ニュース ディート不使用。公園やアウトドアで使える6種の天然精油を配合 ... - PR TIMES バッテリーコーティング市場(Battery Coatings Market)に関する ... - PR TIMES 世界銀行がアフリカの2023年経済見通し発表、GDP成長率を3.1%に ... - ジェトロ(日本貿易振興機構) paiza、楽しみながらプログラミングに触れるプログラミング ... - PR TIMES 三井化学 PPGなどポリウレタン原料値上げ、6月から - 日刊ケミカルニュース 初陣の佐藤琢磨は6番手、ローゼンクヴィストが2年連続ポール / インディカー第2戦テキサス予選結果2023 - Formula1-Data 缶コーティング市場(Can Coatings Market)に関する調査は、2022 ... - PR TIMES Amazfit GTR Miniが発売に、今までなかったラウンド型の「Mini ... - DogsorCaravan.com WNBAリバティが馬瓜ステファニーとのキャンプ契約を発表 - 月バス 道路標示材料市場(Road Marking Materials Market)に関する詳細 ... - PR TIMES パーソルキャリア佐藤 哲が「情報処理学会 第85回全国大会」登壇 ... - PR TIMES 腕の血を止めて操作するゲーム、立命館大が開発 血管を圧迫すると ... - ITmedia NEWS Redmi Smart Band 2が3992円+ポイント還元付き! 楽天で2月発売 ... - こまめブログ 36歳・川村卓也、新潟アルビレックスBBがチーム練習に参加と発表 ... - 月バス Apple Watchの搭載に期待高まる〜ウォッチ用センサー式血圧測定が海外で承認 - iPhone Mania ずっと、まとまりつづく「ReFa HAIR WATER for HEART (リファ ... - 株式会社MTG 伊藤笑会四号機 with ガルM詳細情報|Rotary Exhibition 2023 ... - 東京オートサロン 東アジアスーパーリーグ(EASL)、「EASL Champions Week」の ... - PR TIMES 脳波も計測できる、肌に優しい高性能な生体ドライ電極を開発 - MONOist ブルックリン・ネッツは渡邊雄太とシーズン保証契約をすべき - 月バス 船舶用の防錆剤を応用、異なるアプローチで錆の進行を止める | CAR ... - CAR CARE PLUS(カーケアプラス) 「統合報告書2022」の発行に当たって - 日本ペイントホールディングス Amazfit GTS 4 Miniレビュー・ベーシックモデルでありながらヘルス ... - DogsorCaravan.com ロジャー・ウォーターズ、4年ぶりの北米ツアー「This Is Not a Drill ... - MUSIC LIFE CLUB 20220701|学術ニュース&トピックス|東京大学大気海洋研究所 - 東京大学 ジャーニーの「Freedom」ツアーが開幕 | NEWS - MUSIC LIFE CLUB 2021年最も人気だった車のボディーカラーは? - SlashGear Japan PPGバイオセンサーの世界市場は2027年まで年平均成長率11.78 ... - PR TIMES Apple Watchなどウェアラブルデバイスの光センサー、肌の色や肥満で誤差拡大? - iPhone Mania PPGアジア市況高止まり、原料PO高騰などで - 化学工業日報 AGC、ウレタン原料を値上げ - 日本経済新聞 PPGバイオセンサーの市場規模、2027年に7億5930万米ドル到達予想 - PR TIMES AGC、ウレタン原料を2割超値上げ - 日本経済新聞 関西ペイントやPPGがアクサルタに関心示す-関係者 - ブルームバーグ ゴルフウェアブランド「パーリーゲイツ」から新ライン”PPG”誕生 - PR TIMES 米エリオット、蘭アクゾ会長解任狙い裁判所に申し立て-買収案 ... - ブルームバーグ
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/42.html
VST(エフェクター)作成例 VST情報の処理 VSTの情報をホストアプリケーション(Cubase,Sonar等)に通知するための関数を作成する。 作成者(ベンダー)情報の処理 ホストアプリケーションに作成者(ベンダー)の情報を知らせる。 引数のchar* textに作成者(ベンダー)の名前を保存し、trueを返す。(falseを返すとどういう動きをするかは不明) 引数のchar* textは64バイト。NULL文字で終端させる必要がある。 サンプルエフェクターではMY_VST_VENDOR(宣言部で定義済み。)を引数のchar* textに格納している。 bool MyTremoloVST getVendorString (char* text){//作者(ベンダー)名をtextに格納してtrueを返す。//kVstMaxVendorStrLenは「vstsdk2.4\pluginterfaces\vst2.x\aeffect.h」に//定義されている。(kVstMaxVendorStrLen = 64)vst_strncpy (text, MY_VST_VENDOR, kVstMaxVendorStrLen);return true;} 作成したVSTのバージョンの処理 ホストアプリケーションに作成したVSTのバージョンを知らせる。 バージョンは整数で返す必要があるため、適当に変換する。 【例】 バージョン 返す値 説明 1.03 103 メジャーバージョン1を100の位に、マイナーバージョン0.03を1と10の位に割り当てる サンプルエフェクターではMY_VST_VERSION(宣言部で定義済み。)を返している。 VstInt32 MyTremoloVST getVendorVersion (){//バージョン(整数)を返す。return MY_VST_VERSION;} 製品名の処理 ホストアプリケーションに製品名を知らせる。 引数のchar* textに製品の名前を保存し、trueを返す。(falseを返すとどういう動きをするかは不明) 引数のchar* textは64バイト。NULL文字で終端させる必要がある。 サンプルエフェクターではMY_VST_PRODUCT_NAME(宣言部で定義済み。)を引数のchar* textに格納している。 bool MyTremoloVST getProductString (char* text){//製品名をtextに格納してtrueを返す。//kVstMaxProductStrLenは「vstsdk2.4\pluginterfaces\vst2.x\aeffect.h」に//定義されている。(kVstMaxProductStrLen = 64)vst_strncpy (text, MY_VST_PRODUCT_NAME, kVstMaxProductStrLen);return true;} エフェクター名の処理 ホストアプリケーションにエフェクター名を知らせる。 引数のchar* nameに製品の名前を保存し、trueを返す。(falseを返すとどういう動きをするかは不明) 引数のchar* nameは32バイト。NULL文字で終端させる必要がある。 サンプルエフェクターではMY_VST_NAME(宣言部で定義済み。)を引数のchar* textに格納している。 bool MyTremoloVST getEffectName (char* name){//製品名をnameに格納してtrueを返す。//kVstMaxEffectNameLenは「vstsdk2.4\pluginterfaces\vst2.x\aeffect.h」に//定義されている。(kVstMaxEffectNameLen = 32)vst_strncpy (name, MY_VST_NAME, kVstMaxEffectNameLen);return true;} 次へ 合計: - 今日: - 昨日: -
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/20.html
VST(エフェクター)作成例 参考資料 サンプルコード全体 ソースコードのダウンロード→ここをクリック // ============================================================================================// インクルードファイル// ============================================================================================#include stdio.h #include stdlib.h #include string.h #include math.h #include windows.h #include "audioeffectx.h" // ============================================================================================// 設計情報の記入// ============================================================================================#define MY_VST_VENDOR "test vendor" //作者(ベンダー)名#define MY_VST_VERSION 1 //このVSTバージョン#define MY_VST_PRODUCT_NAME "Sample Tremolo VST" //このVSTの製品名#define MY_VST_NAME "Tremolo" //この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 //パラメータの数 //このVSTのパラメータを定義しておく。//0からの連番でなければならない。#define TREMOLO_SPEED 0#define TREMOLO_DEPTH 1 // ============================================================================================// VSTの基本となるクラス// ============================================================================================class MyTremoloVST public AudioEffectX{protected float fTime; //トレモロ用に経過時間を保存する変数float fTremoloSpeed; //トレモロの周期float fTremoloDepth; //トレモロの振幅 public MyTremoloVST (audioMasterCallback audioMaster);~MyTremoloVST (); //作者(ベンダー)名、バージョン、製品名、VSTの名前を//Hostアプリケーションへ知らせるメンバー関数virtual bool getVendorString (char* text);virtual VstInt32 getVendorVersion ();virtual bool getProductString (char* text);virtual bool getEffectName (char* name); // エフェクターのパラメータに関するメンバー関数virtual void setParameter (VstInt32 index, float value);virtual float getParameter (VstInt32 index);virtual void getParameterName (VstInt32 index, char* text);virtual void getParameterLabel (VstInt32 index, char* label);virtual void getParameterDisplay (VstInt32 index, char* text); // 音声信号を処理するメンバー関数virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames);}; // ============================================================================================// このVSTのを生成するための関数// ============================================================================================AudioEffect* createEffectInstance (audioMasterCallback audioMaster){//newでこのVSTを生成したポインタを返すreturn new MyTremoloVST (audioMaster);} // ============================================================================================// コンストラクタ、デストラクタ(VSTの初期化、終了処理を記述)// ============================================================================================MyTremoloVST MyTremoloVST (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はないので必ずこの関数を呼び出す。 //このVSTのパラメータを初期化する。fTime = 0.0f; fTremoloSpeed = 1.0f / 4.0f; //トレモロの周期 0.25秒fTremoloDepth = 0.5f; //トレモロの振幅 0.5倍} MyTremoloVST ~MyTremoloVST (){//VSTの終了処理をする。//このVSTでは特に実行する処理はなし。} // ============================================================================================// 作者(ベンダー)名、バージョン、製品名、VSTの名前をHostアプリケーションへ知らせるメンバー関数// ============================================================================================bool MyTremoloVST getVendorString (char* text){//作者(ベンダー)名をtextに格納してtrueを返す。//kVstMaxVendorStrLenは「vstsdk2.4\pluginterfaces\vst2.x\aeffect.h」に//定義されている。(kVstMaxVendorStrLen = 64)vst_strncpy (text, MY_VST_VENDOR, kVstMaxVendorStrLen);return true;} VstInt32 MyTremoloVST getVendorVersion (){//バージョン(整数)を返す。return MY_VST_VERSION;} bool MyTremoloVST getProductString (char* text){//製品名をtextに格納してtrueを返す。//kVstMaxProductStrLenは「vstsdk2.4\pluginterfaces\vst2.x\aeffect.h」に//定義されている。(kVstMaxProductStrLen = 64)vst_strncpy (text, MY_VST_PRODUCT_NAME, kVstMaxProductStrLen);return true;} bool MyTremoloVST getEffectName (char* name){//製品名をnameに格納してtrueを返す。//kVstMaxEffectNameLenは「vstsdk2.4\pluginterfaces\vst2.x\aeffect.h」に//定義されている。(kVstMaxEffectNameLen = 32)vst_strncpy (name, MY_VST_NAME, kVstMaxEffectNameLen);return true;} // ============================================================================================// エフェクターのパラメーターの設定、表示を行うメンバー関数// ============================================================================================void MyTremoloVST setParameter (VstInt32 index, float value){//indexで指定されたパラメータに値を設定する。//valueは0.0f~1.0fで与えられる。switch (index){case TREMOLO_SPEED fTremoloSpeed = 1.0f / (29.0f*value +1.0f); //1秒~1/30秒の範囲にするbreak;case TREMOLO_DEPTH fTremoloDepth = value;break;}} float MyTremoloVST getParameter (VstInt32 index){//indexで指定されたパラメータの値を//0.0f~1.0fの範囲で返すfloat value = 0.0f;switch (index){case TREMOLO_SPEED value = (1 / fTremoloSpeed - 1.0f) / 29.0f; //1秒~1/30秒を0.0f~1.0fの範囲にするbreak;case TREMOLO_DEPTH value = fTremoloDepth;break;}return value;} void MyTremoloVST getParameterName (VstInt32 index, char* text){//indexで指定されたパラメータの名前をtextに格納する//kVstMaxParamStrLenは「vstsdk2.4\pluginterfaces\vst2.x\aeffect.h」に//定義されている。(kVstMaxParamStrLen = 8)switch (index){case TREMOLO_SPEED vst_strncpy (text, "Speed", kVstMaxParamStrLen);break;case TREMOLO_DEPTH vst_strncpy (text, "Depth", kVstMaxParamStrLen);break;}} void MyTremoloVST getParameterLabel (VstInt32 index, char* label){//indexで指定されたパラメータの単位をlabelに格納する//kVstMaxParamStrLenは「vstsdk2.4\pluginterfaces\vst2.x\aeffect.h」に//定義されている。(kVstMaxParamStrLen = 8)switch (index){case TREMOLO_SPEED vst_strncpy (label, "Hz", kVstMaxParamStrLen);break;case TREMOLO_DEPTH vst_strncpy (label, "dB", kVstMaxParamStrLen);break;}} void MyTremoloVST getParameterDisplay (VstInt32 index, char* text){//indexで指定されたパラメータの表示内容をtextに格納する//kVstMaxParamStrLenは「vstsdk2.4\pluginterfaces\vst2.x\aeffect.h」に//定義されている。(kVstMaxParamStrLen = 8)switch (index){case TREMOLO_SPEED float2string (1.0f / fTremoloSpeed, text, kVstMaxParamStrLen);break;case TREMOLO_DEPTH float2string (fTremoloDepth, text, kVstMaxParamStrLen);break;}} // ============================================================================================// 音声信号を処理するメンバー関数// ============================================================================================void MyTremoloVST processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames){//入力、出力は2次元配列で渡される。//入力は-1.0f~1.0fの間で渡される。//出力は-1.0f~1.0fの間で書き込む必要がある。//sampleFramesが処理するバッファのサイズfloat* inL = inputs[0]; //入力 左用float* inR = inputs[1]; //入力 右用float* outL = outputs[0]; //出力 左用float* outR = outputs[1]; //出力 右用 float dt = 1.0f / getSampleRate (); //1フレームで進む秒数float pi = 3.14159265f; //円周率 while (sampleFrames 0){//ここで音声処理を行う。 //dt分時間を進める。//トレモロ周期を超えた場合は、周期分戻す。fTime = fTime + dt;if (fTime fTremoloSpeed){fTime -= fTremoloSpeed;} //出力バッファへ書き込む。(*outL) = (*inL) * ( 1.0f - fTremoloDepth * (0.5f + 0.5f*sin(2.0f*pi*fTime/fTremoloSpeed)));(*outR) = (*inR) * ( 1.0f - fTremoloDepth * (0.5f + 0.5f*sin(2.0f*pi*fTime/fTremoloSpeed))); inL++;inR++;outL++;outR++;sampleFrames--;} } 誤字・脱字、内容の不備、要望等あれば教えてください。 また質問もこちらへお願いします。 名前 コメント 合計: - 今日: - 昨日: -
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/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 \とする) 次へ 合計: - 今日: - 昨日: -
https://w.atwiki.jp/vst_prog/pages/40.html
VST(エフェクター)作成例 クラスの宣言 VSTはAudioEffectXクラスを継承して作る (AudioEffectXクラスは「vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.h」で定義されている) サンプルエフェクターでは次のように定義している。 class MyTremoloVST public AudioEffectX{protected float fTime;float fTremoloSpeed; //トレモロの周期float fTremoloDepth; //トレモロの振幅 public MyTremoloVST (audioMasterCallback audioMaster);~MyTremoloVST (); //作者(ベンダー)名、バージョン、製品名、VSTの名前を//Hostアプリケーションへ知らせるメンバー関数virtual bool getVendorString (char* text);virtual VstInt32 getVendorVersion ();virtual bool getProductString (char* text);virtual bool getEffectName (char* name); // エフェクターのパラメータに関するメンバー関数virtual void setParameter (VstInt32 index, float value);virtual float getParameter (VstInt32 index);virtual void getParameterName (VstInt32 index, char* text);virtual void getParameterLabel (VstInt32 index, char* label);virtual void getParameterDisplay (VstInt32 index, char* text); // 音声信号を処理するメンバー関数virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames);}; AudioEffectXクラスから必ずオーバーライドしなければならない関数は以下のとおり 関数名 戻り値 引数 概要 getVendorString bool型 char* text ホストアプリケーションに作者(ベンダー)名を教えるための関数作者(ベンダー)名をtextに格納する。作者(ベンダー)名の格納に成功するとtrueを返す getVendorVersion VstInt32 なし ホストアプリケーションにVSTバージョンを教えるための関数VSTバージョンを返す getProductString bool型 char* text ホストアプリケーションにVSTの製品名を教えるための関数VSTの製品名をtextに格納する。VSTの製品名の格納に成功するとtrueを返す getEffectName bool型 char* name ホストアプリケーションにVSTの名前を教えるための関数VSTの名前をnameに格納する。VSTの名前の格納に成功するとtrueを返す setParameter なし VstInt32 indexfloat value ホストアプリケーションがパラメータに値を設定するための関数indexで示されるパラメータにvalueの値を設定するvalueは0.0~1.0の範囲で渡される getParameter float型 VstInt32 index ホストアプリケーションにパラメータの値を教えるための関数indexで示されるパラメータの値を返す戻り値は0.0~1.0の間でなければならない getParameterName なし VstInt32 indexchar* text ホストアプリケーションにパラメータの名前を教えるための関数indexで示されるパラメータの名前をtextに格納する。 getParameterLabel なし VstInt32 indexchar* label ホストアプリケーションにパラメータの単位を教えるための関数indexで示されるパラメータの単位をlabelに格納する。 getParameterDisplay なし VstInt32 indexchar* text ホストアプリケーションにパラメータの表示内容を教えるための関数indexで示されるパラメータの表示内容をtextに格納する。 processReplacing なし float** inputsfloat** outputsVstInt32 sampleFrames 音声処理を行う関数。定期的にホストアプリケーションから呼び出される。バッファinputsで与えられる音声信号を加工してバッファoutputsに格納する。処理するバッファサイズはsampleFramesで与えられる。 次へ 合計: - 今日: - 昨日: -
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トップページへ(準備中)