omnimax

Max wrapper for omni.


Keywords
dsl, dsp, audio, sound, maxmsp, omni
License
MIT
Install
nimble install omnimax@#0.2.0

Documentation

omnimax

Compile omni code into Max objects.

Requirements

  1. nim
  2. git
  3. cmake
  4. gcc (Windows) / clang (MacOS)

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 and cmake:

brew install nim cmake

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:

On Windows, the MinGW's gcc compiler needs also to be installed.

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, git, cmake, make and mingw:

choco install nim git cmake make mingw -y

Installation

To install omnimax, simply use the nimble package manager (it comes bundled with the nim installation).The command will also take care of installing omni:

nimble install omnimax -y

Usage

omnimax ~/.nimble/pkgs/omni-0.4.1/examples/OmniSaw.omni

Max object interface

  1. ins and outs represent audio inlets / outlets.

  2. params and buffers can be set via messages and attributes. Consider this example:

    MyOmniObject.omni

    params:
        freq
        amp
    
    buffers:
        buf1
        buf2    
    
    ... implementation ...
    

    These params and buffers can be initialized on object instantiation. All numeric values will initialize params, and all symbol values will initialize buffers:

     [ myomniobject~ 440 foo 0.5 bar ]
    

    In the previous example, freq == 440 / amp == 0.5 / buf1 == foo / buf2 == bar.

    Another option is to use the attribute syntax:

     [ myomniobject~ @freq 440 @amp 0.5 @buf1 foo @buf2 bar ]
    

    One can also use name $1 and set name $1 messages to set the values of params and buffers at runtime:

     ( set freq 440 ) == ( freq 440 )
     ( set amp 0.5 )  == ( amp 0.5 )
     ( set buf1 foo ) == ( buf1 foo )
     ( set buf2 bar ) == ( buf1 bar )
    

    Finally, all params and buffers support the attrui object.

Website / Docs

Check omni's website.