Step into EXA, an immersive musical studio where you can compose, record, and perform music using expressive instruments of your own design. Jam with EXA’s huge sound library or your own, create virtual bands, invent 'impossible' playing styles, export to WAV/MIDI, and so much more.
All Reviews:
Positive (32) - 96% of the 32 user reviews for this game 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 Game

Get instant access and start playing; get involved with this game as it develops.

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

What the developers have to say:

Why Early Access?

Update 2018-08-06: While still technically in Early Access, the EXA experience is polished, stable, and packed full of features and functionality. At this point, the "Early Access" tag indicates that there are still many important features planned, and Zach (the solo EXA dev) isn't ready to call the current version "complete".

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 keep up with EXA's latest additions and improvements, check out these development update videos.

Approximately how long will this game be in Early Access?

“EXA is already a polished, stable, fully-featured app. The "Early Access" tag indicates that there are still many more features and improvements on the way. Regardless of Early Access, please feel confident that -- any time in 2018 or beyond -- you'll be purchasing a useful and high-quality product.”

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

“Beyond EXA's large set of existing features, the full-version release will hopefully include:
  • support for Steam workshop (for sharing custom instruments, recordings, etc. with the community)
  • 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 basic audio effects/filters
  • linear control cubes (for mapping 3D cursor position/rotation within the cube to things like volume, pitch, effects levels, etc.)
  • use of the microphone as a live and/or recorded audio source

Additional features, which may not be part of the first full-version release, may include:
  • some form of multi-player support
  • tools for improving the instrument design process (aligning ringers to a path or grid, mirroring ringers, etc.)
  • support for Steam stats and achievements

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 the game 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 (22)

September 11

v1.3.4: Shared Items via Steam Workshop

A huge step for the growing EXA community: you can now share your layouts and bundles with everyone else who plays EXA! These new features are built using the Steam Workshop, allowing you to publish, update, search, subscribe, download, and vote on these shared items – all without leaving VR.

The ability to share layouts and bundles with other players creates many new possibilities for collaboration, and makes it faster than ever to jump right into music-making, with an ever-growing collection of pre-built instruments, loops, layouts, and even entire songs.

These new community features demanded a new way to search, sort, and filter results – capabilities which also found their way into the existing “Load” menus. For players with tons of saved layouts and bundles, sorting and filtering their item lists becomes a big time-saver.

This release also includes an improved metronome interface (with number-pad for exact entry) and several bug fixes (including a major one related to Windows MR devices).

