Mods / EternalS: Spivohrai

Tags:
Music
Author:
Lumvik
Side:
Both
Created:
May 12th at 10:13 AM
Last modified:
Jun 10th at 3:23 PM
Downloads:
376
Recommended download (for Vintage Story 1.22.0 - 1.22.3):
EternalS-Spivohrai-0.8.0.zip  1-click install

Bundled SoundFont

Bundled SoundFont

Spivohrai automatically installs the bundled GeneralUser GS SoundFont when needed:

ModConfig/Spivohrai/SoundFonts/GeneralUser-GS.sf2

Players do not need to manually download or configure a SoundFont.

You may still override the default SoundFont through:

ModConfig/Spivohrai/Config.json

using:

"soundFontPath"

If the configured path points to the SoundFonts folder:

  • GeneralUser-GS.sf2 will be preferred automatically

  • or a single .sf2 file will be used if exactly one exists

Currently only .sf2 SoundFonts are supported.

Basic Usage

Basic Usage

  1. Place MIDI files into:

ModConfig/Spivohrai/Songs/
  1. Hold a supported instrument.

  2. Press F.

  3. Select a song.

  4. Choose a MIDI part with < / >.

  5. Press Play.

Right-clicking with a supported instrument will:

  • start playback

  • pause the current song

  • or resume playback

depending on the current state.

Instrument System

Instrument System

Normal instruments can only play a single MIDI channel/part at a time.

The creative-only item named Spivohrai acts as the orchestra controller and is the only instrument capable of playing:

All

which enables full multi-instrument MIDI playback.

This helps multiplayer performances feel more grounded and prevents every handheld instrument from behaving like a full orchestra.

Creative Instruments

Creative Instruments

Current creative-only instruments include:

  • Spivohrai

  • Lyre, Bandura, Kobza, Tsymbaly

  • Sopilka, Floyara, Recorder, Gemshorn

  • Bayan, Hurdy-Gurdy, Portative Organ

  • Drymba, Duda, Surma, Trembita, Horn, Natural Horn

  • Saxophone, Clarinet

  • Lute, Gusli, Psaltery, Citole

  • Rebec, Vielle, Viol

  • Shawm, Crumhorn, Rauschpfeife, Zurna

Many voice and wind instruments currently reuse temporary vanilla-style models.

The Spivohrai controller currently uses the vanilla large music box model.

Custom instrument models and animations are planned for future versions.

How the Audio Works

How the Audio Works

MIDI files do not contain recorded sound.

Instead, they contain musical instructions such as:

  • note on/off events

  • instrument changes

  • sustain

  • pitch bend

  • tempo

  • controller automation

  • drum mapping

Spivohrai feeds this MIDI data into MeltySynth using the active SoundFont, generating real audio playback instead of simple note triggers.

This allows:

  • proper drums

  • layered instruments

  • pitch bends

  • sustain pedals

  • expressive playback

  • accurate General MIDI instrumentation

Different SoundFonts can dramatically change how songs sound.

If a MIDI sounds incorrect, test it with the same SoundFont in another MIDI player before assuming the issue comes from Spivohrai itself.

Audio Cache

Audio Cache

Rendered audio is cached here:

ModConfig/Spivohrai/Cache/

Delete cache files to force MIDI re-rendering.

By default Spivohrai renders audio as:

mono OGG

using:

"midiOutputChannels": 1

This avoids OpenAL stereo source limitations present on some Vintage Story clients.

Volume Control

Volume Control

Spivohrai has its own dedicated client-side volume slider:

Settings -> Sound -> Spivohrai

Spivohrai playback intentionally ignores vanilla:

  • Sound volume

  • Music volume

  • Entity volume

This allows every player to control their own listening volume independently without affecting other listeners.

Multiplayer

Multiplayer

When a player starts a MIDI track:

  1. Their client synthesizes the MIDI into OGG audio locally.

  2. The generated audio is uploaded to the server in small chunks.

  3. The server validates playback ownership and relays the audio to nearby players.

  4. Nearby clients reconstruct and play the streamed OGG track.

