Skip to content

chrispurusha/G2-Edit

Repository files navigation

G2-Edit

A macOS GUI editor for the Nord G2 modular synthesizer. Work in progress.

Binary beta releases: https://github.com/chrispurusha/G2-Edit/tags

If anyone is interested in helping, especially with the GUI side of things, 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!

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=15.1
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=15.1 \
  -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

Todo

Many mechanisms yet to implement — including copying, etc. 200+ modules to test. Graphical representation of filter curves / oscillator waves etc.

See THIRD_PARTY.md for open-source acknowledgments.

About

Editor for the Nord G2 modular synthesiser

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages