Skip to content
Vult is a transcompiler well suited to write high-performance DSP code
OCaml Shell C++ C Standard ML Makefile
Branch: master
Clone or download
Latest commit eeaf896 Sep 8, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.vscode Fixes project settings Jun 18, 2017
examples Fixes the web page example Mar 31, 2019
other Adds a README file for the examples folder Jul 22, 2017
runtime Adds initial support for combined fixed and floating point code Feb 15, 2019
scripts Tries to build the examples in windows (reverted from commit 1717ceb) Aug 23, 2017
src Updates all the files with the formated code Aug 31, 2019
test Updates all the files with the formated code Aug 31, 2019
.clang-format
.gitignore Removes the NodeIO functions since they don't seem necessary with js_… Jul 30, 2017
.merlin Removes the dependency on ollvm Sep 24, 2017
.ocamlformat Automatically formats all the files using ocamlformat Aug 31, 2019
.ocamlinit Adds initial version of the new interpreter Nov 13, 2016
.ocp-indent Automatically formats all the files using ocamlformat Aug 31, 2019
.travis-ocaml.sh Updates the ocaml ci scripts Jan 26, 2019
.travis-vult.sh Do not compile the puredata tests Oct 24, 2018
.travis.yml Keeps the artifacts so they can be deployed Mar 31, 2019
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md Aug 3, 2017
LICENSE Create LICENSE Aug 3, 2017
Makefile Fixes the make file Sep 8, 2019
README.md Remove waffle.io Aug 31, 2019
_tags Removes the dependency on ollvm Sep 24, 2017
appveyor-vult.sh Tries to avoid opam questions Apr 18, 2019
appveyor.yml Updates the version Mar 31, 2019
myocamlbuild.ml Makes possible to generate coverage report Jun 27, 2017

README.md

Vult

Build Status Build status Coverage Status

Vult is a simple and powerful language to program high-performance algorithms that may run in small microprocessors or microcontrollers. Vult is specially useful when programming Digital Signal Processing (DSP) algorithms like audio effects or synthesizers.

The Vult compiler is a transcompiler, which takes Vult code and produces plain C/C++ code that can be compiled in any platform with a C/C++ compiler, for example: Arduino or Teensy boards. Vult can also generate JavaScript that can be run directly in the browser or C/C++ that can be compiled as Pure Data externals. Code written in Vult has freedom.

Check out the documentation and tutorial in http://modlfo.github.io/vult/ or take a look at the Wiki.

Basics

To generate C/C++ code with floating point arithmetic you have to execute vult as follows:

$ vultc -ccode infile.vult -o outfile

This will produce the files outfile.h and outfile.cpp. In order to compile and link these files you need to include in your project the files runtime/vultin.h and runtime/vultin.cpp.

To generate code with fixed point arithmetics you need to execute:

$ vultc -ccode -real fixed infile.vult -o outfile

Fixed point arithmetics are performed in q16 format; 16 bits for the integer part and 16 for the decimal.

Vult provides a few templates; for example to generate objects compatible with the Teensy Audio Library or Pure Data externals.

You can check these repositories for examples:

In the Wiki

Credits

Vult is maintained by: Leonardo Laguna Ruiz with the help of Carl Jönsson and Johan Rhodin

Logo design by: John Klimt https://www.facebook.com/JohnKlimt

Contact

If you want to receive notifications for future development of this project you can join to the google group http://groups.google.com/d/forum/vult

E-mail: modlfo@gmail.com

Installing

There are three flavors the Vult compiler:

Installing with npm

You need to have node.js and npm installed.

$ npm install vult -g

This will install provide vultc command in your path. Vult is updated frequently, you can use the same command to update Vult.

The native executables can be downloaded from the releases page.

To install the node.js library use:

$ npm install vultlib

Embedding in a Web page

The compiler can be embedded in a web page providing and it provides all the functionality.

<script src="https://modlfo.github.io/vult/javascripts/vultweb.js"></script>

For an example check:

https://github.com/modlfo/vult-webaudio

Compile from Source

Requirements

  • Ocaml compiler >= 4.03

Ocaml Libraries

  • containers >= 1.2
  • ppx_deriving >= 4.1
  • pla >= 1.1
  • result >= 0.99
  • [Optional] ounit >= 2.0 (to run the tests)
  • [Optional] js_of_ocaml >= 3.0 (to build the web functions)

Installing the tools

The simplest way to instal the requirements is with OPAM (https://opam.ocaml.org/)

$ opam switch 4.04.2
$ opam install containers ppx_deriving pla result

Optionally to run the tests and building the web functions:

$ opam install ounit js_of_ocaml js_of_ocaml-ppx

Compiling Vult

To compile the native executable:

$ make

Compile the node.js code:

$ make jscompiler

Running tests (Linux and macOS):

$ make test
You can’t perform that action at this time.