Thank you to the EXA community for the feedback and ideas! Please watch/share the new update video below, and read through this page to learn more.



  • The “Layouts” and “Bundles” menus are now divided into two sections. The first, “Local”, contains the original save/load functionality. The second, called “Community (beta)”, contains new functionality for publishing items to Steam Workshop and for browsing, subscribing to, voting for, and downloading items that have been published to Steam Workshop by other EXA players.

  • These new community features are marked as “beta” because they can’t be fully tested until players start using and participating with them. There’s a higher-than-usual chance of things going wrong here – please post any issues that you find to the EXA discussion board.

  • To publish a layout or bundle to Steam Workshop, use the command center to navigate to the “Layouts > Publish” or “Bundles > Publish” menu page. This page shows all of your locally-saved layout/bundle items, displaying a blue badge beneath the image of any item that you’ve already published. Select an item to visit its detail page, where you’ll find a “Publish” button. Or, if the item is already published, you’ll find “Update” and “Unpublish” buttons.

  • Note: EXA determines an item’s “published” state by searching your list of published items for one with a matching name – there is no other ID or behind-the-scenes connection. If you wish to change the name of an item, you should change it locally and via Steam Workshop to avoid losing this name-based relationship.

  • To use a layout or bundle that has been published to Steam Workshop, use the command center to navigate to the “Layouts > Discover” or “Bundles > Discover” menu page. This page shows items that have been published by you and all other EXA players. Each item is displayed with its thumbnail image, author, date, and badges that show subscription and voting information. Select an item to visit its detail page, where you’ll find a “Subscribe” button (and other voting buttons). EXA automatically downloads the item upon subscribing to it, and upon completion, you are able to use that item!

  • Note: These new community features are built to use Steam Workshop, which requires you to be logged into Steam. If you are not logged into Steam, EXA will function normally, but the community features will be disabled.

  • All browsing-style menu pages for layouts and bundles now include sorting and filtering options at the top of the page. Sorting and filtering was a necessity for the new Steam Workshop features, and is also quite convenient for browsing your locally-saved items.

  • To use these new options, select one of the buttons that appear across the top of the menu page. In most cases, a small menu will appear above the button, providing other choices for sorting or filtering. Some menus offer a text filter, which will open a full keyboard when its button is selected. To close the popup menu, select the original sort/filter button again.

  • The “Load” menus include options for sorting (by date or alphabetically) and a text filter (matches any part of the item’s name, not case-sensitive).

  • The “Publish” menus include the same options as the “Load” menus, plus a “State” filter (for all, published, unpublished items).

  • The “Discover” menus include a more complicated set of options, based on the search functionality that Steam Workshop provides. The first button switches between searching modes (“Browse”, “Me”, “Friends”). The “Browse” mode has sorting options (by popularity within time-range, publish date, subscription count, voting score). The “Me” mode has filters (for your subscribed, published, favorited, up/down voted items) and sorting options (by title, date). The “Friends” mode has filters (for items published or favorited by your Steam friends).

  • Improved the metronome interface: Moved the “beats per minute” and “beats per measure” sliders into separate menus. Added a number-pad interface for exact “beats per minute” entry. Increased the maximum “beats per measure” from 6 to 7. Added large-text numbers to the new metronome menu buttons.

  • Listed EXA as officially supporting Windows MR. This has worked, unofficially, for a long time, with one major bug related to WMR headphone usage. This bug is now fixed (see the section below).

  • Published all current “EXA-Show” layouts to the Steam Workshop.

  • Created and published several bundles to the Steam Workshop.

  • Disabled the loop's "delete" button while the loop's duration-changing handles are active.

  • Improved EXA’s Steam homepage with new descriptions and several animations.

  • Fixed the blue-screen-of-death crashing issue that occurs when launching EXA while using a Windows MR device with headphones plugged into it. The crash was due to EXA’s attempt to test the audio output device via the “WD-MKS” audio host (EXA now only tests the “MME” and “WASAPI” hosts).

  • Fixed issue causing the sequencer buttons to become invisible. This was caused by the command center’s “Create” page retaining some references to the newly-created sequencer (which was originally a miniature version embedded within the page), and then “fading out” the sequencer’s buttons upon closing the “Create” page.

  • Fixed issue causing the MIDI menu to display yellow warning text (which said: could not find ‘’) for rows that were previously set to "None".

  • Fixed issue causing the MIDI menu to auto-select the "None" radio button for rows that were previously set to a now-missing device. The menu now opens with no selected radio buttons.

  • Fixed issue that allowed the loop delete button and "strike-ringer" tutorial animation to function within a miniature-mode bundle.

  • Fixed the scenario where both Oculus and SteamVR are running, and Unity gives priority to SteamVR. EXA now shows a desktop-display error message when this occurs, with notes about how to ensure EXA runs in “native Oculus mode” -- rather than running in “Vive mode” and receiving Oculus input via SteamVR.

  • Fixed the scenario where SteamVR fails to initialize properly upon app startup. EXA now shows a desktop-display error message when this occurs.

  • Fixed issue causing a loop, with notes that have been trimmed from the start of the loop, to still have the ending/trailing sounds of those notes audible at the start of the loop. This was a regression issue, related to recent changes that allowed sequencers to play “in-progress” notes upon moving the playhead.

  • Fixed issue that occurs when a grouped loop is attached to a section, the layout is saved, then the layout is reloaded. Upon reload, the grouped loop is no longer positioned within the section. With this fix, the loop is now automatically removed from its group upon being attached to a section.
3 comments Read more

July 24

v1.3.3: Command Center, Item Bundles, Drag-And-Drop

