KO
|
EN
gitlite โ search
Search
#python
#java
#python3
#arduino
#golang
#machine-learning
#rust
#html
#flask
#javascript
#seismology
#nodejs
G2-Edit
โ 15
Open GitHub โ
Editor for the Nord G2 modular synthesiser
Download README (.md)
Explore Similar Repositories
AP33772S-Cpp
:
Hardware independent code for AP33772S. Originally written for PicoPD Pro
15khz
:
No description available.
openvocs
:
Official openvocs repository
BoiteAOutilsLegistique
:
๐ Application dรฉveloppรฉe pour simplifier l'analyse et la gestion des textes juridiques franรงais et europรฉens en utilisant des modรจles d'IA.
roll-your-own-edr
:
No description available.
// repository documentation
Was this content helpful?
โ 0
(0 ratings)
Select Rating:
โ
โ
โ
โ
โ
Submit Feedback
Recent Feedback
×
Download README
Do you want to download the
README.md
file for
G2-Edit
?
Download (.md)
# G2-Edit A macOS GUI editor for the Nord G2 modular synthesizer. Work in progress. Binary beta releases: https://github.com/chrispurusha/G2-Edit/releases If anyone is interested in helping, please drop me a line. Since I'm now incurring costs (I recently started using LLMs) which would be good to at least cover, I now have a Buy Me a Coffee page: https://buymeacoffee.com/chrispurusha Thanks for any donations! ## Installing a release Download the `.dmg` from the [releases page](https://github.com/chrispurusha/G2-Edit/releases). It contains two things: the editor, and an optional VST3 plug-in. The same instructions travel inside the `.dmg` as `Read Me First.txt`. Requirements: macOS 11.5 or later, Apple Silicon or Intel. ### The editor 1. Drag `G2 Editor.app` onto the Applications folder shown in the disk image window. 2. Clear the quarantine flag โ **do this after step 1**, because the command refers to the app in Applications: ``` xattr -dr com.apple.quarantine "/Applications/G2 Editor.app" ``` There is no paid Apple Developer membership behind this project, so the app is **not notarized**. macOS blocks the first launch and may claim the app is damaged โ it isn't; that is simply what macOS says about any app it cannot check with Apple. The command above prints nothing if it worked, and is needed once per install, including after each update. If you would rather not use Terminal: double-click the app, dismiss the warning, then open System Settings > Privacy & Security, scroll down and click **Open Anyway**. ### Keyboard and mouse Once it is running, **Help > Keyboard and Mouse** lists everything the modifier keys do โ Alt with the wheel to adjust the parameter under the pointer, Shift and Cmd for selection, Ctrl to drag a panel around, playing notes from the computer keyboard, and the rest. It is a floating panel, so it can be left open beside the patch while you try them. ### The VST3 plug-in (optional) `G2 Alike.vst3` **plays** a patch rather than editing one, which is where the name comes from. It is experimental: it implements around 17 module types, so many patches load without complaint and make no sound. The editor does not need it, and it does not need the editor โ skip this if you only want the editor. Copy it into your own VST3 folder and clear its quarantine flag too: ``` mkdir -p ~/Library/Audio/Plug-Ins/VST3 cp -R "/Volumes/G2-Edit <version>/G2 Alike.vst3" ~/Library/Audio/Plug-Ins/VST3/ xattr -dr com.apple.quarantine ~/Library/Audio/Plug-Ins/VST3/"G2 Alike.vst3" ``` In Finder instead: choose **Go > Go to Folder**, enter `~/Library/Audio/Plug-Ins/VST3`, and drag the plug-in in โ then still run the `xattr` line, or the host will refuse to load it without saying why. Rescan plug-ins in your host (most do it at startup). It appears as **G2 Alike** by Chris Purusha, as an instrument. It needs a VST3 host; it does not run on its own. ## Building ### Prerequisites Install the following via Homebrew (https://brew.sh): ``` brew install cmake autoconf automake libtool uncrustify ``` - **cmake** โ builds glfw and freetype - **autoconf / automake / libtool** โ builds libusb - **uncrustify** โ code formatter (optional, only needed when editing source) Xcode and its command line tools are also required: ``` xcode-select --install ``` ### 1. Clone with submodules The third-party libraries (glfw, freetype, libusb) are nested submodules inside SynthLib. The `--recurse-submodules` flag is required โ without it the build will fail. ``` git clone --recurse-submodules https://github.com/chrispurusha/G2-Edit.git ``` If you already cloned without `--recurse-submodules`: ``` git submodule update --init --recursive ``` ### 2. Update SynthLib (contributors / returning developers) SynthLib is a shared library submodule pinned to a specific commit. If SynthLib has been updated since you last pulled, advance the pin before building: ``` git submodule update --remote SynthLib git add SynthLib && git commit -m "Update SynthLib" ``` Do not manually copy files into the `SynthLib/` directory โ this will cause conflicts on the next update. ### 3. Build third-party libraries All commands run from the root of the cloned repository. **glfw:** ``` cmake -S SynthLib/ThirdParty/glfw -B SynthLib/ThirdParty/glfw/build \ -DBUILD_SHARED_LIBS=OFF \ -DGLFW_BUILD_DOCS=OFF \ -DGLFW_BUILD_EXAMPLES=OFF \ -DGLFW_BUILD_TESTS=OFF \ -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \ -DCMAKE_OSX_DEPLOYMENT_TARGET=11.5 cmake --build SynthLib/ThirdParty/glfw/build ``` **freetype:** ``` cmake -S SynthLib/ThirdParty/freetype -B SynthLib/ThirdParty/freetype/build \ -DBUILD_SHARED_LIBS=OFF \ -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \ -DCMAKE_OSX_DEPLOYMENT_TARGET=11.5 \ -DFT_DISABLE_BROTLI=ON \ -DFT_DISABLE_BZIP2=ON \ -DFT_DISABLE_HVF=ON \ -DFT_DISABLE_PNG=ON \ -DFT_DISABLE_ZLIB=ON cmake --build SynthLib/ThirdParty/freetype/build ``` **libusb:** ``` cd SynthLib/ThirdParty/libusb export CFLAGS="-arch arm64 -arch x86_64" export CXXFLAGS="-arch arm64 -arch x86_64" export LDFLAGS="-arch arm64 -arch x86_64" autoreconf -fi ./configure --disable-shared --enable-static make cd ../../.. ``` ### 4. Build with Xcode Open `G2 Editor.xcodeproj` and build normally. ### 5. Code formatting (optional) After editing source files, run from the repository root: ``` ./do-uncrustify ``` Note this covers `src/` and `SynthLib/src/` only โ **not** `vst3/`. ## Building the VST3 plug-in (experimental) The sound engine can also be built as a VST3 plug-in. It plays a `.pch2` file rather than talking to a G2, and it renders through the same `soundEngine.c` the application uses. ### Prerequisites Download the [VST3 SDK](https://github.com/steinbergmedia/vst3sdk) โ MIT licensed, so it is compatible with this project's GPLv3 โ and place it at `~/Documents/vst3sdk`, or point `VST3_SDK` at wherever you put it. Only its `pluginterfaces/` directory is compiled, plus one file from `public.sdk` that does nothing but instantiate interface IDs. No CMake is involved, and the SDK does **not** need building first. ### Build ``` ./do-vst3 ``` Writes `build/G2 Alike.vst3` โ universal (arm64 + x86_64), ad-hoc signed. To install it: ``` cp -R "build/G2 Alike.vst3" ~/Library/Audio/Plug-Ins/VST3/ xattr -dr com.apple.quarantine ~/Library/Audio/Plug-Ins/VST3/"G2 Alike.vst3" ``` As with the application, there is no paid Apple Developer membership behind this, so a host may refuse to load the bundle until its quarantine flag is cleared โ hence the second line. ### Which patch it plays **Temporarily, one patch is compiled into the plug-in** โ `PatchTestFiles/SimpleLead.pch2` by default, overridable at build time with `$G2_BUILTIN_PATCH`. `do-vst3` generates `vst3/g2BuiltInPatch.h` from it on every build, so the file is the source of truth and the header is build output. That is not just convenience. A host may sandbox a plug-in and deny it access to `~/Documents`, in which case a perfectly correct file path still produces silence โ and silence looks the same whatever caused it. Embedding removes that whole class of failure while the rest is being proven. The file-path machinery is still in the source behind it, unused for now, and will choose the patch in this order when it comes back: the path saved into the host project, then `$G2_VST3_PATCH`, then `~/Documents/G2-Edit/plugin.pch2`. Note that a host launched from the Dock does not inherit shell environment variables, so that middle option only ever applies to a scripted run. ### Controls The plug-in is called **G2 Alike**, since it plays a patch rather than editing one. It has its own editor window: a Cocoa panel with sliders for **Morph 1-8** โ the G2's own performance controls โ and an **Output Level** trim, plus a readout of which patch is loaded. All nine are exposed as automatable VST3 parameters as well, so a host can record them. That window is *not* a view of the patch. The application draws through GLFW, which owns its own window and cannot adopt the one a host provides, so the plug-in has a second and much smaller interface rather than a port of the editor's canvas. Pitch bend and mod wheel are not yet routed. ### What to expect The plug-in inherits exactly what the sound engine can do, which is a **subset** of the G2: around 17 module types. A patch built from anything else will load without complaint and render silence. `PatchTestFiles/SimpleLead.pch2` is known to work. See [THIRD_PARTY.md](./THIRD_PARTY.md) for open-source acknowledgments.