Other players:

  • need the Spivohrai mod installed

  • do NOT need the MIDI file

  • do NOT need the SoundFont

A SoundFont is only required for players who want to render and start their own MIDI playback locally.

Current Limitations

Current Limitations

  • Large OGG transfers may cause listeners to join songs slightly late.

  • .sf3 support is not implemented yet.

  • Single-part playback currently filters by MIDI channel, which may not perfectly split unusual MIDI files.

  • Many instrument models are still temporary placeholders.

  • Instrument-specific sound behavior is still future work.

 

Future Plans

Future Plans

Planned improvements include:

  • real custom instrument models

  • instrument animations

  • spatial ensemble playback

  • improved MIDI part separation

  • streaming optimization

  • .sf3 support

  • optional positional acoustics

  • instrument-specific sound coloration

  • cooperative music playback

Mod Version Mod IdentifierFor Game version Downloads Released Changelog Download 1-click mod install*
0.8.0 spivohrai
1.22.0 - 1.22.3
102 Jun 10th at 3:19 PM EternalS-Spivohrai-0.8.0.zip 1-click install
  • Added SoundFont selection in the Spivohrai menu with checkboxes.
  • Players can now enable one SoundFont or combine several SoundFonts at once.
  • Added automatic multi-SoundFont profile generation.
  • Added smarter routing for MIDI instruments.
  • Added Live Keyboard mode - press K to enable/disable
  • Live mode uses two playable octaves at a time:
    • lower row: Z S X D C V G B H N J M
    • upper row: Q 2 W 3 E R 5 T 6 Y 7 U
    • Added octave switching in Live mode:
      • [ octave down
      • ] octave up
0.7.7 spivohrai
1.22.0 - 1.22.3
84 May 18th at 12:58 PM spivohrai-0.7.7.zip 1-click install

Added
- Added automatic loudness normalization for MIDI tracks.
- Quiet MIDI files are now boosted automatically.
- Added a gentle dynamic range compressor for tracks with sudden loud sections.
- Added a safety limiter to prevent clipping and distorted audio.
- Added loudness analysis cache, so the same MIDI/SoundFont setup does not need to be analyzed every time.

Improved
- MIDI track volume is now more consistent between different songs.
- Sound is more stable across different `.sf2` SoundFonts.
- Placed Spivohrai now works properly as a sound source.
- Music from a placed Spivohrai now plays from its block position instead of the player.
- Spivohrai volume is now controlled through the game sound settings and is client-side for each player.
- MIDI cache handling was improved so audio is regenerated when important processing settings change.

Fixed
- Fixed normal tracks becoming distorted after loudness changes.
- Fixed very quiet MIDI tracks staying too quiet even at 100% volume.
- Fixed stale cached audio being reused after audio processing changes.
- Fixed packaging/version issues in the released archive.

0.6.6 spivohrai 34 May 16th at 1:53 PM Empty spivohrai-0.6.6.zip 1-click install
0.4.3 spivohrai 32 May 14th at 5:15 PM Empty spivohrai-0.4.3.zip 1-click install
0.1.22 spivohrai 11 May 13th at 3:49 PM Empty spivohrai-0.1.22.zip 1-click install
0.1.21 spivohrai 26 May 13th at 3:28 PM Empty spivohrai-0.1.21.zip 1-click install
0.1.4 spivohrai 22 May 13th at 5:23 AM Empty Spivohrai014test.zip 1-click install
0.1.2 spivohrai 13 May 12th at 7:01 PM Empty Spivohrai012test.zip 1-click install
0.1.1 spivohrai
1.22.0 - 1.22.2
26 May 12th at 1:36 PM Empty Spivohrai011.zip 1-click install
0.1.0 spivohrai
1.22.0 - 1.22.2
25 May 12th at 10:14 AM Empty spivohrai.zip 1-click install

1 Comment (oldest first | newest first) (threaded | flat)

Vigilance, May 23rd at 8:51 AM

Does the intended long term scope of this include input from midi controllers or directly playing instruments, or only reading files?