VST3のプロジェクトを作成して、GUIの画面も表示されたけど、Visual Studioで画面をエディットするのを探しても見つからない。
Googleでググったところ、「Inline UI Editor for VST3」で編集するってことが分かった。
デバッグ版でビルドして、「vsthost」アプリで作成したvst3を実行して「Pugin Edit」で画面を表示させて
表示させた画面を右クリックして「Open UIDescription Editor」をクリックすると
「Inline UI Editor for VST3」の編集画面が表示された。
そんなん、分かるか!って言いたいけど、昔、Macのアプリを作成するときに、画面とロジックが完全に分かれてたのを思い出して、なるほどなって腑に落ちた。
alfaalfa
趣味のブログ
2026年7月20日月曜日
VST3 ビルド環境
Visual Stadioでcmakeを使えるようにする。
最初、cmakeが見つからなくて悩んだ。
「x64_x86 Cross Tools」で「where cmake」としても見つからなかった。
Visual Studio Installerを起動して、「変更」から「C++によるデスクトップ開発」にはチェックが入ってる。
もう1つ。「C++を使用したLinux、Mac、埋め込み開発」にもチェックが必要。
結果は下記のようになった。
次は、「HelloWorld」に該当するテストプロジェクトを作成&ビルド&実行だ。
cmake用のプロジェクトを作成してくれる「VST3 Project Generator」ってのがあるらしい。
こんなやつ
最初にVST3 SDKとcmakeの場所を設定する。
次に、「Create Plug-in Project」タブで、作成したいプロジェクトの情報を入力して、Createをクリックする。良い時代になったもんだ。手作業で作成してたのがウソみたい。
Visual Stadioまで自動で起動してきた...
そして、ビルド
「\HelloWorld\build\VST3\Debug\HelloWorld.vst3\Contents\x86_64-win\HelloWorld.vst3」にvst3ファイルが作成された。
手持ちのDAW(Ableton Live)で動作確認しようと思ったが、vsthostっていう簡単に動作させるツールがあるらしい。
さっそく、vsthostを使って実行
とりあえず、HelloWorld的な動作確認まで完了!
最初、cmakeが見つからなくて悩んだ。
「x64_x86 Cross Tools」で「where cmake」としても見つからなかった。
Visual Studio Installerを起動して、「変更」から「C++によるデスクトップ開発」にはチェックが入ってる。
もう1つ。「C++を使用したLinux、Mac、埋め込み開発」にもチェックが必要。
結果は下記のようになった。
次は、「HelloWorld」に該当するテストプロジェクトを作成&ビルド&実行だ。
cmake用のプロジェクトを作成してくれる「VST3 Project Generator」ってのがあるらしい。
こんなやつ
最初にVST3 SDKとcmakeの場所を設定する。
次に、「Create Plug-in Project」タブで、作成したいプロジェクトの情報を入力して、Createをクリックする。良い時代になったもんだ。手作業で作成してたのがウソみたい。
Visual Stadioまで自動で起動してきた...
そして、ビルド
「\HelloWorld\build\VST3\Debug\HelloWorld.vst3\Contents\x86_64-win\HelloWorld.vst3」にvst3ファイルが作成された。
手持ちのDAW(Ableton Live)で動作確認しようと思ったが、vsthostっていう簡単に動作させるツールがあるらしい。
さっそく、vsthostを使って実行
とりあえず、HelloWorld的な動作確認まで完了!
2026年7月16日木曜日
Difyのインストール
1.リポジトリからクローン
$ git clone https://github.com/langgenius/dify.git
Cloning into 'dify'...
remote: Enumerating objects: 451355, done.
remote: Counting objects: 100% (1144/1144), done.
remote: Compressing objects: 100% (780/780), done.
remote: Total 451355 (delta 709), reused 409 (delta 364), pack-reused 450211 (from 3)
Receiving objects: 100% (451355/451355), 394.81 MiB | 13.21 MiB/s, done.
Resolving deltas: 100% (330123/330123), done.
Updating files: 100% (13111/13111), done.
2.クローンされたことを確認
$ ll
total 40
drwxr-x--- 5 alfaalfa alfaalfa 4096 Jun 28 10:45 ./
drwxr-xr-x 3 root root 4096 Nov 17 2025 ../
-rw------- 1 alfaalfa alfaalfa 3043 Jun 27 15:36 .bash_history
-rw-r--r-- 1 alfaalfa alfaalfa 220 Nov 17 2025 .bash_logout
-rw-r--r-- 1 alfaalfa alfaalfa 3771 Nov 17 2025 .bashrc
drwx------ 2 alfaalfa alfaalfa 4096 Nov 17 2025 .cache/
-rw-rw-r-- 1 alfaalfa alfaalfa 0 Jun 28 10:25 .motd_shown
drwxr-xr-x 3 alfaalfa alfaalfa 4096 Jun 27 11:14 .ollama/
-rw-r--r-- 1 alfaalfa alfaalfa 807 Nov 17 2025 .profile
-rw-r--r-- 1 alfaalfa alfaalfa 0 Nov 17 2025 .sudo_as_admin_successful
-rw------- 1 alfaalfa alfaalfa 726 Jun 3 12:57 .viminfo
drwxr-xr-x 22 alfaalfa alfaalfa 4096 Jun 28 10:46 dify/ ←これが出来てたらOK
3.環境ファイルを作成
ディレクトリを「./dify/docker」に移動
$ cd ./dify/doker
$ cp .env.example .env
とりあえず、中身はデフォルトのまま
4.Difyを起動
$ docker compose up -d
[+] up 118/118
✔ Image langgenius/dify-api:1.15.0 Pulled 94.3s
✔ Image redis:6-alpine Pulled 9.9s
✔ Image postgres:15-alpine Pulled 22.4s
✔ Image langgenius/dify-plugin-daemon:0.6.3-local Pulled 40.4s
✔ Image langgenius/dify-web:1.15.0 Pulled 23.9s
✔ Image langgenius/dify-sandbox:0.2.15 Pulled 17.5s
✔ Image semitechnologies/weaviate:1.27.0 Pulled 16.6s
✔ Image nginx:latest Pulled 10.2s
✔ Image busybox:latest Pulled 9.6s
✔ Image ubuntu/squid:latest Pulled 13.5s
✔ Network docker_ssrf_proxy_network Created 0.1s
✔ Network docker_default Created 0.1s
✔ Container docker-db_postgres-1 Healthy 18.3s
✔ Container docker-sandbox-1 Started 14.8s
✔ Container docker-web-1 Started 14.6s
✔ Container docker-ssrf_proxy-1 Started 15.0s
✔ Container docker-weaviate-1 Started 14.8s
✔ Container docker-redis-1 Started 14.8s
✔ Container docker-init_permissions-1 Exited 16.2s
✔ Container docker-worker_beat-1 Started 5.2s
✔ Container docker-api_websocket-1 Started 5.1s
✔ Container docker-plugin_daemon-1 Started 5.3s
✔ Container docker-api-1 Started 5.3s
✔ Container docker-worker-1 Started 5.3s
✔ Container docker-nginx-1 Started 5.1s
5.dockerコマンドで起動していることを確認
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
121ddc4d8bbe nginx:latest "sh -c 'cp /docker-e…" 32 seconds ago Up 29 seconds 0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp docker-nginx-1
12b19ae89940 langgenius/dify-api:1.15.0 "/bin/bash /entrypoi…" 32 seconds ago Up 29 seconds 5001/tcp docker-worker_beat-1
58fecaac19ef langgenius/dify-api:1.15.0 "/bin/bash /entrypoi…" 32 seconds ago Up 29 seconds 5001/tcp docker-api_websocket-1
42c0a422f9bd langgenius/dify-api:1.15.0 "/bin/bash /entrypoi…" 32 seconds ago Up 29 seconds (healthy) 5001/tcp docker-api-1
38f9abc1f865 langgenius/dify-api:1.15.0 "/bin/bash /entrypoi…" 32 seconds ago Up 29 seconds 5001/tcp docker-worker-1
3557051bf890 langgenius/dify-plugin-daemon:0.6.3-local "/usr/bin/tini -g --…" 32 seconds ago Up 29 seconds 0.0.0.0:5003->5003/tcp, [::]:5003->5003/tcp docker-plugin_daemon-1
3d3fbbb8843e postgres:15-alpine "docker-entrypoint.s…" 32 seconds ago Up 31 seconds (healthy) 5432/tcp docker-db_postgres-1
9c1630276c82 redis:6-alpine "docker-entrypoint.s…" 32 seconds ago Up 31 seconds (healthy) 6379/tcp docker-redis-1
44251aa3e6f0 busybox:latest "sh -c 'FLAG_FILE=\"/…" 32 seconds ago Exited (0) 31 seconds ago docker-init_permissions-1
406f68b4ba8e langgenius/dify-web:1.15.0 "/bin/sh ./entrypoin…" 32 seconds ago Up 31 seconds 3000/tcp docker-web-1
86e896e22873 langgenius/dify-sandbox:0.2.15 "/entrypoint.sh" 32 seconds ago Up 31 seconds (healthy) docker-sandbox-1
e411c0d56c35 semitechnologies/weaviate:1.27.0 "/bin/weaviate --hos…" 32 seconds ago Up 31 seconds docker-weaviate-1
49d07058aee7 ubuntu/squid:latest "sh -c 'cp /docker-e…" 32 seconds ago Up 31 seconds 3128/tcp docker-ssrf_proxy-1
0da547921d08 ghcr.io/open-webui/open-webui:main "bash start.sh" 2 weeks ago Exited (0) 4 days ago open-webui
6.ブラウザから「http://localhost」でアクセス
$ git clone https://github.com/langgenius/dify.git
Cloning into 'dify'...
remote: Enumerating objects: 451355, done.
remote: Counting objects: 100% (1144/1144), done.
remote: Compressing objects: 100% (780/780), done.
remote: Total 451355 (delta 709), reused 409 (delta 364), pack-reused 450211 (from 3)
Receiving objects: 100% (451355/451355), 394.81 MiB | 13.21 MiB/s, done.
Resolving deltas: 100% (330123/330123), done.
Updating files: 100% (13111/13111), done.
2.クローンされたことを確認
$ ll
total 40
drwxr-x--- 5 alfaalfa alfaalfa 4096 Jun 28 10:45 ./
drwxr-xr-x 3 root root 4096 Nov 17 2025 ../
-rw------- 1 alfaalfa alfaalfa 3043 Jun 27 15:36 .bash_history
-rw-r--r-- 1 alfaalfa alfaalfa 220 Nov 17 2025 .bash_logout
-rw-r--r-- 1 alfaalfa alfaalfa 3771 Nov 17 2025 .bashrc
drwx------ 2 alfaalfa alfaalfa 4096 Nov 17 2025 .cache/
-rw-rw-r-- 1 alfaalfa alfaalfa 0 Jun 28 10:25 .motd_shown
drwxr-xr-x 3 alfaalfa alfaalfa 4096 Jun 27 11:14 .ollama/
-rw-r--r-- 1 alfaalfa alfaalfa 807 Nov 17 2025 .profile
-rw-r--r-- 1 alfaalfa alfaalfa 0 Nov 17 2025 .sudo_as_admin_successful
-rw------- 1 alfaalfa alfaalfa 726 Jun 3 12:57 .viminfo
drwxr-xr-x 22 alfaalfa alfaalfa 4096 Jun 28 10:46 dify/ ←これが出来てたらOK
3.環境ファイルを作成
ディレクトリを「./dify/docker」に移動
$ cd ./dify/doker
$ cp .env.example .env
とりあえず、中身はデフォルトのまま
4.Difyを起動
$ docker compose up -d
[+] up 118/118
✔ Image langgenius/dify-api:1.15.0 Pulled 94.3s
✔ Image redis:6-alpine Pulled 9.9s
✔ Image postgres:15-alpine Pulled 22.4s
✔ Image langgenius/dify-plugin-daemon:0.6.3-local Pulled 40.4s
✔ Image langgenius/dify-web:1.15.0 Pulled 23.9s
✔ Image langgenius/dify-sandbox:0.2.15 Pulled 17.5s
✔ Image semitechnologies/weaviate:1.27.0 Pulled 16.6s
✔ Image nginx:latest Pulled 10.2s
✔ Image busybox:latest Pulled 9.6s
✔ Image ubuntu/squid:latest Pulled 13.5s
✔ Network docker_ssrf_proxy_network Created 0.1s
✔ Network docker_default Created 0.1s
✔ Container docker-db_postgres-1 Healthy 18.3s
✔ Container docker-sandbox-1 Started 14.8s
✔ Container docker-web-1 Started 14.6s
✔ Container docker-ssrf_proxy-1 Started 15.0s
✔ Container docker-weaviate-1 Started 14.8s
✔ Container docker-redis-1 Started 14.8s
✔ Container docker-init_permissions-1 Exited 16.2s
✔ Container docker-worker_beat-1 Started 5.2s
✔ Container docker-api_websocket-1 Started 5.1s
✔ Container docker-plugin_daemon-1 Started 5.3s
✔ Container docker-api-1 Started 5.3s
✔ Container docker-worker-1 Started 5.3s
✔ Container docker-nginx-1 Started 5.1s
5.dockerコマンドで起動していることを確認
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
121ddc4d8bbe nginx:latest "sh -c 'cp /docker-e…" 32 seconds ago Up 29 seconds 0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp docker-nginx-1
12b19ae89940 langgenius/dify-api:1.15.0 "/bin/bash /entrypoi…" 32 seconds ago Up 29 seconds 5001/tcp docker-worker_beat-1
58fecaac19ef langgenius/dify-api:1.15.0 "/bin/bash /entrypoi…" 32 seconds ago Up 29 seconds 5001/tcp docker-api_websocket-1
42c0a422f9bd langgenius/dify-api:1.15.0 "/bin/bash /entrypoi…" 32 seconds ago Up 29 seconds (healthy) 5001/tcp docker-api-1
38f9abc1f865 langgenius/dify-api:1.15.0 "/bin/bash /entrypoi…" 32 seconds ago Up 29 seconds 5001/tcp docker-worker-1
3557051bf890 langgenius/dify-plugin-daemon:0.6.3-local "/usr/bin/tini -g --…" 32 seconds ago Up 29 seconds 0.0.0.0:5003->5003/tcp, [::]:5003->5003/tcp docker-plugin_daemon-1
3d3fbbb8843e postgres:15-alpine "docker-entrypoint.s…" 32 seconds ago Up 31 seconds (healthy) 5432/tcp docker-db_postgres-1
9c1630276c82 redis:6-alpine "docker-entrypoint.s…" 32 seconds ago Up 31 seconds (healthy) 6379/tcp docker-redis-1
44251aa3e6f0 busybox:latest "sh -c 'FLAG_FILE=\"/…" 32 seconds ago Exited (0) 31 seconds ago docker-init_permissions-1
406f68b4ba8e langgenius/dify-web:1.15.0 "/bin/sh ./entrypoin…" 32 seconds ago Up 31 seconds 3000/tcp docker-web-1
86e896e22873 langgenius/dify-sandbox:0.2.15 "/entrypoint.sh" 32 seconds ago Up 31 seconds (healthy) docker-sandbox-1
e411c0d56c35 semitechnologies/weaviate:1.27.0 "/bin/weaviate --hos…" 32 seconds ago Up 31 seconds docker-weaviate-1
49d07058aee7 ubuntu/squid:latest "sh -c 'cp /docker-e…" 32 seconds ago Up 31 seconds 3128/tcp docker-ssrf_proxy-1
0da547921d08 ghcr.io/open-webui/open-webui:main "bash start.sh" 2 weeks ago Exited (0) 4 days ago open-webui
6.ブラウザから「http://localhost」でアクセス
2026年7月11日土曜日
Visual Stadio CodeとOllama
ローカル生成AIでOllama、Difyと来たが、Visual Studio CodeでOllamaを使ってチャット、タブ補完(インライン)、コードベース検索等が可能らしい。
Continueってのを使うみたい。
ちょっと調査が必要
2026/07/14:
Continueをインストールしました。
VS Code の拡張機能マーケットプレイスで "Continue" を検索してインストール。
躓いたことは、「config.json」が「config.yaml」に変更されてたこと。
Visual Stadio CodeはホストOSのWindows 11で、WSL2上のOllamaへの接続が上手く行かなかったところ 下記のapiBaseのところが「http://localhost:11434」だと接続出来なかった。
WSL2のIPアドレスに修正して正常に動作した。
「config.yaml」からの一部抜粋
- name: Qwen2.5-Coder 7B (Chat)
provider: ollama
model: qwen2.5-coder:7b
apiBase: http://172.17.91.165:11434
roles:
- chat
- autocomplete
Continueってのを使うみたい。
ちょっと調査が必要
2026/07/14:
Continueをインストールしました。
VS Code の拡張機能マーケットプレイスで "Continue" を検索してインストール。
躓いたことは、「config.json」が「config.yaml」に変更されてたこと。
Visual Stadio CodeはホストOSのWindows 11で、WSL2上のOllamaへの接続が上手く行かなかったところ 下記のapiBaseのところが「http://localhost:11434」だと接続出来なかった。
WSL2のIPアドレスに修正して正常に動作した。
「config.yaml」からの一部抜粋
- name: Qwen2.5-Coder 7B (Chat)
provider: ollama
model: qwen2.5-coder:7b
apiBase: http://172.17.91.165:11434
roles:
- chat
- autocomplete
AbletonからExtensions SDK
Extensions SDKについての詳しい説明は、DTMステーションさんのがとても詳しく書かれてるので、
ここでは、省略。
今話題のAbleton Live用ツール、Extensions SDK。実際どんなものなのか、素人でも使えるのか試してみた!
一連の作業で、npmを使用したりする箇所で、私は躓きました。
>npm -v
とかした際に、
> npm -v
npm : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Program Files\nodejs\npm.ps1 を読み込むことが できません。
詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ npm -v
+ ~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
これ、DTMやってる人で、結構同じように躓いたんじゃないでしょうか?
無意識でコマンドプロンプトを起動したつもりが、Windows Powershellだった場合、発生する場合があります。
素直に、コマンドプロンプトを起動して、そちらで実行しましょう。
いや、俺は、Windows Powershellを使うんだって人は、たぶん解決方法をご存じなんだと思います。
その場合は、管理者権限で、Windows Powershellを起動して、現在のセッション(ウィンドウ)のみ一時的に許可する以下のコマンドを使用してください。永続的にしたい人は、各自でぐぐってください。セキュリティ的には、一時的に許可する方が良いと思います。
> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
ここでは、省略。
今話題のAbleton Live用ツール、Extensions SDK。実際どんなものなのか、素人でも使えるのか試してみた!
一連の作業で、npmを使用したりする箇所で、私は躓きました。
>npm -v
とかした際に、
> npm -v
npm : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Program Files\nodejs\npm.ps1 を読み込むことが できません。
詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ npm -v
+ ~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
これ、DTMやってる人で、結構同じように躓いたんじゃないでしょうか?
無意識でコマンドプロンプトを起動したつもりが、Windows Powershellだった場合、発生する場合があります。
素直に、コマンドプロンプトを起動して、そちらで実行しましょう。
いや、俺は、Windows Powershellを使うんだって人は、たぶん解決方法をご存じなんだと思います。
その場合は、管理者権限で、Windows Powershellを起動して、現在のセッション(ウィンドウ)のみ一時的に許可する以下のコマンドを使用してください。永続的にしたい人は、各自でぐぐってください。セキュリティ的には、一時的に許可する方が良いと思います。
> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
Ableton LiveとMAX
私が使用してるDAWアプリは、Ableton Liveです。
Ableton LiveにもMax for Liveが提供されていて、それで、MAXの機能が使えるのですが、
より多くの機能を使うには、Cycling '74が提供してるMAXを別途使う必要があります。
「Maxは、独自のインタラクティブ・ソフトウェアを作るための無限に柔軟なスペースです。」とCycling '74のサイトにも書かれているように、とても楽しい開発ツールです。
世の中は、生成AIでプログラミングとかってよく書かれてますが、MAXのようなGUI上で、オブジェクトをつないでいくようなプログラミングは、生成AIを活用してソフトウェアを作成することが出来るんでしょうか?
Ableton LiveにもMax for Liveが提供されていて、それで、MAXの機能が使えるのですが、
より多くの機能を使うには、Cycling '74が提供してるMAXを別途使う必要があります。
「Maxは、独自のインタラクティブ・ソフトウェアを作るための無限に柔軟なスペースです。」とCycling '74のサイトにも書かれているように、とても楽しい開発ツールです。
世の中は、生成AIでプログラミングとかってよく書かれてますが、MAXのようなGUI上で、オブジェクトをつないでいくようなプログラミングは、生成AIを活用してソフトウェアを作成することが出来るんでしょうか?
登録:
投稿 (Atom)









