# HTML5/WASM — no way to supply a bank encryption key via Studio::System::setAdvancedSettings (intended limitation?

**URL:** <https://qa.fmod.com/t/html5-wasm-no-way-to-supply-a-bank-encryption-key-via-studio-setadvancedsettings-intended-limitation/24424>\
**Category:** FMOD Engine\
**Created:** [July 24, 2026, 11:40am UTC](https://qa.fmod.com/t/html5-wasm-no-way-to-supply-a-bank-encryption-key-via-studio-setadvancedsettings-intended-limitation/24424 "2026-07-24T11:40:53Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Falconshield](https://avatars.discourse-cdn.com/v4/letter/f/6de8d8/32.png) [@Falconshield](https://qa.fmod.com/u/Falconshield)\
**Post date:** [July 24, 2026, 11:40am UTC](https://qa.fmod.com/t/html5-wasm-no-way-to-supply-a-bank-encryption-key-via-studio-setadvancedsettings-intended-limitation/24424/1 "2026-07-24T11:40:53Z")

</div>

I’m developing a web app with the help of Claude. Fmod is the core engine, and html is the front end.

I set a Bank Encryption Key in FMOD Studio (Preferences \> Build) and rebuilt all banks. After that, no bank will play in the browser. I would like to know whether supplying the key is possible on this platform at all, or whether I have missed something.

**Behaviour observed**

- `loadBankFile` returns `FMOD_OK` — metadata parses fine.
- `Bank::loadSampleData` followed by polling `getSampleLoadingState` returns `FMOD_OK` for the call, with the state reported as `FMOD_STUDIO_LOADING_STATE_ERROR`.
- Clearing the key in Studio and rebuilding makes everything work again.

That is consistent with the metadata being readable and the sample data failing to decrypt.

**What I tried**

Calling `setAdvancedSettings` before `initialize()`, with the key as a property on the settings object:

```js
gStudioSystem.setAdvancedSettings({
  cbsize: 0,
  commandqueuesize: 0,
  handleinitialsize: 0,
  studioupdateperiod: 0,
  idlesampledatapoolsize: 0,
  streamingscheduledelay: 0,
  encryptionkey: "mykey"
});

```

This returns `FMOD_OK`, but bank loading behaves identically whether the key is supplied or not. `getAdvancedSettings` returns 31 for me, so I could not read the settings back to check.

I also verified that the banks themselves are genuinely encrypted, by diffing two builds of the same bank that differ only by the key setting: the first 38 144 bytes are byte-identical, the `FSB5` magic present at that offset in the unencrypted build is absent in the encrypted one, entropy of the remainder rises from 7.95 to 7.99 bits/byte, and readable asset filenames disappear. So the Studio side is doing exactly what it should.

**What made me suspect a platform limitation**

Searching the strings in `fmodstudio.wasm`, the debug log format string for the call reads:

```plaintext
Studio::System::setAdvancedSettings(settings: {commandqueuesize: %u, handleinitialsize: %u, studioupdateperiod: %d, idlesampledatapoolsize: %d})

```

Four fields, and neither `encryptionkey` nor `streamingscheduledelay` among them. The Core equivalent in the same binary lists its full field set. `encryptionkey` occurs only once in the whole binary, in an unrelated group of setting-name strings.

That suggests the HTML5 binding registers a reduced version of `FMOD_STUDIO_ADVANCEDSETTINGS` in which the key simply is not a field — which would explain the `FMOD_OK` with no effect, since an unrecognised property on a JS object would be dropped silently.

**Questions**

1. Is bank encryption unsupported on HTML5 by design? If so, it would be very helpful to have that stated on the Bank Encryption page in the manual, or on the HTML5 platform page — as written, neither hints at a platform restriction.
2. If it is not by design, is there another supported route to supply the key on this platform that I have overlooked?
3. If the field is genuinely missing from the binding, could it be added?

Either answer is fine — I mainly want to stop guessing before deciding whether to ship without encryption. Returning something other than `FMOD_OK` when an encryption key is required but unavailable would also have saved me a fair amount of time.

Thanks.

---

<div class="post-metadata">

**Author:** ![brett](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/brett/32/261_2.png) [@brett](https://qa.fmod.com/u/brett)\
**Post date:** [July 27, 2026, 2:02am UTC](https://qa.fmod.com/t/html5-wasm-no-way-to-supply-a-bank-encryption-key-via-studio-setadvancedsettings-intended-limitation/24424/2 "2026-07-27T02:02:37Z")

</div>

I can confirm that encryptionkey was left out in the JS wrapper code we added (it was more like a port). The docs should have reflect this.

For the next update rather than updated the docs i’ve completed support for FMOD\_STUDIO\_ADVANCEDSETTINGS members including encryptionkey.

---

<div class="post-metadata">

**Author:** ![Falconshield](https://avatars.discourse-cdn.com/v4/letter/f/6de8d8/32.png) [@Falconshield](https://qa.fmod.com/u/Falconshield)\
**Post date:** [July 27, 2026, 5:20pm UTC](https://qa.fmod.com/t/html5-wasm-no-way-to-supply-a-bank-encryption-key-via-studio-setadvancedsettings-intended-limitation/24424/3 "2026-07-27T17:20:25Z")

</div>

Amazing, thank you Brett! 🙏🏻

/Josef
