MyGo 云音乐
用 Go 与 MyGo 写成的第三方网易云音乐桌面客户端。原生界面,没有 WebView;边下边播,无损与 Hi-Res,逐字歌词与「律动」,刘海播放器。
Translation pending
playground for writing VSTs to use in fl studio
Translation pending
MediaC++ · CMakeGitHub @Ricardo-Silva91OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Loading the full README. The saved excerpt is shown below.
A collection of VST3 plugins built with JUCE and CMake, compiled in the cloud via GitHub Actions. No local Xcode or Visual Studio required.Read the full README ↗A collection of VST3 plugins built with JUCE and CMake, compiled in the cloud via GitHub Actions. No local Xcode or Visual Studio required.
| Plugin | Description | Knobs | Download |
|---|---|---|---|
reverse_reverb | Reverses audio in a window and applies reverb for a swell effect | Room Size, Wet Mix, Window (ms) | Latest release |
pitch_wobble | Applies subtle random pitch deviations for an organic, human feel | Depth (cents), Rate (Hz), Smoothness | Latest release |
through_the_wall | Simulates sound passing through a wall with LPF, reverb, and comb filtering | Wall Thickness, Room Bleed, Wall Rattle, Distance | Latest release |
drum_smash | Lo-fi drum character processor with saturation, bit crushing, compression and reverb | 21 parameters across 8 sections | Latest release |
break_scientist | Detects drum hits and displaces them in time (swing, humanize, drag) with velocity variance | 6 parameters | Latest release |
choir_box | Phase-vocoder harmonizer: up/down pitch-shifted voices with detune spread, panning and a saturation stage | 11 parameters | Latest release |
lizard_suite | Four lo-fi modules in series: Dust (sampler grit) → Chew (tape dropouts) → Murk (dark reverb) → Vinyl (noise bed) | 14 parameters across 4 modules | Latest release |
lizard_tape | Lo-fi tape/cassette: asymmetric saturation → wow & flutter → HF roll-off → program-dependent hiss | Drive, Bias, Wow Depth/Rate, Flutter Depth/Rate, Tone, Hiss, Mix, Output | Latest release |
Each release page contains a Mac (.zip with .vst3 bundle) and Windows (.zip with .vst3 folder) download. See Installing a Built Plugin below.
The project site (plugin pages, install guide and the install_lizard_vst.py installer script) lives in docs/ and is deployed to GitHub Pages by the Deploy Pages workflow on every push to main that touches docs/.
vst_playground/
├── JUCE/ ← JUCE as a git submodule (shared by all plugins)
├── shared/ ← editor/processor helpers used by every plugin
├── <plugin_name>/ ← one folder per plugin (see table above)
│ ├── Source/
│ │ ├── PluginProcessor.h/.cpp
│ │ ├── PluginEditor.h/.cpp
│ │ └── DSP/ ← JUCE-free DSP cores (newer plugins)
│ ├── test/ ← standalone g++ tests for the DSP cores
│ └── CMakeLists.txt
├── tests/ ← Catch2 tests for every processor
├── docs/ ← GitHub Pages site
└── .github/
└── workflows/
├── build.yml ← builds + releases changed plugins (or one, manually)
├── tests.yml ← runs all tests on push / PR
└── pages.yml ← deploys docs/ to GitHub Pages
Each plugin is a self-contained folder with its own CMakeLists.txt. JUCE lives once at the repo root as a submodule and is referenced by all plugins via a relative path (../JUCE).
JUCE is included as a git submodule rather than being downloaded per-plugin via FetchContent. This keeps builds faster and avoids redundant clones.
git clone --recurse-submodules https://github.com/Ricardo-Silva91/vst_playground.git
git submodule update --init --recursive
cd JUCE
git checkout 7.0.9 # or whichever tag you want
cd ..
git add JUCE
git commit -m "chore: bump JUCE to 7.0.9"
Instead of FetchContent, each plugin uses:
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../JUCE JUCE_build)
This means all plugins share the same JUCE source. GitHub Actions checks out the submodule automatically (see workflow notes below).
Builds are triggered in two ways:
main (automatic)Every push to main (including a merged PR) builds and releases each plugin whose folder changed in that push, for both platforms:
pitch_wobble/ builds pitch_wobbleshared/ or a JUCE submodule bump builds every plugindocs/, tests/, …), build nothingThe commit message doesn't matter, though Conventional Commits scopes like fix(pitch_wobble): … are still a good habit.
Go to Actions → Build VST → Run workflow on GitHub. You'll get a dropdown to pick which plugin to build and which platforms to target.
Download the zip for your platform from the plugin's release page (links in the table above).
*_Mac.zip — this preserves the macOS bundle structure.vst3 bundle to:
/Library/Audio/Plug-Ins/VST3/
sudo xattr -cr /Library/Audio/Plug-Ins/VST3/YourPlugin.vst3
*_Windows.zip artifact.vst3 folder to:
C:\Program Files\Common Files\VST3\
#include <JuceHeader.h> causes build failureProjucer-style includes don't work with CMake. Every source file must include JUCE modules directly:
// ❌ Don't use this
#include <JuceHeader.h>
// ✅ Use direct module includes instead
#include <juce_audio_processors/juce_audio_processors.h>
#include <juce_dsp/juce_dsp.h>
GitHub Actions' upload-artifact re-zips files and destroys the .vst3 bundle's internal directory structure. The fix is to manually zip the bundle before uploading:
- name: Zip VST3 bundle
run: |
cd build
zip -r MyPlugin.vst3.zip MyPlugin.vst3
- uses: actions/upload-artifact@v4
with:
path: build/MyPlugin.vst3.zip # upload the zip, not the raw bundle
Then unzip locally before installing (see Installing section above).
my_plugin/)Source/PluginProcessor.h, Source/PluginProcessor.cpp, Source/PluginEditor.h, Source/PluginEditor.cppCMakeLists.txt — reference JUCE as ../JUCE:
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../JUCE JUCE_build)
options: list in .github/workflows/build.yml:
options:
- reverse_reverb
- pitch_wobble
- my_plugin ← add this
main (or merge a PR) — the new folder triggers its first build.https://github.com/Ricardo-Silva91/vst_playground/releases/tag/my_plugin-latest
Add a download link for it in the Plugins table above.