The new EXA Command Center has arrived, and you can summon it to your current position with the touch of a button. The Command Center interface consolidates previous menus, improves workflows, introduces a new drag-and-drop creation feature, and is able to summon other interfaces (like the loop recorder).

Have you ever designed an EXA instrument, only to wish you could reuse it elsewhere? Now you can! The new “Bundle” features allow you to save and load collections of items, including ringers, groups, loops, sequencers, and more. The new drag-and-drop interaction allows you to pull a miniature bundle from the menu and place it (fully-sized) directly into your layout.

This release also includes support for MixCast 2.0, an internal upgrade to the latest version of Unity, some new visual settings, and several other fixes/improvements.

Thank you to the EXA community for the feedback and ideas! Please watch/share the new update video below, and read through this page to learn more.



  • Created a “Command Center” menu with a brand-new interface design. The Command Center consolidates the previous “App” and “Layout” menu features, takes up less space, and incorporates several new features.

  • At any time, the Command Center interface can be summoned to the player’s current position by pressing the controller’s “menu” button. The EXA handles show a new icon to identify this button. (For Vive: the small button above the touchpad. For Oculus Touch: the third button on the left-hand controller.)

  • Improved upon the previous menu design with the Command Center’s auto-sizing, tablet-like format. Instead of extending sub-menus to the right (which previously got quite wide for menus like saving and loading layouts), the sub-menus now replace their parent menu, resizing the content area to fit the content. Tall, thin buttons appear to the left of the menu content, allowing the player to navigate one or more steps up the menu hierarchy.

  • The Command Center uses a new drag-and-drop interaction for creating new items. Certain menus will display a miniature version of an item (a sequencer, for example) floating slightly above the menu’s surface. To add this item to the layout: Grab the miniature item and pull it away from the menu. This makes the item grow larger and causes its circular indicator to fill up. When the indicator is filled, it glows green, and the item is fully sized. At this point, the item will be added to the layout (at its current position) when the grab is released. If the grab is released before this point, however, the item will revert back to its miniature state. (And don’t forget, you can use the controller’s “grip” button/trigger to grab!)

  • Instead of using buttons, the Command Center’s “Create” menu uses the new drag-and-drop feature, showing miniature versions of a section, sequencer, and document.

  • The Command Center’s “Create” menu also includes the menu for creating a new group. This works the same as before: select several items, toggle the menu’s checkboxes to include/exclude certain item types (if necessary), then use the “Create Group” button at the bottom.

  • The Command Center’s “Summon” menu introduces a new feature that can automatically move certain items to the menu’s current position. The menu can summon the loop recorder, the metronome, and the three tool racks. This avoids the need to teleport/slide around the layout to find these interfaces and move them around – providing a faster and more efficient workflow.

  • Separated the MIDI options out of the “Settings > Audio” menu (formerly: “App > Audio”), and into its own “Settings > MIDI” menu.

  • Added new “About” menu, which notes the current version and provides several helpful tips in the “Did You Know?” area.

  • A “bundle” is a collection of items (ringers, loops, groups, etc.) that can be saved/loaded independently of the current layout (the entire set of items, interfaces, and tools in the scene). Previously, it was only possible to save/load entire layouts.

  • To save a new bundle, first select all the items that the bundle should contain. Use the “Bundles > Save” menu (in the new Command Center) to review the bundle’s contents, add a title, and take a thumbnail photo. Select the “Save Bundle” button to complete this process. Just like the layout-saving menu, a popup with an “overwrite” option will appear if the bundle name is already in use.

  • When saving a new bundle, note that the bundle’s contents (listed in the “Bundles > Save” menu) may be larger than the actual item selection. The bundle automatically includes dependencies from the selected items – for example, a selected group will include the items within that group, a selected sequencer will include the items it links to, and a selected loop will include its target ringers. This ensures that all the items will be fully functional when the bundle is loaded again.

  • To load a saved bundle, use the “Bundles > Load” menu (in the new Command Center) to browse the available bundles. If there are many, use the paging buttons at the bottom of the menu to see more. Select the desired bundle to enter its “Details” menu, then select the “Prepare Bundle” button. The bundle may take a moment to build itself, but its miniature will soon appear. Use the new drag-and-drop feature to add the bundle to the layout.

  • Once the bundle is placed into the layout, the overall “bundle grouping” is removed. The individual items are no longer considered to be part of a bundle – they are now part of the layout and behave like regular items.

  • When using the drag-and-drop feature to add a bundle to the layout, note that the layout-boundary restrictions still apply. Upon releasing the bundle, each item (or group, if the items are grouped) that is positioned outside the boundary will automatically be pushed inward.

  • The drag-and-drop feature uses the grab position (when grabbing the miniature item) as the item’s pivot point. In other words, the miniature item grows as if the original grab position is the center of the item. This is especially noticeable with bundles, since their miniature versions are often scaled down substantially to fit within the bundle menu – thus, their growth to full size is more pronounced. In some cases, grabbing the miniature a specific position (for example, near the edge of a group of ringers) can make it easier to drop the bundle at the desired position within the layout.

  • Internally, a saved bundle uses a JSON format that is very similar to a saved layout. This text-based format makes it possible to manually create/modify bundles outside of EXA. For example, it would be possible to modify the position values of a bundle’s ringers to make them perfectly aligned into a grid.

  • Upgraded to MixCast 2.0.2, which includes various improvements and new features for creating mixed-reality videos, streams, and live performances.

  • Upgraded to Unity 2018.1 and now using .NET 4.6. Among other things, this allows EXA to use some more modern multi-threading techniques and classes, which may help resolve some infrequent bugs.

  • Due to the note above, EXA Remix now requires projects to use Unity 2018+ and enable .NET 4.6 (which is no longer marked “experimental”).

  • Added “Show ‘Tunnel Vision’ For Slide Locomotion” toggle to the “Settings > Visual” menu. This controls whether peripheral vision is restricted while turning, which can help make the motion more comfortable for some players.

  • Improved the slide locomotion “tunnel vision” so that it fades into view more smoothly.

  • Added "High-Quality Desktop Display" toggle to the “Settings > Visual” menu. Removed the 'C' keyboard shortcut.

  • Updated the high-quality display to skip its motion-smoothing when performing a teleport.

  • Implemented a one-frame blank camera during the teleport (for both headset and desktop display) to avoid a flicker of the handles appearing in their pre-teleport position.

  • Added the display of a "No VR headset was detected" message when no headset is available.

  • Fixed issue causing loop playback, driven by a sequencer, to skip events within the last quarter-beat of the loop.

  • Fixed issues that caused "mute-hit" events occurring on the loop "cap" beat to be ignored.

  • Fixed issue causing the audio exporter to miss "mute-hit" events that occur on the loop's cap beat.

  • Fixed issue causing samples to stop prematurely when played "in-progress", which can occur when jumping a sequencer to playhead positions.

  • Fixed sequencer issue causing loops to read events that occur a fractional beat before the sequencer's start event.

  • Fixed issue causing the loop to play extra/incorrect notes when the sequencer range’s end/rollover occurs on the same beat as the loop's end/rollover, but the range starts after the loop start (i.e. the sequencer range rolls over into an “in-progress” loop position).

  • Fixed issue that caused the sequencer playback to go silent until rollover when dragging the range start to the current playhead beat.

  • Fixed issue causing sequencer's loops to play excess sounds when dragging the start range beyond the playhead.

  • Fixed issue that occurs when a loop (with recorded motion) includes a "link" tool attached to a handle.

  • Fixed issue that prevented “stopping” or “fading-out” bow/prox notes from correctly relinquishing their slot (when necessary) in the “max voices” system.

  • Fixed issue when trying to load a layout while in the process of drawing a new ringer. The load/save actions are now prevented while drawing is active.

  • Upgraded to the latest version of the Steamworks .NET package to ensure compatibility with the latest Steam/SteamVR API.

  • Fixed issue causing a near-immediate freeze (of EXA, Steam, and SteamVR) once you start hitting ringers. This issue was noticed in SteamVR Beta, and then it moved into the main version of SteamVR on about July 26.
