Pianos, drums, guitars, strings, synths... perform with any sound, in any style, upon musical structures of your own design. From experimental compositions to live-looping performances, EXA is a must-try VR music experience.
User reviews:
Positive (11 reviews) - 100% of the 11 user reviews for this software are positive.
Release Date: Mar 31, 2017

Sign in to add this item to your wishlist, follow it, or mark it as not interested

Early Access Software

Get involved with this software as it develops.

Note: This Early Access software is not complete and may or may not change further. If you are not excited to use this software in its current state, then you should wait to see if it progresses further in development. Learn more

What the developers have to say:

Why Early Access?

“EXA is an ambitious VR app that combines several new VR concepts, interfaces, and interactions. Even if this project had a dozens of people working on it (instead of just one!), this would take a significant amount of time and consideration. There are no "best practices" established for this type of VR work -- many of the challenges and decisions involved venture into uncharted territory.

With all of these new concepts and decisions involved, EXA needs extensive user testing and validation. This requires real users, with real goals for creating music, and a wide variety of opinions and skill levels. Steam's Early Access community is the perfect way to connect with those users, and get valuable feedback about the app.

Early Access users can help shape and refine EXA into a truly useful musical tool, ensuring that it has reliable interactions, understandable interfaces, and a fantastic VR user experience.

To review EXA's progress prior to the Early Access release, check out these DevUp videos on YouTube.

Approximately how long will this software be in Early Access?

“The first full-version release of EXA should be ready by the fall of 2017.”

How is the full version planned to differ from the Early Access version?

“The first full-version release will hopefully include:
  • the ability to group/subgroup the ringers (and manipulate them as a unit)
  • more controls/actions for the metronome and recorded loops
  • saving/loading capabilities via Steam Cloud (for scene layouts, specific ringer groups or configurations, recorded loops, etc.)
  • visual improvements (including the ringers, handles, menus, tools, etc.)
  • some type of backdrop/environment (possibly with dynamic reactions to the music)
  • performance improvements (for both graphics and audio processing/playback)

