RNBO 1.4.0 Released
We are excited to announce the release of RNBO 1.4.0. This release focuses on the RNBO Runner and Web Interface, longer term bug fixes, a handful of new objects, and improvements to existing features.
You can download the update now via the Max Package Manager. The latest Max 9.0.7 release is recommended for use with RNBO 1.4.0.
Here is an overview of some of the work in this release, as well as a comprehensive changelog including all new features and bug fixes.
RNBO 1.4.0 Feature Overview
RNBO Runner / Web Interface
Stream recording: record multichannel audio to a file within the runner
Buffer saving: save buffer contents to an audio file
OSC Mapping: addresses no longer restricted, can map OSC to/from the runner interface itself
Improved naming conventions
Parameter Views: create subsets of parameters from multiple devices/instances, sorted as you please
Graph Action Menu: save and reload improvements
Auto-layout: automatically adjust graph layout
MIDI Mappings View: list all MIDI mapped parameters and ability to remove or manually edit a mapping.
Resources View: manage graphs, patchers and audio files on the runner
Graphs tab: configure the Startup Graph (new, empty graph, last state, or a specific graph)
Runner / Runner Dependency Updates: decoupled from RNBO Package releases and can be independently updated.
Binary Blobs in Presets
buffer, data, list.reg, list.store: contents can now be saved in a preset
param~ Improved Feature Parity with param
The functionality of these two objects are more aligned
codebox Improvements
Lists can be initialized with size, fe: new List(74)
consts can be used in other consts to set their values
nocache setting to disable cache
rnbo.remote
Max Param Connect support
RNBO Subpatchers
#0 can be used for creating unique IDs.
Transport
Improved lock behavior for phasor~ and metro (both in Max and in exported targets)
New Objects
twist~ operator like the Max object to make curved ramps.
presetbang object to report when a preset is being taken and applied.
filtercoeff is now an operator and can be used in codebox / codebox~
Minimal Export
A heavily reduced, engine-less C++ code export that is targeted to enable RNBO to run on small “bare metal” targets like Arduino Giga, Electrosmith Daisy and similar. Here is the documentation: https://rnbo.cycling74.com/learn/minimal-export
Comes with these example projects:
RNBO Minimal Export for Bare Metal Targets: https://github.com/Cycling74/rnbo.example.baremetal
Example of how to use RNBO code on the Arduino GIGA R1: https://github.com/Cycling74/rnbo.example.giga
Example of how to use RNBO code on the Daisy Audio Platform: https://github.com/Cycling74/rnbo.example.daisy
Enables the adaption of the Electrosmith oopsy platform for RNBO which is currently in beta testing: https://github.com/Cycling74/oopsy/tree/stb/RNBO
RNBO 1.4.0 Changelog
RNBO New Features
buffer / data: meta attribute for JSON formatted string to use in exported code
buffer / data: preset support
C++ Target: can set a fixed sample rate in export sidebar
C++ Target: lookup table sizes conform to number size (32bit vs. 64bit)
C++ Target: Minimal Export option for bare metal targets
codebox: consts can be used in other consts
codebox: lists can be initialized with size, fe: new List(74)
codebox: nocache setting to disable cache
feedback~: reset method
filtercoeff: event version
gate~: ramptime attribute
groove~: jumpto attribute
latch: init attribute to specify initial held value
list.reg / list.store: preset support
message: storeempty attribute to store empty list
multibuffer~: outputs current buffer info a la buffer~
noise: seed attribute
noteout: argument sets channel
param~: improved feature parity with param object
Pound Sign Arguments: #0 unique ID implementation a la Max
presetbang: new object that bangs before capture and after recall
Raspberry Pi Target Export Sidebar: 'Run on Selected Target' button in bottom toolbar
Raspberry Pi Target Export Sidebar: prompt to update the update service & other dependencies
Raspberry Pi Target: warn on patcher overwrite
RNBO Export: release callbacks are called in the Engine destructor
RNBO: improved error reporting & logging
rnbo.remote: Param Connect support
rnbo~: exportstatus attribute
twist~: operator a la Max object
RNBO Fixed Bugs
buffer / data: improved error reporting when name is not set
buffer / data: only re-allocate when necessary when setting size
buffer~: ms alias for sizems works
codebox: allow void returns
codebox: arrays / buffers can reference themselves in assignment
codebox: compiles when param is connected to in2
codebox: dsp operators appropriately initialized
codebox: fixed array notation for multi-channel buffers
codebox: fixed crash and functionality of fixed arrays
codebox: fixed crash setting list length
codebox: fixed crash when function returns something different than signature
codebox: improved inlet function return errors
codebox: not initialized with bang on startup
codebox~: improved error reporting when contents are too large
codebox~: in2 function correctly generated
Export Targets: multibuffer~ reference removed from external datarefs
fft: all instances synced to global samplecount
fft: eliminated unused external dataref
fft/ifft: ignore default RNBODefaultFftWindow for window buffer
Gen in RNBO: parameter can be named 'n'
Gen peek: works in codebox when wrapped in if statement
gen~ codebox: params propagated properly
gen~: allow declarations in statement lists
join: fixed @triggers usage when it is a list
list.store: optimizations
makenote: disallow negative duration
Max External Target: MIDI outlets appropriately output numbers
metro: improved @lock 1 behavior (as exhibited in some Export Targets)
midiformat: fixed bendmode assistance
midiparse: channel output correctly when channel is 16
notein: -1 receives input from all channels
param: @ctlin 0 works
param: @maximum appropriately set to reflect @enum length
param~: @meta attribute added
param~: from/tonormalized work
param~: supported in Pi runner
phasor~: improved lock behavior
phasor~: signal input can be used with @lock 1
Pi Runner: transport seek supported
Pound Sign Arguments: eliminated error when there is no @args entry
quantize: avoid divide by zero
Raspberry Pi Target: avoid crash with invalid IP addresses
Raspberry Pi Target: handle empty patchers list
Raspberry Pi Target: improved 'dirty' status
Raspberry Pi Target: warn when exporting m4a file type
record~: fixed reset
record~: recording re-triggered when re-sending same number
rnbo.remote: fixed crash when connecting in the Max for Live editor
rnbo.remote: improved connection behavior and possible hangs
send / receive: fixed non-local behavior in polyphonic subpatchers
send / receive: improved valid argument checking
Snapshots: fixed potential crashes when pasting between RNBO patchers
subdiv: misc optimizations
Target Export: fixed memory leak issues with resizeSignal
Target Export: improved error when max file size of 100 MB is exceeded
UI Objects: fixed crashes with objects that have unused outlets
Web Target: typescript types are appropriately updated
Web Target: UI object messages suppressed by default in exported code
Runner / Web Interface New Features
Buffers: Meta editing support
Buffers: save buffer contents to an audio file
Device: rename a device with a user defined alias
Graph UI: auto-layout functionality
Graph UI: display currently loaded set
Graph UI: overhauled state UI offering dedicated Save, Save As, New and Load options
Graph: new port properties and port-groups used as basis for building Graph
Graph: Save As support / improved first save behavior
Graph: name alias for nodes
in / out: port labels
in~ / out~: exposed @comment as "pretty name"
Inport: support for 'bang' message
Inport / Outport: revamped UI
MIDI Mapping: list / edit MIDI mappings
Migration: allow for exporting data after database migration
OSC: Expanded mapping features
Parameter View: Search field
Parameter View: configure subsets of parameters from multiple devices/instances
Parameter View: use ids instead of index in order to persist views across exports
Parameters: use Parameter Display Names
Port / Instance: properties for identification
Record Audio Stream: record multichannel audio to a file within the runner
Resources View: manage graphs, patchers and audio files on the runner
Runner: version added to commandline output options
Startup: configure graph load behavior
Web Interface: general improvements to naming conventions
Web Interface: Include remaining disk space and target identifier in endpoint info
Runner / Web Interface Fixed Bugs
Device: improved initial placement of newly added node
Graph: fixed non-movable Device node
Graph: improved display of long, potentially overlapping port labels
Inport: fixed inport message sending and added support for sending bang
MIDI: fixed SYSEX usage
Runner: prints console messages to journal
Web Interface: always show CPU usage in %