2 comments Read more
See all discussions

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

About This Game

EXA is an immersive virtual-reality environment for composing your own music, recording loops of your performed notes and motions, designing custom instruments, performing for audiences, building up virtual bands, and more. Step into EXA and experience an entirely new dimension of musical creativity!

This app has been under constant development since early 2016, continually growing and improving. Despite being in Early Access, the app is polished, stable, and packed full of features. Here's a look at the basics of making music with EXA in VR:


EXA’s musical shapes are called ringers. They make sound when you hit or interact with them using one of the various playing tools (like a mallet, violin bow, or proximity tool). The ringers in EXA react to the velocity and angle that you play them, and they provide an extremely responsive, zero-latency playing experience. (Note: external audio-routing apps can introduce latency, please disable them or adjust their settings!)

You can change the sound that a ringer produces (like a drum, piano, guitar, synth, etc.) by choosing a different Soundfont (SF2) or sample (WAV, AIFF, OGG) as its audio source. EXA ships with 1,000+ built-in sounds, and encourages you to import your own! You can change a ringer's pitch by setting it to a specific note, shifting it up or down, or by applying a particular scale/interval across several selected ringers.


Ringers are the main building-block for creating your own custom instruments. There are four available ringer shapes, and you can move and resize them however you want. Sketch new ringers out of thin air using the draw tool, and use the group and clone features to assist your instrument-creation process.