Additional features, which may not be part of the first full-version release, may include:
  • tools for aligning ringers to a grid
  • adding "switches" for rapidly changing ringer notes/pitches/sounds (i.e. like changing a guitar's active chord formation, see my "VR Guitar" on YouTube)
  • support for Steam stats and achievements
  • support for Steam workshop (for sharing custom instruments, recordings, etc. with the community)

Beyond this, there are many potential possibilities for EXA. There's really no limit to how many new tools and features an "infinite instrument" might demand!”

What is the current state of the Early Access version?

“At the end of February 2017, the app already contained a significant amount of functionality, including:

  • drawing-to-ringer functionality (with transition animations)
  • striking the ringers (with dynamic audio/visual reactions)
  • the magnetic-connection tool system
  • grabbable/movable everything
  • resizable ringers
  • full Soundfont engine
  • proximity- and stike-based muting
  • metronome
  • multi-track loop recording system

...with all of the above mostly working well together, and with a relatively cohesive visual appearance.”

Will this software be priced differently during and after Early Access?

“The Early Access app will gradually increase in price as it becomes more complete. This may include an increase between the last Early Access version and the first fully-featured version.”

How are you planning on involving the Community in your development process?

“User feedback will be vital for ensuring that everything in EXA works well, sounds beautiful, makes sense, and feels great. This feedback can come in many forms -- reports of broken features, bugs, confusing interfaces/interactions, feature ideas, and general thoughts on the app's user experience, and so on.

Video/GIF feedback from users can also be extremely helpful. The three-dimensional nature of the scene, its interactions, and input devices can make it very difficult to accurately describe issues or features with words alone. Videos of app usage can often communicate these issues far more clearly, and demonstrate certain subtleties that the user might miss.

Whenever possible, reports from the Early Access users will flow back into the design and development process. The EXA project is committed to providing an excellent VR user experience, and feedback from Early Access users will be crucial for achieving that goal.”
Read more
Notice: Requires a virtual reality headset. See the VR Support section for more info.

Buy EXA: The Infinite Instrument


Recent updates View all (13)

July 19

v1.2.0: Move-To-You Menus, Document Viewer, Tutorial Graphics

Finding and moving menus is no fun – so many of EXA’s menus now come to you. Once you make a selection, the menu will appear and/or slide into view near the selected items. When you’re done with the menu, use the circular “selection count” button to simultaneously deselect the items and hide the menu. Fast, easy, convenient, with less clutter in your layout.

With the new Document feature, EXA is slowly releasing its bias toward improv and by-ear playing styles. A document can contain several pages of images and text, so you can load up your favorite sheet music or lyrics and start playing along.

And for the new players, the default layout now includes a large document filled with tutorial graphics. With this visual walkthrough of EXA’s main features, it’s never been easier to get started.

Thank you to the EXA community for the continuous feedback and ideas! Please watch/share the v1.2.0 DevUp video and look through the full details below.




  • All menus for multi-selectable items now start in a hidden state. This currently includes the Ringers, Loops, Sections, Groups, and Documents menus.

  • Upon the end of a selection (either a single-select via grab, or the grab-release after a multi-select), the relevant menus automatically appear nearby. The menu appears with a quick “scale up and slide” animation. If the menu was already open (due to the previous selection), the menu slides to its new nearby position.

  • The position a menu chooses automatically incorporates a variety of factors, including the item positions, your head position, and your viewing direction. Importantly, the menu will decide to move above or below the selected items based on your current vertical head position. If you end your item selection looking the opposite direction (for example) the menu may not move into your field of view, since it cannot move too far from the selected items. To “hint” where you’d like to see the menu appear, look in a particular direction upon ending the selection.

  • To avoid unnecessary menu motion, a menu will only slide into a new position if it is outside your field of view, or beyond a certain distance away.

  • Enable the “Application > Interaction > Live Menu Motion” option to try a mode where the menu appears immediately at the start of a selection, and continually repositions while you continue the multi-select process. This can create excess menu motion, but can be useful. Because you can see the motion, you can look around to move the menus a particular position, then end your selection. If you get a good feel for the motion in this “live” mode, it can help you anticipate where the menus will appear in the standard mode.

  • The menu positioning is not currently intelligent enough to avoid collision/intersection/occlusion with other items in the scene. However, the menus have internal parameters that should avoid some conflicts between menus (for example, when selecting a group and its ringers at the same time, or a section and its loops).

  • The “selection count” circle for the multi-selectable menus now appears at the top or bottom of the menu (it switches based on the relative position of the selected items). This circle is now selectable (via hover interaction), and it generates the “deselect” action. This makes it more convenient to cancel unneeded selections (and thus close the menus).

  • The “Application” menu now only contains settings, which have been split into three parts for better organization. Everything in this menu persists across your EXA sessions (not tied to a particular layout, etc.).

  • The new “Layout” menu contains the save/load features, plus the tools for creating new groups, sections, and documents. The creation tools could no longer live in the specific menus, since those menus are now often hidden from view. These features are relevant to the “layout” menu, since they add to the contents of the layout.

  • The new “documents” feature can display images (JPG, PNG) and text (TXT) files. A single document can contain several pages, with mixed file formats.

  • The document interfaces are resizable, with the same two-handed grab interaction that you use for ringers.

  • Image pages fill the document panel as large as possible, while maintaining aspect ratio.

  • Text pages display the text in a monospaced font, word-wrapped, with any excess text at the bottom truncated. Text does not stretch, so resizing the document vertically will allow more text to appear. You may want to break up long text files (like a chord+lyric sheet) into smaller pieces, then use the document interface’s NEXT/PREV buttons to page through them.

  • You can have multiple document interfaces in a layout. Create new ones via the new “layouts” menu.

  • To tell EXA where to find your documents, add your document folders to the “DocumentDirectories” list in EXA’s “AppSettings.json” file. This text-based configuration file is located in the <EXA_INSTALL_FOLDER>/EXA_Data/StreamingAssets/ folder.

  • When a single document is selected, the “documents” menu provides options for adding and removing pages. When adding pages, the menu displays an item for each file (in JPG, PNG, TXT format) found in the specified directories. By default, EXA provides three “Example” files, and several “Tutorial” graphics.

  • The default layout now includes a large document interface filled with several “tutorial” graphics. New users can look through these pages to quickly get familiar with EXA’s main features.

  • The tutorial pages, in order: basic controls, ringers, tools, play tool, mute tool, draw tool, grab tool, multi-select, loops, sections, and item menus.

  • Starting a new item selection (via grab or multi-select) now causes all other item types to become deselected. This helps keep the layout uncluttered with irrelevant menus and selection highlights. Groups are an exception: starting a group selection only deselects other groups.

  • Added an option to disable “Grip-To-Grab” via the “Application > Interaction” menu.

  • Added a “hidden” feature that will, upon hitting a ringer, automatically mute the latest previously-hit ringer. This is very useful for playing wind instruments, for example, since it stops the previous note when you start a new one. To use this feature: hold the “down” direction on the Vive touchpad, or hold the A or X button on the Oculus Touch. This is “hidden” because it’s not fully developed yet, but it’s too useful to exclude from the release.

  • Doubled the volume-decay rate of the mute tool. This makes the tool more responsive, and makes it easier to get a short/staccato sound when you play a muted ringer (i.e. mute with one hand, hit with the other).

  • Fixed memory leak that occurred whenever items were deleted (either directly, or when loading a new layout). Several item types were not fully releasing their mesh data from memory.

  • Fixed memory leak that occurred whenever loading up layout thumbnails or document images. These items were not fully releasing their texture data from memory.

  • Fixed issue causing the proximity-based mute to be inactive after loading a new layout. The ringers created for the new layout were missing a mute-related component.

  • Fixed the “nearest point to menu” calculation, which was giving incorrect results. This calculation is used to find the item-side endpoint of the curve that connects to the menu.

  • Made minor performance fix by avoiding the use of Unity’s “Camera.main” property.

4 comments Read more

June 28

v1.1.4: Item Grouping, Latency Options, and More

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.





  • 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.

  • 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.

  • 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.

  • 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.

10 comments Read more
See all discussions

Report bugs and leave feedback for this software on the discussion boards

About This Software

EXA is a musical instrument unlike any other. Crafted exclusively for virtual reality, EXA's vision is to bring the feeling and expressiveness of playing real-world musical instruments into an incredibly versatile virtual space -- offering an entirely new dimension of musical creativity and performance.

The infinite instrument is here... what will you create?


Musical shapes, called “ringers”, are the main building-block for creating musical structures within EXA. From the tip of the drawing tool, ringers are drawn into existence, springing into the form of ellipses, rectangles, triangles, or lines. Of these shapes, lines behave like guitar strings, while the others behave like two-sided drums.


When struck, a ringer bursts into sound, glowing and resonating to its tones. By sampling audio from Soundfont (SF2) packages, which are often freely-available online, ringers can produce any imaginable sound. EXA ships with hundreds of Soundfonts, from strings to drums to synths, and allows users to import their own.


EXA uses a tool-based system for drawing, selecting, striking, muting, and more. Tools snap onto the magnetic ends of EXA’s 3D-controller-based handles, and often utilize the controller’s inputs to perform actions.


Recording and replaying loops takes EXA musical performances to the next level, allowing the musician to build up many layers of tones and rhythms. Loops react to tempo changes in real-time, and can be adjusted after recording is complete. Starting and stopping a loop is as simple as striking a ringer, extending EXA’s musical possibilities even further.

System Requirements

    • OS: Windows 7 SP1, Windows 8.1 or later, Windows 10
    • Processor: CPU: Intel i5-4590, AMD FX 8350 equivalent or better
    • Memory: 4 GB RAM
    • Graphics: Nvidia GeForce GTX 970, AMD Radeon R9 290 equivalent or better
    • Storage: 1 GB available space
    • Sound Card: Required
    • Additional Notes: Disable audio-routing apps (like VoiceMeeter) to avoid hit-to-sound latency issues (details: http://steamcommunity.com/app/606920/discussions/0/1327844097115617013 ).
Customer reviews Learn More
Positive (11 reviews)
Review Type

Purchase Type


Display As:

(what is this?)
11 reviews match the filters above ( Positive)
There are no more reviews that match the filters set above
Adjust the filters above to see other reviews
Loading reviews...