Full notes
Full EXA: The Infinite Instrument update
Read the full published notes in a cleaner layout. The original post stays linked below.
What changed
- Server
- Gameplay
- UI and audio
- Fixes
EXA: The Infinite Instrument changes
This build addresses one of EXA’s most overdue needs -- the ability to create (and then move) groups of items. The new grouping feature allows you to contained mixed collections of ringers, loops, and sections within a group. Once grouped, you can optionally lock the group’s position and/or the relative position of the items within the group. Item selection (for example, multi-selecting ringers) remains the same, whether or not the item is within a group. Other improvements and fixes are described below, including a positional boundary to prevent lost items, color-coded curves between items and their menus, a faster “save layout” workflow, minor improvements to latency, and more. This build was delayed about a week due to preparation for a live EXA performance (video link below) on June 16. This included work on a “mixed reality” feature that uses a ZED depth camera – support for this will be included in a later release. This camera allows you to visualize the EXA layout as if it were placed directly into your room, with you walking among the items, without using a green-screen. --- DevUp VIDEO https://www.youtube.com/watch?v=1IAPOPgYr4w (https://www.youtube.com/watch?v=1IAPOPgYr4w) LIVE PERFORMANCE https://www.youtube.com/watch?v=XF1wMy6Fhbw (https://www.youtube.com/watch?v=XF1wMy6Fhbw) GROUPS
Added the ability to group together a selection of ringers, loops, and/or sections. Once grouped, you can grab/move these items both individually and together as a unit.
Group boundaries are visible as gray (or white, when selected) corners surrounding the grouped items. The group does its best to quickly find a near-best-fitting cube that encloses the grouped items, and this cube updates immediately as grouped items are moved around within the group.
A new “Groups” menu becomes available when one or more groups are selected. The “Options” submenu allows you to lock the position of the group and/or lock the relative positions of the items within the group. The “Selection” submenu allows you to deselect or delete the groups, and also select/deselect all items that are contained within the groups.
The new “Groups” menu also has a “Create Group” button that becomes available when any ringers, loops, or sections are selected. This menu allows you to optionally include these three item categories in the new group. When you add an already-grouped item to a new group, it is first removed from its current group. Also, loops contained within a section cannot be added to a group -- add the entire section instead.
The four structures in the default layout (curved piano, box guitar, drum set, and flower-shaped synth) are now each contained within a group by default. Note that these default groups use the “lock position” menu setting -- uncheck this setting to move the entire group.
A layout’s groups (and the group settings) are saved within a layout file.
LATENCY
Added improvements for the hit-to-sound latency, including the use of a higher-resolution system timer, the removal of some built-in time-padding, and a new -40ms to 20ms range on the “Hit-To-Sound Latency” slider.
You may need to readjust your “Hit-To-Sound Latency” slider if these changes cause a degrade the audio quality on your machine (specifically, if EXA frequently truncates the beginning of note’s playback).
Using negative latency values can achieve (at, or near to) realtime performance (i.e. tested with controller hitting virtual and real surfaces simultaneously) at the expense of more frequent truncated-start note playback. Truncation typically occurs when the controller motion prediction doesn't predict a hit soon enough, so the audio is not scheduled far enough in advance to provide its earliest data to the audio buffer. (Moving in straighter lines toward a ringer can help the motion prediction.)
Improved to the timing and display of the ringer glow and the “cursor tail” glow. These now handle the predicted hit time in a more accurate way. The “cursor tail” now changes color very near to the ringer hit position, rather than fading gradually between segments of the tail.
OTHER
Added a “pentatonic scale” option to the “Ringers > Notes > Intervals” menu.
Updated the “save layout” menu to pre-fill the title and photo using information from the most-recently saved or loaded layout. This speeds up the common “overwrite previous save file” use case. The keyboard now contains a “clear” button to erase the entire title, and now has the auto-fire feature on its “backspace” button.
Added a boundary around the entire layout space that prevents any items from being moved outside of it. An item will jump to the nearest within-bounds position (based on the center point of the item) when you release an item outside the boundary. The boundary edges are found at the floor, ceiling, and beyond the teleport limits. This also avoids “lost item” issues that can occur if your VR tracking has a glitch (and jumps you far away for a moment) while you were holding onto an item.
Added color-coding to the “curves” that connect multi-selectable items to their menus. The ringers curves are (still) white, while the loops curves are now green, the sections curves are orange, and the groups curves are blue. The goal is to help distinguish these lines by item type when many items are selected.
FIXES
Fixed issue causing a “play” tool to produce a low hit intensity if its motion very recently changed direction.
Fixed issue causing some Soundfont files to get stuck at 0% loading, due to the Soundfont file parser’s (now former) requirement that “name” and “version” data must be present in the file.
Reduced logging output to avoid slowdown/hanging issues.
Fixed issue causing the “child” menu boxes to be visually disconnected from its parent menu box. This occurred when the parent box is very tall and the item selected in the parent box is near to the top or bottom.
Source
Changelog.gg summarizes and formats this update. How we read updates.
