Glowing instrument orbs moving on luminous paths around a listener above a studio desk with a DAW timeline

Spatial9 Gravity Feed: Musical Intelligence for DAWs and Plugins

Spatial9 Engineering Team · · 9 min read

Key takeaways

  • Gravity Feed is a musical-intelligence feed: a DAW or plugin sends session metadata and gets back a placement and movement plan.
  • Requests never contain audio; they must declare audio_uploaded false, and confidence is always null.
  • A model picks musical ideas; deterministic code applies locks and style limits and computes every coordinate and curve point.
  • One query is one plan request covering up to 32 tracks and 128 beats; the free plan allows 1 query per second with bursts of 5 per account.
  • REST, the MCP tool gravity_feed_plan and the A2A skill gravity_feed_plan are live and share one limit; the REAPER script is a prototype.
  • IEM StereoEncoder and ICST AmbiEncoder have Gravity Profiles; their conversion is not yet verified in a real session.

Mixing in 3D asks a question stereo never did: not only how loud and how bright each part should be, but where it should be and how it should move. Most spatial plugins give you the controls. None of them tell you what to do with them, or when. Gravity Feed fills that gap: it reads the shape of your song and proposes where things should go and how they should travel, in a form your DAW can show, preview and write.

This article explains what Gravity Feed is, what a DAW or plugin sends and gets back, what "1 QPS" means in practice, every way to connect, and exactly which parts are live today and which are still prototypes or plans.

Diagram: the DAW sends tempo, selection, sections, track roles, locks, current positions and target profiles with no audio; Gravity Feed checks the request, a model picks musical ideas and code computes every number; the plan returns three alternatives with positions, motion curves, effect ideas, automation actions and unsupported actions, expiring after ten minutes
Metadata in, a plan out. Audio never leaves your computer.

What is Spatial9 Gravity Feed?

Gravity Feed is a planning service with an API. It is not a plugin and not a renderer. You call it when you want ideas for a section, and it answers with a plan your tools can act on. The name comes from the way a good immersive mix behaves: the lead vocal holds the centre like a planet, and the other parts orbit, rise and settle around it.

NameWhat it isStatus
Gravity FeedThe planning service and its APILive
Gravity ConnectThe ways in: REST, MCP and A2A, sharing one limitLive
Gravity ProfilesMachine-readable descriptions of a plugin's position controlsTwo profiles, not yet verified in a session
Gravity LinkA desktop bridge that relays plans to OSC pluginsPlanned
Gravity CaptureA plugin that reads track context and writes plan automation in any hostPlanned

It covers six workflows: Place (static positions), Move (motion over time), Shape (effect ideas that support the movement), Explain (a reason for every change), Compare (restrained, expressive and cinematic alternatives) and Commit (automation actions, guarded so a stale plan is never written).

What does a DAW send?

Only metadata. A request describes the session in musical terms:

FieldExample
Tempo map120 BPM from beat 0
SelectionBeats 64 to 96, the chorus
SectionsVerse, Chorus, Bridge with their beats
TracksUp to 32, each with a role such as lead_vocal or pad and where that label came from
Anchors and locksKeep the vocal still; do not move the drums
Current positionsAzimuth, elevation and distance per track
TargetsWhich plugin instance can receive each track's automation
DirectionOptional text, such as "open the chorus upward"
Privacyaudio_uploaded: false, required on every request

Time is measured in quarter-note beats, so a plan stays in time if you change tempo. Positions use one neutral frame: azimuth 0 is straight ahead, positive is to the left, elevation positive is up, distance runs from 0 to 1.

What comes back?

Every plan is a proposal. Nothing changes in your session until your adapter writes it. A plan contains:

  • Three alternatives, one per style, each with a one-line summary.
  • A scene: every track's current and proposed position, whether it changed and why.
  • Motions: shapes such as rise, sweep, circle, spiral_up or fly_over, with start and end beats, intensity and curve points.
  • Effect ideas: reverb, delay, filter, width, dynamics or synth suggestions, always marked executable: false.
  • Actions: the exact automation points for plugins that have a Gravity Profile, in the plugin's own units, with its OSC address.
  • Unsupported actions: anything that could not be applied, and why, such as "this plugin has no distance control".
  • Preconditions and expiry: the session revision the plan was made for, and a time ten minutes ahead after which it must not be written.

Two fields are deliberately empty. confidence is always null, because a made-up score would only look precise. audio_checks always says not_evaluated, because Gravity Feed never hears your audio.

How are the numbers made?

The model chooses musical ideas: lift the pad over the chorus, sweep the arpeggio from left to right, bring the guitar a little closer. Deterministic code does everything after that. It drops ideas that break a lock, clamps intensity and height to the style (one moving track and 35 degrees for restrained, up to six tracks and 85 degrees for cinematic), calculates each curve with fixed formulas and converts it to the target plugin's units. The same choice always produces the same numbers, and every change carries the reason the model gave.

What does 1 QPS mean?

QPS means queries per second. One query is one plan request, and a single request can cover up to 32 tracks and up to 128 beats.

Take an eight-bar chorus in 4/4 at 120 BPM. Eight bars are 32 beats, or 16 seconds of music. Asking Gravity Feed for a plan for all 12 tracks in that chorus is one query, not 12. If you do not like the result and ask again three times in quick succession, the burst of 5 absorbs it. What 1 QPS rules out is asking on every beat: at 120 BPM that would be two queries per second, and it is not how planning is meant to be used. Plan a section, preview it, then write it.

