LIBSONARE
GS Sound ModuleA 16-part GM/GS sound module: choose a sound per part, then play the built-in phrase or your own .mid
LOCAL
OSS DEMO

Everything runs locally on your device and nothing is sent anywhere. This is an open-source demo, not a service.

Idle
PART1SOUND-EFX00 00 ThruSOURCEbuilt-in phrase
A sound module without samples

Pick a sound for each of the 16 parts and press Play, or drop in your own .mid. One shared insertion effect can be chosen as well. Every voice is a built-in fallback voice that libsonare synthesizes without a SoundFont, so the page ships no samples and nothing leaves the browser. Only the piano model is calibrated against a reference recording; the other physical models are approximations.

Read about the instruments
LIBSONAREGS MODULE16 PARTS · GM/GS TONE GENERATOR
Part1
SoundPGM 0BANK 0
Insertion effect00 00 · ThruUnchanged at defaults
Sound

Asking the engine for the sound set…

Insertion effect 64 adjustable · 0 fixed · 1 unchanged at defaults
Unchanged at defaults
Parameters 0 named · 0 move the sound

This type prints no parameters.

What the derivation cannot see
  • One unit is one unit. Every number here is what one individual machine answered, and no second one has been measured. Entries flagged unit_specific are the ones a second machine is most likely to disagree with; that a entry is not flagged is not a claim that it would agree.
  • A slot with no printed_values field is not reached, and nothing here says whether it carries a quantity at all. Five hundred and thirty of the unit's parameters are in that state.
  • Reach is a statement about the archive, not about libsonare. A (type, slot) pair reached here still has to have somewhere to go in the insert it maps to before anything is translated, and that count is taken elsewhere.
  • The class assignment is taken from the printed spelling a record carries and from the type list its inference claims. A slot whose spelling matches a class it is not on would be assigned to it, and nothing here would notice: what would notice is a reading of that slot.
  • Where a class is selected by the bare byte range rather than by a conversion column, the inference's address list is part of the selector. A slot of one of those types carrying the same quantity at another address is invisible here rather than reported.
  • The defaults are the bytes the unit powered up holding. The manual's own printed statement of each default is not transcribed anywhere in the archive, so nothing here compares the two.
  • A ladder or a table is checked against the records that admit a reading. A setting no record admitted is carried on the law alone, and an entry flagged approximate is one no reading placed at all.
  • Whether a slot that returns a constant fraction of its cited column is on a second law or on the same one read through something else. The fraction and the shortfall are both reported for a slot this derivation does not reach, and neither is acted on: separating them wants a reading the unit can be asked for and this cannot produce.
Parts
1 100
PAN
C
REV
40
CHO
0
2 100
PAN
C
REV
40
CHO
0
3 100
PAN
C
REV
40
CHO
0
4 100
PAN
C
REV
40
CHO
0
5 100
PAN
C
REV
40
CHO
0
6 100
PAN
C
REV
40
CHO
0
7 100
PAN
C
REV
40
CHO
0
8 100
PAN
C
REV
40
CHO
0
9 100
PAN
C
REV
40
CHO
0
10 RHY 100
PAN
C
REV
40
CHO
0
11 100
PAN
C
REV
40
CHO
0
12 100
PAN
C
REV
40
CHO
0
13 100
PAN
C
REV
40
CHO
0
14 100
PAN
C
REV
40
CHO
0
15 100
PAN
C
REV
40
CHO
0
16 100
PAN
C
REV
40
CHO
0
Output
Press play to bounce and hear the module
Built-in phrase — drop a .mid here or choose one to play your own

Nothing to send: every setting is at its power-on value.