• Stars
    star
    157
  • Rank 238,399 (Top 5 %)
  • Language Max
  • License
    MIT License
  • Created over 8 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Tools, documentation, and reference implementation of a Max Package built using the Min-API.

Min-DevKit

CI

Tools, documentation, and reference implementation of a Max Package built using the Min-API.

Structure

There are two layers of material included in the Min-DevKit package.

  • min-devkit is an example package following current best-practices for package creation.
  • min-api is a folder within the devkit containing all of the support files you will need to compile an external object written in modern C++. This folder you will include in your own package's source folder.
  • min-lib contains building blocks, helper classes, and unit generators that may be useful in authoring C++ code for audio, video, and data processing.

Prerequisites

To build the externals in this package you will need some form of compiler support on your system.

  • On the Mac this means Xcode 10, 11 or 12 (you can get from the App Store for free).
  • On Windows this means Visual Studio 2017 or 2019 (you can download a free version from Microsoft). The installer for Visual Studio 2017 offers an option to install Git, which you should choose to do.

You will also need to install a recent version of CMake (version 3.19 or higher).

Building

  1. Clone the Min-DevKit from Github into Max's Packages folder. If you clone it elsewhere you will need to make an alias to it in your Packages folder.
    • The Packages folder can be found inside of your Max 8 folder which is inside of your user's Documents folder.
    • It is recommended to rename the package so as not to conflict with the legacy Max Package Manager version. (Otherwise you'll get conflict errors suggesting that you replace your local version with one on the PM server.)
    • Also make sure you clone recursively so that all sub-modules are properly initiated.
    • As a single command: git clone https://github.com/Cycling74/min-devkit.git --recursive my-min-devkit
  2. In the Terminal or Console app of your choice, change directories (cd) into the Min-Devkit folder you cloned/installed in step 0.
  3. mkdir build to create a folder with your various build files
  4. cd build to put yourself into that folder
  5. Now you can generate the projects for your choosen build environment:

Mac

Run cmake -G Xcode ..

Next run cmake --build . or open the Xcode project from this "build" folder and use the GUI.

Note: you can add the -j4 option where "4" is the number of cores to use. This can help to speed up your builds, though sometimes the error output is interleaved in such a way as to make troubleshooting more difficult.

If you are running on a Mac M1 machine, you will likely see an error cannot be loaded due to system security policy when loading your externals in Max. To resolve this, you can ad-hoc codesign your external with codesign --force --deep -s - myobject.mxo.

Windows

You can run cmake --help to get a list of the options available. Assuming some version of Visual Studio 2019, the commands to generate the projects will look like this:

cmake -G "Visual Studio 16 2019" ..

Or using Visual Studio 2017 it will look like this:

cmake -G "Visual Studio 15 2017 Win64" ..

Having generated the projects, you can now build by opening the .sln file in the build folder with the Visual Studio app (just double-click the .sln file) or you can build on the command line like this:

cmake --build . --config Release

Max 8.2 Update

The Min-DevKit was updated on August 5, 2021 to support Apple silion and unify base headers with the Max SDK. There may be some modifications required to existing projects in order to integrate this update. See the SDK 8.2 update readme or the Max 8.2 SDK Update Overview video for further details. For support with this update please use the Max developer forum.

Unit Testing

On the command line you can run all unit tests using Cmake:

  • on debug builds: ctest -C Debug .
  • on release builds: ctest -C Release .

Or you can run an individual test, which is simply a command line program:

  • cd ..
  • cd tests
  • mac example: ./test_dcblocker_tilde -s
  • win example: test_dcblocker_tilde.exe -s

Or you can run them with your IDE's debugger by selecting the "RUN_TESTS" target.

Continuous Integration

Continuous Integration (CI) is a process by which each code check-in is verified by an automated build and automated tests to allow developers to detect problems early and distribute software easily.

The Min-DevKit project models CI using Github Actions.

Additional Documentation

Contributors / Acknowledgements

Support

For support, please use the developer forums at: http://cycling74.com/forums/

More Repositories

1

n4m-examples

Repository of examples using Node For Max authored by Cycling '74
Max
317
star
2

max-sdk

Software Development Kit for Max by Cycling '74
HTML
231
star
3

gen-plugin-export

Build audio applications and plugins with gen~
C++
210
star
4

miraweb

JavaScript
132
star
5

cv.jit

A collection of max/msp/jitter externals, abstractions and help files for computer vision applications originally authored by Jean-Marc Pelletier.
Max
125
star
6

percolate

A collection of synthesis, signal processing, and image processing objects originally authored by Dan Trueman and Luke Dubois
Max
115
star
7

max6-sdk

Max 6 Software Development Kit
C
107
star
8

rnbo.example.webpage

Running a RNBO patch in the browser, using a local static web server
JavaScript
88
star
9

xebra.js

Xebra.js connects Max to the browser, and the browser to Max.
81
star
10

n4m-core-examples

Basic examples and core techniques for using Node For Max
Max
69
star
11

n4m-community

Repository of community resources for Node For Max
63
star
12

rnbo.example.juce

Template project for creating RNBO and JUCE based Desktop applications and/or Audio Plugins
Max
62
star
13

gen-workshop

Materials for the gen~ workshop and presentation at GRAME
C++
59
star
14

min-api

High-level C++-language application programming interface for Max
C++
49
star
15

median

Rust wrappers for interacting with the Max SDK.
Rust
47
star
16

max-devkit

Tools, documentation, and reference implementation of a Max Package built using the Max-API.
Max
45
star
17

max-test

Automated Test Harness for Max by Cycling '74
Max
38
star
18

max-api

Low-level C-language application programming interface for Max
C++
35
star
19

genPi

gen~-exported code on Raspberry Pi
C++
25
star
20

rnbo.oscquery.runner

RNBO runner with OSCQuery interaction/discovery interface
C++
18
star
21

max-mxj

Java support for Max by Cycling '74
Max
15
star
22

rnbo.unity.audioplugin

RNBO Adapter for Unity's Native Audio Plugin
C++
14
star
23

rnbo.example.vcvrack

An example of using RNBO exports in VCV Rack plugins
Max
14
star
24

genBela

gen~ code export for Bela (Beaglebone Black + Bela Cape -- bela.io)
C++
14
star
25

max-sdk-base

Headers, libs, and scripts for Max external development
C
13
star
26

xebra-communicator

XebraCommunicator is the underlying communication package for xebra.js, which provides Web enabled communication with Max.
13
star
27

rnbo.example.supercollider

An example of using RNBO exports in SuperCollider UGens
Max
13
star
28

ml-ddsp

Max
11
star
29

jit.mo

jit.mograph package
Max
11
star
30

RNBOSynthBuildingBlocks

Max
10
star
31

max-air-guitar

Strum on your air guitar in Max
Max
10
star
32

adc2021-workshop

Materials for the ADC 2021 workshop "Getting Max Out of Max with gen~"
Max
10
star
33

node-music-theory

Node For Max Music experiments
Max
10
star
34

rnbo-runner-panel

Web interface to the RNBO runner
TypeScript
9
star
35

rnbo-adc-workshop

How to use RNBO–A workshop for ADC 2022
C++
9
star
36

ease

Max
8
star
37

n4m-max-api

Placeholder / Stub Node package for users that accidentally install "max-api" when attempting to use the dynamic "max-api" within [node.script]
JavaScript
7
star
38

max5-sdk

Max 5 Software Development Kit
C
6
star
39

filter

Max
6
star
40

zero

Zero-configuration networking for Max
C
5
star
41

max-package-template

A minimal template for building a package with the Max SDK.
Max
5
star
42

codegen-eng-blog

Source code for the engineering blog pilot
TypeScript
5
star
43

n4m-recipes

4
star
44

eslint-config-c74

Packaged configuration of ESLint Rules according to Cycling '74 guide
TypeScript
4
star
45

mock

A mocked/stubbed library for linking unit tests of Max externals built with the Min-DevKit.
C++
3
star
46

node-sqlite3

PLpgSQL
2
star
47

min-package-template

A minimal template for building a package with the min-api.
Max
1
star
48

rnbo.example.command-line

Very simple command line application using RNBO
C++
1
star