Git Product home page Git Product logo

synthvr-modules's Introduction

SynthVR Modules

This is the open source repository for modules in SynthVR. The main outcome is a native library that can be compiled for Windows, MacOS and Android.

The plugin exposes an API to the Unity VR app which can manage native processors, parameters and internal processor state. This API is specified in ProcessorAPI.h. Most processors wrap the JUCE AudioProcessor and are created by inheriting from BaseProcessor which provides the basic SynhVR-specific utilities needed.

Development strategy

This repository uses the git flow branching strategy. That means that any new development should happen through feature branches (feature/your-new-feature).

When a feature is ready to be merged, submit it as a pull request. Once it has been reviewed, it will be merged to develop.

Building the plugin

  • Download the ROLI Projucer
  • Open SynthVR-Native.jucer. This file contains the configuration for building the native plugin.
  • For editing on Windows, export the project using the Visual Studio exporter
  • To build the plugin, select the appropriate exporter and build the plugin using that IDE. You are typically able to select whether it should use a Debug or Release configuration from the IDE.

Implementing a new native processor

  • Create a new header and implementation file combo using the Projucer.
  • Inherit the processor from BaseProcessor within the namespace synthvr. See FreeverbProcessor.h for an example.
  • Implement your processor. You can use any available JUCE functionality or include additional open source code that will help you in your DSP task. Please be mindful of CPU usage as many SynthVR users are on Oculus Quest, which is a relatively "low-end" Android device.
  • The processor will likely need to implement prepareToPlay and processBlock. prepareToPlay will be called by the SynthVR host when a processor is added to the processing graph, or when the audio configuration has changed. processBlock is called at every audio callback and will supply an audio buffer with the number of channels specified by your processor.
  • When the processor is ready, add it to the ProcessorID enum and the CreateProcessorFromID in ProcessorFactory.h. This exposes your processor so that Unity can instantiate it using an integer ID. (Improvement suggestions for this welcome!)
  • Build the plugin. The processor is now ready to be used in a SynthVR module!

To do

  • Repurpose SynthVR-Native for this repo
  • Implement test tool for native module code
  • Implement dynamic module specification
  • Open up to 3rd party modules through submoduling + build scripts
  • Research wrapping VCV rack modules

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.