Skip to content

Latest commit

 

History

History
67 lines (44 loc) · 3.43 KB

README.md

File metadata and controls

67 lines (44 loc) · 3.43 KB

ViGraph Server

This is the "server side" of the ViGraph system, containing the core 'engine' and modules. The engine has little (Windows) or no (Linux) user interface itself - all the user interaction is through a Web application (see vg-ui-web). It's written in C++14 and is currently ported to Linux (with Debian and RPM packaging) and Windows (through cross-compilation with MinGW. I'm currently working on a WASM build which will allow the whole thing to run in a browser!

ViGraph was created in 2017 by me, Paul Clark, initially to create interactive laser displays for my company Greenwave Interactive. Alex Woods at my other company Packet Ship significantly improved the core engine dataflow system and added the audio and MIDI modules in 2019/20. I published the whole of ViGraph under AGPLv3 in July 2020.

What's it for?

Briefly, ViGraph is a platform for creating complex systems by plugging together simple modules, either graphically, or in a simple text language (VG). It started as a primarily creative platform for audio and laser graphics, but it is expanding its horizons all the time...

It currently has modules for:

  • Audio synthesis
  • Vector graphics, including laser output
  • Bitmap graphics, including LED output
  • MIDI
  • DMX lighting
  • IoT and sensor interfaces
  • Maths and physics simulation
  • Time series data processing and visualisation

You can find out more about ViGraph (with prettier pictures) at vigraph.com

Building ViGraph

The ViGraph server is built on top of my ObTools libraries, and uses its build system. See the README there for details. You don't need to check out ObTools separately, it's a submodule of vg-server, so after cloning this repository you just need to:

    $ git submodule init
    $ git submodule update

The complete build process is therefore:

    $ git clone [email protected]:vigraph/vg-server.git
    $ cd vg-server
    $ git submodule init
    $ git submodule update
    $ obtools/build/init.sh -t release               -- or -t debug if you are developing
    $ tup

Dependencies

Building the Linux version requires a standard build system with clang++, and tup. The latest Debian (10) & Ubuntu (20.04) have Tup packaged, otherwise you can build it yourself from the Tup sources.

To build all the modules, you will require:

  • SDL2 (libsdl2-dev)
  • SDL-Image2 (libsdl2-image-dev)
  • ALSA (libasound2-dev)
  • SoundTouch (libsoundtouch-dev)
  • FreeType (libfreetype-dev)
  • OLA (libola-dev)
  • Mosquitto (libmosquittopp-dev)
  • QT5 (qtbase5-dev, libqt5webkit5-dev) (for experimental desktop app)
  • plus all the dependencies to build ObTools

Contributions

Yes please!

If it's a bug-fix, test or tidy, please just go ahead and send a PR. If it's anything major, please discuss it with me first...

I ask all contributors to sign a standard, FSF-approved Contributor License Agreement to make the project easier to manage. You can sign it when you generate a PR, or in advance here. You only have to do this once for all of ViGraph and ObTools.

Thanks!

Paul