EXA’s virtual space gives you incredible flexibility for designing entirely new and “impossible” musical instruments. You’re free to break away from traditional instrument structures, and instead create instruments that are perfectly suited to the way you want to move, the notes you want to play, and the musical performance you want to compose.

You could arrange ringers into curved rows that wrap around you, or into large grids, or stacks that form chords, or guitar-like rows of strings, or radial patterns that you play with circular motions… the possibilities are endless.

Of course, you don’t need to create everything yourself. EXA ships with several pre-built layouts (full musical scenes) and bundles (reusable instruments) that you can use right away. If you do create an instrument, however, you can save it as a new bundle and reuse it anywhere you want.


Recording and replaying loops is at the heart of EXA’s music-making experience. As you record a loop, EXA captures the notes you play and the motions you make while performing. Then, whenever you play the recorded loop, you'll see (optionally) a “robot” performer repeating the exact motions that you did.

To record a loop, hit the loop recorder’s red ringer. It displays a countdown to the first metronome beat of the next measure. Recording begins on that beat, and continues until you hit the red ringer again (or use the “auto-stop” feature). At this point, the loop recorder becomes a playable loop. You can apply new sounds to it, adjust its volume, change its duration, quantize its notes to align with the metronome, and more.

EXA's sequencer interface allows you to schedule loop playback and assemble full songs. You can link each sequencer row to a particular loop, then add playback events within that row. As the sequencer plays, each sequencer row sends those events (when the playhead reaches them) to their linked loop.


With EXA’s custom instruments, recorded loops, robot performers, and powerful interfaces to schedule playback and keep it all organized, you can compose and produce entire “virtual band” music performances.

Watch and move through these performances again and again, customize them, share them, and even export them into other apps! The EXA Remix package allows third-party developers to load, display, and customize full EXA performances within their Unity-based software.

There’s so much more to explore in EXA! Export loops and songs to WAV audio, 64-channel live MIDI output, sleek user interfaces, fast and efficient workflows, in-app audio device selection, teleport and slide-based locomotion, high-quality display mode for recording videos or performing live… and more being introduced all the time.

EXA thrives on feedback, ideas, and wish-lists from players like you! Share your thoughts with Zach (the EXA dev) and the community using the EXA discussion board.

That's it! Now that you know the basics, it's time to step into EXA, and start making music with your very own infinite instrument.

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: ).
Customer reviews
High Volume of Reviews Detected:
Exclude  or  View Only
Review Type

Purchase Type


Date Range
To view reviews within a date range, please click and drag a selection on a graph above or click on a specific bar.

Show graph

Display As:
Review Beta NEW!
When enabled, will sort reviews by new Helpfulness score. Read more about it in the blog post.
Show graph
Hide graph
Review Helpfulness Beta Enabled
There are no more reviews that match the filters set above
Adjust the filters above to see other reviews
Loading reviews...