PlanSustainedBurstMonthly volume
Free1 query per second per account5Unlimited for now
Higher volumeBy agreementBy agreementContact sales

The limit is shared by every key and every protocol on the account. When you go over it, the API answers 429 with a Retry-After header saying how many seconds to wait. Checking a request with /validate, reading capabilities or profiles, and viewing your usage never count.

How do I connect?

RouteWho it is forStatus
REST API at spatial9.ai/api/gravity-feed/v1DAW scripts, plugins, serversLive
MCP tool gravity_feed_planChatGPT, Claude and other MCP clientsLive
A2A skill gravity_feed_planOther AI agentsLive
REAPER script for IEM StereoEncoderREAPER usersPrototype, not yet tested in REAPER
Gravity Link desktop bridgeOSC plugins on your computerPlanned
Gravity Capture pluginAny VST3, AU or AAX hostPlanned

Requests are idempotent: resend the same body with the same request_id after a network drop and you get the stored plan back without using your limit.

Which DAWs can use it?

Any DAW can reach the API, because a plan request is an HTTPS call. The difference is how much of the session a script can read and whether it can write automation back.

DAWRouteStatus
REAPERReaScript reads tempo, regions and FX and writes envelopes in one undo stepPrototype
Ableton LiveMax for Live device or Remote ScriptDocumented route
Bitwig StudioController API with remote-control pagesDocumented route
FL StudioPython MIDI scripting, live parameter changesDocumented route
Cubase and NuendoMIDI Remote API while recording automationDocumented route
Pro ToolsScripting SDK for session data, plugin-side writingDocumented route
Logic ProMIDI control of an Audio Unit spatial plugin (IEM has no AU build), or Gravity Capture when it shipsDocumented route
Studio One, Reason, Cakewalk Sonar, GarageBandPlugin-side routesDocumented route

"Documented route" means the DAW's maker documents a way to do it; Spatial9 has not built or certified that adapter yet. The DAW guides explain each one.

Which plugins can receive a plan?

A plugin can be written to directly only when a Gravity Profile describes its controls. Two exist:

  • IEM StereoEncoder: azimuth and elevation through its documented OSC addresses /StereoEncoder/azimuth and /StereoEncoder/elevation. No distance control.
  • ICST AmbiEncoder: Cartesian XYZ per source index through /icst/ambi/sourceindex/xyz.

Both say conversion_verified: false until a fixture test in a real session confirms that +90 degrees really means hard left. SPAT Revolution, L-ISA, SpatGRIS and SPARTA have documented control routes but no profile yet. Effect plugins such as Surge XT, FabFilter, Diva and Soundtoys receive ideas, not parameter changes. dearVR has been discontinued and is listed as legacy. The plugin guides cover each one.

What do the status labels mean?

LabelMeaning
LiveRunning in production and covered by automated tests
PrototypeCode exists but has not been tested in the host
Documented routeThe vendor documents a route; no certified Spatial9 adapter
PlannedDesigned, not built
LegacyDiscontinued product, no new work

A label only moves up after the test that justifies it has passed.

How do I start?

  1. Open the Gravity Feed page and try the playground. Signed out, it shows a labeled sample built by the real compiler; signed in, it makes live plans.
  2. Create a key in the Gravity Feed console.
  3. Follow the quickstart to send your first request, or install the REAPER prototype.

FAQ

Does Gravity Feed upload or listen to my audio?

No. Requests are metadata only and are rejected unless they declare audio_uploaded: false. Spatial9 stores a hash of the request, counts, timings and the returned plan.

Is Gravity Feed free?

Yes, up to 1 query per second per account with bursts of up to 5 and no monthly cap for now. Contact sales for more.

Does the AI decide the automation values?

No. The model picks musical ideas; deterministic code checks locks, style limits and plugin ranges and computes every value.

Can I use Gravity Feed from ChatGPT or Claude?

Yes. It is the gravity_feed_plan tool on the Spatial9 MCP server and a skill on the A2A agent. Both share your account's limit with the REST API. For the wider picture, see how Spatial9 connects to agent platforms.

What happens if my session changes after I ask for a plan?

The plan records the session revision it was built for and expires after ten minutes. A correct adapter refuses to write a stale plan and asks for a new one.

Does Gravity Feed render or encode my mix?

No. Gravity Feed plans positions for the plugins you choose; your DAW and plugins make the sound. To deliver an immersive master, use Spatial9's spatial audio tools or your own renderer.

Sources

  1. Gravity Feed documentation
  2. Gravity Feed API reference
  3. IEM Plug-in Suite OSC documentation
  4. ICST, OSC syntax for the ICST AmbiEncoder plugin
  5. REAPER ReaScript documentation
  6. Model Context Protocol
  7. Agent2Agent protocol
  8. Spatial9 Agent Integrations, Spatial9 Engineering: /blog/agentic-ai-platforms-a2a-spatial9-integrations

Product and company names in this article are trademarks of their respective owners and are used only to describe integrations. Vendor routes change; check each maker's documentation for current scripting and OSC support.

Try Spatial9 free