Omni

DSL for low-level audio programming.
Alternatives To Omni
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Cuda.jl932
19 hours agoJuly 16, 2022267otherJulia
CUDA programming in Julia.
Zigmod449
6 days ago24mitZig
📦 A package manager for the Zig programming language.
Omni158
10 months agoMarch 16, 202358mitNim
DSL for low-level audio programming.
Etlas60
3 years ago25Haskell
Etlas, the build tool and package manager for the Eta programming language
Tutara27
2 months ago3apache-2.0Rust
Tutara programming language.
Merchant11
3 years agoMercury
A package manager for the Mercury logic programming language.
Rectx5
2 months ago9gpl-3.0Go
[WIP] The powerful little project manager for the ReCT programming language!
Probzelus Haskell3
3 years agobsd-3-clauseHaskell
A probabilistic programming language for streaming inference
Cameroonpc3
7 years ago1CSS
The website for the Cameroon Programming Contest
Hpm2
6 years agoJavaScript
[H]ook [P]ackage [M]anager - Collection of binaries for installing packages using various package managers for various programming languages.
Alternatives To Omni
Select To Compare


Alternative Project Comparisons
Readme
Omni logo

Build Status (master)

Buy Me A Coffee

Omni is a cross-platform DSL (Domain Specific Language) for low level audio programming. It aims to be a new, expressive and easy to use programming language to code audio algorithms in.

Omni leverages nim and C to compile code to self-contained static or shared libraries that can then be loaded and used anywhere. So far, two wrappers have already been written to compile omni code to SuperCollider UGens (omnicollider), or Max 8 objects (omnimax).

Also, a basic syntax highlighting VSCode plugin is available by simply looking for omni in the Extensions Marketplace.

Requirements

  1. nim
  2. git

Linux

Refer to your distribution's package manager and make sure you've got nim and git installed.

MacOS

To install dependencies on MacOS it is suggested to use a package manager like brew.

After brew has been installed, run the following command in the Terminal app to install nim:

brew install nim

Then, make sure that the ~/.nimble/bin directory is set in your shell $PATH. If using bash (the default shell in MacOS), you can simply run this command:

echo 'export PATH=$PATH:~/.nimble/bin' >> ~/.bash_profile

Windows:

To install dependencies on Windows it is suggested to use a package manager like chocolatey.

After chocolatey has been installed, open PowerShell as administrator and run this command to install nim and git:

choco install nim git -y

Installation

To install omni, simply use the nimble package manager (it comes bundled with the nim installation):

nimble install omni -y

Usage

Once you've installed omni, the omni executable will be placed in your ~/.nimble/bin folder.

Run omni -h to get help on all the available flags.

When running the omni compiler, the output is either a static or shared library (depending on the --lib flag). Along with it, an omni.h file (depending on the --exportHeader flag) containing all the callable functions in the shared/static library will be exported.

omni ~/.nimble/pkgs/omni-0.4.1/examples/OmniSaw.omni -o:./

This command will compile an antialiased sawtooth oscillator (part of the examples) to a shared library (libOmniSaw.so/dylib/dll), together with a header file (omni.h), in the current folder.

Sine oscillator example

Sine.omni

ins:  1
outs: 1

init:
    phase = 0.0

sample:
    incr  = in1 / samplerate
    out1  = sin(phase * TWOPI)
    phase = (phase + incr) % 1.0

To compile it, simply run:

omni Sine.omni

Website / Docs

Check omni's website.

Popular Programming Projects
Popular Package Manager Projects
Popular Learning Resources Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Programming
Dsl
Nim
Package Manager