From d8408a2c5997d2dd24bfc1196558c89bfce80e2c Mon Sep 17 00:00:00 2001
From: CHOMPStation2StaffMirrorBot
<94713762+CHOMPStation2StaffMirrorBot@users.noreply.github.com>
Date: Sun, 14 Sep 2025 13:46:26 -0700
Subject: [PATCH] [MIRROR] Instrument Update (#11645)
Co-authored-by: Selis <12716288+ItsSelis@users.noreply.github.com>
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
---
.../signals/signals_atom/signals_atom_main.dm | 3 +
code/__defines/dcs/signals/signals_music.dm | 12 +
code/__defines/instruments.dm | 6 +-
code/__defines/song.dm | 17 +
code/__defines/text.dm | 4 +
code/_helpers/text.dm | 107 +++++
.../subsystems/processing/instruments.dm | 11 +-
code/game/objects/items/devices/hacktool.dm | 2 +-
.../client/preferences/types/game/sound.dm | 14 +
.../instrument_data/_instrument_data.dm | 7 +-
.../instruments/instrument_data/brass.dm | 22 +-
.../instrument_data/chromatic_percussion.dm | 32 +-
.../instruments/instrument_data/fun.dm | 11 +-
.../instruments/instrument_data/guitar.dm | 34 +-
.../instruments/instrument_data/hardcoded.dm | 4 +-
.../instruments/instrument_data/organ.dm | 40 +-
.../instruments/instrument_data/piano.dm | 66 +--
.../instrument_data/synth_tones.dm | 8 +-
code/modules/instruments/items.dm | 98 +----
code/modules/instruments/piano_synth.dm | 60 +++
code/modules/instruments/songs/_song.dm | 179 +++++---
code/modules/instruments/songs/editor.dm | 411 ++++++++----------
code/modules/instruments/songs/play_legacy.dm | 23 +-
.../instruments/songs/play_synthesized.dm | 43 +-
code/modules/instruments/stationary.dm | 89 ++--
.../code/modules/instruments/items.dm | 0
.../code/modules/instruments/stationary.dm | 13 +
sound/runtime/README.md | 5 +
.../instruments/accordion/Ab2.mid | Bin
.../instruments/accordion/Ab3.mid | Bin
.../instruments/accordion/Ab4.mid | Bin
.../instruments/accordion/Ab5.mid | Bin
.../instruments/accordion/Ab6.mid | Bin
.../instruments/accordion/An2.mid | Bin
.../instruments/accordion/An3.mid | Bin
.../instruments/accordion/An4.mid | Bin
.../instruments/accordion/An5.mid | Bin
.../instruments/accordion/An6.mid | Bin
.../instruments/accordion/Bb2.mid | Bin
.../instruments/accordion/Bb3.mid | Bin
.../instruments/accordion/Bb4.mid | Bin
.../instruments/accordion/Bb5.mid | Bin
.../instruments/accordion/Bb6.mid | Bin
.../instruments/accordion/Bn2.mid | Bin
.../instruments/accordion/Bn3.mid | Bin
.../instruments/accordion/Bn4.mid | Bin
.../instruments/accordion/Bn5.mid | Bin
.../instruments/accordion/Bn6.mid | Bin
.../instruments/accordion/Cn2.mid | Bin
.../instruments/accordion/Cn3.mid | Bin
.../instruments/accordion/Cn4.mid | Bin
.../instruments/accordion/Cn5.mid | Bin
.../instruments/accordion/Cn6.mid | Bin
.../instruments/accordion/Db2.mid | Bin
.../instruments/accordion/Db3.mid | Bin
.../instruments/accordion/Db4.mid | Bin
.../instruments/accordion/Db5.mid | Bin
.../instruments/accordion/Db6.mid | Bin
.../instruments/accordion/Dn2.mid | Bin
.../instruments/accordion/Dn3.mid | Bin
.../instruments/accordion/Dn4.mid | Bin
.../instruments/accordion/Dn5.mid | Bin
.../instruments/accordion/Dn6.mid | Bin
.../instruments/accordion/Eb2.mid | Bin
.../instruments/accordion/Eb3.mid | Bin
.../instruments/accordion/Eb4.mid | Bin
.../instruments/accordion/Eb5.mid | Bin
.../instruments/accordion/Eb6.mid | Bin
.../instruments/accordion/En2.mid | Bin
.../instruments/accordion/En3.mid | Bin
.../instruments/accordion/En4.mid | Bin
.../instruments/accordion/En5.mid | Bin
.../instruments/accordion/En6.mid | Bin
.../instruments/accordion/Fn2.mid | Bin
.../instruments/accordion/Fn3.mid | Bin
.../instruments/accordion/Fn4.mid | Bin
.../instruments/accordion/Fn5.mid | Bin
.../instruments/accordion/Fn6.mid | Bin
.../instruments/accordion/Gb2.mid | Bin
.../instruments/accordion/Gb3.mid | Bin
.../instruments/accordion/Gb4.mid | Bin
.../instruments/accordion/Gb5.mid | Bin
.../instruments/accordion/Gb6.mid | Bin
.../instruments/accordion/Gn2.mid | Bin
.../instruments/accordion/Gn3.mid | Bin
.../instruments/accordion/Gn4.mid | Bin
.../instruments/accordion/Gn5.mid | Bin
.../instruments/accordion/Gn6.mid | Bin
sound/{ => runtime}/instruments/banjo/Ab3.ogg | Bin
sound/{ => runtime}/instruments/banjo/Ab4.ogg | Bin
sound/{ => runtime}/instruments/banjo/Ab5.ogg | Bin
sound/{ => runtime}/instruments/banjo/An3.ogg | Bin
sound/{ => runtime}/instruments/banjo/An4.ogg | Bin
sound/{ => runtime}/instruments/banjo/An5.ogg | Bin
sound/{ => runtime}/instruments/banjo/Bb3.ogg | Bin
sound/{ => runtime}/instruments/banjo/Bb4.ogg | Bin
sound/{ => runtime}/instruments/banjo/Bb5.ogg | Bin
sound/{ => runtime}/instruments/banjo/Bn2.ogg | Bin
sound/{ => runtime}/instruments/banjo/Bn3.ogg | Bin
sound/{ => runtime}/instruments/banjo/Bn4.ogg | Bin
sound/{ => runtime}/instruments/banjo/Bn5.ogg | Bin
sound/{ => runtime}/instruments/banjo/Cn3.ogg | Bin
sound/{ => runtime}/instruments/banjo/Cn4.ogg | Bin
sound/{ => runtime}/instruments/banjo/Cn5.ogg | Bin
sound/{ => runtime}/instruments/banjo/Cn6.ogg | Bin
sound/{ => runtime}/instruments/banjo/Db3.ogg | Bin
sound/{ => runtime}/instruments/banjo/Db4.ogg | Bin
sound/{ => runtime}/instruments/banjo/Db5.ogg | Bin
sound/{ => runtime}/instruments/banjo/Db6.ogg | Bin
sound/{ => runtime}/instruments/banjo/Dn3.ogg | Bin
sound/{ => runtime}/instruments/banjo/Dn4.ogg | Bin
sound/{ => runtime}/instruments/banjo/Dn5.ogg | Bin
sound/{ => runtime}/instruments/banjo/Dn6.ogg | Bin
sound/{ => runtime}/instruments/banjo/Eb3.ogg | Bin
sound/{ => runtime}/instruments/banjo/Eb4.ogg | Bin
sound/{ => runtime}/instruments/banjo/Eb5.ogg | Bin
sound/{ => runtime}/instruments/banjo/En3.ogg | Bin
sound/{ => runtime}/instruments/banjo/En4.ogg | Bin
sound/{ => runtime}/instruments/banjo/En5.ogg | Bin
sound/{ => runtime}/instruments/banjo/Fn3.ogg | Bin
sound/{ => runtime}/instruments/banjo/Fn4.ogg | Bin
sound/{ => runtime}/instruments/banjo/Fn5.ogg | Bin
sound/{ => runtime}/instruments/banjo/Gb3.ogg | Bin
sound/{ => runtime}/instruments/banjo/Gb4.ogg | Bin
sound/{ => runtime}/instruments/banjo/Gb5.ogg | Bin
sound/{ => runtime}/instruments/banjo/Gn3.ogg | Bin
sound/{ => runtime}/instruments/banjo/Gn4.ogg | Bin
sound/{ => runtime}/instruments/banjo/Gn5.ogg | Bin
.../instruments/bikehorn/Ab2.ogg | Bin
.../instruments/bikehorn/Ab3.ogg | Bin
.../instruments/bikehorn/Ab4.ogg | Bin
.../instruments/bikehorn/An2.ogg | Bin
.../instruments/bikehorn/An3.ogg | Bin
.../instruments/bikehorn/An4.ogg | Bin
.../instruments/bikehorn/Bb2.ogg | Bin
.../instruments/bikehorn/Bb3.ogg | Bin
.../instruments/bikehorn/Bb4.ogg | Bin
.../instruments/bikehorn/Bn2.ogg | Bin
.../instruments/bikehorn/Bn3.ogg | Bin
.../instruments/bikehorn/Bn4.ogg | Bin
.../instruments/bikehorn/Cn3.ogg | Bin
.../instruments/bikehorn/Cn4.ogg | Bin
.../instruments/bikehorn/Cn5.ogg | Bin
.../instruments/bikehorn/Db3.ogg | Bin
.../instruments/bikehorn/Db4.ogg | Bin
.../instruments/bikehorn/Db5.ogg | Bin
.../instruments/bikehorn/Dn3.ogg | Bin
.../instruments/bikehorn/Dn4.ogg | Bin
.../instruments/bikehorn/Dn5.ogg | Bin
.../instruments/bikehorn/Eb3.ogg | Bin
.../instruments/bikehorn/Eb4.ogg | Bin
.../instruments/bikehorn/Eb5.ogg | Bin
.../instruments/bikehorn/En2.ogg | Bin
.../instruments/bikehorn/En3.ogg | Bin
.../instruments/bikehorn/En4.ogg | Bin
.../instruments/bikehorn/Fn2.ogg | Bin
.../instruments/bikehorn/Fn3.ogg | Bin
.../instruments/bikehorn/Fn4.ogg | Bin
.../instruments/bikehorn/Gb2.ogg | Bin
.../instruments/bikehorn/Gb3.ogg | Bin
.../instruments/bikehorn/Gb4.ogg | Bin
.../instruments/bikehorn/Gn2.ogg | Bin
.../instruments/bikehorn/Gn3.ogg | Bin
.../instruments/bikehorn/Gn4.ogg | Bin
.../{ => runtime}/instruments/eguitar/Ab4.ogg | Bin
.../{ => runtime}/instruments/eguitar/Ab5.ogg | Bin
.../{ => runtime}/instruments/eguitar/Ab6.ogg | Bin
.../{ => runtime}/instruments/eguitar/An4.ogg | Bin
.../{ => runtime}/instruments/eguitar/An5.ogg | Bin
.../{ => runtime}/instruments/eguitar/An6.ogg | Bin
.../{ => runtime}/instruments/eguitar/Bb4.ogg | Bin
.../{ => runtime}/instruments/eguitar/Bb5.ogg | Bin
.../{ => runtime}/instruments/eguitar/Bb6.ogg | Bin
.../{ => runtime}/instruments/eguitar/Bn4.ogg | Bin
.../{ => runtime}/instruments/eguitar/Bn5.ogg | Bin
.../{ => runtime}/instruments/eguitar/Bn6.ogg | Bin
.../{ => runtime}/instruments/eguitar/Cn4.ogg | Bin
.../{ => runtime}/instruments/eguitar/Cn5.ogg | Bin
.../{ => runtime}/instruments/eguitar/Cn6.ogg | Bin
.../{ => runtime}/instruments/eguitar/Cn7.ogg | Bin
.../{ => runtime}/instruments/eguitar/Db4.ogg | Bin
.../{ => runtime}/instruments/eguitar/Db5.ogg | Bin
.../{ => runtime}/instruments/eguitar/Db6.ogg | Bin
.../{ => runtime}/instruments/eguitar/Dn4.ogg | Bin
.../{ => runtime}/instruments/eguitar/Dn5.ogg | Bin
.../{ => runtime}/instruments/eguitar/Dn6.ogg | Bin
.../{ => runtime}/instruments/eguitar/Eb4.ogg | Bin
.../{ => runtime}/instruments/eguitar/Eb5.ogg | Bin
.../{ => runtime}/instruments/eguitar/Eb6.ogg | Bin
.../{ => runtime}/instruments/eguitar/En4.ogg | Bin
.../{ => runtime}/instruments/eguitar/En5.ogg | Bin
.../{ => runtime}/instruments/eguitar/En6.ogg | Bin
.../{ => runtime}/instruments/eguitar/Fn4.ogg | Bin
.../{ => runtime}/instruments/eguitar/Fn5.ogg | Bin
.../{ => runtime}/instruments/eguitar/Fn6.ogg | Bin
.../{ => runtime}/instruments/eguitar/Gb4.ogg | Bin
.../{ => runtime}/instruments/eguitar/Gb5.ogg | Bin
.../{ => runtime}/instruments/eguitar/Gb6.ogg | Bin
.../{ => runtime}/instruments/eguitar/Gn4.ogg | Bin
.../{ => runtime}/instruments/eguitar/Gn5.ogg | Bin
.../{ => runtime}/instruments/eguitar/Gn6.ogg | Bin
.../instruments/glockenspiel/Ab2.mid | Bin
.../instruments/glockenspiel/Ab3.mid | Bin
.../instruments/glockenspiel/Ab4.mid | Bin
.../instruments/glockenspiel/Ab5.mid | Bin
.../instruments/glockenspiel/Ab6.mid | Bin
.../instruments/glockenspiel/Ab7.mid | Bin
.../instruments/glockenspiel/An2.mid | Bin
.../instruments/glockenspiel/An3.mid | Bin
.../instruments/glockenspiel/An4.mid | Bin
.../instruments/glockenspiel/An5.mid | Bin
.../instruments/glockenspiel/An6.mid | Bin
.../instruments/glockenspiel/An7.mid | Bin
.../instruments/glockenspiel/Bb2.mid | Bin
.../instruments/glockenspiel/Bb3.mid | Bin
.../instruments/glockenspiel/Bb4.mid | Bin
.../instruments/glockenspiel/Bb5.mid | Bin
.../instruments/glockenspiel/Bb6.mid | Bin
.../instruments/glockenspiel/Bb7.mid | Bin
.../instruments/glockenspiel/Bn2.mid | Bin
.../instruments/glockenspiel/Bn3.mid | Bin
.../instruments/glockenspiel/Bn4.mid | Bin
.../instruments/glockenspiel/Bn5.mid | Bin
.../instruments/glockenspiel/Bn6.mid | Bin
.../instruments/glockenspiel/Bn7.mid | Bin
.../instruments/glockenspiel/Cn2.mid | Bin
.../instruments/glockenspiel/Cn3.mid | Bin
.../instruments/glockenspiel/Cn4.mid | Bin
.../instruments/glockenspiel/Cn5.mid | Bin
.../instruments/glockenspiel/Cn6.mid | Bin
.../instruments/glockenspiel/Cn7.mid | Bin
.../instruments/glockenspiel/Db2.mid | Bin
.../instruments/glockenspiel/Db3.mid | Bin
.../instruments/glockenspiel/Db4.mid | Bin
.../instruments/glockenspiel/Db5.mid | Bin
.../instruments/glockenspiel/Db6.mid | Bin
.../instruments/glockenspiel/Db7.mid | Bin
.../instruments/glockenspiel/Dn2.mid | Bin
.../instruments/glockenspiel/Dn3.mid | Bin
.../instruments/glockenspiel/Dn4.mid | Bin
.../instruments/glockenspiel/Dn5.mid | Bin
.../instruments/glockenspiel/Dn6.mid | Bin
.../instruments/glockenspiel/Dn7.mid | Bin
.../instruments/glockenspiel/Eb2.mid | Bin
.../instruments/glockenspiel/Eb3.mid | Bin
.../instruments/glockenspiel/Eb4.mid | Bin
.../instruments/glockenspiel/Eb5.mid | Bin
.../instruments/glockenspiel/Eb6.mid | Bin
.../instruments/glockenspiel/Eb7.mid | Bin
.../instruments/glockenspiel/En2.mid | Bin
.../instruments/glockenspiel/En3.mid | Bin
.../instruments/glockenspiel/En4.mid | Bin
.../instruments/glockenspiel/En5.mid | Bin
.../instruments/glockenspiel/En6.mid | Bin
.../instruments/glockenspiel/En7.mid | Bin
.../instruments/glockenspiel/Fn2.mid | Bin
.../instruments/glockenspiel/Fn3.mid | Bin
.../instruments/glockenspiel/Fn4.mid | Bin
.../instruments/glockenspiel/Fn5.mid | Bin
.../instruments/glockenspiel/Fn6.mid | Bin
.../instruments/glockenspiel/Fn7.mid | Bin
.../instruments/glockenspiel/Gb2.mid | Bin
.../instruments/glockenspiel/Gb3.mid | Bin
.../instruments/glockenspiel/Gb4.mid | Bin
.../instruments/glockenspiel/Gb5.mid | Bin
.../instruments/glockenspiel/Gb6.mid | Bin
.../instruments/glockenspiel/Gb7.mid | Bin
.../instruments/glockenspiel/Gn2.mid | Bin
.../instruments/glockenspiel/Gn3.mid | Bin
.../instruments/glockenspiel/Gn4.mid | Bin
.../instruments/glockenspiel/Gn5.mid | Bin
.../instruments/glockenspiel/Gn6.mid | Bin
.../instruments/glockenspiel/Gn7.mid | Bin
.../{ => runtime}/instruments/guitar/Ab3.ogg | Bin
.../{ => runtime}/instruments/guitar/Ab4.ogg | Bin
.../{ => runtime}/instruments/guitar/Ab5.ogg | Bin
.../{ => runtime}/instruments/guitar/Ab6.ogg | Bin
.../{ => runtime}/instruments/guitar/An3.ogg | Bin
.../{ => runtime}/instruments/guitar/An4.ogg | Bin
.../{ => runtime}/instruments/guitar/An5.ogg | Bin
.../{ => runtime}/instruments/guitar/An6.ogg | Bin
.../{ => runtime}/instruments/guitar/Bb3.ogg | Bin
.../{ => runtime}/instruments/guitar/Bb4.ogg | Bin
.../{ => runtime}/instruments/guitar/Bb5.ogg | Bin
.../{ => runtime}/instruments/guitar/Bb6.ogg | Bin
.../{ => runtime}/instruments/guitar/Bn3.ogg | Bin
.../{ => runtime}/instruments/guitar/Bn4.ogg | Bin
.../{ => runtime}/instruments/guitar/Bn5.ogg | Bin
.../{ => runtime}/instruments/guitar/Bn6.ogg | Bin
.../{ => runtime}/instruments/guitar/Cb4.ogg | Bin
.../{ => runtime}/instruments/guitar/Cb5.ogg | Bin
.../{ => runtime}/instruments/guitar/Cb6.ogg | Bin
.../{ => runtime}/instruments/guitar/Cb7.ogg | Bin
.../{ => runtime}/instruments/guitar/Cn4.ogg | Bin
.../{ => runtime}/instruments/guitar/Cn5.ogg | Bin
.../{ => runtime}/instruments/guitar/Cn6.ogg | Bin
.../{ => runtime}/instruments/guitar/Db4.ogg | Bin
.../{ => runtime}/instruments/guitar/Db5.ogg | Bin
.../{ => runtime}/instruments/guitar/Db6.ogg | Bin
.../{ => runtime}/instruments/guitar/Dn4.ogg | Bin
.../{ => runtime}/instruments/guitar/Dn5.ogg | Bin
.../{ => runtime}/instruments/guitar/Dn6.ogg | Bin
.../{ => runtime}/instruments/guitar/Eb4.ogg | Bin
.../{ => runtime}/instruments/guitar/Eb5.ogg | Bin
.../{ => runtime}/instruments/guitar/Eb6.ogg | Bin
.../{ => runtime}/instruments/guitar/En3.ogg | Bin
.../{ => runtime}/instruments/guitar/En4.ogg | Bin
.../{ => runtime}/instruments/guitar/En5.ogg | Bin
.../{ => runtime}/instruments/guitar/En6.ogg | Bin
.../{ => runtime}/instruments/guitar/Fb3.ogg | Bin
.../{ => runtime}/instruments/guitar/Fb4.ogg | Bin
.../{ => runtime}/instruments/guitar/Fb5.ogg | Bin
.../{ => runtime}/instruments/guitar/Fb6.ogg | Bin
.../{ => runtime}/instruments/guitar/Fn3.ogg | Bin
.../{ => runtime}/instruments/guitar/Fn4.ogg | Bin
.../{ => runtime}/instruments/guitar/Fn5.ogg | Bin
.../{ => runtime}/instruments/guitar/Fn6.ogg | Bin
.../{ => runtime}/instruments/guitar/Gb3.ogg | Bin
.../{ => runtime}/instruments/guitar/Gb4.ogg | Bin
.../{ => runtime}/instruments/guitar/Gb5.ogg | Bin
.../{ => runtime}/instruments/guitar/Gb6.ogg | Bin
.../{ => runtime}/instruments/guitar/Gn3.ogg | Bin
.../{ => runtime}/instruments/guitar/Gn4.ogg | Bin
.../{ => runtime}/instruments/guitar/Gn5.ogg | Bin
.../{ => runtime}/instruments/guitar/Gn6.ogg | Bin
.../instruments/harmonica/Ab2.mid | Bin
.../instruments/harmonica/Ab3.mid | Bin
.../instruments/harmonica/Ab4.mid | Bin
.../instruments/harmonica/Ab5.mid | Bin
.../instruments/harmonica/Ab6.mid | Bin
.../instruments/harmonica/An2.mid | Bin
.../instruments/harmonica/An3.mid | Bin
.../instruments/harmonica/An4.mid | Bin
.../instruments/harmonica/An5.mid | Bin
.../instruments/harmonica/An6.mid | Bin
.../instruments/harmonica/Bb2.mid | Bin
.../instruments/harmonica/Bb3.mid | Bin
.../instruments/harmonica/Bb4.mid | Bin
.../instruments/harmonica/Bb5.mid | Bin
.../instruments/harmonica/Bb6.mid | Bin
.../instruments/harmonica/Bn2.mid | Bin
.../instruments/harmonica/Bn3.mid | Bin
.../instruments/harmonica/Bn4.mid | Bin
.../instruments/harmonica/Bn5.mid | Bin
.../instruments/harmonica/Bn6.mid | Bin
.../instruments/harmonica/Cn2.mid | Bin
.../instruments/harmonica/Cn3.mid | Bin
.../instruments/harmonica/Cn4.mid | Bin
.../instruments/harmonica/Cn5.mid | Bin
.../instruments/harmonica/Cn6.mid | Bin
.../instruments/harmonica/Cn7.mid | Bin
.../instruments/harmonica/Db2.mid | Bin
.../instruments/harmonica/Db3.mid | Bin
.../instruments/harmonica/Db4.mid | Bin
.../instruments/harmonica/Db5.mid | Bin
.../instruments/harmonica/Db6.mid | Bin
.../instruments/harmonica/Dn2.mid | Bin
.../instruments/harmonica/Dn3.mid | Bin
.../instruments/harmonica/Dn4.mid | Bin
.../instruments/harmonica/Dn5.mid | Bin
.../instruments/harmonica/Dn6.mid | Bin
.../instruments/harmonica/Eb2.mid | Bin
.../instruments/harmonica/Eb3.mid | Bin
.../instruments/harmonica/Eb4.mid | Bin
.../instruments/harmonica/Eb5.mid | Bin
.../instruments/harmonica/Eb6.mid | Bin
.../instruments/harmonica/En2.mid | Bin
.../instruments/harmonica/En3.mid | Bin
.../instruments/harmonica/En4.mid | Bin
.../instruments/harmonica/En5.mid | Bin
.../instruments/harmonica/En6.mid | Bin
.../instruments/harmonica/Fn2.mid | Bin
.../instruments/harmonica/Fn3.mid | Bin
.../instruments/harmonica/Fn4.mid | Bin
.../instruments/harmonica/Fn5.mid | Bin
.../instruments/harmonica/Fn6.mid | Bin
.../instruments/harmonica/Gb2.mid | Bin
.../instruments/harmonica/Gb3.mid | Bin
.../instruments/harmonica/Gb4.mid | Bin
.../instruments/harmonica/Gb5.mid | Bin
.../instruments/harmonica/Gb6.mid | Bin
.../instruments/harmonica/Gn2.mid | Bin
.../instruments/harmonica/Gn3.mid | Bin
.../instruments/harmonica/Gn4.mid | Bin
.../instruments/harmonica/Gn5.mid | Bin
.../instruments/harmonica/Gn6.mid | Bin
sound/{ => runtime}/instruments/piano/Ab2.ogg | Bin
sound/{ => runtime}/instruments/piano/Ab3.ogg | Bin
sound/{ => runtime}/instruments/piano/Ab4.ogg | Bin
sound/{ => runtime}/instruments/piano/Ab5.ogg | Bin
sound/{ => runtime}/instruments/piano/Ab6.ogg | Bin
sound/{ => runtime}/instruments/piano/Ab7.ogg | Bin
sound/{ => runtime}/instruments/piano/Ab8.ogg | Bin
sound/{ => runtime}/instruments/piano/An1.ogg | Bin
sound/{ => runtime}/instruments/piano/An2.ogg | Bin
sound/{ => runtime}/instruments/piano/An3.ogg | Bin
sound/{ => runtime}/instruments/piano/An4.ogg | Bin
sound/{ => runtime}/instruments/piano/An5.ogg | Bin
sound/{ => runtime}/instruments/piano/An6.ogg | Bin
sound/{ => runtime}/instruments/piano/An7.ogg | Bin
sound/{ => runtime}/instruments/piano/An8.ogg | Bin
sound/{ => runtime}/instruments/piano/Bb1.ogg | Bin
sound/{ => runtime}/instruments/piano/Bb2.ogg | Bin
sound/{ => runtime}/instruments/piano/Bb3.ogg | Bin
sound/{ => runtime}/instruments/piano/Bb4.ogg | Bin
sound/{ => runtime}/instruments/piano/Bb5.ogg | Bin
sound/{ => runtime}/instruments/piano/Bb6.ogg | Bin
sound/{ => runtime}/instruments/piano/Bb7.ogg | Bin
sound/{ => runtime}/instruments/piano/Bb8.ogg | Bin
sound/{ => runtime}/instruments/piano/Bn1.ogg | Bin
sound/{ => runtime}/instruments/piano/Bn2.ogg | Bin
sound/{ => runtime}/instruments/piano/Bn3.ogg | Bin
sound/{ => runtime}/instruments/piano/Bn4.ogg | Bin
sound/{ => runtime}/instruments/piano/Bn5.ogg | Bin
sound/{ => runtime}/instruments/piano/Bn6.ogg | Bin
sound/{ => runtime}/instruments/piano/Bn7.ogg | Bin
sound/{ => runtime}/instruments/piano/Bn8.ogg | Bin
sound/{ => runtime}/instruments/piano/Cn2.ogg | Bin
sound/{ => runtime}/instruments/piano/Cn3.ogg | Bin
sound/{ => runtime}/instruments/piano/Cn4.ogg | Bin
sound/{ => runtime}/instruments/piano/Cn5.ogg | Bin
sound/{ => runtime}/instruments/piano/Cn6.ogg | Bin
sound/{ => runtime}/instruments/piano/Cn7.ogg | Bin
sound/{ => runtime}/instruments/piano/Cn8.ogg | Bin
sound/{ => runtime}/instruments/piano/Cn9.ogg | Bin
sound/{ => runtime}/instruments/piano/Db2.ogg | Bin
sound/{ => runtime}/instruments/piano/Db3.ogg | Bin
sound/{ => runtime}/instruments/piano/Db4.ogg | Bin
sound/{ => runtime}/instruments/piano/Db5.ogg | Bin
sound/{ => runtime}/instruments/piano/Db6.ogg | Bin
sound/{ => runtime}/instruments/piano/Db7.ogg | Bin
sound/{ => runtime}/instruments/piano/Db8.ogg | Bin
sound/{ => runtime}/instruments/piano/Dn2.ogg | Bin
sound/{ => runtime}/instruments/piano/Dn3.ogg | Bin
sound/{ => runtime}/instruments/piano/Dn4.ogg | Bin
sound/{ => runtime}/instruments/piano/Dn5.ogg | Bin
sound/{ => runtime}/instruments/piano/Dn6.ogg | Bin
sound/{ => runtime}/instruments/piano/Dn7.ogg | Bin
sound/{ => runtime}/instruments/piano/Dn8.ogg | Bin
sound/{ => runtime}/instruments/piano/Eb2.ogg | Bin
sound/{ => runtime}/instruments/piano/Eb3.ogg | Bin
sound/{ => runtime}/instruments/piano/Eb4.ogg | Bin
sound/{ => runtime}/instruments/piano/Eb5.ogg | Bin
sound/{ => runtime}/instruments/piano/Eb6.ogg | Bin
sound/{ => runtime}/instruments/piano/Eb7.ogg | Bin
sound/{ => runtime}/instruments/piano/Eb8.ogg | Bin
sound/{ => runtime}/instruments/piano/En2.ogg | Bin
sound/{ => runtime}/instruments/piano/En3.ogg | Bin
sound/{ => runtime}/instruments/piano/En4.ogg | Bin
sound/{ => runtime}/instruments/piano/En5.ogg | Bin
sound/{ => runtime}/instruments/piano/En6.ogg | Bin
sound/{ => runtime}/instruments/piano/En7.ogg | Bin
sound/{ => runtime}/instruments/piano/En8.ogg | Bin
sound/{ => runtime}/instruments/piano/Fn2.ogg | Bin
sound/{ => runtime}/instruments/piano/Fn3.ogg | Bin
sound/{ => runtime}/instruments/piano/Fn4.ogg | Bin
sound/{ => runtime}/instruments/piano/Fn5.ogg | Bin
sound/{ => runtime}/instruments/piano/Fn6.ogg | Bin
sound/{ => runtime}/instruments/piano/Fn7.ogg | Bin
sound/{ => runtime}/instruments/piano/Fn8.ogg | Bin
sound/{ => runtime}/instruments/piano/Gb2.ogg | Bin
sound/{ => runtime}/instruments/piano/Gb3.ogg | Bin
sound/{ => runtime}/instruments/piano/Gb4.ogg | Bin
sound/{ => runtime}/instruments/piano/Gb5.ogg | Bin
sound/{ => runtime}/instruments/piano/Gb6.ogg | Bin
sound/{ => runtime}/instruments/piano/Gb7.ogg | Bin
sound/{ => runtime}/instruments/piano/Gb8.ogg | Bin
sound/{ => runtime}/instruments/piano/Gn2.ogg | Bin
sound/{ => runtime}/instruments/piano/Gn3.ogg | Bin
sound/{ => runtime}/instruments/piano/Gn4.ogg | Bin
sound/{ => runtime}/instruments/piano/Gn5.ogg | Bin
sound/{ => runtime}/instruments/piano/Gn6.ogg | Bin
sound/{ => runtime}/instruments/piano/Gn7.ogg | Bin
sound/{ => runtime}/instruments/piano/Gn8.ogg | Bin
.../instruments/recorder/Ab2.mid | Bin
.../instruments/recorder/Ab3.mid | Bin
.../instruments/recorder/Ab4.mid | Bin
.../instruments/recorder/Ab5.mid | Bin
.../instruments/recorder/Ab6.mid | Bin
.../instruments/recorder/An2.mid | Bin
.../instruments/recorder/An3.mid | Bin
.../instruments/recorder/An4.mid | Bin
.../instruments/recorder/An5.mid | Bin
.../instruments/recorder/An6.mid | Bin
.../instruments/recorder/Bb2.mid | Bin
.../instruments/recorder/Bb3.mid | Bin
.../instruments/recorder/Bb4.mid | Bin
.../instruments/recorder/Bb5.mid | Bin
.../instruments/recorder/Bb6.mid | Bin
.../instruments/recorder/Bn2.mid | Bin
.../instruments/recorder/Bn3.mid | Bin
.../instruments/recorder/Bn4.mid | Bin
.../instruments/recorder/Bn5.mid | Bin
.../instruments/recorder/Bn6.mid | Bin
.../instruments/recorder/Cn2.mid | Bin
.../instruments/recorder/Cn3.mid | Bin
.../instruments/recorder/Cn4.mid | Bin
.../instruments/recorder/Cn5.mid | Bin
.../instruments/recorder/Cn6.mid | Bin
.../instruments/recorder/Cn7.mid | Bin
.../instruments/recorder/Db2.mid | Bin
.../instruments/recorder/Db3.mid | Bin
.../instruments/recorder/Db4.mid | Bin
.../instruments/recorder/Db5.mid | Bin
.../instruments/recorder/Db6.mid | Bin
.../instruments/recorder/Db7.mid | Bin
.../instruments/recorder/Dn2.mid | Bin
.../instruments/recorder/Dn3.mid | Bin
.../instruments/recorder/Dn4.mid | Bin
.../instruments/recorder/Dn5.mid | Bin
.../instruments/recorder/Dn6.mid | Bin
.../instruments/recorder/Eb2.mid | Bin
.../instruments/recorder/Eb3.mid | Bin
.../instruments/recorder/Eb4.mid | Bin
.../instruments/recorder/Eb5.mid | Bin
.../instruments/recorder/Eb6.mid | Bin
.../instruments/recorder/En2.mid | Bin
.../instruments/recorder/En3.mid | Bin
.../instruments/recorder/En4.mid | Bin
.../instruments/recorder/En5.mid | Bin
.../instruments/recorder/En6.mid | Bin
.../instruments/recorder/Fn2.mid | Bin
.../instruments/recorder/Fn3.mid | Bin
.../instruments/recorder/Fn4.mid | Bin
.../instruments/recorder/Fn5.mid | Bin
.../instruments/recorder/Fn6.mid | Bin
.../instruments/recorder/Gb2.mid | Bin
.../instruments/recorder/Gb3.mid | Bin
.../instruments/recorder/Gb4.mid | Bin
.../instruments/recorder/Gb5.mid | Bin
.../instruments/recorder/Gb6.mid | Bin
.../instruments/recorder/Gn2.mid | Bin
.../instruments/recorder/Gn3.mid | Bin
.../instruments/recorder/Gn4.mid | Bin
.../instruments/recorder/Gn5.mid | Bin
.../instruments/recorder/Gn6.mid | Bin
.../instruments/saxophone/Ab2.mid | Bin
.../instruments/saxophone/Ab3.mid | Bin
.../instruments/saxophone/Ab4.mid | Bin
.../instruments/saxophone/Ab5.mid | Bin
.../instruments/saxophone/Ab6.mid | Bin
.../instruments/saxophone/An2.mid | Bin
.../instruments/saxophone/An3.mid | Bin
.../instruments/saxophone/An4.mid | Bin
.../instruments/saxophone/An5.mid | Bin
.../instruments/saxophone/An6.mid | Bin
.../instruments/saxophone/Bb2.mid | Bin
.../instruments/saxophone/Bb3.mid | Bin
.../instruments/saxophone/Bb4.mid | Bin
.../instruments/saxophone/Bb5.mid | Bin
.../instruments/saxophone/Bb6.mid | Bin
.../instruments/saxophone/Bn2.mid | Bin
.../instruments/saxophone/Bn3.mid | Bin
.../instruments/saxophone/Bn4.mid | Bin
.../instruments/saxophone/Bn5.mid | Bin
.../instruments/saxophone/Bn6.mid | Bin
.../instruments/saxophone/Cn2.mid | Bin
.../instruments/saxophone/Cn3.mid | Bin
.../instruments/saxophone/Cn4.mid | Bin
.../instruments/saxophone/Cn5.mid | Bin
.../instruments/saxophone/Cn6.mid | Bin
.../instruments/saxophone/Db2.mid | Bin
.../instruments/saxophone/Db3.mid | Bin
.../instruments/saxophone/Db4.mid | Bin
.../instruments/saxophone/Db5.mid | Bin
.../instruments/saxophone/Db6.mid | Bin
.../instruments/saxophone/Dn2.mid | Bin
.../instruments/saxophone/Dn3.mid | Bin
.../instruments/saxophone/Dn4.mid | Bin
.../instruments/saxophone/Dn5.mid | Bin
.../instruments/saxophone/Dn6.mid | Bin
.../instruments/saxophone/Eb2.mid | Bin
.../instruments/saxophone/Eb3.mid | Bin
.../instruments/saxophone/Eb4.mid | Bin
.../instruments/saxophone/Eb5.mid | Bin
.../instruments/saxophone/Eb6.mid | Bin
.../instruments/saxophone/En2.mid | Bin
.../instruments/saxophone/En3.mid | Bin
.../instruments/saxophone/En4.mid | Bin
.../instruments/saxophone/En5.mid | Bin
.../instruments/saxophone/En6.mid | Bin
.../instruments/saxophone/Fn2.mid | Bin
.../instruments/saxophone/Fn3.mid | Bin
.../instruments/saxophone/Fn4.mid | Bin
.../instruments/saxophone/Fn5.mid | Bin
.../instruments/saxophone/Fn6.mid | Bin
.../instruments/saxophone/Gb2.mid | Bin
.../instruments/saxophone/Gb3.mid | Bin
.../instruments/saxophone/Gb4.mid | Bin
.../instruments/saxophone/Gb5.mid | Bin
.../instruments/saxophone/Gb6.mid | Bin
.../instruments/saxophone/Gn2.mid | Bin
.../instruments/saxophone/Gn4.mid | Bin
.../instruments/saxophone/Gn5.mid | Bin
.../instruments/saxophone/Gn6.mid | Bin
.../brass/crisis_brass/c2.ogg | Bin
.../brass/crisis_brass/c3.ogg | Bin
.../brass/crisis_brass/c4.ogg | Bin
.../brass/crisis_brass/c5.ogg | Bin
.../brass/crisis_trombone/C2.ogg | Bin
.../brass/crisis_trombone/C3.ogg | Bin
.../brass/crisis_trombone/C4.ogg | Bin
.../brass/crisis_trombone/C5.ogg | Bin
.../brass/crisis_trumpet/C4.ogg | Bin
.../brass/crisis_trumpet/C5.ogg | Bin
.../chromatic/fluid_celeste/C2.ogg | Bin
.../chromatic/fluid_celeste/C3.ogg | Bin
.../chromatic/fluid_celeste/C4.ogg | Bin
.../chromatic/fluid_celeste/C5.ogg | Bin
.../chromatic/fluid_celeste/C6.ogg | Bin
.../chromatic/fluid_celeste/C7.ogg | Bin
.../chromatic/fluid_celeste/C8.ogg | Bin
.../synthesis_samples/chromatic/sgmbox/c2.ogg | Bin
.../synthesis_samples/chromatic/sgmbox/c3.ogg | Bin
.../synthesis_samples/chromatic/sgmbox/c4.ogg | Bin
.../synthesis_samples/chromatic/sgmbox/c5.ogg | Bin
.../chromatic/vibraphone1/c2.ogg | Bin
.../chromatic/vibraphone1/c3.ogg | Bin
.../chromatic/vibraphone1/c4.ogg | Bin
.../chromatic/vibraphone1/c5.ogg | Bin
.../guitar/crisis_clean/C2.ogg | Bin
.../guitar/crisis_clean/C3.ogg | Bin
.../guitar/crisis_clean/C4.ogg | Bin
.../guitar/crisis_clean/C5.ogg | Bin
.../guitar/crisis_muted/C2.ogg | Bin
.../guitar/crisis_muted/C3.ogg | Bin
.../guitar/crisis_muted/C4.ogg | Bin
.../guitar/crisis_muted/C5.ogg | Bin
.../guitar/crisis_nylon/c2.ogg | Bin
.../guitar/crisis_nylon/c3.ogg | Bin
.../guitar/crisis_nylon/c4.ogg | Bin
.../guitar/crisis_nylon/c5.ogg | Bin
.../guitar/crisis_steel/c2.ogg | Bin
.../guitar/crisis_steel/c3.ogg | Bin
.../guitar/crisis_steel/c4.ogg | Bin
.../guitar/crisis_steel/c5.ogg | Bin
.../synthesis_samples/meowsynth/LICENSE.txt | 14 +
.../synthesis_samples/meowsynth/c2.ogg | Bin 0 -> 12609 bytes
.../synthesis_samples/meowsynth/c3.ogg | Bin 0 -> 12972 bytes
.../synthesis_samples/meowsynth/c4.ogg | Bin 0 -> 9703 bytes
.../synthesis_samples/meowsynth/c5.ogg | Bin 0 -> 9600 bytes
.../synthesis_samples/meowsynth/c6.ogg | Bin 0 -> 6191 bytes
.../organ/crisis_accordian/c2.ogg | Bin
.../organ/crisis_accordian/c3.ogg | Bin
.../organ/crisis_accordian/c4.ogg | Bin
.../organ/crisis_accordian/c5.ogg | Bin
.../organ/crisis_church/c2.ogg | Bin
.../organ/crisis_church/c3.ogg | Bin
.../organ/crisis_church/c4.ogg | Bin
.../organ/crisis_church/c5.ogg | Bin
.../organ/crisis_hammond/c2.ogg | Bin
.../organ/crisis_hammond/c3.ogg | Bin
.../organ/crisis_hammond/c4.ogg | Bin
.../organ/crisis_hammond/c5.ogg | Bin
.../organ/crisis_harmonica/c3.ogg | Bin
.../organ/crisis_harmonica/c4.ogg | Bin
.../organ/crisis_harmonica/c5.ogg | Bin
.../organ/crisis_tangaccordian/c2.ogg | Bin
.../organ/crisis_tangaccordian/c3.ogg | Bin
.../organ/crisis_tangaccordian/c4.ogg | Bin
.../organ/crisis_tangaccordian/c5.ogg | Bin
.../piano/crisis_bright_piano/c2.ogg | Bin
.../piano/crisis_bright_piano/c3.ogg | Bin
.../piano/crisis_bright_piano/c4.ogg | Bin
.../piano/crisis_bright_piano/c5.ogg | Bin
.../piano/crisis_bright_piano/c6.ogg | Bin
.../piano/crisis_bright_piano/c7.ogg | Bin
.../piano/crisis_bright_piano/c8.ogg | Bin
.../piano/crisis_grand_piano/c2.ogg | Bin
.../piano/crisis_grand_piano/c3.ogg | Bin
.../piano/crisis_grand_piano/c4.ogg | Bin
.../piano/crisis_grand_piano/c5.ogg | Bin
.../piano/crisis_grand_piano/c6.ogg | Bin
.../piano/crisis_grand_piano/c7.ogg | Bin
.../piano/crisis_grand_piano/c8.ogg | Bin
.../piano/crisis_harpsichord/c2.ogg | Bin
.../piano/crisis_harpsichord/c3.ogg | Bin
.../piano/crisis_harpsichord/c4.ogg | Bin
.../piano/crisis_harpsichord/c5.ogg | Bin
.../piano/fluid_harpsi/C2.ogg | Bin
.../piano/fluid_harpsi/C3.ogg | Bin
.../piano/fluid_harpsi/C4.ogg | Bin
.../piano/fluid_harpsi/C5.ogg | Bin
.../piano/fluid_harpsi/C6.ogg | Bin
.../piano/fluid_harpsi/C7.ogg | Bin
.../piano/fluid_harpsi/C8.ogg | Bin
.../piano/fluid_piano/c2.ogg | Bin
.../piano/fluid_piano/c3.ogg | Bin
.../piano/fluid_piano/c4.ogg | Bin
.../piano/fluid_piano/c5.ogg | Bin
.../piano/fluid_piano/c6.ogg | Bin
.../piano/fluid_piano/c7.ogg | Bin
.../piano/fluid_piano/c8.ogg | Bin
.../synthesis_samples/tones/Sawtooth.ogg | Bin
.../synthesis_samples/tones/Sine.ogg | Bin
.../synthesis_samples/tones/Square.ogg | Bin
.../instruments/trombone/Ab2.mid | Bin
.../instruments/trombone/Ab3.mid | Bin
.../instruments/trombone/Ab4.mid | Bin
.../instruments/trombone/Ab5.mid | Bin
.../instruments/trombone/Ab6.mid | Bin
.../instruments/trombone/An2.mid | Bin
.../instruments/trombone/An3.mid | Bin
.../instruments/trombone/An4.mid | Bin
.../instruments/trombone/An5.mid | Bin
.../instruments/trombone/An6.mid | Bin
.../instruments/trombone/Bb2.mid | Bin
.../instruments/trombone/Bb3.mid | Bin
.../instruments/trombone/Bb4.mid | Bin
.../instruments/trombone/Bb5.mid | Bin
.../instruments/trombone/Bb6.mid | Bin
.../instruments/trombone/Bn2.mid | Bin
.../instruments/trombone/Bn3.mid | Bin
.../instruments/trombone/Bn4.mid | Bin
.../instruments/trombone/Bn5.mid | Bin
.../instruments/trombone/Bn6.mid | Bin
.../instruments/trombone/Cn2.mid | Bin
.../instruments/trombone/Cn3.mid | Bin
.../instruments/trombone/Cn4.mid | Bin
.../instruments/trombone/Cn5.mid | Bin
.../instruments/trombone/Cn6.mid | Bin
.../instruments/trombone/Db2.mid | Bin
.../instruments/trombone/Db3.mid | Bin
.../instruments/trombone/Db4.mid | Bin
.../instruments/trombone/Db5.mid | Bin
.../instruments/trombone/Db6.mid | Bin
.../instruments/trombone/Dn2.mid | Bin
.../instruments/trombone/Dn3.mid | Bin
.../instruments/trombone/Dn4.mid | Bin
.../instruments/trombone/Dn5.mid | Bin
.../instruments/trombone/Dn6.mid | Bin
.../instruments/trombone/Eb2.mid | Bin
.../instruments/trombone/Eb3.mid | Bin
.../instruments/trombone/Eb4.mid | Bin
.../instruments/trombone/Eb5.mid | Bin
.../instruments/trombone/Eb6.mid | Bin
.../instruments/trombone/En2.mid | Bin
.../instruments/trombone/En3.mid | Bin
.../instruments/trombone/En4.mid | Bin
.../instruments/trombone/En5.mid | Bin
.../instruments/trombone/En6.mid | Bin
.../instruments/trombone/Fn2.mid | Bin
.../instruments/trombone/Fn3.mid | Bin
.../instruments/trombone/Fn4.mid | Bin
.../instruments/trombone/Fn5.mid | Bin
.../instruments/trombone/Fn6.mid | Bin
.../instruments/trombone/Gb2.mid | Bin
.../instruments/trombone/Gb3.mid | Bin
.../instruments/trombone/Gb4.mid | Bin
.../instruments/trombone/Gb5.mid | Bin
.../instruments/trombone/Gb6.mid | Bin
.../instruments/trombone/Gn2.mid | Bin
.../instruments/trombone/Gn3.mid | Bin
.../instruments/trombone/Gn4.mid | Bin
.../instruments/trombone/Gn5.mid | Bin
.../instruments/trombone/Gn6.mid | Bin
.../{ => runtime}/instruments/violin/Ab1.mid | Bin
.../{ => runtime}/instruments/violin/Ab2.mid | Bin
.../{ => runtime}/instruments/violin/Ab3.mid | Bin
.../{ => runtime}/instruments/violin/Ab4.mid | Bin
.../{ => runtime}/instruments/violin/Ab5.mid | Bin
.../{ => runtime}/instruments/violin/Ab6.mid | Bin
.../{ => runtime}/instruments/violin/Ab7.mid | Bin
.../{ => runtime}/instruments/violin/Ab8.mid | Bin
.../{ => runtime}/instruments/violin/An1.mid | Bin
.../{ => runtime}/instruments/violin/An2.mid | Bin
.../{ => runtime}/instruments/violin/An3.mid | Bin
.../{ => runtime}/instruments/violin/An4.mid | Bin
.../{ => runtime}/instruments/violin/An5.mid | Bin
.../{ => runtime}/instruments/violin/An6.mid | Bin
.../{ => runtime}/instruments/violin/An7.mid | Bin
.../{ => runtime}/instruments/violin/An8.mid | Bin
.../{ => runtime}/instruments/violin/Bb1.mid | Bin
.../{ => runtime}/instruments/violin/Bb2.mid | Bin
.../{ => runtime}/instruments/violin/Bb3.mid | Bin
.../{ => runtime}/instruments/violin/Bb4.mid | Bin
.../{ => runtime}/instruments/violin/Bb5.mid | Bin
.../{ => runtime}/instruments/violin/Bb6.mid | Bin
.../{ => runtime}/instruments/violin/Bb7.mid | Bin
.../{ => runtime}/instruments/violin/Bb8.mid | Bin
.../{ => runtime}/instruments/violin/Bn1.mid | Bin
.../{ => runtime}/instruments/violin/Bn2.mid | Bin
.../{ => runtime}/instruments/violin/Bn3.mid | Bin
.../{ => runtime}/instruments/violin/Bn4.mid | Bin
.../{ => runtime}/instruments/violin/Bn5.mid | Bin
.../{ => runtime}/instruments/violin/Bn6.mid | Bin
.../{ => runtime}/instruments/violin/Bn7.mid | Bin
.../{ => runtime}/instruments/violin/Bn8.mid | Bin
.../{ => runtime}/instruments/violin/Cn1.mid | Bin
.../{ => runtime}/instruments/violin/Cn2.mid | Bin
.../{ => runtime}/instruments/violin/Cn3.mid | Bin
.../{ => runtime}/instruments/violin/Cn4.mid | Bin
.../{ => runtime}/instruments/violin/Cn5.mid | Bin
.../{ => runtime}/instruments/violin/Cn6.mid | Bin
.../{ => runtime}/instruments/violin/Cn7.mid | Bin
.../{ => runtime}/instruments/violin/Cn8.mid | Bin
.../{ => runtime}/instruments/violin/Cn9.mid | Bin
.../{ => runtime}/instruments/violin/Db1.mid | Bin
.../{ => runtime}/instruments/violin/Db2.mid | Bin
.../{ => runtime}/instruments/violin/Db3.mid | Bin
.../{ => runtime}/instruments/violin/Db4.mid | Bin
.../{ => runtime}/instruments/violin/Db5.mid | Bin
.../{ => runtime}/instruments/violin/Db6.mid | Bin
.../{ => runtime}/instruments/violin/Db7.mid | Bin
.../{ => runtime}/instruments/violin/Db8.mid | Bin
.../{ => runtime}/instruments/violin/Dn1.mid | Bin
.../{ => runtime}/instruments/violin/Dn2.mid | Bin
.../{ => runtime}/instruments/violin/Dn3.mid | Bin
.../{ => runtime}/instruments/violin/Dn4.mid | Bin
.../{ => runtime}/instruments/violin/Dn5.mid | Bin
.../{ => runtime}/instruments/violin/Dn6.mid | Bin
.../{ => runtime}/instruments/violin/Dn7.mid | Bin
.../{ => runtime}/instruments/violin/Dn8.mid | Bin
.../{ => runtime}/instruments/violin/Eb1.mid | Bin
.../{ => runtime}/instruments/violin/Eb2.mid | Bin
.../{ => runtime}/instruments/violin/Eb3.mid | Bin
.../{ => runtime}/instruments/violin/Eb4.mid | Bin
.../{ => runtime}/instruments/violin/Eb5.mid | Bin
.../{ => runtime}/instruments/violin/Eb6.mid | Bin
.../{ => runtime}/instruments/violin/Eb7.mid | Bin
.../{ => runtime}/instruments/violin/Eb8.mid | Bin
.../{ => runtime}/instruments/violin/En1.mid | Bin
.../{ => runtime}/instruments/violin/En2.mid | Bin
.../{ => runtime}/instruments/violin/En3.mid | Bin
.../{ => runtime}/instruments/violin/En4.mid | Bin
.../{ => runtime}/instruments/violin/En5.mid | Bin
.../{ => runtime}/instruments/violin/En6.mid | Bin
.../{ => runtime}/instruments/violin/En7.mid | Bin
.../{ => runtime}/instruments/violin/En8.mid | Bin
.../{ => runtime}/instruments/violin/Fn1.mid | Bin
.../{ => runtime}/instruments/violin/Fn2.mid | Bin
.../{ => runtime}/instruments/violin/Fn3.mid | Bin
.../{ => runtime}/instruments/violin/Fn4.mid | Bin
.../{ => runtime}/instruments/violin/Fn5.mid | Bin
.../{ => runtime}/instruments/violin/Fn6.mid | Bin
.../{ => runtime}/instruments/violin/Fn7.mid | Bin
.../{ => runtime}/instruments/violin/Fn8.mid | Bin
.../{ => runtime}/instruments/violin/Gb1.mid | Bin
.../{ => runtime}/instruments/violin/Gb2.mid | Bin
.../{ => runtime}/instruments/violin/Gb3.mid | Bin
.../{ => runtime}/instruments/violin/Gb4.mid | Bin
.../{ => runtime}/instruments/violin/Gb5.mid | Bin
.../{ => runtime}/instruments/violin/Gb6.mid | Bin
.../{ => runtime}/instruments/violin/Gb7.mid | Bin
.../{ => runtime}/instruments/violin/Gb8.mid | Bin
.../{ => runtime}/instruments/violin/Gn1.mid | Bin
.../{ => runtime}/instruments/violin/Gn2.mid | Bin
.../{ => runtime}/instruments/violin/Gn3.mid | Bin
.../{ => runtime}/instruments/violin/Gn4.mid | Bin
.../{ => runtime}/instruments/violin/Gn5.mid | Bin
.../{ => runtime}/instruments/violin/Gn6.mid | Bin
.../{ => runtime}/instruments/violin/Gn7.mid | Bin
.../{ => runtime}/instruments/violin/Gn8.mid | Bin
.../instruments/xylophone/Ab2.mid | Bin
.../instruments/xylophone/Ab3.mid | Bin
.../instruments/xylophone/Ab4.mid | Bin
.../instruments/xylophone/Ab5.mid | Bin
.../instruments/xylophone/Ab6.mid | Bin
.../instruments/xylophone/An2.mid | Bin
.../instruments/xylophone/An3.mid | Bin
.../instruments/xylophone/An4.mid | Bin
.../instruments/xylophone/An5.mid | Bin
.../instruments/xylophone/An6.mid | Bin
.../instruments/xylophone/Bb2.mid | Bin
.../instruments/xylophone/Bb3.mid | Bin
.../instruments/xylophone/Bb4.mid | Bin
.../instruments/xylophone/Bb5.mid | Bin
.../instruments/xylophone/Bb6.mid | Bin
.../instruments/xylophone/Bn2.mid | Bin
.../instruments/xylophone/Bn3.mid | Bin
.../instruments/xylophone/Bn4.mid | Bin
.../instruments/xylophone/Bn5.mid | Bin
.../instruments/xylophone/Bn6.mid | Bin
.../instruments/xylophone/Cn2.mid | Bin
.../instruments/xylophone/Cn3.mid | Bin
.../instruments/xylophone/Cn4.mid | Bin
.../instruments/xylophone/Cn5.mid | Bin
.../instruments/xylophone/Cn6.mid | Bin
.../instruments/xylophone/Db2.mid | Bin
.../instruments/xylophone/Db3.mid | Bin
.../instruments/xylophone/Db4.mid | Bin
.../instruments/xylophone/Db5.mid | Bin
.../instruments/xylophone/Db6.mid | Bin
.../instruments/xylophone/Dn2.mid | Bin
.../instruments/xylophone/Dn3.mid | Bin
.../instruments/xylophone/Dn4.mid | Bin
.../instruments/xylophone/Dn5.mid | Bin
.../instruments/xylophone/Dn6.mid | Bin
.../instruments/xylophone/Eb2.mid | Bin
.../instruments/xylophone/Eb3.mid | Bin
.../instruments/xylophone/Eb4.mid | Bin
.../instruments/xylophone/Eb5.mid | Bin
.../instruments/xylophone/Eb6.mid | Bin
.../instruments/xylophone/En2.mid | Bin
.../instruments/xylophone/En3.mid | Bin
.../instruments/xylophone/En4.mid | Bin
.../instruments/xylophone/En5.mid | Bin
.../instruments/xylophone/En6.mid | Bin
.../instruments/xylophone/Fn2.mid | Bin
.../instruments/xylophone/Fn3.mid | Bin
.../instruments/xylophone/Fn4.mid | Bin
.../instruments/xylophone/Fn5.mid | Bin
.../instruments/xylophone/Fn6.mid | Bin
.../instruments/xylophone/Gb2.mid | Bin
.../instruments/xylophone/Gb3.mid | Bin
.../instruments/xylophone/Gb4.mid | Bin
.../instruments/xylophone/Gb5.mid | Bin
.../instruments/xylophone/Gb6.mid | Bin
.../instruments/xylophone/Gn2.mid | Bin
.../instruments/xylophone/Gn3.mid | Bin
.../instruments/xylophone/Gn4.mid | Bin
.../instruments/xylophone/Gn5.mid | Bin
.../instruments/xylophone/Gn6.mid | Bin
.../tgui/interfaces/InstrumentEditor.tsx | 371 ++++++++++++++++
.../features/game_preferences/sound.tsx | 9 +
vorestation.dme | 6 +-
916 files changed, 1155 insertions(+), 566 deletions(-)
create mode 100644 code/__defines/dcs/signals/signals_music.dm
create mode 100644 code/__defines/song.dm
create mode 100644 code/modules/instruments/piano_synth.dm
rename code/modules/instruments/items_ch.dm => modular_chomp/code/modules/instruments/items.dm (100%)
create mode 100644 modular_chomp/code/modules/instruments/stationary.dm
create mode 100644 sound/runtime/README.md
rename sound/{ => runtime}/instruments/accordion/Ab2.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Ab3.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Ab4.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Ab5.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Ab6.mid (100%)
rename sound/{ => runtime}/instruments/accordion/An2.mid (100%)
rename sound/{ => runtime}/instruments/accordion/An3.mid (100%)
rename sound/{ => runtime}/instruments/accordion/An4.mid (100%)
rename sound/{ => runtime}/instruments/accordion/An5.mid (100%)
rename sound/{ => runtime}/instruments/accordion/An6.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Bb2.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Bb3.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Bb4.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Bb5.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Bb6.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Bn2.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Bn3.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Bn4.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Bn5.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Bn6.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Cn2.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Cn3.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Cn4.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Cn5.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Cn6.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Db2.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Db3.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Db4.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Db5.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Db6.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Dn2.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Dn3.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Dn4.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Dn5.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Dn6.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Eb2.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Eb3.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Eb4.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Eb5.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Eb6.mid (100%)
rename sound/{ => runtime}/instruments/accordion/En2.mid (100%)
rename sound/{ => runtime}/instruments/accordion/En3.mid (100%)
rename sound/{ => runtime}/instruments/accordion/En4.mid (100%)
rename sound/{ => runtime}/instruments/accordion/En5.mid (100%)
rename sound/{ => runtime}/instruments/accordion/En6.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Fn2.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Fn3.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Fn4.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Fn5.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Fn6.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Gb2.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Gb3.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Gb4.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Gb5.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Gb6.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Gn2.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Gn3.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Gn4.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Gn5.mid (100%)
rename sound/{ => runtime}/instruments/accordion/Gn6.mid (100%)
rename sound/{ => runtime}/instruments/banjo/Ab3.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Ab4.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Ab5.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/An3.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/An4.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/An5.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Bb3.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Bb4.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Bb5.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Bn2.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Bn3.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Bn4.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Bn5.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Cn3.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Cn4.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Cn5.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Cn6.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Db3.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Db4.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Db5.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Db6.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Dn3.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Dn4.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Dn5.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Dn6.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Eb3.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Eb4.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Eb5.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/En3.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/En4.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/En5.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Fn3.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Fn4.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Fn5.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Gb3.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Gb4.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Gb5.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Gn3.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Gn4.ogg (100%)
rename sound/{ => runtime}/instruments/banjo/Gn5.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Ab2.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Ab3.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Ab4.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/An2.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/An3.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/An4.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Bb2.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Bb3.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Bb4.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Bn2.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Bn3.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Bn4.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Cn3.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Cn4.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Cn5.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Db3.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Db4.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Db5.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Dn3.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Dn4.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Dn5.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Eb3.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Eb4.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Eb5.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/En2.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/En3.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/En4.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Fn2.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Fn3.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Fn4.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Gb2.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Gb3.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Gb4.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Gn2.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Gn3.ogg (100%)
rename sound/{ => runtime}/instruments/bikehorn/Gn4.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Ab4.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Ab5.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Ab6.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/An4.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/An5.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/An6.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Bb4.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Bb5.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Bb6.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Bn4.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Bn5.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Bn6.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Cn4.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Cn5.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Cn6.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Cn7.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Db4.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Db5.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Db6.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Dn4.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Dn5.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Dn6.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Eb4.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Eb5.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Eb6.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/En4.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/En5.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/En6.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Fn4.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Fn5.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Fn6.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Gb4.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Gb5.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Gb6.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Gn4.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Gn5.ogg (100%)
rename sound/{ => runtime}/instruments/eguitar/Gn6.ogg (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Ab2.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Ab3.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Ab4.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Ab5.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Ab6.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Ab7.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/An2.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/An3.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/An4.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/An5.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/An6.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/An7.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Bb2.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Bb3.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Bb4.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Bb5.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Bb6.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Bb7.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Bn2.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Bn3.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Bn4.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Bn5.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Bn6.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Bn7.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Cn2.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Cn3.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Cn4.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Cn5.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Cn6.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Cn7.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Db2.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Db3.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Db4.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Db5.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Db6.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Db7.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Dn2.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Dn3.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Dn4.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Dn5.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Dn6.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Dn7.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Eb2.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Eb3.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Eb4.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Eb5.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Eb6.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Eb7.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/En2.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/En3.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/En4.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/En5.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/En6.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/En7.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Fn2.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Fn3.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Fn4.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Fn5.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Fn6.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Fn7.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Gb2.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Gb3.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Gb4.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Gb5.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Gb6.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Gb7.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Gn2.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Gn3.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Gn4.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Gn5.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Gn6.mid (100%)
rename sound/{ => runtime}/instruments/glockenspiel/Gn7.mid (100%)
rename sound/{ => runtime}/instruments/guitar/Ab3.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Ab4.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Ab5.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Ab6.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/An3.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/An4.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/An5.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/An6.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Bb3.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Bb4.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Bb5.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Bb6.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Bn3.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Bn4.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Bn5.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Bn6.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Cb4.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Cb5.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Cb6.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Cb7.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Cn4.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Cn5.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Cn6.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Db4.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Db5.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Db6.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Dn4.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Dn5.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Dn6.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Eb4.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Eb5.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Eb6.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/En3.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/En4.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/En5.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/En6.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Fb3.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Fb4.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Fb5.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Fb6.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Fn3.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Fn4.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Fn5.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Fn6.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Gb3.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Gb4.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Gb5.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Gb6.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Gn3.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Gn4.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Gn5.ogg (100%)
rename sound/{ => runtime}/instruments/guitar/Gn6.ogg (100%)
rename sound/{ => runtime}/instruments/harmonica/Ab2.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Ab3.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Ab4.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Ab5.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Ab6.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/An2.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/An3.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/An4.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/An5.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/An6.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Bb2.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Bb3.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Bb4.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Bb5.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Bb6.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Bn2.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Bn3.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Bn4.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Bn5.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Bn6.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Cn2.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Cn3.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Cn4.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Cn5.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Cn6.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Cn7.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Db2.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Db3.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Db4.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Db5.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Db6.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Dn2.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Dn3.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Dn4.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Dn5.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Dn6.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Eb2.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Eb3.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Eb4.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Eb5.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Eb6.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/En2.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/En3.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/En4.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/En5.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/En6.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Fn2.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Fn3.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Fn4.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Fn5.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Fn6.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Gb2.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Gb3.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Gb4.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Gb5.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Gb6.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Gn2.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Gn3.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Gn4.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Gn5.mid (100%)
rename sound/{ => runtime}/instruments/harmonica/Gn6.mid (100%)
rename sound/{ => runtime}/instruments/piano/Ab2.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Ab3.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Ab4.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Ab5.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Ab6.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Ab7.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Ab8.ogg (100%)
rename sound/{ => runtime}/instruments/piano/An1.ogg (100%)
rename sound/{ => runtime}/instruments/piano/An2.ogg (100%)
rename sound/{ => runtime}/instruments/piano/An3.ogg (100%)
rename sound/{ => runtime}/instruments/piano/An4.ogg (100%)
rename sound/{ => runtime}/instruments/piano/An5.ogg (100%)
rename sound/{ => runtime}/instruments/piano/An6.ogg (100%)
rename sound/{ => runtime}/instruments/piano/An7.ogg (100%)
rename sound/{ => runtime}/instruments/piano/An8.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Bb1.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Bb2.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Bb3.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Bb4.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Bb5.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Bb6.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Bb7.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Bb8.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Bn1.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Bn2.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Bn3.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Bn4.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Bn5.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Bn6.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Bn7.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Bn8.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Cn2.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Cn3.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Cn4.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Cn5.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Cn6.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Cn7.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Cn8.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Cn9.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Db2.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Db3.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Db4.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Db5.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Db6.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Db7.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Db8.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Dn2.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Dn3.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Dn4.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Dn5.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Dn6.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Dn7.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Dn8.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Eb2.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Eb3.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Eb4.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Eb5.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Eb6.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Eb7.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Eb8.ogg (100%)
rename sound/{ => runtime}/instruments/piano/En2.ogg (100%)
rename sound/{ => runtime}/instruments/piano/En3.ogg (100%)
rename sound/{ => runtime}/instruments/piano/En4.ogg (100%)
rename sound/{ => runtime}/instruments/piano/En5.ogg (100%)
rename sound/{ => runtime}/instruments/piano/En6.ogg (100%)
rename sound/{ => runtime}/instruments/piano/En7.ogg (100%)
rename sound/{ => runtime}/instruments/piano/En8.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Fn2.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Fn3.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Fn4.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Fn5.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Fn6.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Fn7.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Fn8.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Gb2.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Gb3.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Gb4.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Gb5.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Gb6.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Gb7.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Gb8.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Gn2.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Gn3.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Gn4.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Gn5.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Gn6.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Gn7.ogg (100%)
rename sound/{ => runtime}/instruments/piano/Gn8.ogg (100%)
rename sound/{ => runtime}/instruments/recorder/Ab2.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Ab3.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Ab4.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Ab5.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Ab6.mid (100%)
rename sound/{ => runtime}/instruments/recorder/An2.mid (100%)
rename sound/{ => runtime}/instruments/recorder/An3.mid (100%)
rename sound/{ => runtime}/instruments/recorder/An4.mid (100%)
rename sound/{ => runtime}/instruments/recorder/An5.mid (100%)
rename sound/{ => runtime}/instruments/recorder/An6.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Bb2.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Bb3.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Bb4.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Bb5.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Bb6.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Bn2.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Bn3.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Bn4.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Bn5.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Bn6.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Cn2.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Cn3.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Cn4.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Cn5.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Cn6.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Cn7.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Db2.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Db3.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Db4.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Db5.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Db6.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Db7.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Dn2.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Dn3.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Dn4.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Dn5.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Dn6.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Eb2.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Eb3.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Eb4.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Eb5.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Eb6.mid (100%)
rename sound/{ => runtime}/instruments/recorder/En2.mid (100%)
rename sound/{ => runtime}/instruments/recorder/En3.mid (100%)
rename sound/{ => runtime}/instruments/recorder/En4.mid (100%)
rename sound/{ => runtime}/instruments/recorder/En5.mid (100%)
rename sound/{ => runtime}/instruments/recorder/En6.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Fn2.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Fn3.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Fn4.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Fn5.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Fn6.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Gb2.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Gb3.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Gb4.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Gb5.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Gb6.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Gn2.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Gn3.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Gn4.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Gn5.mid (100%)
rename sound/{ => runtime}/instruments/recorder/Gn6.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Ab2.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Ab3.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Ab4.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Ab5.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Ab6.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/An2.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/An3.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/An4.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/An5.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/An6.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Bb2.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Bb3.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Bb4.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Bb5.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Bb6.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Bn2.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Bn3.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Bn4.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Bn5.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Bn6.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Cn2.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Cn3.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Cn4.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Cn5.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Cn6.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Db2.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Db3.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Db4.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Db5.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Db6.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Dn2.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Dn3.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Dn4.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Dn5.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Dn6.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Eb2.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Eb3.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Eb4.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Eb5.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Eb6.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/En2.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/En3.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/En4.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/En5.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/En6.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Fn2.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Fn3.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Fn4.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Fn5.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Fn6.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Gb2.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Gb3.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Gb4.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Gb5.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Gb6.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Gn2.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Gn4.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Gn5.mid (100%)
rename sound/{ => runtime}/instruments/saxophone/Gn6.mid (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/brass/crisis_brass/c2.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/brass/crisis_brass/c3.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/brass/crisis_brass/c4.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/brass/crisis_brass/c5.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/brass/crisis_trombone/C2.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/brass/crisis_trombone/C3.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/brass/crisis_trombone/C4.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/brass/crisis_trombone/C5.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/brass/crisis_trumpet/C4.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/brass/crisis_trumpet/C5.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/chromatic/fluid_celeste/C2.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/chromatic/fluid_celeste/C3.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/chromatic/fluid_celeste/C4.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/chromatic/fluid_celeste/C5.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/chromatic/fluid_celeste/C6.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/chromatic/fluid_celeste/C7.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/chromatic/fluid_celeste/C8.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/chromatic/sgmbox/c2.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/chromatic/sgmbox/c3.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/chromatic/sgmbox/c4.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/chromatic/sgmbox/c5.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/chromatic/vibraphone1/c2.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/chromatic/vibraphone1/c3.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/chromatic/vibraphone1/c4.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/chromatic/vibraphone1/c5.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/guitar/crisis_clean/C2.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/guitar/crisis_clean/C3.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/guitar/crisis_clean/C4.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/guitar/crisis_clean/C5.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/guitar/crisis_muted/C2.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/guitar/crisis_muted/C3.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/guitar/crisis_muted/C4.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/guitar/crisis_muted/C5.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/guitar/crisis_nylon/c2.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/guitar/crisis_nylon/c3.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/guitar/crisis_nylon/c4.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/guitar/crisis_nylon/c5.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/guitar/crisis_steel/c2.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/guitar/crisis_steel/c3.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/guitar/crisis_steel/c4.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/guitar/crisis_steel/c5.ogg (100%)
create mode 100644 sound/runtime/instruments/synthesis_samples/meowsynth/LICENSE.txt
create mode 100644 sound/runtime/instruments/synthesis_samples/meowsynth/c2.ogg
create mode 100644 sound/runtime/instruments/synthesis_samples/meowsynth/c3.ogg
create mode 100644 sound/runtime/instruments/synthesis_samples/meowsynth/c4.ogg
create mode 100644 sound/runtime/instruments/synthesis_samples/meowsynth/c5.ogg
create mode 100644 sound/runtime/instruments/synthesis_samples/meowsynth/c6.ogg
rename sound/{ => runtime}/instruments/synthesis_samples/organ/crisis_accordian/c2.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/organ/crisis_accordian/c3.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/organ/crisis_accordian/c4.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/organ/crisis_accordian/c5.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/organ/crisis_church/c2.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/organ/crisis_church/c3.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/organ/crisis_church/c4.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/organ/crisis_church/c5.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/organ/crisis_hammond/c2.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/organ/crisis_hammond/c3.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/organ/crisis_hammond/c4.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/organ/crisis_hammond/c5.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/organ/crisis_harmonica/c3.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/organ/crisis_harmonica/c4.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/organ/crisis_harmonica/c5.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/organ/crisis_tangaccordian/c2.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/organ/crisis_tangaccordian/c3.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/organ/crisis_tangaccordian/c4.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/organ/crisis_tangaccordian/c5.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/crisis_bright_piano/c2.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/crisis_bright_piano/c3.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/crisis_bright_piano/c4.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/crisis_bright_piano/c5.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/crisis_bright_piano/c6.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/crisis_bright_piano/c7.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/crisis_bright_piano/c8.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/crisis_grand_piano/c2.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/crisis_grand_piano/c3.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/crisis_grand_piano/c4.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/crisis_grand_piano/c5.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/crisis_grand_piano/c6.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/crisis_grand_piano/c7.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/crisis_grand_piano/c8.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/crisis_harpsichord/c2.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/crisis_harpsichord/c3.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/crisis_harpsichord/c4.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/crisis_harpsichord/c5.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/fluid_harpsi/C2.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/fluid_harpsi/C3.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/fluid_harpsi/C4.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/fluid_harpsi/C5.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/fluid_harpsi/C6.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/fluid_harpsi/C7.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/fluid_harpsi/C8.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/fluid_piano/c2.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/fluid_piano/c3.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/fluid_piano/c4.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/fluid_piano/c5.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/fluid_piano/c6.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/fluid_piano/c7.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/piano/fluid_piano/c8.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/tones/Sawtooth.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/tones/Sine.ogg (100%)
rename sound/{ => runtime}/instruments/synthesis_samples/tones/Square.ogg (100%)
rename sound/{ => runtime}/instruments/trombone/Ab2.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Ab3.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Ab4.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Ab5.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Ab6.mid (100%)
rename sound/{ => runtime}/instruments/trombone/An2.mid (100%)
rename sound/{ => runtime}/instruments/trombone/An3.mid (100%)
rename sound/{ => runtime}/instruments/trombone/An4.mid (100%)
rename sound/{ => runtime}/instruments/trombone/An5.mid (100%)
rename sound/{ => runtime}/instruments/trombone/An6.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Bb2.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Bb3.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Bb4.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Bb5.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Bb6.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Bn2.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Bn3.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Bn4.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Bn5.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Bn6.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Cn2.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Cn3.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Cn4.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Cn5.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Cn6.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Db2.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Db3.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Db4.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Db5.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Db6.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Dn2.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Dn3.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Dn4.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Dn5.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Dn6.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Eb2.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Eb3.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Eb4.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Eb5.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Eb6.mid (100%)
rename sound/{ => runtime}/instruments/trombone/En2.mid (100%)
rename sound/{ => runtime}/instruments/trombone/En3.mid (100%)
rename sound/{ => runtime}/instruments/trombone/En4.mid (100%)
rename sound/{ => runtime}/instruments/trombone/En5.mid (100%)
rename sound/{ => runtime}/instruments/trombone/En6.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Fn2.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Fn3.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Fn4.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Fn5.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Fn6.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Gb2.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Gb3.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Gb4.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Gb5.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Gb6.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Gn2.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Gn3.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Gn4.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Gn5.mid (100%)
rename sound/{ => runtime}/instruments/trombone/Gn6.mid (100%)
rename sound/{ => runtime}/instruments/violin/Ab1.mid (100%)
rename sound/{ => runtime}/instruments/violin/Ab2.mid (100%)
rename sound/{ => runtime}/instruments/violin/Ab3.mid (100%)
rename sound/{ => runtime}/instruments/violin/Ab4.mid (100%)
rename sound/{ => runtime}/instruments/violin/Ab5.mid (100%)
rename sound/{ => runtime}/instruments/violin/Ab6.mid (100%)
rename sound/{ => runtime}/instruments/violin/Ab7.mid (100%)
rename sound/{ => runtime}/instruments/violin/Ab8.mid (100%)
rename sound/{ => runtime}/instruments/violin/An1.mid (100%)
rename sound/{ => runtime}/instruments/violin/An2.mid (100%)
rename sound/{ => runtime}/instruments/violin/An3.mid (100%)
rename sound/{ => runtime}/instruments/violin/An4.mid (100%)
rename sound/{ => runtime}/instruments/violin/An5.mid (100%)
rename sound/{ => runtime}/instruments/violin/An6.mid (100%)
rename sound/{ => runtime}/instruments/violin/An7.mid (100%)
rename sound/{ => runtime}/instruments/violin/An8.mid (100%)
rename sound/{ => runtime}/instruments/violin/Bb1.mid (100%)
rename sound/{ => runtime}/instruments/violin/Bb2.mid (100%)
rename sound/{ => runtime}/instruments/violin/Bb3.mid (100%)
rename sound/{ => runtime}/instruments/violin/Bb4.mid (100%)
rename sound/{ => runtime}/instruments/violin/Bb5.mid (100%)
rename sound/{ => runtime}/instruments/violin/Bb6.mid (100%)
rename sound/{ => runtime}/instruments/violin/Bb7.mid (100%)
rename sound/{ => runtime}/instruments/violin/Bb8.mid (100%)
rename sound/{ => runtime}/instruments/violin/Bn1.mid (100%)
rename sound/{ => runtime}/instruments/violin/Bn2.mid (100%)
rename sound/{ => runtime}/instruments/violin/Bn3.mid (100%)
rename sound/{ => runtime}/instruments/violin/Bn4.mid (100%)
rename sound/{ => runtime}/instruments/violin/Bn5.mid (100%)
rename sound/{ => runtime}/instruments/violin/Bn6.mid (100%)
rename sound/{ => runtime}/instruments/violin/Bn7.mid (100%)
rename sound/{ => runtime}/instruments/violin/Bn8.mid (100%)
rename sound/{ => runtime}/instruments/violin/Cn1.mid (100%)
rename sound/{ => runtime}/instruments/violin/Cn2.mid (100%)
rename sound/{ => runtime}/instruments/violin/Cn3.mid (100%)
rename sound/{ => runtime}/instruments/violin/Cn4.mid (100%)
rename sound/{ => runtime}/instruments/violin/Cn5.mid (100%)
rename sound/{ => runtime}/instruments/violin/Cn6.mid (100%)
rename sound/{ => runtime}/instruments/violin/Cn7.mid (100%)
rename sound/{ => runtime}/instruments/violin/Cn8.mid (100%)
rename sound/{ => runtime}/instruments/violin/Cn9.mid (100%)
rename sound/{ => runtime}/instruments/violin/Db1.mid (100%)
rename sound/{ => runtime}/instruments/violin/Db2.mid (100%)
rename sound/{ => runtime}/instruments/violin/Db3.mid (100%)
rename sound/{ => runtime}/instruments/violin/Db4.mid (100%)
rename sound/{ => runtime}/instruments/violin/Db5.mid (100%)
rename sound/{ => runtime}/instruments/violin/Db6.mid (100%)
rename sound/{ => runtime}/instruments/violin/Db7.mid (100%)
rename sound/{ => runtime}/instruments/violin/Db8.mid (100%)
rename sound/{ => runtime}/instruments/violin/Dn1.mid (100%)
rename sound/{ => runtime}/instruments/violin/Dn2.mid (100%)
rename sound/{ => runtime}/instruments/violin/Dn3.mid (100%)
rename sound/{ => runtime}/instruments/violin/Dn4.mid (100%)
rename sound/{ => runtime}/instruments/violin/Dn5.mid (100%)
rename sound/{ => runtime}/instruments/violin/Dn6.mid (100%)
rename sound/{ => runtime}/instruments/violin/Dn7.mid (100%)
rename sound/{ => runtime}/instruments/violin/Dn8.mid (100%)
rename sound/{ => runtime}/instruments/violin/Eb1.mid (100%)
rename sound/{ => runtime}/instruments/violin/Eb2.mid (100%)
rename sound/{ => runtime}/instruments/violin/Eb3.mid (100%)
rename sound/{ => runtime}/instruments/violin/Eb4.mid (100%)
rename sound/{ => runtime}/instruments/violin/Eb5.mid (100%)
rename sound/{ => runtime}/instruments/violin/Eb6.mid (100%)
rename sound/{ => runtime}/instruments/violin/Eb7.mid (100%)
rename sound/{ => runtime}/instruments/violin/Eb8.mid (100%)
rename sound/{ => runtime}/instruments/violin/En1.mid (100%)
rename sound/{ => runtime}/instruments/violin/En2.mid (100%)
rename sound/{ => runtime}/instruments/violin/En3.mid (100%)
rename sound/{ => runtime}/instruments/violin/En4.mid (100%)
rename sound/{ => runtime}/instruments/violin/En5.mid (100%)
rename sound/{ => runtime}/instruments/violin/En6.mid (100%)
rename sound/{ => runtime}/instruments/violin/En7.mid (100%)
rename sound/{ => runtime}/instruments/violin/En8.mid (100%)
rename sound/{ => runtime}/instruments/violin/Fn1.mid (100%)
rename sound/{ => runtime}/instruments/violin/Fn2.mid (100%)
rename sound/{ => runtime}/instruments/violin/Fn3.mid (100%)
rename sound/{ => runtime}/instruments/violin/Fn4.mid (100%)
rename sound/{ => runtime}/instruments/violin/Fn5.mid (100%)
rename sound/{ => runtime}/instruments/violin/Fn6.mid (100%)
rename sound/{ => runtime}/instruments/violin/Fn7.mid (100%)
rename sound/{ => runtime}/instruments/violin/Fn8.mid (100%)
rename sound/{ => runtime}/instruments/violin/Gb1.mid (100%)
rename sound/{ => runtime}/instruments/violin/Gb2.mid (100%)
rename sound/{ => runtime}/instruments/violin/Gb3.mid (100%)
rename sound/{ => runtime}/instruments/violin/Gb4.mid (100%)
rename sound/{ => runtime}/instruments/violin/Gb5.mid (100%)
rename sound/{ => runtime}/instruments/violin/Gb6.mid (100%)
rename sound/{ => runtime}/instruments/violin/Gb7.mid (100%)
rename sound/{ => runtime}/instruments/violin/Gb8.mid (100%)
rename sound/{ => runtime}/instruments/violin/Gn1.mid (100%)
rename sound/{ => runtime}/instruments/violin/Gn2.mid (100%)
rename sound/{ => runtime}/instruments/violin/Gn3.mid (100%)
rename sound/{ => runtime}/instruments/violin/Gn4.mid (100%)
rename sound/{ => runtime}/instruments/violin/Gn5.mid (100%)
rename sound/{ => runtime}/instruments/violin/Gn6.mid (100%)
rename sound/{ => runtime}/instruments/violin/Gn7.mid (100%)
rename sound/{ => runtime}/instruments/violin/Gn8.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Ab2.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Ab3.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Ab4.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Ab5.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Ab6.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/An2.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/An3.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/An4.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/An5.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/An6.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Bb2.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Bb3.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Bb4.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Bb5.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Bb6.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Bn2.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Bn3.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Bn4.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Bn5.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Bn6.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Cn2.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Cn3.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Cn4.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Cn5.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Cn6.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Db2.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Db3.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Db4.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Db5.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Db6.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Dn2.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Dn3.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Dn4.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Dn5.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Dn6.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Eb2.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Eb3.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Eb4.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Eb5.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Eb6.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/En2.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/En3.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/En4.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/En5.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/En6.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Fn2.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Fn3.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Fn4.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Fn5.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Fn6.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Gb2.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Gb3.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Gb4.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Gb5.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Gb6.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Gn2.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Gn3.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Gn4.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Gn5.mid (100%)
rename sound/{ => runtime}/instruments/xylophone/Gn6.mid (100%)
create mode 100644 tgui/packages/tgui/interfaces/InstrumentEditor.tsx
diff --git a/code/__defines/dcs/signals/signals_atom/signals_atom_main.dm b/code/__defines/dcs/signals/signals_atom/signals_atom_main.dm
index 06d8b734a4..52a5559ec0 100644
--- a/code/__defines/dcs/signals/signals_atom/signals_atom_main.dm
+++ b/code/__defines/dcs/signals/signals_atom/signals_atom_main.dm
@@ -2,5 +2,8 @@
// When the signal is called: (signal arguments)
// All signals send the source datum of the signal as the first argument
+///when an atom starts playing a song datum (datum/song)
+#define COMSIG_ATOM_STARTING_INSTRUMENT "atom_starting_instrument"
+
///When the transform or an atom is varedited through vv topic.
#define COMSIG_ATOM_VV_MODIFY_TRANSFORM "atom_vv_modify_transform"
diff --git a/code/__defines/dcs/signals/signals_music.dm b/code/__defines/dcs/signals/signals_music.dm
new file mode 100644
index 0000000000..2f15f4e632
--- /dev/null
+++ b/code/__defines/dcs/signals/signals_music.dm
@@ -0,0 +1,12 @@
+// /datum/song signals
+
+///sent to the instrument when a song starts playing: (datum/starting_song, atom/player)
+#define COMSIG_INSTRUMENT_START "instrument_start"
+///sent to the instrument when a song stops playing
+#define COMSIG_INSTRUMENT_END "instrument_end"
+///sent to the instrument on /should_stop_playing(): (atom/player). Return values can be found in DEFINES/song.dm
+#define COMSIG_INSTRUMENT_SHOULD_STOP_PLAYING "instrument_should_stop_playing"
+///sent to the instrument (and player if available) when a song repeats (datum/song)
+#define COMSIG_INSTRUMENT_REPEAT "instrument_repeat"
+///sent to the instrument when tempo changes, skipped on new. (datum/song)
+#define COMSIG_INSTRUMENT_TEMPO_CHANGE "instrument_tempo_change"
diff --git a/code/__defines/instruments.dm b/code/__defines/instruments.dm
index fa09eee0dd..bf54ddf1b9 100644
--- a/code/__defines/instruments.dm
+++ b/code/__defines/instruments.dm
@@ -6,6 +6,8 @@
/// Max number of playing notes per instrument.
#define CHANNELS_PER_INSTRUMENT 128
+/// Minimum length a note should ever go for
+#define INSTRUMENT_MIN_TOTAL_SUSTAIN 0.1
/// Maximum length a note should ever go for
#define INSTRUMENT_MAX_TOTAL_SUSTAIN (5 SECONDS)
@@ -16,8 +18,8 @@
/// Minimum volume for when the sound is considered dead.
#define INSTRUMENT_MIN_SUSTAIN_DROPOFF 0
-#define SUSTAIN_LINEAR 1
-#define SUSTAIN_EXPONENTIAL 2
+#define SUSTAIN_LINEAR "Linear"
+#define SUSTAIN_EXPONENTIAL "Exponential"
// /datum/instrument instrument_flags
#define INSTRUMENT_LEGACY (1<<0) //Legacy instrument. Implies INSTRUMENT_DO_NOT_AUTOSAMPLE
diff --git a/code/__defines/song.dm b/code/__defines/song.dm
new file mode 100644
index 0000000000..782a7923ea
--- /dev/null
+++ b/code/__defines/song.dm
@@ -0,0 +1,17 @@
+#define MUSICIAN_HEARCHECK_MINDELAY 4
+#define MUSIC_MAXLINES 1000
+#define MUSIC_MAXLINECHARS 300
+
+#define BPM_TO_TEMPO_SETTING(value) (600 / round(value, 1))
+
+//Return values of song/should_stop_playing()
+
+///When the song should stop being played
+#define STOP_PLAYING 1
+///Will ignore the instrument checks and play the song anyway.
+#define IGNORE_INSTRUMENT_CHECKS 2
+
+///it's what monkeys play!
+#define MONKEY_SONG "BPM: 200\nC4/0,14,C,A4-F2,F3,A3,F-F2,A-F,F4,G4,F,D4-Bb2-G2\nD3,G3,D-G2,G3-G2,D,D4-G3,D,B4-B2,G,B3,G-B2,B3-B2\nG4,A4,G,E4-C3,E3,G3,E-C,G-C,E,E4-G,E,C5-E-A3,C4\nA-E3,C,E4-C3,A4-C4,B4-A3-A2,C5-C4,D5-F-B3,D4,B-F3\nD,F4-D3,D4,F-B-B2,G4-D,A4-C-F3,F,C/2,B3/2,A3-C3/2\nB/2,C4,E-C3,F4,G-C,F-F3,F-C,C4/2,B/2,A-A2/2,G3/2\nF/I"
+///song played by the mook bard
+#define MOOK_SONG "BPM: 240\nA5,B5,C#6,D6,E6/0.17,A/0.5,A/0.25,A3/0.25\nA4/0.25,C#5/0.25,E5/0.25,A/0.25,C#/0.25,E/0.12\nC#6/0.25,C#/0.25,E6/0.25,A3/0.25,A4/0.25\nC#5/0.25,E5/0.25,A/0.25,C#/0.25,E/0.25,D/0.25\nG6/0.25,D/0.17,F6/0.17,C#6/0.5,E6/0.5,D4/0.25\nA/0.25,D5/0.25,F5/0.25,A/0.25,D/0.25,F/0.25\nD6/0.08,F6/0.08,D4/0.25,A/0.25,D5/0.25,F5/0.25\nCn4/0.2,B/0.17,D6/0.17,G5/0.5,G/0.25,B3/0.25\nD4/0.25,G4/0.25,B4/0.25,D/0.25,G/0.25,B/0.12\nB5/0.25,B/0.25,D6/0.25,G3/0.25,G4/0.25,B4/0.25\nF/0.25,G/0.25,B/0.25,F/0.25,D/0.25,F6/0.25\nC6/0.17,E/0.17,B5/0.5,D#/0.5,C4/0.25,G/0.25\nC5/0.25,E5/0.25,G/0.25,C/0.25,E/0.25,C6/0.08\nE6/0.08,C4/0.25,Dn4/0.25,E4/0.25,A5/0.17,B/0.5\nC6/0.25,F5/0.08,F4/0.08,C5/0.08,E5/0.12,G5/0.12\nC6/0.25,E6/0.25,E4/0.08,C5/0.08,B/0.17,F6/0.17\nE6/0.5,B/0.25,E4/0.08,G#4/0.08,C6/0.17,D6/0.5\nE6/0.25,A3/0.25,E4/0.25,C5/0.25,Gn3/0.25\nF5/0.12,A5/0.12,A6/0.25,F3/0.25,F4/0.12,A4/0.12\nC/0.12,F6/0.17,A6/0.17,G#6/0.5,A/0.25,F3/0.25\nF4/0.12,A4/0.12,D#5/0.12,B/0.17,G#/0.17,B6/0.5\nB5/0.25,G#/0.25,E3/0.25,E4/0.12,G#4/0.12\nDn/0.12,E6/0.08,E3/0.25,F#3/0.25,G#3/0.25\nE5/0.17,A5/0.17,E/0.5,E/0.25,A3/0.25,C#4/0.25\nE4/0.25,C#/0.25,E/0.12,A5/0.5,B/0.5,C#6/0.5\nD6/0.5,A3/0.25,C#4/0.25,E/0.25,C#/0.25,E/0.25\nE6/0.08,Gn/0.25,E4/0.25,A4/0.25,C#5/0.25,E/0.25\nA/0.25,C#/0.25,E6/0.17,E/0.5,Fn6/0.5,G6/0.5\nG3/0.25,E4/0.25,A/0.25,C#/0.25,E/0.25,A/0.25\nC#/0.25,F/0.08,A6/0.08,F3/0.25,F4/0.25,A4/0.25\nCn/0.25,F/0.25,A/0.25,C/0.25,G6/0.12,A6/0.12\nG A G F6 G3/0.25 D4/0.25 G4/0.25 B4/0.25 D/0.25\nG/0.25 B/0.25 E6/0.12 G6/0.12 F/0.71 G/0.71 F/0.71\nE3/0.25 E4/0.25 G4/0.25 B/0.25 E/0.25 G/0.25 B/0.25\nA5/0.08 E6/0.08 A3/0.25 E4/0.25 A4/0.25 C#/0.25 E/0.25 A/0.25 C#/0.25 D6/0.17 E6/0.5 F/0.25 B3/0.25 D4/0.12 F4/0.12 B4/0.12 F6/0.25 E/0.25 D6/0.25 G#3/0.25 E4/0.12 G#4/0.12 B/0.12 Cn6/0.12 D/0.25 A3/0.25 A4/0.25 C5/0.25 E5/0.25 G#3/0.25 Gn/0.25 C4/0.25 E4/0.25 A/"
diff --git a/code/__defines/text.dm b/code/__defines/text.dm
index 35b085e043..f1bbca73a4 100644
--- a/code/__defines/text.dm
+++ b/code/__defines/text.dm
@@ -15,6 +15,10 @@
/// Removes everything enclose in < and > inclusive of the bracket, and limits the length of the message.
#define STRIP_HTML_FULL(text, limit) (GLOB.html_tags.Replace(copytext(text, 1, limit), ""))
+/// BYOND's string procs don't support being used on datum references (as in it doesn't look for a name for stringification)
+/// We just use this macro to ensure that we will only pass strings to this BYOND-level function without developers needing to really worry about it.
+#define LOWER_TEXT(thing) lowertext(UNLINT("[thing]"))
+
/// Removes characters incompatible with file names.
#define SANITIZE_FILENAME(text) (GLOB.filename_forbidden_chars.Replace(text, ""))
diff --git a/code/_helpers/text.dm b/code/_helpers/text.dm
index 400959bfa4..35d0441b11 100644
--- a/code/_helpers/text.dm
+++ b/code/_helpers/text.dm
@@ -601,6 +601,113 @@ GLOBAL_LIST_EMPTY(text_tag_cache)
else
return trim(html_encode(user_input), max_length)
+#define NO_CHARS_DETECTED 0
+#define SPACES_DETECTED 1
+#define SYMBOLS_DETECTED 2
+#define NUMBERS_DETECTED 3
+#define LETTERS_DETECTED 4
+
+/**
+ * Filters out undesirable characters from names.
+ *
+ * * strict - return null immediately instead of filtering out
+ * * allow_numbers - allows numbers and common special characters - used for silicon/other weird things names
+ * * cap_after_symbols - words like Bob's will be capitalized to Bob'S by default. False is good for titles.
+ */
+/proc/reject_bad_name(t_in, allow_numbers = FALSE, max_length = MAX_NAME_LEN, ascii_only = TRUE, strict = FALSE, cap_after_symbols = TRUE)
+ if(!t_in)
+ return //Rejects the input if it is null
+
+ var/number_of_alphanumeric = 0
+ var/last_char_group = NO_CHARS_DETECTED
+ var/t_out = ""
+ var/t_len = length(t_in)
+ var/charcount = 0
+ var/char = ""
+
+ // This is a sanity short circuit, if the users name is three times the maximum allowable length of name
+ // We bail out on trying to process the name at all, as it could be a bug or malicious input and we don't
+ // Want to iterate all of it.
+ if(t_len > 3 * MAX_NAME_LEN)
+ return
+ for(var/i = 1, i <= t_len, i += length(char))
+ char = t_in[i]
+ switch(text2ascii(char))
+
+ // A .. Z
+ if(65 to 90) //Uppercase Letters
+ number_of_alphanumeric++
+ last_char_group = LETTERS_DETECTED
+
+ // a .. z
+ if(97 to 122) //Lowercase Letters
+ if(last_char_group == NO_CHARS_DETECTED || last_char_group == SPACES_DETECTED || cap_after_symbols && last_char_group == SYMBOLS_DETECTED) //start of a word
+ char = uppertext(char)
+ number_of_alphanumeric++
+ last_char_group = LETTERS_DETECTED
+
+ // 0 .. 9
+ if(48 to 57) //Numbers
+ if(!allow_numbers) //allow name to start with number if AI/Borg
+ if(strict)
+ return
+ continue
+ number_of_alphanumeric++
+ last_char_group = NUMBERS_DETECTED
+ // ' - .
+ if(39,45,46) //Common name punctuation
+ if(last_char_group == NO_CHARS_DETECTED)
+ if(strict)
+ return
+ continue
+ last_char_group = SYMBOLS_DETECTED
+
+ // ~ | @ : # $ % & * +
+ if(126,124,64,58,35,36,37,38,42,43) //Other symbols that we'll allow (mainly for AI)
+ if(last_char_group == NO_CHARS_DETECTED || !allow_numbers) //suppress at start of string
+ if(strict)
+ return
+ continue
+ last_char_group = SYMBOLS_DETECTED
+
+ //Space
+ if(32)
+ if(last_char_group == NO_CHARS_DETECTED || last_char_group == SPACES_DETECTED) //suppress double-spaces and spaces at start of string
+ if(strict)
+ return
+ continue
+ last_char_group = SPACES_DETECTED
+
+ if(127 to INFINITY)
+ if(ascii_only)
+ if(strict)
+ return
+ continue
+ last_char_group = SYMBOLS_DETECTED //for now, we'll treat all non-ascii characters like symbols even though most are letters
+
+ else
+ continue
+ t_out += char
+ charcount++
+ if(charcount >= max_length)
+ break
+
+ if(number_of_alphanumeric < 2)
+ return //protects against tiny names like "A" and also names like "' ' ' ' ' ' ' '"
+
+ if(last_char_group == SPACES_DETECTED)
+ t_out = copytext_char(t_out, 1, -1) //removes the last character (in this case a space)
+
+ //if(!filter_name_ic(t_out)) FIXME
+ // return
+
+ return t_out
+
+#undef NO_CHARS_DETECTED
+#undef SPACES_DETECTED
+#undef NUMBERS_DETECTED
+#undef LETTERS_DETECTED
+
//Adds 'char' ahead of 'text' until there are 'count' characters total
/proc/add_leading(text, count, char = " ")
text = "[text]"
diff --git a/code/controllers/subsystems/processing/instruments.dm b/code/controllers/subsystems/processing/instruments.dm
index af6bacc2fc..fd486d419e 100644
--- a/code/controllers/subsystems/processing/instruments.dm
+++ b/code/controllers/subsystems/processing/instruments.dm
@@ -19,6 +19,10 @@ PROCESSING_SUBSYSTEM_DEF(instruments)
var/static/current_instrument_channels = 0
/// Single cached list for synthesizer instrument ids, so you don't have to have a new list with every synthesizer.
var/static/list/synthesizer_instrument_ids
+ var/static/list/note_sustain_modes = list(
+ SUSTAIN_LINEAR,
+ SUSTAIN_EXPONENTIAL,
+ )
/datum/controller/subsystem/processing/instruments/Initialize()
initialize_instrument_data()
@@ -32,10 +36,11 @@ PROCESSING_SUBSYSTEM_DEF(instruments)
songs -= S
/datum/controller/subsystem/processing/instruments/proc/initialize_instrument_data()
- for(var/datum/instrument/I as anything in subtypesof(/datum/instrument))
- if(initial(I.instrument_type) == I)
+ for(var/path in subtypesof(/datum/instrument))
+ var/datum/instrument/I = path
+ if(initial(I.abstract_type) == path)
continue
- I = new I
+ I = new path
I.Initialize()
if(!I.id)
qdel(I)
diff --git a/code/game/objects/items/devices/hacktool.dm b/code/game/objects/items/devices/hacktool.dm
index f67fd9bd0b..2847023a8c 100644
--- a/code/game/objects/items/devices/hacktool.dm
+++ b/code/game/objects/items/devices/hacktool.dm
@@ -119,7 +119,7 @@
if(hack_result && in_hack_mode)
to_chat(user, span_notice("Your hacking attempt was succesful!"))
- user.playsound_local(get_turf(src), 'sound/instruments/piano/An6.ogg', 50)
+ user.playsound_local(get_turf(src), 'sound/runtime/instruments/piano/An6.ogg', 50)
else
to_chat(user, span_warning("Your hacking attempt failed!"))
return 0
diff --git a/code/modules/client/preferences/types/game/sound.dm b/code/modules/client/preferences/types/game/sound.dm
index a4f03bde4e..9008db96d3 100644
--- a/code/modules/client/preferences/types/game/sound.dm
+++ b/code/modules/client/preferences/types/game/sound.dm
@@ -255,3 +255,17 @@
/datum/preference/numeric/living/jukebox_volume/apply_to_client_updated(client/client, value)
client?.media?.update_volume(value)
+
+/datum/preference/numeric/volume
+ abstract_type = /datum/preference/numeric/volume
+ minimum = 0
+ maximum = 100
+
+/datum/preference/numeric/volume/create_default_value()
+ return maximum
+
+/// Controls hearing instruments
+/datum/preference/numeric/volume/sound_instruments
+ category = PREFERENCE_CATEGORY_GAME_PREFERENCES
+ savefile_key = "sound_instruments"
+ savefile_identifier = PREFERENCE_PLAYER
diff --git a/code/modules/instruments/instrument_data/_instrument_data.dm b/code/modules/instruments/instrument_data/_instrument_data.dm
index cf37e25c9b..2f3929fdfa 100644
--- a/code/modules/instruments/instrument_data/_instrument_data.dm
+++ b/code/modules/instruments/instrument_data/_instrument_data.dm
@@ -17,14 +17,14 @@
* Since songs cache them while playing, there isn't realistic issues regarding performance from accessing.
*/
/datum/instrument
+ /// Used for categorization subtypes
+ abstract_type = /datum/instrument
/// Name of the instrument
var/name = "Generic instrument"
/// Uniquely identifies this instrument so runtime changes are possible as opposed to paths. If this is unset, things will use path instead.
var/id
/// Category
var/category = "Unsorted"
- /// Used for categorization subtypes
- var/instrument_type = /datum/instrument
/// Write here however many samples, follow this syntax: "%note num%"='%sample file%' eg. "27"='synthesizer/e2.ogg'. Key must never be lower than 0 and higher than 127
var/list/real_samples
/// assoc list key = /datum/instrument_key. do not fill this yourself!
@@ -70,7 +70,8 @@
/datum/instrument/Destroy()
SSinstruments.instrument_data -= id
- for(var/datum/song/S as anything in songs_using)
+ for(var/i in songs_using)
+ var/datum/song/S = i
S.set_instrument(null)
real_samples = null
samples = null
diff --git a/code/modules/instruments/instrument_data/brass.dm b/code/modules/instruments/instrument_data/brass.dm
index 37cd981aa2..f40a2fd571 100644
--- a/code/modules/instruments/instrument_data/brass.dm
+++ b/code/modules/instruments/instrument_data/brass.dm
@@ -1,26 +1,26 @@
/datum/instrument/brass
name = "Generic brass instrument"
category = "Brass"
- instrument_type = /datum/instrument/brass
+ abstract_type = /datum/instrument/brass
/datum/instrument/brass/crisis_section
name = "Crisis Brass Section"
id = "crbrass"
- real_samples = list("36"='sound/instruments/synthesis_samples/brass/crisis_brass/c2.ogg',
- "48"='sound/instruments/synthesis_samples/brass/crisis_brass/c3.ogg',
- "60"='sound/instruments/synthesis_samples/brass/crisis_brass/c4.ogg',
- "72"='sound/instruments/synthesis_samples/brass/crisis_brass/c5.ogg')
+ real_samples = list("36"='sound/runtime/instruments/synthesis_samples/brass/crisis_brass/c2.ogg',
+ "48"='sound/runtime/instruments/synthesis_samples/brass/crisis_brass/c3.ogg',
+ "60"='sound/runtime/instruments/synthesis_samples/brass/crisis_brass/c4.ogg',
+ "72"='sound/runtime/instruments/synthesis_samples/brass/crisis_brass/c5.ogg')
/datum/instrument/brass/crisis_trombone
name = "Crisis Trombone"
id = "crtrombone"
- real_samples = list("36"='sound/instruments/synthesis_samples/brass/crisis_trombone/c2.ogg',
- "48"='sound/instruments/synthesis_samples/brass/crisis_trombone/c3.ogg',
- "60"='sound/instruments/synthesis_samples/brass/crisis_trombone/c4.ogg',
- "72"='sound/instruments/synthesis_samples/brass/crisis_trombone/c5.ogg')
+ real_samples = list("36"='sound/runtime/instruments/synthesis_samples/brass/crisis_trombone/c2.ogg',
+ "48"='sound/runtime/instruments/synthesis_samples/brass/crisis_trombone/c3.ogg',
+ "60"='sound/runtime/instruments/synthesis_samples/brass/crisis_trombone/c4.ogg',
+ "72"='sound/runtime/instruments/synthesis_samples/brass/crisis_trombone/c5.ogg')
/datum/instrument/brass/crisis_trumpet
name = "Crisis Trumpet"
id = "crtrumpet"
- real_samples = list("60"='sound/instruments/synthesis_samples/brass/crisis_trumpet/c4.ogg',
- "72"='sound/instruments/synthesis_samples/brass/crisis_trumpet/c5.ogg')
+ real_samples = list("60"='sound/runtime/instruments/synthesis_samples/brass/crisis_trumpet/c4.ogg',
+ "72"='sound/runtime/instruments/synthesis_samples/brass/crisis_trumpet/c5.ogg')
diff --git a/code/modules/instruments/instrument_data/chromatic_percussion.dm b/code/modules/instruments/instrument_data/chromatic_percussion.dm
index 3a5bed2396..c4554a1d5c 100644
--- a/code/modules/instruments/instrument_data/chromatic_percussion.dm
+++ b/code/modules/instruments/instrument_data/chromatic_percussion.dm
@@ -1,31 +1,31 @@
/datum/instrument/chromatic
name = "Generic chromatic percussion instrument"
category = "Chromatic percussion"
- instrument_type = /datum/instrument/chromatic
+ abstract_type = /datum/instrument/chromatic
/datum/instrument/chromatic/vibraphone1
name = "Crisis Vibraphone"
id = "crvibr"
- real_samples = list("36"='sound/instruments/synthesis_samples/chromatic/vibraphone1/c2.ogg',
- "48"='sound/instruments/synthesis_samples/chromatic/vibraphone1/c3.ogg',
- "60"='sound/instruments/synthesis_samples/chromatic/vibraphone1/c4.ogg',
- "72"='sound/instruments/synthesis_samples/chromatic/vibraphone1/c5.ogg')
+ real_samples = list("36"='sound/runtime/instruments/synthesis_samples/chromatic/vibraphone1/c2.ogg',
+ "48"='sound/runtime/instruments/synthesis_samples/chromatic/vibraphone1/c3.ogg',
+ "60"='sound/runtime/instruments/synthesis_samples/chromatic/vibraphone1/c4.ogg',
+ "72"='sound/runtime/instruments/synthesis_samples/chromatic/vibraphone1/c5.ogg')
/datum/instrument/chromatic/musicbox1
name = "SGM Music Box"
id = "sgmmbox"
- real_samples = list("36"='sound/instruments/synthesis_samples/chromatic/sgmbox/c2.ogg',
- "48"='sound/instruments/synthesis_samples/chromatic/sgmbox/c3.ogg',
- "60"='sound/instruments/synthesis_samples/chromatic/sgmbox/c4.ogg',
- "72"='sound/instruments/synthesis_samples/chromatic/sgmbox/c5.ogg')
+ real_samples = list("36"='sound/runtime/instruments/synthesis_samples/chromatic/sgmbox/c2.ogg',
+ "48"='sound/runtime/instruments/synthesis_samples/chromatic/sgmbox/c3.ogg',
+ "60"='sound/runtime/instruments/synthesis_samples/chromatic/sgmbox/c4.ogg',
+ "72"='sound/runtime/instruments/synthesis_samples/chromatic/sgmbox/c5.ogg')
/datum/instrument/chromatic/fluid_celeste
name = "FluidR3 Celeste"
id = "r3celeste"
- real_samples = list("36"='sound/instruments/synthesis_samples/chromatic/fluid_celeste/c2.ogg',
- "48"='sound/instruments/synthesis_samples/chromatic/fluid_celeste/c3.ogg',
- "60"='sound/instruments/synthesis_samples/chromatic/fluid_celeste/c4.ogg',
- "72"='sound/instruments/synthesis_samples/chromatic/fluid_celeste/c5.ogg',
- "84"='sound/instruments/synthesis_samples/chromatic/fluid_celeste/c6.ogg',
- "96"='sound/instruments/synthesis_samples/chromatic/fluid_celeste/c7.ogg',
- "108"='sound/instruments/synthesis_samples/chromatic/fluid_celeste/c8.ogg')
+ real_samples = list("36"='sound/runtime/instruments/synthesis_samples/chromatic/fluid_celeste/c2.ogg',
+ "48"='sound/runtime/instruments/synthesis_samples/chromatic/fluid_celeste/c3.ogg',
+ "60"='sound/runtime/instruments/synthesis_samples/chromatic/fluid_celeste/c4.ogg',
+ "72"='sound/runtime/instruments/synthesis_samples/chromatic/fluid_celeste/c5.ogg',
+ "84"='sound/runtime/instruments/synthesis_samples/chromatic/fluid_celeste/c6.ogg',
+ "96"='sound/runtime/instruments/synthesis_samples/chromatic/fluid_celeste/c7.ogg',
+ "108"='sound/runtime/instruments/synthesis_samples/chromatic/fluid_celeste/c8.ogg')
diff --git a/code/modules/instruments/instrument_data/fun.dm b/code/modules/instruments/instrument_data/fun.dm
index 0b6fc696d8..8ab844cfad 100644
--- a/code/modules/instruments/instrument_data/fun.dm
+++ b/code/modules/instruments/instrument_data/fun.dm
@@ -1,7 +1,7 @@
/datum/instrument/fun
name = "Generic Fun Instrument"
category = "Fun"
- instrument_type = /datum/instrument/fun
+ abstract_type = /datum/instrument/fun
/datum/instrument/fun/honk
name = "!!HONK!!"
@@ -18,6 +18,15 @@
id = "chime"
real_samples = list("79"='sound/machines/chime.ogg')
+/datum/instrument/fun/meowsynth
+ name = "MeowSynth"
+ id = "meowsynth"
+ real_samples = list("36"='sound/runtime/instruments/synthesis_samples/meowsynth/c2.ogg',
+ "48"='sound/runtime/instruments/synthesis_samples/meowsynth/c3.ogg',
+ "60"='sound/runtime/instruments/synthesis_samples/meowsynth/c4.ogg',
+ "72"='sound/runtime/instruments/synthesis_samples/meowsynth/c5.ogg',
+ "84"='sound/runtime/instruments/synthesis_samples/meowsynth/c6.ogg')
+
/datum/instrument/fun/mothscream
name = "Moth Scream"
id = "mothscream"
diff --git a/code/modules/instruments/instrument_data/guitar.dm b/code/modules/instruments/instrument_data/guitar.dm
index 07532aa8be..bc34cf61bc 100644
--- a/code/modules/instruments/instrument_data/guitar.dm
+++ b/code/modules/instruments/instrument_data/guitar.dm
@@ -1,36 +1,36 @@
/datum/instrument/guitar
name = "Generic guitar-like instrument"
category = "Guitar"
- instrument_type = /datum/instrument/guitar
+ abstract_type = /datum/instrument/guitar
/datum/instrument/guitar/steel_crisis
name = "Crisis Steel String Guitar"
id = "csteelgt"
- real_samples = list("36"='sound/instruments/synthesis_samples/guitar/crisis_steel/c2.ogg',
- "48"='sound/instruments/synthesis_samples/guitar/crisis_steel/c3.ogg',
- "60"='sound/instruments/synthesis_samples/guitar/crisis_steel/c4.ogg',
- "72"='sound/instruments/synthesis_samples/guitar/crisis_steel/c5.ogg')
+ real_samples = list("36"='sound/runtime/instruments/synthesis_samples/guitar/crisis_steel/c2.ogg',
+ "48"='sound/runtime/instruments/synthesis_samples/guitar/crisis_steel/c3.ogg',
+ "60"='sound/runtime/instruments/synthesis_samples/guitar/crisis_steel/c4.ogg',
+ "72"='sound/runtime/instruments/synthesis_samples/guitar/crisis_steel/c5.ogg')
/datum/instrument/guitar/nylon_crisis
name = "Crisis Nylon String Guitar"
id = "cnylongt"
- real_samples = list("36"='sound/instruments/synthesis_samples/guitar/crisis_nylon/c2.ogg',
- "48"='sound/instruments/synthesis_samples/guitar/crisis_nylon/c3.ogg',
- "60"='sound/instruments/synthesis_samples/guitar/crisis_nylon/c4.ogg',
- "72"='sound/instruments/synthesis_samples/guitar/crisis_nylon/c5.ogg')
+ real_samples = list("36"='sound/runtime/instruments/synthesis_samples/guitar/crisis_nylon/c2.ogg',
+ "48"='sound/runtime/instruments/synthesis_samples/guitar/crisis_nylon/c3.ogg',
+ "60"='sound/runtime/instruments/synthesis_samples/guitar/crisis_nylon/c4.ogg',
+ "72"='sound/runtime/instruments/synthesis_samples/guitar/crisis_nylon/c5.ogg')
/datum/instrument/guitar/clean_crisis
name = "Crisis Clean Guitar"
id = "ccleangt"
- real_samples = list("36"='sound/instruments/synthesis_samples/guitar/crisis_clean/c2.ogg',
- "48"='sound/instruments/synthesis_samples/guitar/crisis_clean/c3.ogg',
- "60"='sound/instruments/synthesis_samples/guitar/crisis_clean/c4.ogg',
- "72"='sound/instruments/synthesis_samples/guitar/crisis_clean/c5.ogg')
+ real_samples = list("36"='sound/runtime/instruments/synthesis_samples/guitar/crisis_clean/c2.ogg',
+ "48"='sound/runtime/instruments/synthesis_samples/guitar/crisis_clean/c3.ogg',
+ "60"='sound/runtime/instruments/synthesis_samples/guitar/crisis_clean/c4.ogg',
+ "72"='sound/runtime/instruments/synthesis_samples/guitar/crisis_clean/c5.ogg')
/datum/instrument/guitar/muted_crisis
name = "Crisis Muted Guitar"
id = "cmutedgt"
- real_samples = list("36"='sound/instruments/synthesis_samples/guitar/crisis_muted/c2.ogg',
- "48"='sound/instruments/synthesis_samples/guitar/crisis_muted/c3.ogg',
- "60"='sound/instruments/synthesis_samples/guitar/crisis_muted/c4.ogg',
- "72"='sound/instruments/synthesis_samples/guitar/crisis_muted/c5.ogg')
+ real_samples = list("36"='sound/runtime/instruments/synthesis_samples/guitar/crisis_muted/c2.ogg',
+ "48"='sound/runtime/instruments/synthesis_samples/guitar/crisis_muted/c3.ogg',
+ "60"='sound/runtime/instruments/synthesis_samples/guitar/crisis_muted/c4.ogg',
+ "72"='sound/runtime/instruments/synthesis_samples/guitar/crisis_muted/c5.ogg')
diff --git a/code/modules/instruments/instrument_data/hardcoded.dm b/code/modules/instruments/instrument_data/hardcoded.dm
index 1138fd7d8c..28423d88b8 100644
--- a/code/modules/instruments/instrument_data/hardcoded.dm
+++ b/code/modules/instruments/instrument_data/hardcoded.dm
@@ -2,7 +2,7 @@
//SONGS WILL BE AUTOMATICALLY SWITCHED TO LEGACY MODE IF THEY USE THIS KIND OF INSTRUMENT!
//I'd prefer these stayed. They sound different from the mechanical synthesis of synthed instruments, and I quite like them that way. It's not legacy, it's hardcoded, old style. - kevinz000
/datum/instrument/hardcoded
- instrument_type = /datum/instrument/hardcoded
+ abstract_type = /datum/instrument/hardcoded
category = "Non-Synthesized"
instrument_flags = INSTRUMENT_LEGACY
volume_multiplier = 1 //not as loud as synth'd
@@ -23,7 +23,7 @@
name = "Electric Guitar"
id = "eguitar"
legacy_instrument_ext = "ogg"
- legacy_instrument_path = "eguitar"
+ legacy_instrument_path = "electric_guitar"
/datum/instrument/hardcoded/glockenspiel
name = "Glockenspiel"
diff --git a/code/modules/instruments/instrument_data/organ.dm b/code/modules/instruments/instrument_data/organ.dm
index c8a4c069e3..6a4112437f 100644
--- a/code/modules/instruments/instrument_data/organ.dm
+++ b/code/modules/instruments/instrument_data/organ.dm
@@ -1,43 +1,43 @@
/datum/instrument/organ
name = "Generic organ"
category = "Organ"
- instrument_type = /datum/instrument/organ
+ abstract_type = /datum/instrument/organ
/datum/instrument/organ/crisis_church
name = "Crisis Church Organ"
id = "crichugan"
- real_samples = list("36"='sound/instruments/synthesis_samples/organ/crisis_church/c2.ogg',
- "48"='sound/instruments/synthesis_samples/organ/crisis_church/c3.ogg',
- "60"='sound/instruments/synthesis_samples/organ/crisis_church/c4.ogg',
- "72"='sound/instruments/synthesis_samples/organ/crisis_church/c5.ogg')
+ real_samples = list("36"='sound/runtime/instruments/synthesis_samples/organ/crisis_church/c2.ogg',
+ "48"='sound/runtime/instruments/synthesis_samples/organ/crisis_church/c3.ogg',
+ "60"='sound/runtime/instruments/synthesis_samples/organ/crisis_church/c4.ogg',
+ "72"='sound/runtime/instruments/synthesis_samples/organ/crisis_church/c5.ogg')
/datum/instrument/organ/crisis_hammond
name = "Crisis Hammond Organ"
id = "crihamgan"
- real_samples = list("36"='sound/instruments/synthesis_samples/organ/crisis_hammond/c2.ogg',
- "48"='sound/instruments/synthesis_samples/organ/crisis_hammond/c3.ogg',
- "60"='sound/instruments/synthesis_samples/organ/crisis_hammond/c4.ogg',
- "72"='sound/instruments/synthesis_samples/organ/crisis_hammond/c5.ogg')
+ real_samples = list("36"='sound/runtime/instruments/synthesis_samples/organ/crisis_hammond/c2.ogg',
+ "48"='sound/runtime/instruments/synthesis_samples/organ/crisis_hammond/c3.ogg',
+ "60"='sound/runtime/instruments/synthesis_samples/organ/crisis_hammond/c4.ogg',
+ "72"='sound/runtime/instruments/synthesis_samples/organ/crisis_hammond/c5.ogg')
/datum/instrument/organ/crisis_accordian
name = "Crisis Accordian"
id = "crack"
- real_samples = list("36"='sound/instruments/synthesis_samples/organ/crisis_accordian/c2.ogg',
- "48"='sound/instruments/synthesis_samples/organ/crisis_accordian/c3.ogg',
- "60"='sound/instruments/synthesis_samples/organ/crisis_accordian/c4.ogg',
- "72"='sound/instruments/synthesis_samples/organ/crisis_accordian/c5.ogg')
+ real_samples = list("36"='sound/runtime/instruments/synthesis_samples/organ/crisis_accordian/c2.ogg',
+ "48"='sound/runtime/instruments/synthesis_samples/organ/crisis_accordian/c3.ogg',
+ "60"='sound/runtime/instruments/synthesis_samples/organ/crisis_accordian/c4.ogg',
+ "72"='sound/runtime/instruments/synthesis_samples/organ/crisis_accordian/c5.ogg')
/datum/instrument/organ/crisis_harmonica
name = "Crisis Harmonica"
id = "crharmony"
- real_samples = list("48"='sound/instruments/synthesis_samples/organ/crisis_harmonica/c3.ogg',
- "60"='sound/instruments/synthesis_samples/organ/crisis_harmonica/c4.ogg',
- "72"='sound/instruments/synthesis_samples/organ/crisis_harmonica/c5.ogg')
+ real_samples = list("48"='sound/runtime/instruments/synthesis_samples/organ/crisis_harmonica/c3.ogg',
+ "60"='sound/runtime/instruments/synthesis_samples/organ/crisis_harmonica/c4.ogg',
+ "72"='sound/runtime/instruments/synthesis_samples/organ/crisis_harmonica/c5.ogg')
/datum/instrument/organ/crisis_tango_accordian
name = "Crisis Tango Accordian"
id = "crtango"
- real_samples = list("36"='sound/instruments/synthesis_samples/organ/crisis_tangaccordian/c2.ogg',
- "48"='sound/instruments/synthesis_samples/organ/crisis_tangaccordian/c3.ogg',
- "60"='sound/instruments/synthesis_samples/organ/crisis_tangaccordian/c4.ogg',
- "72"='sound/instruments/synthesis_samples/organ/crisis_tangaccordian/c5.ogg')
+ real_samples = list("36"='sound/runtime/instruments/synthesis_samples/organ/crisis_tangaccordian/c2.ogg',
+ "48"='sound/runtime/instruments/synthesis_samples/organ/crisis_tangaccordian/c3.ogg',
+ "60"='sound/runtime/instruments/synthesis_samples/organ/crisis_tangaccordian/c4.ogg',
+ "72"='sound/runtime/instruments/synthesis_samples/organ/crisis_tangaccordian/c5.ogg')
diff --git a/code/modules/instruments/instrument_data/piano.dm b/code/modules/instruments/instrument_data/piano.dm
index e8aac71dae..9f2aeb063a 100644
--- a/code/modules/instruments/instrument_data/piano.dm
+++ b/code/modules/instruments/instrument_data/piano.dm
@@ -1,56 +1,56 @@
/datum/instrument/piano
name = "Generic piano"
category = "Piano"
- instrument_type = /datum/instrument/piano
+ abstract_type = /datum/instrument/piano
/datum/instrument/piano/fluid_piano
name = "FluidR3 Grand Piano"
id = "r3grand"
- real_samples = list("36"='sound/instruments/synthesis_samples/piano/fluid_piano/c2.ogg',
- "48"='sound/instruments/synthesis_samples/piano/fluid_piano/c3.ogg',
- "60"='sound/instruments/synthesis_samples/piano/fluid_piano/c4.ogg',
- "72"='sound/instruments/synthesis_samples/piano/fluid_piano/c5.ogg',
- "84"='sound/instruments/synthesis_samples/piano/fluid_piano/c6.ogg',
- "96"='sound/instruments/synthesis_samples/piano/fluid_piano/c7.ogg',
- "108"='sound/instruments/synthesis_samples/piano/fluid_piano/c8.ogg')
+ real_samples = list("36"='sound/runtime/instruments/synthesis_samples/piano/fluid_piano/c2.ogg',
+ "48"='sound/runtime/instruments/synthesis_samples/piano/fluid_piano/c3.ogg',
+ "60"='sound/runtime/instruments/synthesis_samples/piano/fluid_piano/c4.ogg',
+ "72"='sound/runtime/instruments/synthesis_samples/piano/fluid_piano/c5.ogg',
+ "84"='sound/runtime/instruments/synthesis_samples/piano/fluid_piano/c6.ogg',
+ "96"='sound/runtime/instruments/synthesis_samples/piano/fluid_piano/c7.ogg',
+ "108"='sound/runtime/instruments/synthesis_samples/piano/fluid_piano/c8.ogg')
/datum/instrument/piano/fluid_harpsichord
name = "FluidR3 Harpsichord"
id = "r3harpsi"
- real_samples = list("36"='sound/instruments/synthesis_samples/piano/fluid_harpsi/c2.ogg',
- "48"='sound/instruments/synthesis_samples/piano/fluid_harpsi/c3.ogg',
- "60"='sound/instruments/synthesis_samples/piano/fluid_harpsi/c4.ogg',
- "72"='sound/instruments/synthesis_samples/piano/fluid_harpsi/c5.ogg',
- "84"='sound/instruments/synthesis_samples/piano/fluid_harpsi/c6.ogg',
- "96"='sound/instruments/synthesis_samples/piano/fluid_harpsi/c7.ogg',
- "108"='sound/instruments/synthesis_samples/piano/fluid_harpsi/c8.ogg')
+ real_samples = list("36"='sound/runtime/instruments/synthesis_samples/piano/fluid_harpsi/c2.ogg',
+ "48"='sound/runtime/instruments/synthesis_samples/piano/fluid_harpsi/c3.ogg',
+ "60"='sound/runtime/instruments/synthesis_samples/piano/fluid_harpsi/c4.ogg',
+ "72"='sound/runtime/instruments/synthesis_samples/piano/fluid_harpsi/c5.ogg',
+ "84"='sound/runtime/instruments/synthesis_samples/piano/fluid_harpsi/c6.ogg',
+ "96"='sound/runtime/instruments/synthesis_samples/piano/fluid_harpsi/c7.ogg',
+ "108"='sound/runtime/instruments/synthesis_samples/piano/fluid_harpsi/c8.ogg')
/datum/instrument/piano/crisis_harpsichord
name = "Crisis Harpsichord"
id = "crharpsi"
- real_samples = list("36"='sound/instruments/synthesis_samples/piano/crisis_harpsichord/c2.ogg',
- "48"='sound/instruments/synthesis_samples/piano/crisis_harpsichord/c3.ogg',
- "60"='sound/instruments/synthesis_samples/piano/crisis_harpsichord/c4.ogg',
- "72"='sound/instruments/synthesis_samples/piano/crisis_harpsichord/c5.ogg')
+ real_samples = list("36"='sound/runtime/instruments/synthesis_samples/piano/crisis_harpsichord/c2.ogg',
+ "48"='sound/runtime/instruments/synthesis_samples/piano/crisis_harpsichord/c3.ogg',
+ "60"='sound/runtime/instruments/synthesis_samples/piano/crisis_harpsichord/c4.ogg',
+ "72"='sound/runtime/instruments/synthesis_samples/piano/crisis_harpsichord/c5.ogg')
/datum/instrument/piano/crisis_grandpiano_uni
name = "Crisis Grand Piano One"
id = "crgrand1"
- real_samples = list("36"='sound/instruments/synthesis_samples/piano/crisis_grand_piano/c2.ogg',
- "48"='sound/instruments/synthesis_samples/piano/crisis_grand_piano/c3.ogg',
- "60"='sound/instruments/synthesis_samples/piano/crisis_grand_piano/c4.ogg',
- "72"='sound/instruments/synthesis_samples/piano/crisis_grand_piano/c5.ogg',
- "84"='sound/instruments/synthesis_samples/piano/crisis_grand_piano/c6.ogg',
- "96"='sound/instruments/synthesis_samples/piano/crisis_grand_piano/c7.ogg',
- "108"='sound/instruments/synthesis_samples/piano/crisis_grand_piano/c8.ogg')
+ real_samples = list("36"='sound/runtime/instruments/synthesis_samples/piano/crisis_grand_piano/c2.ogg',
+ "48"='sound/runtime/instruments/synthesis_samples/piano/crisis_grand_piano/c3.ogg',
+ "60"='sound/runtime/instruments/synthesis_samples/piano/crisis_grand_piano/c4.ogg',
+ "72"='sound/runtime/instruments/synthesis_samples/piano/crisis_grand_piano/c5.ogg',
+ "84"='sound/runtime/instruments/synthesis_samples/piano/crisis_grand_piano/c6.ogg',
+ "96"='sound/runtime/instruments/synthesis_samples/piano/crisis_grand_piano/c7.ogg',
+ "108"='sound/runtime/instruments/synthesis_samples/piano/crisis_grand_piano/c8.ogg')
/datum/instrument/piano/crisis_brightpiano_uni
name = "Crisis Bright Piano One"
id = "crbright1"
- real_samples = list("36"='sound/instruments/synthesis_samples/piano/crisis_bright_piano/c2.ogg',
- "48"='sound/instruments/synthesis_samples/piano/crisis_bright_piano/c3.ogg',
- "60"='sound/instruments/synthesis_samples/piano/crisis_bright_piano/c4.ogg',
- "72"='sound/instruments/synthesis_samples/piano/crisis_bright_piano/c5.ogg',
- "84"='sound/instruments/synthesis_samples/piano/crisis_bright_piano/c6.ogg',
- "96"='sound/instruments/synthesis_samples/piano/crisis_bright_piano/c7.ogg',
- "108"='sound/instruments/synthesis_samples/piano/crisis_bright_piano/c8.ogg')
+ real_samples = list("36"='sound/runtime/instruments/synthesis_samples/piano/crisis_bright_piano/c2.ogg',
+ "48"='sound/runtime/instruments/synthesis_samples/piano/crisis_bright_piano/c3.ogg',
+ "60"='sound/runtime/instruments/synthesis_samples/piano/crisis_bright_piano/c4.ogg',
+ "72"='sound/runtime/instruments/synthesis_samples/piano/crisis_bright_piano/c5.ogg',
+ "84"='sound/runtime/instruments/synthesis_samples/piano/crisis_bright_piano/c6.ogg',
+ "96"='sound/runtime/instruments/synthesis_samples/piano/crisis_bright_piano/c7.ogg',
+ "108"='sound/runtime/instruments/synthesis_samples/piano/crisis_bright_piano/c8.ogg')
diff --git a/code/modules/instruments/instrument_data/synth_tones.dm b/code/modules/instruments/instrument_data/synth_tones.dm
index d3a78a081c..9ab25e79e7 100644
--- a/code/modules/instruments/instrument_data/synth_tones.dm
+++ b/code/modules/instruments/instrument_data/synth_tones.dm
@@ -1,19 +1,19 @@
/datum/instrument/tones
name = "Ideal tone"
category = "Tones"
- instrument_type = /datum/instrument/tones
+ abstract_type = /datum/instrument/tones
/datum/instrument/tones/square_wave
name = "Ideal square wave"
id = "square"
- real_samples = list("81"='sound/instruments/synthesis_samples/tones/Square.ogg')
+ real_samples = list("81"='sound/runtime/instruments/synthesis_samples/tones/Square.ogg')
/datum/instrument/tones/sine_wave
name = "Ideal sine wave"
id = "sine"
- real_samples = list("81"='sound/instruments/synthesis_samples/tones/Sine.ogg')
+ real_samples = list("81"='sound/runtime/instruments/synthesis_samples/tones/Sine.ogg')
/datum/instrument/tones/saw_wave
name = "Ideal sawtooth wave"
id = "saw"
- real_samples = list("81"='sound/instruments/synthesis_samples/tones/Sawtooth.ogg')
+ real_samples = list("81"='sound/runtime/instruments/synthesis_samples/tones/Sawtooth.ogg')
diff --git a/code/modules/instruments/items.dm b/code/modules/instruments/items.dm
index cb760a656c..4954e37e65 100644
--- a/code/modules/instruments/items.dm
+++ b/code/modules/instruments/items.dm
@@ -9,7 +9,7 @@
slot_l_hand_str = 'icons/mob/items/lefthand_instruments.dmi',
slot_r_hand_str = 'icons/mob/items/righthand_instruments.dmi',
)
-
+ abstract_type = /obj/item/instrument
/// Our song datum.
var/datum/song/handheld/song
/// Our allowed list of instrument ids. This is nulled on initialize.
@@ -20,27 +20,30 @@
/obj/item/instrument/Initialize(mapload)
. = ..()
song = new(src, allowed_instrument_ids, instrument_range)
- allowed_instrument_ids = null //We don't need this clogging memory after it's used.
+ allowed_instrument_ids = null //We don't need this clogging memory after its used.
/obj/item/instrument/Destroy()
QDEL_NULL(song)
return ..()
-/obj/item/instrument/proc/should_stop_playing(mob/user)
- return user.incapacitated() || !((loc == user) || (isturf(loc) && Adjacent(user))) // sorry, no more TK playing.
+/obj/item/instrument/proc/can_play(atom/music_player)
+ if(!ismob(music_player))
+ return FALSE
+ var/mob/user = music_player
+ if(user.incapacitated())
+ return FALSE
+ if(!Adjacent(user))
+ return FALSE
+ return TRUE
-/obj/item/instrument/attack_self(mob/user)
- if(!user.IsAdvancedToolUser())
- to_chat(user, span_warning("You don't have the dexterity to do this!"))
- return TRUE
- interact(user)
-
-/obj/item/instrument/interact(mob/living/user)
- if(!isliving(user) || user.incapacitated())
+/obj/item/instrument/attack_self(mob/M)
+ if(!M.IsAdvancedToolUser())
return
- user.set_machine(src)
- song.interact(user)
+ tgui_interact(M)
+
+/obj/item/instrument/tgui_interact(mob/user, datum/tgui/ui)
+ return song.tgui_interact(user)
/obj/item/instrument/violin
name = "space violin"
@@ -60,67 +63,6 @@
icon_state = "xylophone"
allowed_instrument_ids = "xylophone"
-/obj/item/instrument/piano_synth
- name = "synthesizer"
- desc = "An advanced electronic synthesizer that can be used as various instruments."
- icon_state = "synth"
- allowed_instrument_ids = "piano"
-
-/obj/item/instrument/piano_synth/Initialize(mapload)
- . = ..()
- song.allowed_instrument_ids = SSinstruments.synthesizer_instrument_ids
-
-/obj/item/instrument/piano_synth/headphones
- name = "headphones"
- desc = "Unce unce unce unce. Boop!"
- icon_state = "headphones"
- slot_flags = SLOT_EARS | SLOT_HEAD
- force = 0
- w_class = ITEMSIZE_SMALL
- instrument_range = 1
-
-/obj/item/instrument/piano_synth/headphones/Initialize(mapload)
- . = ..()
- RegisterSignal(src, COMSIG_SONG_START, PROC_REF(start_playing))
- RegisterSignal(src, COMSIG_SONG_END, PROC_REF(stop_playing))
-
-/**
- * Called by a component signal when our song starts playing.
- */
-/obj/item/instrument/piano_synth/headphones/proc/start_playing()
- SIGNAL_HANDLER
-
- icon_state = "[initial(icon_state)]_on"
- if(ishuman(loc))
- var/mob/living/carbon/human/H = loc
- if(H.l_ear == src || H.r_ear == src)
- H.update_inv_ears()
- else if(H.head == src)
- H.update_inv_head()
-
-/**
- * Called by a component signal when our song stops playing.
- */
-/obj/item/instrument/piano_synth/headphones/proc/stop_playing()
- SIGNAL_HANDLER
-
- icon_state = "[initial(icon_state)]"
- if(ishuman(loc))
- var/mob/living/carbon/human/H = loc
- if(H.l_ear == src || H.r_ear == src)
- H.update_inv_ears()
- else if(H.head == src)
- H.update_inv_head()
-
-
-/obj/item/instrument/piano_synth/headphones/spacepods
- name = "\improper Nanotrasen space pods"
- desc = "Flex your money, AND ignore what everyone else says, all at once!"
- icon_state = "spacepods"
- slot_flags = SLOT_EARS
- //strip_delay = 100 //air pods don't fall out
- instrument_range = 0 //you're paying for quality here
-
/obj/item/instrument/banjo
name = "banjo"
desc = "A 'Mura' brand banjo. It's pretty much just a drum with a neck and strings."
@@ -177,7 +119,7 @@
AddComponent(/datum/component/spooky)
*/
/obj/item/instrument/trumpet/spectral/attack(mob/living/carbon/C, mob/user)
- playsound (src, 'sound/instruments/trombone/En4.mid', 100,1,-1)
+ playsound (src, 'sound/runtime/instruments/trombone/En4.mid', 100,1,-1)
..()
/obj/item/instrument/saxophone
@@ -200,7 +142,7 @@
*/
/obj/item/instrument/saxophone/spectral/attack(mob/living/carbon/C, mob/user)
- playsound (src, 'sound/instruments/saxophone/En4.mid', 100,1,-1)
+ playsound (src, 'sound/runtime/instruments/saxophone/En4.mid', 100,1,-1)
..()
/obj/item/instrument/trombone
@@ -223,7 +165,7 @@
*/
/obj/item/instrument/trombone/spectral/attack(mob/living/carbon/C, mob/user)
- playsound (src, 'sound/instruments/trombone/Cn4.mid', 100,1,-1)
+ playsound (src, 'sound/runtime/instruments/trombone/Cn4.mid', 100,1,-1)
..()
/obj/item/instrument/recorder
diff --git a/code/modules/instruments/piano_synth.dm b/code/modules/instruments/piano_synth.dm
new file mode 100644
index 0000000000..98015e9365
--- /dev/null
+++ b/code/modules/instruments/piano_synth.dm
@@ -0,0 +1,60 @@
+/obj/item/instrument/piano_synth
+ name = "synthesizer"
+ desc = "An advanced electronic synthesizer that can be used as various instruments."
+ icon_state = "synth"
+ allowed_instrument_ids = "piano"
+
+/obj/item/instrument/piano_synth/Initialize(mapload)
+ . = ..()
+ song.allowed_instrument_ids = SSinstruments.synthesizer_instrument_ids
+
+/obj/item/instrument/piano_synth/headphones
+ name = "headphones"
+ desc = "Unce unce unce unce. Boop!"
+ icon_state = "headphones"
+ slot_flags = SLOT_EARS | SLOT_HEAD
+ force = 0
+ w_class = ITEMSIZE_SMALL
+ instrument_range = 1
+
+/obj/item/instrument/piano_synth/headphones/Initialize(mapload)
+ . = ..()
+ RegisterSignal(src, COMSIG_SONG_START, PROC_REF(start_playing))
+ RegisterSignal(src, COMSIG_SONG_END, PROC_REF(stop_playing))
+
+/**
+ * Called by a component signal when our song starts playing.
+ */
+/obj/item/instrument/piano_synth/headphones/proc/start_playing()
+ SIGNAL_HANDLER
+
+ icon_state = "[initial(icon_state)]_on"
+ if(ishuman(loc))
+ var/mob/living/carbon/human/H = loc
+ if(H.l_ear == src || H.r_ear == src)
+ H.update_inv_ears()
+ else if(H.head == src)
+ H.update_inv_head()
+
+/**
+ * Called by a component signal when our song stops playing.
+ */
+/obj/item/instrument/piano_synth/headphones/proc/stop_playing()
+ SIGNAL_HANDLER
+
+ icon_state = "[initial(icon_state)]"
+ if(ishuman(loc))
+ var/mob/living/carbon/human/H = loc
+ if(H.l_ear == src || H.r_ear == src)
+ H.update_inv_ears()
+ else if(H.head == src)
+ H.update_inv_head()
+
+
+/obj/item/instrument/piano_synth/headphones/spacepods
+ name = "\improper Nanotrasen space pods"
+ desc = "Flex your money, AND ignore what everyone else says, all at once!"
+ icon_state = "spacepods"
+ slot_flags = SLOT_EARS
+ //strip_delay = 100 //air pods don't fall out
+ instrument_range = 0 //you're paying for quality here
diff --git a/code/modules/instruments/songs/_song.dm b/code/modules/instruments/songs/_song.dm
index 53ce5c02de..257c162134 100644
--- a/code/modules/instruments/songs/_song.dm
+++ b/code/modules/instruments/songs/_song.dm
@@ -1,7 +1,3 @@
-#define MUSICIAN_HEARCHECK_MINDELAY 4
-#define MUSIC_MAXLINES 1000
-#define MUSIC_MAXLINECHARS 300
-
/**
* # Song datum
*
@@ -12,6 +8,9 @@
/// Name of the song
var/name = "Untitled"
+ /// ID for syncing songs together
+ var/id = ""
+
/// The atom we're attached to/playing from
var/atom/parent
@@ -27,11 +26,6 @@
/// Are we currently playing?
var/playing = FALSE
- /// Are we currently editing?
- var/editing = TRUE
- /// Is the help screen open?
- var/help = FALSE
-
/// Repeats left
var/repeat = 0
/// Maximum times we can repeat
@@ -78,8 +72,8 @@
var/list/channels_playing = list()
/// List of channels that aren't being used, as text. This is to prevent unnecessary freeing and reallocations from SSsounds/SSinstruments.
var/list/channels_idle = list()
- /// Person playing us
- var/mob/user_playing
+ /// Who or what's playing us
+ var/atom/music_player
//////////////////////////////////////////////////////
/// Last world.time we checked for who can hear us
@@ -111,7 +105,6 @@
var/note_shift = 0
var/note_shift_min = -100
var/note_shift_max = 100
- var/can_noteshift = TRUE
/// The kind of sustain we're using
var/sustain_mode = SUSTAIN_LINEAR
/// When a note is considered dead if it is below this in volume
@@ -130,10 +123,10 @@
/datum/song/New(atom/parent, list/instrument_ids, new_range)
SSinstruments.on_song_new(src)
lines = list()
- tempo = sanitize_tempo(tempo)
+ tempo = sanitize_tempo(tempo, TRUE)
src.parent = parent
if(instrument_ids)
- allowed_instrument_ids = islist(instrument_ids)? instrument_ids : list(instrument_ids)
+ allowed_instrument_ids = islist(instrument_ids) ? instrument_ids : list(instrument_ids)
if(length(allowed_instrument_ids))
set_instrument(allowed_instrument_ids[1])
hearing_mobs = list()
@@ -161,6 +154,8 @@
var/list/old = hearing_mobs.Copy()
hearing_mobs.len = 0
var/turf/source = get_turf(parent)
+ // FIXME
+ // for(var/mob/M in get_hearers_in_view(instrument_range, source))
var/list/in_range = get_mobs_and_objs_in_view_fast(source, instrument_range, remote_ghosts = FALSE)
for(var/mob/M in in_range["mobs"])
hearing_mobs[M] = get_dist(M, source)
@@ -202,64 +197,98 @@
/**
* Attempts to start playing our song.
*/
-/datum/song/proc/start_playing(mob/user)
+/datum/song/proc/start_playing(atom/user)
if(playing)
return
if(!using_instrument?.ready())
- to_chat(user, span_warning("An error has occurred with [src]. Please reset the instrument."))
+ to_chat(user, span_warning("An error has occured with [src]. Please reset the instrument."))
return
compile_chords()
if(!length(compiled_chords))
to_chat(user, span_warning("Song is empty."))
return
playing = TRUE
- updateDialog(user_playing)
//we can not afford to runtime, since we are going to be doing sound channel reservations and if we runtime it means we have a channel allocation leak.
//wrap the rest of the stuff to ensure stop_playing() is called.
do_hearcheck()
- SEND_SIGNAL(parent, COMSIG_SONG_START)
+ SEND_SIGNAL(parent, COMSIG_INSTRUMENT_START, src, user)
+ SEND_SIGNAL(user, COMSIG_ATOM_STARTING_INSTRUMENT, src)
elapsed_delay = 0
delay_by = 0
current_chord = 1
- user_playing = user
+ music_player = user
START_PROCESSING(SSinstruments, src)
+ if(id)
+ sync_play()
+
+/**
+ * Attempts to find other instruments with the same ID and syncs them to our song.
+ */
+/datum/song/proc/sync_play()
+ for(var/datum/song/other_instrument as anything in SSinstruments.songs)
+ if(other_instrument == src || other_instrument.id != id)
+ continue
+ if(other_instrument.playing)
+ continue
+ var/atom/other_player = other_instrument.find_sync_player()
+ if(isnull(other_player) || !(other_player in view(get_turf(parent))))
+ continue
+ // copies the main song info to target songs
+ other_instrument.lines = lines.Copy()
+ other_instrument.max_repeats = max_repeats
+ other_instrument.tempo = tempo
+ other_instrument.start_playing(other_player)
+
+/**
+ * Finds a player which would reasonably be able to play this song.
+ */
+/datum/song/proc/find_sync_player()
+ return null
/**
* Stops playing, terminating all sounds if in synthesized mode. Clears hearing_mobs.
+ *
+ * Arguments:
+ * * finished: boolean, whether the song ended via reaching the end.
*/
-/datum/song/proc/stop_playing()
+/datum/song/proc/stop_playing(finished = FALSE)
if(!playing)
return
playing = FALSE
if(!debug_mode)
compiled_chords = null
STOP_PROCESSING(SSinstruments, src)
- SEND_SIGNAL(parent, COMSIG_SONG_END)
+ SEND_SIGNAL(parent, COMSIG_INSTRUMENT_END, finished)
terminate_all_sounds(TRUE)
hearing_mobs.len = 0
- user_playing = null
+ music_player = null
/**
* Processes our song.
*/
/datum/song/proc/process_song(wait)
- if(!length(compiled_chords) || should_stop_playing(user_playing))
- stop_playing()
+ if(!length(compiled_chords))
+ stop_playing(TRUE)
+ return
+ if(should_stop_playing(music_player) == STOP_PLAYING)
+ stop_playing(FALSE)
return
var/list/chord = compiled_chords[current_chord]
- if(++elapsed_delay >= delay_by)
- play_chord(chord)
- elapsed_delay = 0
- delay_by = tempodiv_to_delay(chord[length(chord)])
- current_chord++
- if(current_chord > length(compiled_chords))
- if(repeat)
- repeat--
- current_chord = 1
- return
- else
- stop_playing()
- return
+ elapsed_delay++
+ if(elapsed_delay < delay_by)
+ return
+ play_chord(chord)
+ elapsed_delay = 0
+ delay_by = tempodiv_to_delay(chord[length(chord)])
+ current_chord++
+ if(current_chord <= length(compiled_chords))
+ return
+ if(!repeat)
+ stop_playing(TRUE)
+ return
+ repeat--
+ current_chord = 1
+ SEND_SIGNAL(parent, COMSIG_INSTRUMENT_REPEAT, TRUE)
/**
* Converts a tempodiv to ticks to elapse before playing the next chord, taking into account our tempo.
@@ -281,19 +310,34 @@
/datum/song/proc/play_chord(list/chord)
// last value is timing information
for(var/i in 1 to (length(chord) - 1))
- legacy? playkey_legacy(chord[i][1], chord[i][2], chord[i][3], user_playing) : playkey_synth(chord[i], user_playing)
+ legacy ? playkey_legacy(chord[i][1], chord[i][2], chord[i][3], music_player) : playkey_synth(chord[i], music_player)
/**
* Checks if we should halt playback.
*/
-/datum/song/proc/should_stop_playing(mob/user)
- return QDELETED(parent) || !using_instrument || !playing
+/datum/song/proc/should_stop_playing(atom/player)
+ if(QDELETED(player) || !using_instrument || !playing)
+ return STOP_PLAYING
+ return SEND_SIGNAL(parent, COMSIG_INSTRUMENT_SHOULD_STOP_PLAYING, player)
+
+/// Sets and sanitizes the repeats variable.
+/datum/song/proc/set_repeats(new_repeats_value)
+ if(playing)
+ return //So that people cant keep adding to repeat. If the do it intentionally, it could result in the server crashing.
+ repeat = round(new_repeats_value)
+ if(repeat < 0)
+ repeat = 0
+ if(repeat > max_repeats)
+ repeat = max_repeats
+
/**
* Sanitizes tempo to a value that makes sense and fits the current world.tick_lag.
*/
-/datum/song/proc/sanitize_tempo(new_tempo)
+/datum/song/proc/sanitize_tempo(new_tempo, initializing = FALSE)
new_tempo = abs(new_tempo)
+ if(!initializing) // not only is it not helpful while initializing but it will runtime really hard since nothing is set up
+ SEND_SIGNAL(parent, COMSIG_INSTRUMENT_TEMPO_CHANGE, src)
return clamp(round(new_tempo, world.tick_lag), world.tick_lag, 5 SECONDS)
/**
@@ -308,12 +352,6 @@
/datum/song/proc/set_bpm(bpm)
tempo = sanitize_tempo(600 / bpm)
-/**
- * Updates the window for our users. Override down the line.
- */
-/datum/song/proc/updateDialog(mob/user)
- interact(user)
-
/datum/song/process(wait)
if(!playing)
return PROCESS_KILL
@@ -337,33 +375,29 @@
* Setter for setting output volume.
*/
/datum/song/proc/set_volume(volume)
- src.volume = clamp(volume, max(0, min_volume), min(100, max_volume))
+ src.volume = clamp(round(volume, 1), max(0, min_volume), min(100, max_volume))
update_sustain()
- updateDialog()
/**
* Setter for setting how low the volume has to get before a note is considered "dead" and dropped
*/
/datum/song/proc/set_dropoff_volume(volume)
- sustain_dropoff_volume = clamp(volume, INSTRUMENT_MIN_SUSTAIN_DROPOFF, 100)
+ sustain_dropoff_volume = clamp(round(volume, 0.01), INSTRUMENT_MIN_SUSTAIN_DROPOFF, 100)
update_sustain()
- updateDialog()
/**
* Setter for setting exponential falloff factor.
*/
/datum/song/proc/set_exponential_drop_rate(drop)
- sustain_exponential_dropoff = clamp(drop, INSTRUMENT_EXP_FALLOFF_MIN, INSTRUMENT_EXP_FALLOFF_MAX)
+ sustain_exponential_dropoff = clamp(round(drop, 0.00001), INSTRUMENT_EXP_FALLOFF_MIN, INSTRUMENT_EXP_FALLOFF_MAX)
update_sustain()
- updateDialog()
/**
* Setter for setting linear falloff duration.
*/
/datum/song/proc/set_linear_falloff_duration(duration)
- sustain_linear_duration = clamp(duration, 0.1, INSTRUMENT_MAX_TOTAL_SUSTAIN)
+ sustain_linear_duration = clamp(round(duration * 10, world.tick_lag), world.tick_lag, INSTRUMENT_MAX_TOTAL_SUSTAIN)
update_sustain()
- updateDialog()
/datum/song/vv_edit_var(var_name, var_value)
. = ..()
@@ -381,25 +415,34 @@
// subtype for handheld instruments, like violin
/datum/song/handheld
-/datum/song/handheld/updateDialog(mob/user)
- parent.interact(user || usr)
-
-/datum/song/handheld/should_stop_playing(mob/user)
+/datum/song/handheld/should_stop_playing(atom/player)
. = ..()
- if(.)
- return TRUE
+ if(. == STOP_PLAYING || . == IGNORE_INSTRUMENT_CHECKS)
+ return
var/obj/item/instrument/I = parent
- return I.should_stop_playing(user)
+ return I.can_play(player) ? NONE : STOP_PLAYING
+
+/datum/song/handheld/find_sync_player()
+ var/obj/item/instrument/instrument = parent
+ var/mob/living/player = get(parent, /mob/living)
+ if(instrument.can_play(player))
+ return player
+ return null
// subtype for stationary structures, like pianos
/datum/song/stationary
-/datum/song/stationary/updateDialog(mob/user)
- parent.interact(user || usr)
-
-/datum/song/stationary/should_stop_playing(mob/user)
+/datum/song/stationary/should_stop_playing(atom/player)
. = ..()
- if(.)
+ if(. == STOP_PLAYING || . == IGNORE_INSTRUMENT_CHECKS)
return TRUE
var/obj/structure/musician/M = parent
- return M.should_stop_playing(user)
+ return M.can_play(player) ? NONE : STOP_PLAYING
+
+/datum/song/stationary/find_sync_player()
+ var/obj/structure/musician/piano = parent
+ for(var/mob/living/player in view(parent, 1))
+ if(piano.can_play(player))
+ return player
+
+ return null
diff --git a/code/modules/instruments/songs/editor.dm b/code/modules/instruments/songs/editor.dm
index 0d593a86ed..f8321148a7 100644
--- a/code/modules/instruments/songs/editor.dm
+++ b/code/modules/instruments/songs/editor.dm
@@ -1,251 +1,216 @@
-/**
- * Returns the HTML for the status UI for this song datum.
- */
-/datum/song/proc/instrument_status_ui()
- . = list()
- . += "
"
- . += span_bold("
Current instrument:") + " "
- if(!using_instrument)
- . += span_danger("No instrument loaded!") + "
"
- else
- . += "[using_instrument.name]
"
- . += "Playback Settings:
"
- if(can_noteshift)
- . += "
Note Shift/Note Transpose: [note_shift] keys / [round(note_shift / 12, 0.01)] octaves
"
- var/smt
- var/modetext = ""
+/datum/song/tgui_interact(mob/user, datum/tgui/ui)
+ ui = SStgui.try_update_ui(user, src, ui)
+ if (!ui)
+ ui = new(user, src, "InstrumentEditor", parent.name)
+ ui.open()
+
+/datum/song/tgui_host(mob/user)
+ return parent
+
+/datum/song/tgui_data(mob/user)
+ var/list/data = ..()
+ data["id"] = id
+ data["using_instrument"] = using_instrument?.name || "No instrument loaded!"
+ data["note_shift"] = note_shift
+ data["octaves"] = round(note_shift / 12, 0.01)
+ data["sustain_mode"] = sustain_mode
switch(sustain_mode)
if(SUSTAIN_LINEAR)
- smt = "Linear"
- modetext = "
Linear Sustain Duration: [sustain_linear_duration / 10] seconds
"
+ data["sustain_mode_button"] = "Linear Sustain Duration (in seconds)"
+ data["sustain_mode_duration"] = sustain_linear_duration / 10
+ data["sustain_mode_min"] = INSTRUMENT_MIN_TOTAL_SUSTAIN
+ data["sustain_mode_max"] = INSTRUMENT_MAX_TOTAL_SUSTAIN
if(SUSTAIN_EXPONENTIAL)
- smt = "Exponential"
- modetext = "
Exponential Falloff Factor: [sustain_exponential_dropoff]% per decisecond
"
- . += "
Sustain Mode: [smt]
"
- . += modetext
- . += using_instrument?.ready()? ("Status: " + span_green("Ready") + "
") : ("Status: " + span_red("!Instrument Definition Error!") + "
")
- . += "Instrument Type: [legacy? "Legacy" : "Synthesized"]
"
- . += "
Volume: [volume]
"
- . += "
Volume Dropoff Threshold: [sustain_dropoff_volume]
"
- . += "
Sustain indefinitely last held note: [full_sustain_held_note? "Enabled" : "Disabled"].
"
- . += "
"
+ data["sustain_mode_button"] = "Exponential Falloff Factor (% per decisecond)"
+ data["sustain_mode_duration"] = sustain_exponential_dropoff
+ data["sustain_mode_min"] = INSTRUMENT_EXP_FALLOFF_MIN
+ data["sustain_mode_max"] = INSTRUMENT_EXP_FALLOFF_MAX
+ data["instrument_ready"] = using_instrument?.ready()
+ data["volume"] = volume
+ data["volume_dropoff_threshold"] = sustain_dropoff_volume
+ data["sustain_indefinitely"] = full_sustain_held_note
+ data["playing"] = playing
+ data["repeat"] = repeat
+ data["bpm"] = round(60 SECONDS / tempo)
+ data["lines"] = list()
+ var/linecount
+ for(var/line in lines)
+ linecount++
+ data["lines"] += list(list(
+ "line_count" = linecount,
+ "line_text" = line,
+ ))
+ return data
-/datum/song/proc/interact(mob/user)
- var/list/dat = list()
+/datum/song/tgui_static_data(mob/user)
+ var/list/data = ..()
+ data["can_switch_instrument"] = (length(allowed_instrument_ids) > 1)
+ data["possible_instruments"] = list()
+ for(var/instrument in allowed_instrument_ids)
+ UNTYPED_LIST_ADD(data["possible_instruments"], list("name" = SSinstruments.instrument_data[instrument], "id" = instrument))
+ data["sustain_modes"] = SSinstruments.note_sustain_modes
+ data["max_repeats"] = max_repeats
+ data["min_volume"] = min_volume
+ data["max_volume"] = max_volume
+ data["note_shift_min"] = note_shift_min
+ data["note_shift_max"] = note_shift_max
+ data["max_line_chars"] = MUSIC_MAXLINECHARS
+ data["max_lines"] = MUSIC_MAXLINES
+ return data
- dat += instrument_status_ui()
+/datum/song/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state)
+ . = ..()
+ var/mob/user = ui.user
+ if(!istype(user))
+ return FALSE
- if(lines.len > 0)
- dat += "Playback
"
- if(!playing)
- dat += "Play " + span_linkOn("Stop") + "
"
- dat += "Repeat Song: "
- dat += repeat > 0 ? "--" : (span_linkOff("-") + span_linkOff("-"))
- dat += " [repeat] times "
- dat += repeat < max_repeats ? "++" : (span_linkOff("+") + span_linkOff("+"))
- dat += "
"
- else
- dat += span_linkOn("Play") + " Stop
"
- dat += "Repeats left: " + span_bold("[repeat]") + "
"
- if(!editing)
- dat += "
" + span_bold("Show Editor") + "
"
- else
- dat += "Editing
"
- dat += span_bold("Hide Editor")
- dat += " Start a New Song"
- dat += " Import a Song
"
- var/bpm = round(600 / tempo)
- dat += "Tempo: - [bpm] BPM +
"
- var/linecount = 0
- for(var/line in lines)
- linecount += 1
- dat += "Line [linecount]: Edit X [line]
"
- dat += "Add Line
"
- if(help)
- dat += span_bold("Hide Help") + "
"
- dat += {"
- Lines are a series of chords, separated by commas (,), each with notes separated by hyphens (-).
- Every note in a chord will play together, with chord timed by the tempo.
-
- Notes are played by the names of the note, and optionally, the accidental, and/or the octave number.
- By default, every note is natural and in octave 3. Defining otherwise is remembered for each note.
- Example: C,D,E,F,G,A,B will play a C major scale.
- After a note has an accidental placed, it will be remembered: C,C4,C,C3 is C3,C4,C4,C3
- Chords can be played simply by separating each note with a hyphen: A-C#,Cn-E,E-G#,Gn-B
- A pause may be denoted by an empty chord: C,E,,C,G
- To make a chord be a different time, end it with /x, where the chord length will be length
- defined by tempo / x: C,G/2,E/4
- Combined, an example is: E-E4/4,F#/2,G#/8,B/8,E3-E4/4
-
- Lines may be up to [MUSIC_MAXLINECHARS] characters.
- A song may only contain up to [MUSIC_MAXLINES] lines.
- "}
- else
- dat += span_bold("Show Help") + "
"
+ switch(action)
+ //SETTINGS
+ if("play_music")
+ if(!playing)
+ INVOKE_ASYNC(src, PROC_REF(start_playing), user)
+ else
+ stop_playing()
+ return TRUE
+ if("set_instrument_id")
+ var/new_id = reject_bad_name(LOWER_TEXT(params["id"]), max_length = 20, allow_numbers = TRUE, cap_after_symbols = FALSE)
+ if(new_id)
+ id = new_id
+ return TRUE
+ if("change_instrument")
+ var/new_instrument = params["new_instrument"]
+ //only one instrument, so no need to bother changing it.
+ if(!length(allowed_instrument_ids))
+ return FALSE
+ if(!(new_instrument in allowed_instrument_ids))
+ return FALSE
+ set_instrument(new_instrument)
+ return TRUE
+ if("tempo")
+ var/move_direction = params["tempo_change"]
+ var/tempo_diff
+ if(move_direction == "increase_speed")
+ tempo_diff = world.tick_lag
+ else
+ tempo_diff = -world.tick_lag
+ tempo = sanitize_tempo(tempo + tempo_diff)
+ return TRUE
- var/datum/browser/popup = new(user, "instrument", parent?.name || "instrument", 700, 500)
- popup.set_content(dat.Join(""))
- popup.open()
+ //SONG MAKING
+ if("import_song")
+ var/song_text = ""
+ do
+ song_text = tgui_input_text(user, "Please paste the entire song, formatted:", name, max_length = (MUSIC_MAXLINES * MUSIC_MAXLINECHARS), multiline = TRUE)
+ if(!in_range(parent, user))
+ return
+
+ if(length_char(song_text) >= MUSIC_MAXLINES * MUSIC_MAXLINECHARS)
+ var/should_continue = tgui_alert(user, "Your message is too long! Would you like to continue editing it?", "Warning", list("Yes", "No"))
+ if(should_continue != "Yes")
+ break
+ while(length_char(song_text) > MUSIC_MAXLINES * MUSIC_MAXLINECHARS)
+ ParseSong(user, song_text)
+ return TRUE
+ if("start_new_song")
+ name = ""
+ lines = new()
+ tempo = sanitize_tempo(5) // default 120 BPM
+ return TRUE
+ if("add_new_line")
+ var/newline = tgui_input_text(user, "Enter your line", parent.name, max_length = MUSIC_MAXLINECHARS)
+ if(!newline || !in_range(parent, user))
+ return
+ if(lines.len > MUSIC_MAXLINES)
+ return
+ if(length(newline) > MUSIC_MAXLINECHARS)
+ newline = copytext(newline, 1, MUSIC_MAXLINECHARS)
+ lines.Add(newline)
+ if("delete_line")
+ var/line_to_delete = params["line_deleted"]
+ if(line_to_delete > lines.len || line_to_delete < 1)
+ return FALSE
+ lines.Cut(line_to_delete, line_to_delete + 1)
+ return TRUE
+ if("modify_line")
+ var/line_to_edit = params["line_editing"]
+ if(line_to_edit > lines.len || line_to_edit < 1)
+ return FALSE
+ var/new_line_text = tgui_input_text(user, "Enter your line ", parent.name, lines[line_to_edit], max_length = MUSIC_MAXLINECHARS)
+ if(isnull(new_line_text) || !in_range(parent, user))
+ return FALSE
+ lines[line_to_edit] = new_line_text
+ return TRUE
+
+ //MODE STUFF
+ if("set_sustain_mode")
+ var/new_mode = params["new_mode"]
+ if(isnull(new_mode) || !(new_mode in SSinstruments.note_sustain_modes))
+ return FALSE
+ sustain_mode = new_mode
+ return TRUE
+ if("set_note_shift")
+ var/amount = params["amount"]
+ if(!isnum(amount))
+ return FALSE
+ note_shift = clamp(amount, note_shift_min, note_shift_max)
+ return TRUE
+ if("set_volume")
+ var/new_volume = params["amount"]
+ if(!isnum(new_volume))
+ return FALSE
+ set_volume(new_volume)
+ return TRUE
+ if("set_dropoff_volume")
+ var/dropoff_threshold = params["amount"]
+ if(!isnum(dropoff_threshold))
+ return FALSE
+ set_dropoff_volume(dropoff_threshold)
+ return TRUE
+ if("toggle_sustain_hold_indefinitely")
+ full_sustain_held_note = !full_sustain_held_note
+ return TRUE
+ if("set_repeat_amount")
+ if(playing)
+ return
+ var/repeat_amount = params["amount"]
+ if(!isnum(repeat_amount))
+ return FALSE
+ set_repeats(repeat_amount)
+ return TRUE
+ if("edit_sustain_mode")
+ var/sustain_amount = params["amount"]
+ if(isnull(sustain_amount) || !isnum(sustain_amount))
+ return
+ switch(sustain_mode)
+ if(SUSTAIN_LINEAR)
+ set_linear_falloff_duration(sustain_amount)
+ if(SUSTAIN_EXPONENTIAL)
+ set_exponential_drop_rate(sustain_amount)
/**
* Parses a song the user has input into lines and stores them.
*/
-/datum/song/proc/ParseSong(text)
+/datum/song/proc/ParseSong(mob/user, new_song)
set waitfor = FALSE
//split into lines
- lines = splittext(text, "\n")
+ lines = islist(new_song) ? new_song : splittext(new_song, "\n")
if(lines.len)
var/bpm_string = "BPM: "
if(findtext(lines[1], bpm_string, 1, length(bpm_string) + 1))
var/divisor = text2num(copytext(lines[1], length(bpm_string) + 1)) || 120 // default
- tempo = sanitize_tempo(600 / round(divisor, 1))
+ tempo = sanitize_tempo(BPM_TO_TEMPO_SETTING(divisor))
lines.Cut(1, 2)
else
tempo = sanitize_tempo(5) // default 120 BPM
if(lines.len > MUSIC_MAXLINES)
- to_chat(usr, "Too many lines!")
+ if(user)
+ to_chat(user, "Too many lines!")
lines.Cut(MUSIC_MAXLINES + 1)
var/linenum = 1
for(var/l in lines)
if(length_char(l) > MUSIC_MAXLINECHARS)
- to_chat(usr, "Line [linenum] too long!")
+ if(user)
+ to_chat(user, "Line [linenum] too long!")
lines.Remove(l)
else
linenum++
- updateDialog(usr) // make sure updates when complete
-
-/datum/song/Topic(href, href_list)
- if(!parent.CanUseTopic(usr))
- usr << browse(null, "window=instrument")
- usr.unset_machine()
- return
-
- parent.add_fingerprint(usr)
-
- if(href_list["newsong"])
- lines = new()
- tempo = sanitize_tempo(5) // default 120 BPM
- name = ""
-
- else if(href_list["import"])
- var/t = ""
- do
- t = tgui_input_text(usr, "Please paste the entire song, formatted:", text("[]", name), t, multiline = TRUE, prevent_enter = TRUE)
- if(!in_range(parent, usr))
- return
-
- if(length_char(t) >= MUSIC_MAXLINES * MUSIC_MAXLINECHARS)
- var/cont = tgui_alert(usr, "Your message is too long! Would you like to continue editing it?", "Too long!", list("Yes", "No"))
- if(cont != "Yes")
- break
- while(length_char(t) > MUSIC_MAXLINES * MUSIC_MAXLINECHARS)
- ParseSong(t)
-
- else if(href_list["help"])
- help = text2num(href_list["help"]) - 1
-
- else if(href_list["edit"])
- editing = text2num(href_list["edit"]) - 1
-
- if(href_list["repeat"]) //Changing this from a toggle to a number of repeats to avoid infinite loops.
- if(playing)
- return //So that people cant keep adding to repeat. If the do it intentionally, it could result in the server crashing.
- repeat += round(text2num(href_list["repeat"]))
- if(repeat < 0)
- repeat = 0
- if(repeat > max_repeats)
- repeat = max_repeats
-
- else if(href_list["tempo"])
- tempo = sanitize_tempo(tempo + text2num(href_list["tempo"]))
-
- else if(href_list["play"])
- INVOKE_ASYNC(src, PROC_REF(start_playing), usr)
-
- else if(href_list["newline"])
- var/newline = tgui_input_text(usr, "Enter your line: ", parent.name)
- if(!newline || !in_range(parent, usr))
- return
- if(lines.len > MUSIC_MAXLINES)
- return
- if(length(newline) > MUSIC_MAXLINECHARS)
- newline = copytext(newline, 1, MUSIC_MAXLINECHARS)
- lines.Add(newline)
-
- else if(href_list["deleteline"])
- var/num = round(text2num(href_list["deleteline"]))
- if(num > lines.len || num < 1)
- return
- lines.Cut(num, num+1)
-
- else if(href_list["modifyline"])
- var/num = round(text2num(href_list["modifyline"]),1)
- var/content = tgui_input_text(usr, "Enter your line: ", parent.name, lines[num], MUSIC_MAXLINECHARS, encode=TRUE)
- if(!content || !in_range(parent, usr))
- return
- if(num > lines.len || num < 1)
- return
- lines[num] = content
-
- else if(href_list["stop"])
- stop_playing()
-
- else if(href_list["setlinearfalloff"])
- var/amount = tgui_input_number(usr, "Set linear sustain duration in seconds", "Linear Sustain Duration", round_value=FALSE)
- if(!isnull(amount))
- set_linear_falloff_duration(round(amount * 10, world.tick_lag))
-
- else if(href_list["setexpfalloff"])
- var/amount = tgui_input_number(usr, "Set exponential sustain factor", "Exponential sustain factor", round_value=FALSE)
- if(!isnull(amount))
- set_exponential_drop_rate(round(amount, 0.00001))
-
- else if(href_list["setvolume"])
- var/amount = tgui_input_number(usr, "Set volume", "Volume")
- if(!isnull(amount))
- set_volume(round(amount, 1))
-
- else if(href_list["setdropoffvolume"])
- var/amount = tgui_input_number(usr, "Set dropoff threshold", "Dropoff Threshold Volume", round_value=FALSE)
- if(!isnull(amount))
- set_dropoff_volume(round(amount, 0.01))
-
- else if(href_list["switchinstrument"])
- if(!length(allowed_instrument_ids))
- return
- else if(length(allowed_instrument_ids) == 1)
- set_instrument(allowed_instrument_ids[1])
- return
- var/list/categories = list()
- for(var/i in allowed_instrument_ids)
- var/datum/instrument/I = SSinstruments.get_instrument(i)
- if(I)
- LAZYSET(categories[I.category || "ERROR CATEGORY"], I.name, I.id)
- var/cat = tgui_input_list(usr, "Select Category", "Instrument Category", categories)
- if(!cat)
- return
- var/list/instruments = categories[cat]
- var/choice = tgui_input_list(usr, "Select Instrument", "Instrument Selection", instruments)
- if(!choice)
- return
- choice = instruments[choice] //get id
- if(choice)
- set_instrument(choice)
-
- else if(href_list["setnoteshift"])
- var/amount = tgui_input_number(usr, "Set note shift", "Note Shift", null, note_shift_max, note_shift_min)
- if(!isnull(amount))
- note_shift = clamp(amount, note_shift_min, note_shift_max)
-
- else if(href_list["setsustainmode"])
- var/choice = tgui_input_list(usr, "Choose a sustain mode", "Sustain Mode", list("Linear", "Exponential"))
- switch(choice)
- if("Linear")
- sustain_mode = SUSTAIN_LINEAR
- if("Exponential")
- sustain_mode = SUSTAIN_EXPONENTIAL
-
- else if(href_list["togglesustainhold"])
- full_sustain_held_note = !full_sustain_held_note
-
- updateDialog()
diff --git a/code/modules/instruments/songs/play_legacy.dm b/code/modules/instruments/songs/play_legacy.dm
index 13c3b74453..58dcf86149 100644
--- a/code/modules/instruments/songs/play_legacy.dm
+++ b/code/modules/instruments/songs/play_legacy.dm
@@ -9,7 +9,7 @@
var/list/octaves = list(3, 3, 3, 3, 3, 3, 3)
var/list/accents = list("n", "n", "n", "n", "n", "n", "n")
for(var/line in lines)
- var/list/chords = splittext(lowertext(line), ",")
+ var/list/chords = splittext(LOWER_TEXT(line), ",")
for(var/chord in chords)
var/list/compiled_chord = list()
var/tempodiv = 1
@@ -46,7 +46,7 @@
* * acc is either "b", "n", or "#"
* * oct is 1-8 (or 9 for C)
*/
-/datum/song/proc/playkey_legacy(note, acc as text, oct, mob/user)
+/datum/song/proc/playkey_legacy(note, acc as text, oct, atom/player)
// handle accidental -> B<>C of E<>F
if(acc == "b" && (note == 3 || note == 6)) // C or F
if(note == 3)
@@ -70,7 +70,7 @@
return
// now generate name
- var/soundfile = "sound/instruments/[cached_legacy_dir]/[ascii2text(note+64)][acc][oct].[cached_legacy_ext]"
+ var/soundfile = "sound/runtime/instruments/[cached_legacy_dir]/[ascii2text(note+64)][acc][oct].[cached_legacy_ext]"
soundfile = file(soundfile)
// make sure the note exists
if(!fexists(soundfile))
@@ -80,14 +80,13 @@
if((world.time - MUSICIAN_HEARCHECK_MINDELAY) > last_hearcheck)
do_hearcheck()
var/sound/music_played = sound(soundfile)
- for(var/mob/M as anything in hearing_mobs)
- /* Would be nice
- if(user && HAS_TRAIT(user, TRAIT_MUSICIAN) && isliving(M))
- var/mob/living/L = M
- L.apply_status_effect(STATUS_EFFECT_GOOD_MUSIC)
- */
- if(!M)
- hearing_mobs -= M
+ for(var/i in hearing_mobs)
+ var/mob/M = i
+ //if(player && HAS_TRAIT(player, TRAIT_MUSICIAN) && isliving(M))
+ // var/mob/living/L = M
+ // L.apply_status_effect(/datum/status_effect/good_music)
+ var/pref_volume = M?.client?.prefs.read_preference(/datum/preference/numeric/volume/sound_instruments)
+ if(!pref_volume)
continue
- M.playsound_local(source, null, volume * using_instrument.volume_multiplier, S = music_played, preference = /datum/preference/toggle/instrument_toggle, volume_channel = VOLUME_CHANNEL_INSTRUMENTS)
+ M.playsound_local(source, null, volume * using_instrument.volume_multiplier * (pref_volume/100), S = music_played)
// Could do environment and echo later but not for now
diff --git a/code/modules/instruments/songs/play_synthesized.dm b/code/modules/instruments/songs/play_synthesized.dm
index dcfd5edc94..2fcf079437 100644
--- a/code/modules/instruments/songs/play_synthesized.dm
+++ b/code/modules/instruments/songs/play_synthesized.dm
@@ -9,7 +9,7 @@
var/list/octaves = list(3, 3, 3, 3, 3, 3, 3)
var/list/accents = list("n", "n", "n", "n", "n", "n", "n")
for(var/line in lines)
- var/list/chords = splittext(lowertext(line), ",")
+ var/list/chords = splittext(LOWER_TEXT(line), ",")
for(var/chord in chords)
var/list/compiled_chord = list()
var/tempodiv = 1
@@ -42,9 +42,8 @@
* Plays a specific numerical key from our instrument to anyone who can hear us.
* Does a hearing check if enough time has passed.
*/
-/datum/song/proc/playkey_synth(key, mob/user)
- if(can_noteshift)
- key = clamp(key + note_shift, key_min, key_max)
+/datum/song/proc/playkey_synth(key, atom/player)
+ key = clamp(key + note_shift, key_min, key_max)
if((world.time - MUSICIAN_HEARCHECK_MINDELAY) > last_hearcheck)
do_hearcheck()
var/datum/instrument_key/K = using_instrument.samples[num2text(key)] //See how fucking easy it is to make a number text? You don't need a complicated 9 line proc!
@@ -60,27 +59,15 @@
var/channel_text = num2text(channel)
channels_playing[channel_text] = 100
last_channel_played = channel_text
- var/turf/source = get_turf(parent)
- for(var/mob/M as anything in hearing_mobs)
- /* Maybe someday
- if(user && HAS_TRAIT(user, TRAIT_MUSICIAN) && isliving(M))
- var/mob/living/L = M
- L.apply_status_effect(STATUS_EFFECT_GOOD_MUSIC)
- */
- // Jeez
- M.playsound_local(
- turf_source = source,
- soundin = null,
- vol = volume,
- vary = FALSE,
- frequency = K.frequency,
- falloff = FALLOFF_SOUNDS, //CHOMPEdit
- is_global = null,
- channel = channel,
- pressure_affected = null,
- S = copy,
- preference = /datum/preference/toggle/instrument_toggle,
- volume_channel = VOLUME_CHANNEL_INSTRUMENTS)
+ for(var/i in hearing_mobs)
+ var/mob/M = i
+ //if(player && HAS_TRAIT(player, TRAIT_MUSICIAN) && isliving(M))
+ // var/mob/living/L = M
+ // L.apply_status_effect(/datum/status_effect/good_music)
+ var/pref_volume = M?.client?.prefs.read_preference(/datum/preference/numeric/volume/sound_instruments)
+ if(!pref_volume)
+ continue
+ M.playsound_local(get_turf(parent), null, volume * (pref_volume/100), FALSE, K.frequency, null, channel, null, copy)
// Could do environment and echo later but not for now
/**
@@ -141,8 +128,10 @@
if(dead)
channels_playing -= channel
channels_idle += channel
- for(var/mob/M in hearing_mobs)
+ for(var/i in hearing_mobs)
+ var/mob/M = i
M.stop_sound_channel(channelnumber)
else
- for(var/mob/M in hearing_mobs)
+ for(var/i in hearing_mobs)
+ var/mob/M = i
M.set_sound_channel_volume(channelnumber, (current_volume * 0.01) * volume * using_instrument.volume_multiplier)
diff --git a/code/modules/instruments/stationary.dm b/code/modules/instruments/stationary.dm
index 06d5f85bdb..d2d83fd9a0 100644
--- a/code/modules/instruments/stationary.dm
+++ b/code/modules/instruments/stationary.dm
@@ -1,9 +1,12 @@
/obj/structure/musician
name = "Not A Piano"
desc = "Something broke, contact coderbus."
+ /// IF FALSE music stops when the piano is unanchored.
var/can_play_unanchored = FALSE
+ /// Our allowed list of instrument ids. This is nulled on initialize.
var/list/allowed_instrument_ids = list("r3grand","r3harpsi","crharpsi","crgrand1","crbright1", "crichugan", "crihamgan","piano")
- var/datum/song/song
+ /// Our song datum.
+ var/datum/song/stationary/song
/obj/structure/musician/Initialize(mapload)
. = ..()
@@ -14,64 +17,62 @@
QDEL_NULL(song)
return ..()
+/obj/structure/musician/proc/can_play(atom/music_player)
+ if(!anchored && !can_play_unanchored)
+ return FALSE
+ if(!ismob(music_player))
+ return FALSE
+ var/mob/user = music_player
+ if(!user.IsAdvancedToolUser())
+ return FALSE
+ if(user.incapacitated())
+ return FALSE
+ if(!Adjacent(user))
+ return FALSE
+ return TRUE
+
/obj/structure/musician/attack_hand(mob/M)
if(!M.IsAdvancedToolUser())
return
- interact(M)
+ tgui_interact(M)
-// CHOMPAdd - Grand piano moving
+/obj/structure/musician/tgui_interact(mob/user)
+ return song.tgui_interact(user)
-/obj/structure/musician/attackby(obj/item/W as obj, mob/user as mob)
- if(W.has_tool_quality(TOOL_WRENCH))
- playsound(src, W.usesound, 100, 1)
- if(anchored)
- user.visible_message(span_filter_notice("[user] begins unsecuring \the [src] from the floor."), span_filter_notice("You start unsecuring \the [src] from the floor."))
- else
- user.visible_message(span_filter_notice("[user] begins securing \the [src] to the floor."), span_filter_notice("You start securing \the [src] to the floor."))
-
- if(do_after(user, 20 * W.toolspeed))
- if(!src) return
- to_chat(user, span_notice("You [anchored? "un" : ""]secured \the [src]!"))
- anchored = !anchored
- return
-
-// CHOMPEnd
-
-/obj/structure/musician/proc/should_stop_playing(mob/user)
- if(!(anchored || can_play_unanchored))
- return TRUE
- if(!user)
- return FALSE
- return !CanUseTopic(user)
-
-/obj/structure/musician/interact(mob/user)
+/* FIXME
+/obj/structure/musician/wrench_act(mob/living/user, obj/item/tool)
. = ..()
- song.interact(user)
-
-/*
-/obj/structure/musician/wrench_act(mob/living/user, obj/item/I)
- default_unfasten_wrench(user, I, 40)
- return TRUE
+ default_unfasten_wrench(user, tool, time = 4 SECONDS)
+ return ITEM_INTERACT_SUCCESS
*/
/obj/structure/musician/piano
- name = "space minimoog"
+ name = "space piano"
+ desc = "This is a space piano, like a regular piano, but always in tune! Even if the musician isn't."
icon = 'icons/obj/musician.dmi'
icon_state = "minimoog"
anchored = TRUE
density = TRUE
+ var/broken_icon_state = "pianobroken"
+
+/obj/structure/musician/piano/Initialize(mapload)
+ . = ..()
+ AddElement(/datum/element/climbable)
+
+/** FIXME: We do not have atom_break implemented yet
+/obj/structure/musician/piano/atom_break(damage_flag)
+ . = ..()
+ if(!broken)
+ broken = TRUE
+ icon_state = broken_icon_state
+*/
/obj/structure/musician/piano/unanchored
anchored = FALSE
-/obj/structure/musician/piano/Initialize(mapload)
- . = ..()
- if(prob(50) && icon_state == initial(icon_state))
- name = "space minimoog"
- desc = "This is a minimoog, like a space piano, but more spacey!"
- icon_state = "minimoog"
- else
- name = "space piano"
- desc = "This is a space piano, like a regular piano, but always in tune! Even if the musician isn't."
- icon_state = "piano"
+/obj/structure/musician/piano/minimoog
+ name = "space minimoog"
+ desc = "This is a minimoog, like a space piano, but more spacey!"
+ icon_state = "minimoog"
+ broken_icon_state = "minimoogbroken"
diff --git a/code/modules/instruments/items_ch.dm b/modular_chomp/code/modules/instruments/items.dm
similarity index 100%
rename from code/modules/instruments/items_ch.dm
rename to modular_chomp/code/modules/instruments/items.dm
diff --git a/modular_chomp/code/modules/instruments/stationary.dm b/modular_chomp/code/modules/instruments/stationary.dm
new file mode 100644
index 0000000000..4bae187260
--- /dev/null
+++ b/modular_chomp/code/modules/instruments/stationary.dm
@@ -0,0 +1,13 @@
+/obj/structure/musician/attackby(obj/item/W, mob/user)
+ if(W.has_tool_quality(TOOL_WRENCH))
+ playsound(src, W.usesound, 100, 1)
+ if(anchored)
+ user.visible_message(span_filter_notice("[user] begins unsecuring \the [src] from the floor."), span_filter_notice("You start unsecuring \the [src] from the floor."))
+ else
+ user.visible_message(span_filter_notice("[user] begins securing \the [src] to the floor."), span_filter_notice("You start securing \the [src] to the floor."))
+
+ if(do_after(user, 20 * W.toolspeed))
+ if(!src) return
+ to_chat(user, span_notice("You [anchored? "un" : ""]secured \the [src]!"))
+ anchored = !anchored
+ return
diff --git a/sound/runtime/README.md b/sound/runtime/README.md
new file mode 100644
index 0000000000..07bacb9ad7
--- /dev/null
+++ b/sound/runtime/README.md
@@ -0,0 +1,5 @@
+# Runtime Loaded Sounds
+
+These sounds are not compiled into the .rsc or are otherwise loaded at runtime.
+
+Please keep all (non-config) sounds that do this in this folder as it is needed by the [deploy.sh](../../tools/deploy.sh) script to minimize build output.
diff --git a/sound/instruments/accordion/Ab2.mid b/sound/runtime/instruments/accordion/Ab2.mid
similarity index 100%
rename from sound/instruments/accordion/Ab2.mid
rename to sound/runtime/instruments/accordion/Ab2.mid
diff --git a/sound/instruments/accordion/Ab3.mid b/sound/runtime/instruments/accordion/Ab3.mid
similarity index 100%
rename from sound/instruments/accordion/Ab3.mid
rename to sound/runtime/instruments/accordion/Ab3.mid
diff --git a/sound/instruments/accordion/Ab4.mid b/sound/runtime/instruments/accordion/Ab4.mid
similarity index 100%
rename from sound/instruments/accordion/Ab4.mid
rename to sound/runtime/instruments/accordion/Ab4.mid
diff --git a/sound/instruments/accordion/Ab5.mid b/sound/runtime/instruments/accordion/Ab5.mid
similarity index 100%
rename from sound/instruments/accordion/Ab5.mid
rename to sound/runtime/instruments/accordion/Ab5.mid
diff --git a/sound/instruments/accordion/Ab6.mid b/sound/runtime/instruments/accordion/Ab6.mid
similarity index 100%
rename from sound/instruments/accordion/Ab6.mid
rename to sound/runtime/instruments/accordion/Ab6.mid
diff --git a/sound/instruments/accordion/An2.mid b/sound/runtime/instruments/accordion/An2.mid
similarity index 100%
rename from sound/instruments/accordion/An2.mid
rename to sound/runtime/instruments/accordion/An2.mid
diff --git a/sound/instruments/accordion/An3.mid b/sound/runtime/instruments/accordion/An3.mid
similarity index 100%
rename from sound/instruments/accordion/An3.mid
rename to sound/runtime/instruments/accordion/An3.mid
diff --git a/sound/instruments/accordion/An4.mid b/sound/runtime/instruments/accordion/An4.mid
similarity index 100%
rename from sound/instruments/accordion/An4.mid
rename to sound/runtime/instruments/accordion/An4.mid
diff --git a/sound/instruments/accordion/An5.mid b/sound/runtime/instruments/accordion/An5.mid
similarity index 100%
rename from sound/instruments/accordion/An5.mid
rename to sound/runtime/instruments/accordion/An5.mid
diff --git a/sound/instruments/accordion/An6.mid b/sound/runtime/instruments/accordion/An6.mid
similarity index 100%
rename from sound/instruments/accordion/An6.mid
rename to sound/runtime/instruments/accordion/An6.mid
diff --git a/sound/instruments/accordion/Bb2.mid b/sound/runtime/instruments/accordion/Bb2.mid
similarity index 100%
rename from sound/instruments/accordion/Bb2.mid
rename to sound/runtime/instruments/accordion/Bb2.mid
diff --git a/sound/instruments/accordion/Bb3.mid b/sound/runtime/instruments/accordion/Bb3.mid
similarity index 100%
rename from sound/instruments/accordion/Bb3.mid
rename to sound/runtime/instruments/accordion/Bb3.mid
diff --git a/sound/instruments/accordion/Bb4.mid b/sound/runtime/instruments/accordion/Bb4.mid
similarity index 100%
rename from sound/instruments/accordion/Bb4.mid
rename to sound/runtime/instruments/accordion/Bb4.mid
diff --git a/sound/instruments/accordion/Bb5.mid b/sound/runtime/instruments/accordion/Bb5.mid
similarity index 100%
rename from sound/instruments/accordion/Bb5.mid
rename to sound/runtime/instruments/accordion/Bb5.mid
diff --git a/sound/instruments/accordion/Bb6.mid b/sound/runtime/instruments/accordion/Bb6.mid
similarity index 100%
rename from sound/instruments/accordion/Bb6.mid
rename to sound/runtime/instruments/accordion/Bb6.mid
diff --git a/sound/instruments/accordion/Bn2.mid b/sound/runtime/instruments/accordion/Bn2.mid
similarity index 100%
rename from sound/instruments/accordion/Bn2.mid
rename to sound/runtime/instruments/accordion/Bn2.mid
diff --git a/sound/instruments/accordion/Bn3.mid b/sound/runtime/instruments/accordion/Bn3.mid
similarity index 100%
rename from sound/instruments/accordion/Bn3.mid
rename to sound/runtime/instruments/accordion/Bn3.mid
diff --git a/sound/instruments/accordion/Bn4.mid b/sound/runtime/instruments/accordion/Bn4.mid
similarity index 100%
rename from sound/instruments/accordion/Bn4.mid
rename to sound/runtime/instruments/accordion/Bn4.mid
diff --git a/sound/instruments/accordion/Bn5.mid b/sound/runtime/instruments/accordion/Bn5.mid
similarity index 100%
rename from sound/instruments/accordion/Bn5.mid
rename to sound/runtime/instruments/accordion/Bn5.mid
diff --git a/sound/instruments/accordion/Bn6.mid b/sound/runtime/instruments/accordion/Bn6.mid
similarity index 100%
rename from sound/instruments/accordion/Bn6.mid
rename to sound/runtime/instruments/accordion/Bn6.mid
diff --git a/sound/instruments/accordion/Cn2.mid b/sound/runtime/instruments/accordion/Cn2.mid
similarity index 100%
rename from sound/instruments/accordion/Cn2.mid
rename to sound/runtime/instruments/accordion/Cn2.mid
diff --git a/sound/instruments/accordion/Cn3.mid b/sound/runtime/instruments/accordion/Cn3.mid
similarity index 100%
rename from sound/instruments/accordion/Cn3.mid
rename to sound/runtime/instruments/accordion/Cn3.mid
diff --git a/sound/instruments/accordion/Cn4.mid b/sound/runtime/instruments/accordion/Cn4.mid
similarity index 100%
rename from sound/instruments/accordion/Cn4.mid
rename to sound/runtime/instruments/accordion/Cn4.mid
diff --git a/sound/instruments/accordion/Cn5.mid b/sound/runtime/instruments/accordion/Cn5.mid
similarity index 100%
rename from sound/instruments/accordion/Cn5.mid
rename to sound/runtime/instruments/accordion/Cn5.mid
diff --git a/sound/instruments/accordion/Cn6.mid b/sound/runtime/instruments/accordion/Cn6.mid
similarity index 100%
rename from sound/instruments/accordion/Cn6.mid
rename to sound/runtime/instruments/accordion/Cn6.mid
diff --git a/sound/instruments/accordion/Db2.mid b/sound/runtime/instruments/accordion/Db2.mid
similarity index 100%
rename from sound/instruments/accordion/Db2.mid
rename to sound/runtime/instruments/accordion/Db2.mid
diff --git a/sound/instruments/accordion/Db3.mid b/sound/runtime/instruments/accordion/Db3.mid
similarity index 100%
rename from sound/instruments/accordion/Db3.mid
rename to sound/runtime/instruments/accordion/Db3.mid
diff --git a/sound/instruments/accordion/Db4.mid b/sound/runtime/instruments/accordion/Db4.mid
similarity index 100%
rename from sound/instruments/accordion/Db4.mid
rename to sound/runtime/instruments/accordion/Db4.mid
diff --git a/sound/instruments/accordion/Db5.mid b/sound/runtime/instruments/accordion/Db5.mid
similarity index 100%
rename from sound/instruments/accordion/Db5.mid
rename to sound/runtime/instruments/accordion/Db5.mid
diff --git a/sound/instruments/accordion/Db6.mid b/sound/runtime/instruments/accordion/Db6.mid
similarity index 100%
rename from sound/instruments/accordion/Db6.mid
rename to sound/runtime/instruments/accordion/Db6.mid
diff --git a/sound/instruments/accordion/Dn2.mid b/sound/runtime/instruments/accordion/Dn2.mid
similarity index 100%
rename from sound/instruments/accordion/Dn2.mid
rename to sound/runtime/instruments/accordion/Dn2.mid
diff --git a/sound/instruments/accordion/Dn3.mid b/sound/runtime/instruments/accordion/Dn3.mid
similarity index 100%
rename from sound/instruments/accordion/Dn3.mid
rename to sound/runtime/instruments/accordion/Dn3.mid
diff --git a/sound/instruments/accordion/Dn4.mid b/sound/runtime/instruments/accordion/Dn4.mid
similarity index 100%
rename from sound/instruments/accordion/Dn4.mid
rename to sound/runtime/instruments/accordion/Dn4.mid
diff --git a/sound/instruments/accordion/Dn5.mid b/sound/runtime/instruments/accordion/Dn5.mid
similarity index 100%
rename from sound/instruments/accordion/Dn5.mid
rename to sound/runtime/instruments/accordion/Dn5.mid
diff --git a/sound/instruments/accordion/Dn6.mid b/sound/runtime/instruments/accordion/Dn6.mid
similarity index 100%
rename from sound/instruments/accordion/Dn6.mid
rename to sound/runtime/instruments/accordion/Dn6.mid
diff --git a/sound/instruments/accordion/Eb2.mid b/sound/runtime/instruments/accordion/Eb2.mid
similarity index 100%
rename from sound/instruments/accordion/Eb2.mid
rename to sound/runtime/instruments/accordion/Eb2.mid
diff --git a/sound/instruments/accordion/Eb3.mid b/sound/runtime/instruments/accordion/Eb3.mid
similarity index 100%
rename from sound/instruments/accordion/Eb3.mid
rename to sound/runtime/instruments/accordion/Eb3.mid
diff --git a/sound/instruments/accordion/Eb4.mid b/sound/runtime/instruments/accordion/Eb4.mid
similarity index 100%
rename from sound/instruments/accordion/Eb4.mid
rename to sound/runtime/instruments/accordion/Eb4.mid
diff --git a/sound/instruments/accordion/Eb5.mid b/sound/runtime/instruments/accordion/Eb5.mid
similarity index 100%
rename from sound/instruments/accordion/Eb5.mid
rename to sound/runtime/instruments/accordion/Eb5.mid
diff --git a/sound/instruments/accordion/Eb6.mid b/sound/runtime/instruments/accordion/Eb6.mid
similarity index 100%
rename from sound/instruments/accordion/Eb6.mid
rename to sound/runtime/instruments/accordion/Eb6.mid
diff --git a/sound/instruments/accordion/En2.mid b/sound/runtime/instruments/accordion/En2.mid
similarity index 100%
rename from sound/instruments/accordion/En2.mid
rename to sound/runtime/instruments/accordion/En2.mid
diff --git a/sound/instruments/accordion/En3.mid b/sound/runtime/instruments/accordion/En3.mid
similarity index 100%
rename from sound/instruments/accordion/En3.mid
rename to sound/runtime/instruments/accordion/En3.mid
diff --git a/sound/instruments/accordion/En4.mid b/sound/runtime/instruments/accordion/En4.mid
similarity index 100%
rename from sound/instruments/accordion/En4.mid
rename to sound/runtime/instruments/accordion/En4.mid
diff --git a/sound/instruments/accordion/En5.mid b/sound/runtime/instruments/accordion/En5.mid
similarity index 100%
rename from sound/instruments/accordion/En5.mid
rename to sound/runtime/instruments/accordion/En5.mid
diff --git a/sound/instruments/accordion/En6.mid b/sound/runtime/instruments/accordion/En6.mid
similarity index 100%
rename from sound/instruments/accordion/En6.mid
rename to sound/runtime/instruments/accordion/En6.mid
diff --git a/sound/instruments/accordion/Fn2.mid b/sound/runtime/instruments/accordion/Fn2.mid
similarity index 100%
rename from sound/instruments/accordion/Fn2.mid
rename to sound/runtime/instruments/accordion/Fn2.mid
diff --git a/sound/instruments/accordion/Fn3.mid b/sound/runtime/instruments/accordion/Fn3.mid
similarity index 100%
rename from sound/instruments/accordion/Fn3.mid
rename to sound/runtime/instruments/accordion/Fn3.mid
diff --git a/sound/instruments/accordion/Fn4.mid b/sound/runtime/instruments/accordion/Fn4.mid
similarity index 100%
rename from sound/instruments/accordion/Fn4.mid
rename to sound/runtime/instruments/accordion/Fn4.mid
diff --git a/sound/instruments/accordion/Fn5.mid b/sound/runtime/instruments/accordion/Fn5.mid
similarity index 100%
rename from sound/instruments/accordion/Fn5.mid
rename to sound/runtime/instruments/accordion/Fn5.mid
diff --git a/sound/instruments/accordion/Fn6.mid b/sound/runtime/instruments/accordion/Fn6.mid
similarity index 100%
rename from sound/instruments/accordion/Fn6.mid
rename to sound/runtime/instruments/accordion/Fn6.mid
diff --git a/sound/instruments/accordion/Gb2.mid b/sound/runtime/instruments/accordion/Gb2.mid
similarity index 100%
rename from sound/instruments/accordion/Gb2.mid
rename to sound/runtime/instruments/accordion/Gb2.mid
diff --git a/sound/instruments/accordion/Gb3.mid b/sound/runtime/instruments/accordion/Gb3.mid
similarity index 100%
rename from sound/instruments/accordion/Gb3.mid
rename to sound/runtime/instruments/accordion/Gb3.mid
diff --git a/sound/instruments/accordion/Gb4.mid b/sound/runtime/instruments/accordion/Gb4.mid
similarity index 100%
rename from sound/instruments/accordion/Gb4.mid
rename to sound/runtime/instruments/accordion/Gb4.mid
diff --git a/sound/instruments/accordion/Gb5.mid b/sound/runtime/instruments/accordion/Gb5.mid
similarity index 100%
rename from sound/instruments/accordion/Gb5.mid
rename to sound/runtime/instruments/accordion/Gb5.mid
diff --git a/sound/instruments/accordion/Gb6.mid b/sound/runtime/instruments/accordion/Gb6.mid
similarity index 100%
rename from sound/instruments/accordion/Gb6.mid
rename to sound/runtime/instruments/accordion/Gb6.mid
diff --git a/sound/instruments/accordion/Gn2.mid b/sound/runtime/instruments/accordion/Gn2.mid
similarity index 100%
rename from sound/instruments/accordion/Gn2.mid
rename to sound/runtime/instruments/accordion/Gn2.mid
diff --git a/sound/instruments/accordion/Gn3.mid b/sound/runtime/instruments/accordion/Gn3.mid
similarity index 100%
rename from sound/instruments/accordion/Gn3.mid
rename to sound/runtime/instruments/accordion/Gn3.mid
diff --git a/sound/instruments/accordion/Gn4.mid b/sound/runtime/instruments/accordion/Gn4.mid
similarity index 100%
rename from sound/instruments/accordion/Gn4.mid
rename to sound/runtime/instruments/accordion/Gn4.mid
diff --git a/sound/instruments/accordion/Gn5.mid b/sound/runtime/instruments/accordion/Gn5.mid
similarity index 100%
rename from sound/instruments/accordion/Gn5.mid
rename to sound/runtime/instruments/accordion/Gn5.mid
diff --git a/sound/instruments/accordion/Gn6.mid b/sound/runtime/instruments/accordion/Gn6.mid
similarity index 100%
rename from sound/instruments/accordion/Gn6.mid
rename to sound/runtime/instruments/accordion/Gn6.mid
diff --git a/sound/instruments/banjo/Ab3.ogg b/sound/runtime/instruments/banjo/Ab3.ogg
similarity index 100%
rename from sound/instruments/banjo/Ab3.ogg
rename to sound/runtime/instruments/banjo/Ab3.ogg
diff --git a/sound/instruments/banjo/Ab4.ogg b/sound/runtime/instruments/banjo/Ab4.ogg
similarity index 100%
rename from sound/instruments/banjo/Ab4.ogg
rename to sound/runtime/instruments/banjo/Ab4.ogg
diff --git a/sound/instruments/banjo/Ab5.ogg b/sound/runtime/instruments/banjo/Ab5.ogg
similarity index 100%
rename from sound/instruments/banjo/Ab5.ogg
rename to sound/runtime/instruments/banjo/Ab5.ogg
diff --git a/sound/instruments/banjo/An3.ogg b/sound/runtime/instruments/banjo/An3.ogg
similarity index 100%
rename from sound/instruments/banjo/An3.ogg
rename to sound/runtime/instruments/banjo/An3.ogg
diff --git a/sound/instruments/banjo/An4.ogg b/sound/runtime/instruments/banjo/An4.ogg
similarity index 100%
rename from sound/instruments/banjo/An4.ogg
rename to sound/runtime/instruments/banjo/An4.ogg
diff --git a/sound/instruments/banjo/An5.ogg b/sound/runtime/instruments/banjo/An5.ogg
similarity index 100%
rename from sound/instruments/banjo/An5.ogg
rename to sound/runtime/instruments/banjo/An5.ogg
diff --git a/sound/instruments/banjo/Bb3.ogg b/sound/runtime/instruments/banjo/Bb3.ogg
similarity index 100%
rename from sound/instruments/banjo/Bb3.ogg
rename to sound/runtime/instruments/banjo/Bb3.ogg
diff --git a/sound/instruments/banjo/Bb4.ogg b/sound/runtime/instruments/banjo/Bb4.ogg
similarity index 100%
rename from sound/instruments/banjo/Bb4.ogg
rename to sound/runtime/instruments/banjo/Bb4.ogg
diff --git a/sound/instruments/banjo/Bb5.ogg b/sound/runtime/instruments/banjo/Bb5.ogg
similarity index 100%
rename from sound/instruments/banjo/Bb5.ogg
rename to sound/runtime/instruments/banjo/Bb5.ogg
diff --git a/sound/instruments/banjo/Bn2.ogg b/sound/runtime/instruments/banjo/Bn2.ogg
similarity index 100%
rename from sound/instruments/banjo/Bn2.ogg
rename to sound/runtime/instruments/banjo/Bn2.ogg
diff --git a/sound/instruments/banjo/Bn3.ogg b/sound/runtime/instruments/banjo/Bn3.ogg
similarity index 100%
rename from sound/instruments/banjo/Bn3.ogg
rename to sound/runtime/instruments/banjo/Bn3.ogg
diff --git a/sound/instruments/banjo/Bn4.ogg b/sound/runtime/instruments/banjo/Bn4.ogg
similarity index 100%
rename from sound/instruments/banjo/Bn4.ogg
rename to sound/runtime/instruments/banjo/Bn4.ogg
diff --git a/sound/instruments/banjo/Bn5.ogg b/sound/runtime/instruments/banjo/Bn5.ogg
similarity index 100%
rename from sound/instruments/banjo/Bn5.ogg
rename to sound/runtime/instruments/banjo/Bn5.ogg
diff --git a/sound/instruments/banjo/Cn3.ogg b/sound/runtime/instruments/banjo/Cn3.ogg
similarity index 100%
rename from sound/instruments/banjo/Cn3.ogg
rename to sound/runtime/instruments/banjo/Cn3.ogg
diff --git a/sound/instruments/banjo/Cn4.ogg b/sound/runtime/instruments/banjo/Cn4.ogg
similarity index 100%
rename from sound/instruments/banjo/Cn4.ogg
rename to sound/runtime/instruments/banjo/Cn4.ogg
diff --git a/sound/instruments/banjo/Cn5.ogg b/sound/runtime/instruments/banjo/Cn5.ogg
similarity index 100%
rename from sound/instruments/banjo/Cn5.ogg
rename to sound/runtime/instruments/banjo/Cn5.ogg
diff --git a/sound/instruments/banjo/Cn6.ogg b/sound/runtime/instruments/banjo/Cn6.ogg
similarity index 100%
rename from sound/instruments/banjo/Cn6.ogg
rename to sound/runtime/instruments/banjo/Cn6.ogg
diff --git a/sound/instruments/banjo/Db3.ogg b/sound/runtime/instruments/banjo/Db3.ogg
similarity index 100%
rename from sound/instruments/banjo/Db3.ogg
rename to sound/runtime/instruments/banjo/Db3.ogg
diff --git a/sound/instruments/banjo/Db4.ogg b/sound/runtime/instruments/banjo/Db4.ogg
similarity index 100%
rename from sound/instruments/banjo/Db4.ogg
rename to sound/runtime/instruments/banjo/Db4.ogg
diff --git a/sound/instruments/banjo/Db5.ogg b/sound/runtime/instruments/banjo/Db5.ogg
similarity index 100%
rename from sound/instruments/banjo/Db5.ogg
rename to sound/runtime/instruments/banjo/Db5.ogg
diff --git a/sound/instruments/banjo/Db6.ogg b/sound/runtime/instruments/banjo/Db6.ogg
similarity index 100%
rename from sound/instruments/banjo/Db6.ogg
rename to sound/runtime/instruments/banjo/Db6.ogg
diff --git a/sound/instruments/banjo/Dn3.ogg b/sound/runtime/instruments/banjo/Dn3.ogg
similarity index 100%
rename from sound/instruments/banjo/Dn3.ogg
rename to sound/runtime/instruments/banjo/Dn3.ogg
diff --git a/sound/instruments/banjo/Dn4.ogg b/sound/runtime/instruments/banjo/Dn4.ogg
similarity index 100%
rename from sound/instruments/banjo/Dn4.ogg
rename to sound/runtime/instruments/banjo/Dn4.ogg
diff --git a/sound/instruments/banjo/Dn5.ogg b/sound/runtime/instruments/banjo/Dn5.ogg
similarity index 100%
rename from sound/instruments/banjo/Dn5.ogg
rename to sound/runtime/instruments/banjo/Dn5.ogg
diff --git a/sound/instruments/banjo/Dn6.ogg b/sound/runtime/instruments/banjo/Dn6.ogg
similarity index 100%
rename from sound/instruments/banjo/Dn6.ogg
rename to sound/runtime/instruments/banjo/Dn6.ogg
diff --git a/sound/instruments/banjo/Eb3.ogg b/sound/runtime/instruments/banjo/Eb3.ogg
similarity index 100%
rename from sound/instruments/banjo/Eb3.ogg
rename to sound/runtime/instruments/banjo/Eb3.ogg
diff --git a/sound/instruments/banjo/Eb4.ogg b/sound/runtime/instruments/banjo/Eb4.ogg
similarity index 100%
rename from sound/instruments/banjo/Eb4.ogg
rename to sound/runtime/instruments/banjo/Eb4.ogg
diff --git a/sound/instruments/banjo/Eb5.ogg b/sound/runtime/instruments/banjo/Eb5.ogg
similarity index 100%
rename from sound/instruments/banjo/Eb5.ogg
rename to sound/runtime/instruments/banjo/Eb5.ogg
diff --git a/sound/instruments/banjo/En3.ogg b/sound/runtime/instruments/banjo/En3.ogg
similarity index 100%
rename from sound/instruments/banjo/En3.ogg
rename to sound/runtime/instruments/banjo/En3.ogg
diff --git a/sound/instruments/banjo/En4.ogg b/sound/runtime/instruments/banjo/En4.ogg
similarity index 100%
rename from sound/instruments/banjo/En4.ogg
rename to sound/runtime/instruments/banjo/En4.ogg
diff --git a/sound/instruments/banjo/En5.ogg b/sound/runtime/instruments/banjo/En5.ogg
similarity index 100%
rename from sound/instruments/banjo/En5.ogg
rename to sound/runtime/instruments/banjo/En5.ogg
diff --git a/sound/instruments/banjo/Fn3.ogg b/sound/runtime/instruments/banjo/Fn3.ogg
similarity index 100%
rename from sound/instruments/banjo/Fn3.ogg
rename to sound/runtime/instruments/banjo/Fn3.ogg
diff --git a/sound/instruments/banjo/Fn4.ogg b/sound/runtime/instruments/banjo/Fn4.ogg
similarity index 100%
rename from sound/instruments/banjo/Fn4.ogg
rename to sound/runtime/instruments/banjo/Fn4.ogg
diff --git a/sound/instruments/banjo/Fn5.ogg b/sound/runtime/instruments/banjo/Fn5.ogg
similarity index 100%
rename from sound/instruments/banjo/Fn5.ogg
rename to sound/runtime/instruments/banjo/Fn5.ogg
diff --git a/sound/instruments/banjo/Gb3.ogg b/sound/runtime/instruments/banjo/Gb3.ogg
similarity index 100%
rename from sound/instruments/banjo/Gb3.ogg
rename to sound/runtime/instruments/banjo/Gb3.ogg
diff --git a/sound/instruments/banjo/Gb4.ogg b/sound/runtime/instruments/banjo/Gb4.ogg
similarity index 100%
rename from sound/instruments/banjo/Gb4.ogg
rename to sound/runtime/instruments/banjo/Gb4.ogg
diff --git a/sound/instruments/banjo/Gb5.ogg b/sound/runtime/instruments/banjo/Gb5.ogg
similarity index 100%
rename from sound/instruments/banjo/Gb5.ogg
rename to sound/runtime/instruments/banjo/Gb5.ogg
diff --git a/sound/instruments/banjo/Gn3.ogg b/sound/runtime/instruments/banjo/Gn3.ogg
similarity index 100%
rename from sound/instruments/banjo/Gn3.ogg
rename to sound/runtime/instruments/banjo/Gn3.ogg
diff --git a/sound/instruments/banjo/Gn4.ogg b/sound/runtime/instruments/banjo/Gn4.ogg
similarity index 100%
rename from sound/instruments/banjo/Gn4.ogg
rename to sound/runtime/instruments/banjo/Gn4.ogg
diff --git a/sound/instruments/banjo/Gn5.ogg b/sound/runtime/instruments/banjo/Gn5.ogg
similarity index 100%
rename from sound/instruments/banjo/Gn5.ogg
rename to sound/runtime/instruments/banjo/Gn5.ogg
diff --git a/sound/instruments/bikehorn/Ab2.ogg b/sound/runtime/instruments/bikehorn/Ab2.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Ab2.ogg
rename to sound/runtime/instruments/bikehorn/Ab2.ogg
diff --git a/sound/instruments/bikehorn/Ab3.ogg b/sound/runtime/instruments/bikehorn/Ab3.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Ab3.ogg
rename to sound/runtime/instruments/bikehorn/Ab3.ogg
diff --git a/sound/instruments/bikehorn/Ab4.ogg b/sound/runtime/instruments/bikehorn/Ab4.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Ab4.ogg
rename to sound/runtime/instruments/bikehorn/Ab4.ogg
diff --git a/sound/instruments/bikehorn/An2.ogg b/sound/runtime/instruments/bikehorn/An2.ogg
similarity index 100%
rename from sound/instruments/bikehorn/An2.ogg
rename to sound/runtime/instruments/bikehorn/An2.ogg
diff --git a/sound/instruments/bikehorn/An3.ogg b/sound/runtime/instruments/bikehorn/An3.ogg
similarity index 100%
rename from sound/instruments/bikehorn/An3.ogg
rename to sound/runtime/instruments/bikehorn/An3.ogg
diff --git a/sound/instruments/bikehorn/An4.ogg b/sound/runtime/instruments/bikehorn/An4.ogg
similarity index 100%
rename from sound/instruments/bikehorn/An4.ogg
rename to sound/runtime/instruments/bikehorn/An4.ogg
diff --git a/sound/instruments/bikehorn/Bb2.ogg b/sound/runtime/instruments/bikehorn/Bb2.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Bb2.ogg
rename to sound/runtime/instruments/bikehorn/Bb2.ogg
diff --git a/sound/instruments/bikehorn/Bb3.ogg b/sound/runtime/instruments/bikehorn/Bb3.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Bb3.ogg
rename to sound/runtime/instruments/bikehorn/Bb3.ogg
diff --git a/sound/instruments/bikehorn/Bb4.ogg b/sound/runtime/instruments/bikehorn/Bb4.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Bb4.ogg
rename to sound/runtime/instruments/bikehorn/Bb4.ogg
diff --git a/sound/instruments/bikehorn/Bn2.ogg b/sound/runtime/instruments/bikehorn/Bn2.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Bn2.ogg
rename to sound/runtime/instruments/bikehorn/Bn2.ogg
diff --git a/sound/instruments/bikehorn/Bn3.ogg b/sound/runtime/instruments/bikehorn/Bn3.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Bn3.ogg
rename to sound/runtime/instruments/bikehorn/Bn3.ogg
diff --git a/sound/instruments/bikehorn/Bn4.ogg b/sound/runtime/instruments/bikehorn/Bn4.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Bn4.ogg
rename to sound/runtime/instruments/bikehorn/Bn4.ogg
diff --git a/sound/instruments/bikehorn/Cn3.ogg b/sound/runtime/instruments/bikehorn/Cn3.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Cn3.ogg
rename to sound/runtime/instruments/bikehorn/Cn3.ogg
diff --git a/sound/instruments/bikehorn/Cn4.ogg b/sound/runtime/instruments/bikehorn/Cn4.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Cn4.ogg
rename to sound/runtime/instruments/bikehorn/Cn4.ogg
diff --git a/sound/instruments/bikehorn/Cn5.ogg b/sound/runtime/instruments/bikehorn/Cn5.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Cn5.ogg
rename to sound/runtime/instruments/bikehorn/Cn5.ogg
diff --git a/sound/instruments/bikehorn/Db3.ogg b/sound/runtime/instruments/bikehorn/Db3.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Db3.ogg
rename to sound/runtime/instruments/bikehorn/Db3.ogg
diff --git a/sound/instruments/bikehorn/Db4.ogg b/sound/runtime/instruments/bikehorn/Db4.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Db4.ogg
rename to sound/runtime/instruments/bikehorn/Db4.ogg
diff --git a/sound/instruments/bikehorn/Db5.ogg b/sound/runtime/instruments/bikehorn/Db5.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Db5.ogg
rename to sound/runtime/instruments/bikehorn/Db5.ogg
diff --git a/sound/instruments/bikehorn/Dn3.ogg b/sound/runtime/instruments/bikehorn/Dn3.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Dn3.ogg
rename to sound/runtime/instruments/bikehorn/Dn3.ogg
diff --git a/sound/instruments/bikehorn/Dn4.ogg b/sound/runtime/instruments/bikehorn/Dn4.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Dn4.ogg
rename to sound/runtime/instruments/bikehorn/Dn4.ogg
diff --git a/sound/instruments/bikehorn/Dn5.ogg b/sound/runtime/instruments/bikehorn/Dn5.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Dn5.ogg
rename to sound/runtime/instruments/bikehorn/Dn5.ogg
diff --git a/sound/instruments/bikehorn/Eb3.ogg b/sound/runtime/instruments/bikehorn/Eb3.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Eb3.ogg
rename to sound/runtime/instruments/bikehorn/Eb3.ogg
diff --git a/sound/instruments/bikehorn/Eb4.ogg b/sound/runtime/instruments/bikehorn/Eb4.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Eb4.ogg
rename to sound/runtime/instruments/bikehorn/Eb4.ogg
diff --git a/sound/instruments/bikehorn/Eb5.ogg b/sound/runtime/instruments/bikehorn/Eb5.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Eb5.ogg
rename to sound/runtime/instruments/bikehorn/Eb5.ogg
diff --git a/sound/instruments/bikehorn/En2.ogg b/sound/runtime/instruments/bikehorn/En2.ogg
similarity index 100%
rename from sound/instruments/bikehorn/En2.ogg
rename to sound/runtime/instruments/bikehorn/En2.ogg
diff --git a/sound/instruments/bikehorn/En3.ogg b/sound/runtime/instruments/bikehorn/En3.ogg
similarity index 100%
rename from sound/instruments/bikehorn/En3.ogg
rename to sound/runtime/instruments/bikehorn/En3.ogg
diff --git a/sound/instruments/bikehorn/En4.ogg b/sound/runtime/instruments/bikehorn/En4.ogg
similarity index 100%
rename from sound/instruments/bikehorn/En4.ogg
rename to sound/runtime/instruments/bikehorn/En4.ogg
diff --git a/sound/instruments/bikehorn/Fn2.ogg b/sound/runtime/instruments/bikehorn/Fn2.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Fn2.ogg
rename to sound/runtime/instruments/bikehorn/Fn2.ogg
diff --git a/sound/instruments/bikehorn/Fn3.ogg b/sound/runtime/instruments/bikehorn/Fn3.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Fn3.ogg
rename to sound/runtime/instruments/bikehorn/Fn3.ogg
diff --git a/sound/instruments/bikehorn/Fn4.ogg b/sound/runtime/instruments/bikehorn/Fn4.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Fn4.ogg
rename to sound/runtime/instruments/bikehorn/Fn4.ogg
diff --git a/sound/instruments/bikehorn/Gb2.ogg b/sound/runtime/instruments/bikehorn/Gb2.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Gb2.ogg
rename to sound/runtime/instruments/bikehorn/Gb2.ogg
diff --git a/sound/instruments/bikehorn/Gb3.ogg b/sound/runtime/instruments/bikehorn/Gb3.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Gb3.ogg
rename to sound/runtime/instruments/bikehorn/Gb3.ogg
diff --git a/sound/instruments/bikehorn/Gb4.ogg b/sound/runtime/instruments/bikehorn/Gb4.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Gb4.ogg
rename to sound/runtime/instruments/bikehorn/Gb4.ogg
diff --git a/sound/instruments/bikehorn/Gn2.ogg b/sound/runtime/instruments/bikehorn/Gn2.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Gn2.ogg
rename to sound/runtime/instruments/bikehorn/Gn2.ogg
diff --git a/sound/instruments/bikehorn/Gn3.ogg b/sound/runtime/instruments/bikehorn/Gn3.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Gn3.ogg
rename to sound/runtime/instruments/bikehorn/Gn3.ogg
diff --git a/sound/instruments/bikehorn/Gn4.ogg b/sound/runtime/instruments/bikehorn/Gn4.ogg
similarity index 100%
rename from sound/instruments/bikehorn/Gn4.ogg
rename to sound/runtime/instruments/bikehorn/Gn4.ogg
diff --git a/sound/instruments/eguitar/Ab4.ogg b/sound/runtime/instruments/eguitar/Ab4.ogg
similarity index 100%
rename from sound/instruments/eguitar/Ab4.ogg
rename to sound/runtime/instruments/eguitar/Ab4.ogg
diff --git a/sound/instruments/eguitar/Ab5.ogg b/sound/runtime/instruments/eguitar/Ab5.ogg
similarity index 100%
rename from sound/instruments/eguitar/Ab5.ogg
rename to sound/runtime/instruments/eguitar/Ab5.ogg
diff --git a/sound/instruments/eguitar/Ab6.ogg b/sound/runtime/instruments/eguitar/Ab6.ogg
similarity index 100%
rename from sound/instruments/eguitar/Ab6.ogg
rename to sound/runtime/instruments/eguitar/Ab6.ogg
diff --git a/sound/instruments/eguitar/An4.ogg b/sound/runtime/instruments/eguitar/An4.ogg
similarity index 100%
rename from sound/instruments/eguitar/An4.ogg
rename to sound/runtime/instruments/eguitar/An4.ogg
diff --git a/sound/instruments/eguitar/An5.ogg b/sound/runtime/instruments/eguitar/An5.ogg
similarity index 100%
rename from sound/instruments/eguitar/An5.ogg
rename to sound/runtime/instruments/eguitar/An5.ogg
diff --git a/sound/instruments/eguitar/An6.ogg b/sound/runtime/instruments/eguitar/An6.ogg
similarity index 100%
rename from sound/instruments/eguitar/An6.ogg
rename to sound/runtime/instruments/eguitar/An6.ogg
diff --git a/sound/instruments/eguitar/Bb4.ogg b/sound/runtime/instruments/eguitar/Bb4.ogg
similarity index 100%
rename from sound/instruments/eguitar/Bb4.ogg
rename to sound/runtime/instruments/eguitar/Bb4.ogg
diff --git a/sound/instruments/eguitar/Bb5.ogg b/sound/runtime/instruments/eguitar/Bb5.ogg
similarity index 100%
rename from sound/instruments/eguitar/Bb5.ogg
rename to sound/runtime/instruments/eguitar/Bb5.ogg
diff --git a/sound/instruments/eguitar/Bb6.ogg b/sound/runtime/instruments/eguitar/Bb6.ogg
similarity index 100%
rename from sound/instruments/eguitar/Bb6.ogg
rename to sound/runtime/instruments/eguitar/Bb6.ogg
diff --git a/sound/instruments/eguitar/Bn4.ogg b/sound/runtime/instruments/eguitar/Bn4.ogg
similarity index 100%
rename from sound/instruments/eguitar/Bn4.ogg
rename to sound/runtime/instruments/eguitar/Bn4.ogg
diff --git a/sound/instruments/eguitar/Bn5.ogg b/sound/runtime/instruments/eguitar/Bn5.ogg
similarity index 100%
rename from sound/instruments/eguitar/Bn5.ogg
rename to sound/runtime/instruments/eguitar/Bn5.ogg
diff --git a/sound/instruments/eguitar/Bn6.ogg b/sound/runtime/instruments/eguitar/Bn6.ogg
similarity index 100%
rename from sound/instruments/eguitar/Bn6.ogg
rename to sound/runtime/instruments/eguitar/Bn6.ogg
diff --git a/sound/instruments/eguitar/Cn4.ogg b/sound/runtime/instruments/eguitar/Cn4.ogg
similarity index 100%
rename from sound/instruments/eguitar/Cn4.ogg
rename to sound/runtime/instruments/eguitar/Cn4.ogg
diff --git a/sound/instruments/eguitar/Cn5.ogg b/sound/runtime/instruments/eguitar/Cn5.ogg
similarity index 100%
rename from sound/instruments/eguitar/Cn5.ogg
rename to sound/runtime/instruments/eguitar/Cn5.ogg
diff --git a/sound/instruments/eguitar/Cn6.ogg b/sound/runtime/instruments/eguitar/Cn6.ogg
similarity index 100%
rename from sound/instruments/eguitar/Cn6.ogg
rename to sound/runtime/instruments/eguitar/Cn6.ogg
diff --git a/sound/instruments/eguitar/Cn7.ogg b/sound/runtime/instruments/eguitar/Cn7.ogg
similarity index 100%
rename from sound/instruments/eguitar/Cn7.ogg
rename to sound/runtime/instruments/eguitar/Cn7.ogg
diff --git a/sound/instruments/eguitar/Db4.ogg b/sound/runtime/instruments/eguitar/Db4.ogg
similarity index 100%
rename from sound/instruments/eguitar/Db4.ogg
rename to sound/runtime/instruments/eguitar/Db4.ogg
diff --git a/sound/instruments/eguitar/Db5.ogg b/sound/runtime/instruments/eguitar/Db5.ogg
similarity index 100%
rename from sound/instruments/eguitar/Db5.ogg
rename to sound/runtime/instruments/eguitar/Db5.ogg
diff --git a/sound/instruments/eguitar/Db6.ogg b/sound/runtime/instruments/eguitar/Db6.ogg
similarity index 100%
rename from sound/instruments/eguitar/Db6.ogg
rename to sound/runtime/instruments/eguitar/Db6.ogg
diff --git a/sound/instruments/eguitar/Dn4.ogg b/sound/runtime/instruments/eguitar/Dn4.ogg
similarity index 100%
rename from sound/instruments/eguitar/Dn4.ogg
rename to sound/runtime/instruments/eguitar/Dn4.ogg
diff --git a/sound/instruments/eguitar/Dn5.ogg b/sound/runtime/instruments/eguitar/Dn5.ogg
similarity index 100%
rename from sound/instruments/eguitar/Dn5.ogg
rename to sound/runtime/instruments/eguitar/Dn5.ogg
diff --git a/sound/instruments/eguitar/Dn6.ogg b/sound/runtime/instruments/eguitar/Dn6.ogg
similarity index 100%
rename from sound/instruments/eguitar/Dn6.ogg
rename to sound/runtime/instruments/eguitar/Dn6.ogg
diff --git a/sound/instruments/eguitar/Eb4.ogg b/sound/runtime/instruments/eguitar/Eb4.ogg
similarity index 100%
rename from sound/instruments/eguitar/Eb4.ogg
rename to sound/runtime/instruments/eguitar/Eb4.ogg
diff --git a/sound/instruments/eguitar/Eb5.ogg b/sound/runtime/instruments/eguitar/Eb5.ogg
similarity index 100%
rename from sound/instruments/eguitar/Eb5.ogg
rename to sound/runtime/instruments/eguitar/Eb5.ogg
diff --git a/sound/instruments/eguitar/Eb6.ogg b/sound/runtime/instruments/eguitar/Eb6.ogg
similarity index 100%
rename from sound/instruments/eguitar/Eb6.ogg
rename to sound/runtime/instruments/eguitar/Eb6.ogg
diff --git a/sound/instruments/eguitar/En4.ogg b/sound/runtime/instruments/eguitar/En4.ogg
similarity index 100%
rename from sound/instruments/eguitar/En4.ogg
rename to sound/runtime/instruments/eguitar/En4.ogg
diff --git a/sound/instruments/eguitar/En5.ogg b/sound/runtime/instruments/eguitar/En5.ogg
similarity index 100%
rename from sound/instruments/eguitar/En5.ogg
rename to sound/runtime/instruments/eguitar/En5.ogg
diff --git a/sound/instruments/eguitar/En6.ogg b/sound/runtime/instruments/eguitar/En6.ogg
similarity index 100%
rename from sound/instruments/eguitar/En6.ogg
rename to sound/runtime/instruments/eguitar/En6.ogg
diff --git a/sound/instruments/eguitar/Fn4.ogg b/sound/runtime/instruments/eguitar/Fn4.ogg
similarity index 100%
rename from sound/instruments/eguitar/Fn4.ogg
rename to sound/runtime/instruments/eguitar/Fn4.ogg
diff --git a/sound/instruments/eguitar/Fn5.ogg b/sound/runtime/instruments/eguitar/Fn5.ogg
similarity index 100%
rename from sound/instruments/eguitar/Fn5.ogg
rename to sound/runtime/instruments/eguitar/Fn5.ogg
diff --git a/sound/instruments/eguitar/Fn6.ogg b/sound/runtime/instruments/eguitar/Fn6.ogg
similarity index 100%
rename from sound/instruments/eguitar/Fn6.ogg
rename to sound/runtime/instruments/eguitar/Fn6.ogg
diff --git a/sound/instruments/eguitar/Gb4.ogg b/sound/runtime/instruments/eguitar/Gb4.ogg
similarity index 100%
rename from sound/instruments/eguitar/Gb4.ogg
rename to sound/runtime/instruments/eguitar/Gb4.ogg
diff --git a/sound/instruments/eguitar/Gb5.ogg b/sound/runtime/instruments/eguitar/Gb5.ogg
similarity index 100%
rename from sound/instruments/eguitar/Gb5.ogg
rename to sound/runtime/instruments/eguitar/Gb5.ogg
diff --git a/sound/instruments/eguitar/Gb6.ogg b/sound/runtime/instruments/eguitar/Gb6.ogg
similarity index 100%
rename from sound/instruments/eguitar/Gb6.ogg
rename to sound/runtime/instruments/eguitar/Gb6.ogg
diff --git a/sound/instruments/eguitar/Gn4.ogg b/sound/runtime/instruments/eguitar/Gn4.ogg
similarity index 100%
rename from sound/instruments/eguitar/Gn4.ogg
rename to sound/runtime/instruments/eguitar/Gn4.ogg
diff --git a/sound/instruments/eguitar/Gn5.ogg b/sound/runtime/instruments/eguitar/Gn5.ogg
similarity index 100%
rename from sound/instruments/eguitar/Gn5.ogg
rename to sound/runtime/instruments/eguitar/Gn5.ogg
diff --git a/sound/instruments/eguitar/Gn6.ogg b/sound/runtime/instruments/eguitar/Gn6.ogg
similarity index 100%
rename from sound/instruments/eguitar/Gn6.ogg
rename to sound/runtime/instruments/eguitar/Gn6.ogg
diff --git a/sound/instruments/glockenspiel/Ab2.mid b/sound/runtime/instruments/glockenspiel/Ab2.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Ab2.mid
rename to sound/runtime/instruments/glockenspiel/Ab2.mid
diff --git a/sound/instruments/glockenspiel/Ab3.mid b/sound/runtime/instruments/glockenspiel/Ab3.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Ab3.mid
rename to sound/runtime/instruments/glockenspiel/Ab3.mid
diff --git a/sound/instruments/glockenspiel/Ab4.mid b/sound/runtime/instruments/glockenspiel/Ab4.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Ab4.mid
rename to sound/runtime/instruments/glockenspiel/Ab4.mid
diff --git a/sound/instruments/glockenspiel/Ab5.mid b/sound/runtime/instruments/glockenspiel/Ab5.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Ab5.mid
rename to sound/runtime/instruments/glockenspiel/Ab5.mid
diff --git a/sound/instruments/glockenspiel/Ab6.mid b/sound/runtime/instruments/glockenspiel/Ab6.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Ab6.mid
rename to sound/runtime/instruments/glockenspiel/Ab6.mid
diff --git a/sound/instruments/glockenspiel/Ab7.mid b/sound/runtime/instruments/glockenspiel/Ab7.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Ab7.mid
rename to sound/runtime/instruments/glockenspiel/Ab7.mid
diff --git a/sound/instruments/glockenspiel/An2.mid b/sound/runtime/instruments/glockenspiel/An2.mid
similarity index 100%
rename from sound/instruments/glockenspiel/An2.mid
rename to sound/runtime/instruments/glockenspiel/An2.mid
diff --git a/sound/instruments/glockenspiel/An3.mid b/sound/runtime/instruments/glockenspiel/An3.mid
similarity index 100%
rename from sound/instruments/glockenspiel/An3.mid
rename to sound/runtime/instruments/glockenspiel/An3.mid
diff --git a/sound/instruments/glockenspiel/An4.mid b/sound/runtime/instruments/glockenspiel/An4.mid
similarity index 100%
rename from sound/instruments/glockenspiel/An4.mid
rename to sound/runtime/instruments/glockenspiel/An4.mid
diff --git a/sound/instruments/glockenspiel/An5.mid b/sound/runtime/instruments/glockenspiel/An5.mid
similarity index 100%
rename from sound/instruments/glockenspiel/An5.mid
rename to sound/runtime/instruments/glockenspiel/An5.mid
diff --git a/sound/instruments/glockenspiel/An6.mid b/sound/runtime/instruments/glockenspiel/An6.mid
similarity index 100%
rename from sound/instruments/glockenspiel/An6.mid
rename to sound/runtime/instruments/glockenspiel/An6.mid
diff --git a/sound/instruments/glockenspiel/An7.mid b/sound/runtime/instruments/glockenspiel/An7.mid
similarity index 100%
rename from sound/instruments/glockenspiel/An7.mid
rename to sound/runtime/instruments/glockenspiel/An7.mid
diff --git a/sound/instruments/glockenspiel/Bb2.mid b/sound/runtime/instruments/glockenspiel/Bb2.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Bb2.mid
rename to sound/runtime/instruments/glockenspiel/Bb2.mid
diff --git a/sound/instruments/glockenspiel/Bb3.mid b/sound/runtime/instruments/glockenspiel/Bb3.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Bb3.mid
rename to sound/runtime/instruments/glockenspiel/Bb3.mid
diff --git a/sound/instruments/glockenspiel/Bb4.mid b/sound/runtime/instruments/glockenspiel/Bb4.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Bb4.mid
rename to sound/runtime/instruments/glockenspiel/Bb4.mid
diff --git a/sound/instruments/glockenspiel/Bb5.mid b/sound/runtime/instruments/glockenspiel/Bb5.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Bb5.mid
rename to sound/runtime/instruments/glockenspiel/Bb5.mid
diff --git a/sound/instruments/glockenspiel/Bb6.mid b/sound/runtime/instruments/glockenspiel/Bb6.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Bb6.mid
rename to sound/runtime/instruments/glockenspiel/Bb6.mid
diff --git a/sound/instruments/glockenspiel/Bb7.mid b/sound/runtime/instruments/glockenspiel/Bb7.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Bb7.mid
rename to sound/runtime/instruments/glockenspiel/Bb7.mid
diff --git a/sound/instruments/glockenspiel/Bn2.mid b/sound/runtime/instruments/glockenspiel/Bn2.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Bn2.mid
rename to sound/runtime/instruments/glockenspiel/Bn2.mid
diff --git a/sound/instruments/glockenspiel/Bn3.mid b/sound/runtime/instruments/glockenspiel/Bn3.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Bn3.mid
rename to sound/runtime/instruments/glockenspiel/Bn3.mid
diff --git a/sound/instruments/glockenspiel/Bn4.mid b/sound/runtime/instruments/glockenspiel/Bn4.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Bn4.mid
rename to sound/runtime/instruments/glockenspiel/Bn4.mid
diff --git a/sound/instruments/glockenspiel/Bn5.mid b/sound/runtime/instruments/glockenspiel/Bn5.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Bn5.mid
rename to sound/runtime/instruments/glockenspiel/Bn5.mid
diff --git a/sound/instruments/glockenspiel/Bn6.mid b/sound/runtime/instruments/glockenspiel/Bn6.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Bn6.mid
rename to sound/runtime/instruments/glockenspiel/Bn6.mid
diff --git a/sound/instruments/glockenspiel/Bn7.mid b/sound/runtime/instruments/glockenspiel/Bn7.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Bn7.mid
rename to sound/runtime/instruments/glockenspiel/Bn7.mid
diff --git a/sound/instruments/glockenspiel/Cn2.mid b/sound/runtime/instruments/glockenspiel/Cn2.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Cn2.mid
rename to sound/runtime/instruments/glockenspiel/Cn2.mid
diff --git a/sound/instruments/glockenspiel/Cn3.mid b/sound/runtime/instruments/glockenspiel/Cn3.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Cn3.mid
rename to sound/runtime/instruments/glockenspiel/Cn3.mid
diff --git a/sound/instruments/glockenspiel/Cn4.mid b/sound/runtime/instruments/glockenspiel/Cn4.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Cn4.mid
rename to sound/runtime/instruments/glockenspiel/Cn4.mid
diff --git a/sound/instruments/glockenspiel/Cn5.mid b/sound/runtime/instruments/glockenspiel/Cn5.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Cn5.mid
rename to sound/runtime/instruments/glockenspiel/Cn5.mid
diff --git a/sound/instruments/glockenspiel/Cn6.mid b/sound/runtime/instruments/glockenspiel/Cn6.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Cn6.mid
rename to sound/runtime/instruments/glockenspiel/Cn6.mid
diff --git a/sound/instruments/glockenspiel/Cn7.mid b/sound/runtime/instruments/glockenspiel/Cn7.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Cn7.mid
rename to sound/runtime/instruments/glockenspiel/Cn7.mid
diff --git a/sound/instruments/glockenspiel/Db2.mid b/sound/runtime/instruments/glockenspiel/Db2.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Db2.mid
rename to sound/runtime/instruments/glockenspiel/Db2.mid
diff --git a/sound/instruments/glockenspiel/Db3.mid b/sound/runtime/instruments/glockenspiel/Db3.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Db3.mid
rename to sound/runtime/instruments/glockenspiel/Db3.mid
diff --git a/sound/instruments/glockenspiel/Db4.mid b/sound/runtime/instruments/glockenspiel/Db4.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Db4.mid
rename to sound/runtime/instruments/glockenspiel/Db4.mid
diff --git a/sound/instruments/glockenspiel/Db5.mid b/sound/runtime/instruments/glockenspiel/Db5.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Db5.mid
rename to sound/runtime/instruments/glockenspiel/Db5.mid
diff --git a/sound/instruments/glockenspiel/Db6.mid b/sound/runtime/instruments/glockenspiel/Db6.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Db6.mid
rename to sound/runtime/instruments/glockenspiel/Db6.mid
diff --git a/sound/instruments/glockenspiel/Db7.mid b/sound/runtime/instruments/glockenspiel/Db7.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Db7.mid
rename to sound/runtime/instruments/glockenspiel/Db7.mid
diff --git a/sound/instruments/glockenspiel/Dn2.mid b/sound/runtime/instruments/glockenspiel/Dn2.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Dn2.mid
rename to sound/runtime/instruments/glockenspiel/Dn2.mid
diff --git a/sound/instruments/glockenspiel/Dn3.mid b/sound/runtime/instruments/glockenspiel/Dn3.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Dn3.mid
rename to sound/runtime/instruments/glockenspiel/Dn3.mid
diff --git a/sound/instruments/glockenspiel/Dn4.mid b/sound/runtime/instruments/glockenspiel/Dn4.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Dn4.mid
rename to sound/runtime/instruments/glockenspiel/Dn4.mid
diff --git a/sound/instruments/glockenspiel/Dn5.mid b/sound/runtime/instruments/glockenspiel/Dn5.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Dn5.mid
rename to sound/runtime/instruments/glockenspiel/Dn5.mid
diff --git a/sound/instruments/glockenspiel/Dn6.mid b/sound/runtime/instruments/glockenspiel/Dn6.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Dn6.mid
rename to sound/runtime/instruments/glockenspiel/Dn6.mid
diff --git a/sound/instruments/glockenspiel/Dn7.mid b/sound/runtime/instruments/glockenspiel/Dn7.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Dn7.mid
rename to sound/runtime/instruments/glockenspiel/Dn7.mid
diff --git a/sound/instruments/glockenspiel/Eb2.mid b/sound/runtime/instruments/glockenspiel/Eb2.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Eb2.mid
rename to sound/runtime/instruments/glockenspiel/Eb2.mid
diff --git a/sound/instruments/glockenspiel/Eb3.mid b/sound/runtime/instruments/glockenspiel/Eb3.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Eb3.mid
rename to sound/runtime/instruments/glockenspiel/Eb3.mid
diff --git a/sound/instruments/glockenspiel/Eb4.mid b/sound/runtime/instruments/glockenspiel/Eb4.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Eb4.mid
rename to sound/runtime/instruments/glockenspiel/Eb4.mid
diff --git a/sound/instruments/glockenspiel/Eb5.mid b/sound/runtime/instruments/glockenspiel/Eb5.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Eb5.mid
rename to sound/runtime/instruments/glockenspiel/Eb5.mid
diff --git a/sound/instruments/glockenspiel/Eb6.mid b/sound/runtime/instruments/glockenspiel/Eb6.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Eb6.mid
rename to sound/runtime/instruments/glockenspiel/Eb6.mid
diff --git a/sound/instruments/glockenspiel/Eb7.mid b/sound/runtime/instruments/glockenspiel/Eb7.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Eb7.mid
rename to sound/runtime/instruments/glockenspiel/Eb7.mid
diff --git a/sound/instruments/glockenspiel/En2.mid b/sound/runtime/instruments/glockenspiel/En2.mid
similarity index 100%
rename from sound/instruments/glockenspiel/En2.mid
rename to sound/runtime/instruments/glockenspiel/En2.mid
diff --git a/sound/instruments/glockenspiel/En3.mid b/sound/runtime/instruments/glockenspiel/En3.mid
similarity index 100%
rename from sound/instruments/glockenspiel/En3.mid
rename to sound/runtime/instruments/glockenspiel/En3.mid
diff --git a/sound/instruments/glockenspiel/En4.mid b/sound/runtime/instruments/glockenspiel/En4.mid
similarity index 100%
rename from sound/instruments/glockenspiel/En4.mid
rename to sound/runtime/instruments/glockenspiel/En4.mid
diff --git a/sound/instruments/glockenspiel/En5.mid b/sound/runtime/instruments/glockenspiel/En5.mid
similarity index 100%
rename from sound/instruments/glockenspiel/En5.mid
rename to sound/runtime/instruments/glockenspiel/En5.mid
diff --git a/sound/instruments/glockenspiel/En6.mid b/sound/runtime/instruments/glockenspiel/En6.mid
similarity index 100%
rename from sound/instruments/glockenspiel/En6.mid
rename to sound/runtime/instruments/glockenspiel/En6.mid
diff --git a/sound/instruments/glockenspiel/En7.mid b/sound/runtime/instruments/glockenspiel/En7.mid
similarity index 100%
rename from sound/instruments/glockenspiel/En7.mid
rename to sound/runtime/instruments/glockenspiel/En7.mid
diff --git a/sound/instruments/glockenspiel/Fn2.mid b/sound/runtime/instruments/glockenspiel/Fn2.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Fn2.mid
rename to sound/runtime/instruments/glockenspiel/Fn2.mid
diff --git a/sound/instruments/glockenspiel/Fn3.mid b/sound/runtime/instruments/glockenspiel/Fn3.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Fn3.mid
rename to sound/runtime/instruments/glockenspiel/Fn3.mid
diff --git a/sound/instruments/glockenspiel/Fn4.mid b/sound/runtime/instruments/glockenspiel/Fn4.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Fn4.mid
rename to sound/runtime/instruments/glockenspiel/Fn4.mid
diff --git a/sound/instruments/glockenspiel/Fn5.mid b/sound/runtime/instruments/glockenspiel/Fn5.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Fn5.mid
rename to sound/runtime/instruments/glockenspiel/Fn5.mid
diff --git a/sound/instruments/glockenspiel/Fn6.mid b/sound/runtime/instruments/glockenspiel/Fn6.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Fn6.mid
rename to sound/runtime/instruments/glockenspiel/Fn6.mid
diff --git a/sound/instruments/glockenspiel/Fn7.mid b/sound/runtime/instruments/glockenspiel/Fn7.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Fn7.mid
rename to sound/runtime/instruments/glockenspiel/Fn7.mid
diff --git a/sound/instruments/glockenspiel/Gb2.mid b/sound/runtime/instruments/glockenspiel/Gb2.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Gb2.mid
rename to sound/runtime/instruments/glockenspiel/Gb2.mid
diff --git a/sound/instruments/glockenspiel/Gb3.mid b/sound/runtime/instruments/glockenspiel/Gb3.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Gb3.mid
rename to sound/runtime/instruments/glockenspiel/Gb3.mid
diff --git a/sound/instruments/glockenspiel/Gb4.mid b/sound/runtime/instruments/glockenspiel/Gb4.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Gb4.mid
rename to sound/runtime/instruments/glockenspiel/Gb4.mid
diff --git a/sound/instruments/glockenspiel/Gb5.mid b/sound/runtime/instruments/glockenspiel/Gb5.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Gb5.mid
rename to sound/runtime/instruments/glockenspiel/Gb5.mid
diff --git a/sound/instruments/glockenspiel/Gb6.mid b/sound/runtime/instruments/glockenspiel/Gb6.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Gb6.mid
rename to sound/runtime/instruments/glockenspiel/Gb6.mid
diff --git a/sound/instruments/glockenspiel/Gb7.mid b/sound/runtime/instruments/glockenspiel/Gb7.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Gb7.mid
rename to sound/runtime/instruments/glockenspiel/Gb7.mid
diff --git a/sound/instruments/glockenspiel/Gn2.mid b/sound/runtime/instruments/glockenspiel/Gn2.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Gn2.mid
rename to sound/runtime/instruments/glockenspiel/Gn2.mid
diff --git a/sound/instruments/glockenspiel/Gn3.mid b/sound/runtime/instruments/glockenspiel/Gn3.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Gn3.mid
rename to sound/runtime/instruments/glockenspiel/Gn3.mid
diff --git a/sound/instruments/glockenspiel/Gn4.mid b/sound/runtime/instruments/glockenspiel/Gn4.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Gn4.mid
rename to sound/runtime/instruments/glockenspiel/Gn4.mid
diff --git a/sound/instruments/glockenspiel/Gn5.mid b/sound/runtime/instruments/glockenspiel/Gn5.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Gn5.mid
rename to sound/runtime/instruments/glockenspiel/Gn5.mid
diff --git a/sound/instruments/glockenspiel/Gn6.mid b/sound/runtime/instruments/glockenspiel/Gn6.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Gn6.mid
rename to sound/runtime/instruments/glockenspiel/Gn6.mid
diff --git a/sound/instruments/glockenspiel/Gn7.mid b/sound/runtime/instruments/glockenspiel/Gn7.mid
similarity index 100%
rename from sound/instruments/glockenspiel/Gn7.mid
rename to sound/runtime/instruments/glockenspiel/Gn7.mid
diff --git a/sound/instruments/guitar/Ab3.ogg b/sound/runtime/instruments/guitar/Ab3.ogg
similarity index 100%
rename from sound/instruments/guitar/Ab3.ogg
rename to sound/runtime/instruments/guitar/Ab3.ogg
diff --git a/sound/instruments/guitar/Ab4.ogg b/sound/runtime/instruments/guitar/Ab4.ogg
similarity index 100%
rename from sound/instruments/guitar/Ab4.ogg
rename to sound/runtime/instruments/guitar/Ab4.ogg
diff --git a/sound/instruments/guitar/Ab5.ogg b/sound/runtime/instruments/guitar/Ab5.ogg
similarity index 100%
rename from sound/instruments/guitar/Ab5.ogg
rename to sound/runtime/instruments/guitar/Ab5.ogg
diff --git a/sound/instruments/guitar/Ab6.ogg b/sound/runtime/instruments/guitar/Ab6.ogg
similarity index 100%
rename from sound/instruments/guitar/Ab6.ogg
rename to sound/runtime/instruments/guitar/Ab6.ogg
diff --git a/sound/instruments/guitar/An3.ogg b/sound/runtime/instruments/guitar/An3.ogg
similarity index 100%
rename from sound/instruments/guitar/An3.ogg
rename to sound/runtime/instruments/guitar/An3.ogg
diff --git a/sound/instruments/guitar/An4.ogg b/sound/runtime/instruments/guitar/An4.ogg
similarity index 100%
rename from sound/instruments/guitar/An4.ogg
rename to sound/runtime/instruments/guitar/An4.ogg
diff --git a/sound/instruments/guitar/An5.ogg b/sound/runtime/instruments/guitar/An5.ogg
similarity index 100%
rename from sound/instruments/guitar/An5.ogg
rename to sound/runtime/instruments/guitar/An5.ogg
diff --git a/sound/instruments/guitar/An6.ogg b/sound/runtime/instruments/guitar/An6.ogg
similarity index 100%
rename from sound/instruments/guitar/An6.ogg
rename to sound/runtime/instruments/guitar/An6.ogg
diff --git a/sound/instruments/guitar/Bb3.ogg b/sound/runtime/instruments/guitar/Bb3.ogg
similarity index 100%
rename from sound/instruments/guitar/Bb3.ogg
rename to sound/runtime/instruments/guitar/Bb3.ogg
diff --git a/sound/instruments/guitar/Bb4.ogg b/sound/runtime/instruments/guitar/Bb4.ogg
similarity index 100%
rename from sound/instruments/guitar/Bb4.ogg
rename to sound/runtime/instruments/guitar/Bb4.ogg
diff --git a/sound/instruments/guitar/Bb5.ogg b/sound/runtime/instruments/guitar/Bb5.ogg
similarity index 100%
rename from sound/instruments/guitar/Bb5.ogg
rename to sound/runtime/instruments/guitar/Bb5.ogg
diff --git a/sound/instruments/guitar/Bb6.ogg b/sound/runtime/instruments/guitar/Bb6.ogg
similarity index 100%
rename from sound/instruments/guitar/Bb6.ogg
rename to sound/runtime/instruments/guitar/Bb6.ogg
diff --git a/sound/instruments/guitar/Bn3.ogg b/sound/runtime/instruments/guitar/Bn3.ogg
similarity index 100%
rename from sound/instruments/guitar/Bn3.ogg
rename to sound/runtime/instruments/guitar/Bn3.ogg
diff --git a/sound/instruments/guitar/Bn4.ogg b/sound/runtime/instruments/guitar/Bn4.ogg
similarity index 100%
rename from sound/instruments/guitar/Bn4.ogg
rename to sound/runtime/instruments/guitar/Bn4.ogg
diff --git a/sound/instruments/guitar/Bn5.ogg b/sound/runtime/instruments/guitar/Bn5.ogg
similarity index 100%
rename from sound/instruments/guitar/Bn5.ogg
rename to sound/runtime/instruments/guitar/Bn5.ogg
diff --git a/sound/instruments/guitar/Bn6.ogg b/sound/runtime/instruments/guitar/Bn6.ogg
similarity index 100%
rename from sound/instruments/guitar/Bn6.ogg
rename to sound/runtime/instruments/guitar/Bn6.ogg
diff --git a/sound/instruments/guitar/Cb4.ogg b/sound/runtime/instruments/guitar/Cb4.ogg
similarity index 100%
rename from sound/instruments/guitar/Cb4.ogg
rename to sound/runtime/instruments/guitar/Cb4.ogg
diff --git a/sound/instruments/guitar/Cb5.ogg b/sound/runtime/instruments/guitar/Cb5.ogg
similarity index 100%
rename from sound/instruments/guitar/Cb5.ogg
rename to sound/runtime/instruments/guitar/Cb5.ogg
diff --git a/sound/instruments/guitar/Cb6.ogg b/sound/runtime/instruments/guitar/Cb6.ogg
similarity index 100%
rename from sound/instruments/guitar/Cb6.ogg
rename to sound/runtime/instruments/guitar/Cb6.ogg
diff --git a/sound/instruments/guitar/Cb7.ogg b/sound/runtime/instruments/guitar/Cb7.ogg
similarity index 100%
rename from sound/instruments/guitar/Cb7.ogg
rename to sound/runtime/instruments/guitar/Cb7.ogg
diff --git a/sound/instruments/guitar/Cn4.ogg b/sound/runtime/instruments/guitar/Cn4.ogg
similarity index 100%
rename from sound/instruments/guitar/Cn4.ogg
rename to sound/runtime/instruments/guitar/Cn4.ogg
diff --git a/sound/instruments/guitar/Cn5.ogg b/sound/runtime/instruments/guitar/Cn5.ogg
similarity index 100%
rename from sound/instruments/guitar/Cn5.ogg
rename to sound/runtime/instruments/guitar/Cn5.ogg
diff --git a/sound/instruments/guitar/Cn6.ogg b/sound/runtime/instruments/guitar/Cn6.ogg
similarity index 100%
rename from sound/instruments/guitar/Cn6.ogg
rename to sound/runtime/instruments/guitar/Cn6.ogg
diff --git a/sound/instruments/guitar/Db4.ogg b/sound/runtime/instruments/guitar/Db4.ogg
similarity index 100%
rename from sound/instruments/guitar/Db4.ogg
rename to sound/runtime/instruments/guitar/Db4.ogg
diff --git a/sound/instruments/guitar/Db5.ogg b/sound/runtime/instruments/guitar/Db5.ogg
similarity index 100%
rename from sound/instruments/guitar/Db5.ogg
rename to sound/runtime/instruments/guitar/Db5.ogg
diff --git a/sound/instruments/guitar/Db6.ogg b/sound/runtime/instruments/guitar/Db6.ogg
similarity index 100%
rename from sound/instruments/guitar/Db6.ogg
rename to sound/runtime/instruments/guitar/Db6.ogg
diff --git a/sound/instruments/guitar/Dn4.ogg b/sound/runtime/instruments/guitar/Dn4.ogg
similarity index 100%
rename from sound/instruments/guitar/Dn4.ogg
rename to sound/runtime/instruments/guitar/Dn4.ogg
diff --git a/sound/instruments/guitar/Dn5.ogg b/sound/runtime/instruments/guitar/Dn5.ogg
similarity index 100%
rename from sound/instruments/guitar/Dn5.ogg
rename to sound/runtime/instruments/guitar/Dn5.ogg
diff --git a/sound/instruments/guitar/Dn6.ogg b/sound/runtime/instruments/guitar/Dn6.ogg
similarity index 100%
rename from sound/instruments/guitar/Dn6.ogg
rename to sound/runtime/instruments/guitar/Dn6.ogg
diff --git a/sound/instruments/guitar/Eb4.ogg b/sound/runtime/instruments/guitar/Eb4.ogg
similarity index 100%
rename from sound/instruments/guitar/Eb4.ogg
rename to sound/runtime/instruments/guitar/Eb4.ogg
diff --git a/sound/instruments/guitar/Eb5.ogg b/sound/runtime/instruments/guitar/Eb5.ogg
similarity index 100%
rename from sound/instruments/guitar/Eb5.ogg
rename to sound/runtime/instruments/guitar/Eb5.ogg
diff --git a/sound/instruments/guitar/Eb6.ogg b/sound/runtime/instruments/guitar/Eb6.ogg
similarity index 100%
rename from sound/instruments/guitar/Eb6.ogg
rename to sound/runtime/instruments/guitar/Eb6.ogg
diff --git a/sound/instruments/guitar/En3.ogg b/sound/runtime/instruments/guitar/En3.ogg
similarity index 100%
rename from sound/instruments/guitar/En3.ogg
rename to sound/runtime/instruments/guitar/En3.ogg
diff --git a/sound/instruments/guitar/En4.ogg b/sound/runtime/instruments/guitar/En4.ogg
similarity index 100%
rename from sound/instruments/guitar/En4.ogg
rename to sound/runtime/instruments/guitar/En4.ogg
diff --git a/sound/instruments/guitar/En5.ogg b/sound/runtime/instruments/guitar/En5.ogg
similarity index 100%
rename from sound/instruments/guitar/En5.ogg
rename to sound/runtime/instruments/guitar/En5.ogg
diff --git a/sound/instruments/guitar/En6.ogg b/sound/runtime/instruments/guitar/En6.ogg
similarity index 100%
rename from sound/instruments/guitar/En6.ogg
rename to sound/runtime/instruments/guitar/En6.ogg
diff --git a/sound/instruments/guitar/Fb3.ogg b/sound/runtime/instruments/guitar/Fb3.ogg
similarity index 100%
rename from sound/instruments/guitar/Fb3.ogg
rename to sound/runtime/instruments/guitar/Fb3.ogg
diff --git a/sound/instruments/guitar/Fb4.ogg b/sound/runtime/instruments/guitar/Fb4.ogg
similarity index 100%
rename from sound/instruments/guitar/Fb4.ogg
rename to sound/runtime/instruments/guitar/Fb4.ogg
diff --git a/sound/instruments/guitar/Fb5.ogg b/sound/runtime/instruments/guitar/Fb5.ogg
similarity index 100%
rename from sound/instruments/guitar/Fb5.ogg
rename to sound/runtime/instruments/guitar/Fb5.ogg
diff --git a/sound/instruments/guitar/Fb6.ogg b/sound/runtime/instruments/guitar/Fb6.ogg
similarity index 100%
rename from sound/instruments/guitar/Fb6.ogg
rename to sound/runtime/instruments/guitar/Fb6.ogg
diff --git a/sound/instruments/guitar/Fn3.ogg b/sound/runtime/instruments/guitar/Fn3.ogg
similarity index 100%
rename from sound/instruments/guitar/Fn3.ogg
rename to sound/runtime/instruments/guitar/Fn3.ogg
diff --git a/sound/instruments/guitar/Fn4.ogg b/sound/runtime/instruments/guitar/Fn4.ogg
similarity index 100%
rename from sound/instruments/guitar/Fn4.ogg
rename to sound/runtime/instruments/guitar/Fn4.ogg
diff --git a/sound/instruments/guitar/Fn5.ogg b/sound/runtime/instruments/guitar/Fn5.ogg
similarity index 100%
rename from sound/instruments/guitar/Fn5.ogg
rename to sound/runtime/instruments/guitar/Fn5.ogg
diff --git a/sound/instruments/guitar/Fn6.ogg b/sound/runtime/instruments/guitar/Fn6.ogg
similarity index 100%
rename from sound/instruments/guitar/Fn6.ogg
rename to sound/runtime/instruments/guitar/Fn6.ogg
diff --git a/sound/instruments/guitar/Gb3.ogg b/sound/runtime/instruments/guitar/Gb3.ogg
similarity index 100%
rename from sound/instruments/guitar/Gb3.ogg
rename to sound/runtime/instruments/guitar/Gb3.ogg
diff --git a/sound/instruments/guitar/Gb4.ogg b/sound/runtime/instruments/guitar/Gb4.ogg
similarity index 100%
rename from sound/instruments/guitar/Gb4.ogg
rename to sound/runtime/instruments/guitar/Gb4.ogg
diff --git a/sound/instruments/guitar/Gb5.ogg b/sound/runtime/instruments/guitar/Gb5.ogg
similarity index 100%
rename from sound/instruments/guitar/Gb5.ogg
rename to sound/runtime/instruments/guitar/Gb5.ogg
diff --git a/sound/instruments/guitar/Gb6.ogg b/sound/runtime/instruments/guitar/Gb6.ogg
similarity index 100%
rename from sound/instruments/guitar/Gb6.ogg
rename to sound/runtime/instruments/guitar/Gb6.ogg
diff --git a/sound/instruments/guitar/Gn3.ogg b/sound/runtime/instruments/guitar/Gn3.ogg
similarity index 100%
rename from sound/instruments/guitar/Gn3.ogg
rename to sound/runtime/instruments/guitar/Gn3.ogg
diff --git a/sound/instruments/guitar/Gn4.ogg b/sound/runtime/instruments/guitar/Gn4.ogg
similarity index 100%
rename from sound/instruments/guitar/Gn4.ogg
rename to sound/runtime/instruments/guitar/Gn4.ogg
diff --git a/sound/instruments/guitar/Gn5.ogg b/sound/runtime/instruments/guitar/Gn5.ogg
similarity index 100%
rename from sound/instruments/guitar/Gn5.ogg
rename to sound/runtime/instruments/guitar/Gn5.ogg
diff --git a/sound/instruments/guitar/Gn6.ogg b/sound/runtime/instruments/guitar/Gn6.ogg
similarity index 100%
rename from sound/instruments/guitar/Gn6.ogg
rename to sound/runtime/instruments/guitar/Gn6.ogg
diff --git a/sound/instruments/harmonica/Ab2.mid b/sound/runtime/instruments/harmonica/Ab2.mid
similarity index 100%
rename from sound/instruments/harmonica/Ab2.mid
rename to sound/runtime/instruments/harmonica/Ab2.mid
diff --git a/sound/instruments/harmonica/Ab3.mid b/sound/runtime/instruments/harmonica/Ab3.mid
similarity index 100%
rename from sound/instruments/harmonica/Ab3.mid
rename to sound/runtime/instruments/harmonica/Ab3.mid
diff --git a/sound/instruments/harmonica/Ab4.mid b/sound/runtime/instruments/harmonica/Ab4.mid
similarity index 100%
rename from sound/instruments/harmonica/Ab4.mid
rename to sound/runtime/instruments/harmonica/Ab4.mid
diff --git a/sound/instruments/harmonica/Ab5.mid b/sound/runtime/instruments/harmonica/Ab5.mid
similarity index 100%
rename from sound/instruments/harmonica/Ab5.mid
rename to sound/runtime/instruments/harmonica/Ab5.mid
diff --git a/sound/instruments/harmonica/Ab6.mid b/sound/runtime/instruments/harmonica/Ab6.mid
similarity index 100%
rename from sound/instruments/harmonica/Ab6.mid
rename to sound/runtime/instruments/harmonica/Ab6.mid
diff --git a/sound/instruments/harmonica/An2.mid b/sound/runtime/instruments/harmonica/An2.mid
similarity index 100%
rename from sound/instruments/harmonica/An2.mid
rename to sound/runtime/instruments/harmonica/An2.mid
diff --git a/sound/instruments/harmonica/An3.mid b/sound/runtime/instruments/harmonica/An3.mid
similarity index 100%
rename from sound/instruments/harmonica/An3.mid
rename to sound/runtime/instruments/harmonica/An3.mid
diff --git a/sound/instruments/harmonica/An4.mid b/sound/runtime/instruments/harmonica/An4.mid
similarity index 100%
rename from sound/instruments/harmonica/An4.mid
rename to sound/runtime/instruments/harmonica/An4.mid
diff --git a/sound/instruments/harmonica/An5.mid b/sound/runtime/instruments/harmonica/An5.mid
similarity index 100%
rename from sound/instruments/harmonica/An5.mid
rename to sound/runtime/instruments/harmonica/An5.mid
diff --git a/sound/instruments/harmonica/An6.mid b/sound/runtime/instruments/harmonica/An6.mid
similarity index 100%
rename from sound/instruments/harmonica/An6.mid
rename to sound/runtime/instruments/harmonica/An6.mid
diff --git a/sound/instruments/harmonica/Bb2.mid b/sound/runtime/instruments/harmonica/Bb2.mid
similarity index 100%
rename from sound/instruments/harmonica/Bb2.mid
rename to sound/runtime/instruments/harmonica/Bb2.mid
diff --git a/sound/instruments/harmonica/Bb3.mid b/sound/runtime/instruments/harmonica/Bb3.mid
similarity index 100%
rename from sound/instruments/harmonica/Bb3.mid
rename to sound/runtime/instruments/harmonica/Bb3.mid
diff --git a/sound/instruments/harmonica/Bb4.mid b/sound/runtime/instruments/harmonica/Bb4.mid
similarity index 100%
rename from sound/instruments/harmonica/Bb4.mid
rename to sound/runtime/instruments/harmonica/Bb4.mid
diff --git a/sound/instruments/harmonica/Bb5.mid b/sound/runtime/instruments/harmonica/Bb5.mid
similarity index 100%
rename from sound/instruments/harmonica/Bb5.mid
rename to sound/runtime/instruments/harmonica/Bb5.mid
diff --git a/sound/instruments/harmonica/Bb6.mid b/sound/runtime/instruments/harmonica/Bb6.mid
similarity index 100%
rename from sound/instruments/harmonica/Bb6.mid
rename to sound/runtime/instruments/harmonica/Bb6.mid
diff --git a/sound/instruments/harmonica/Bn2.mid b/sound/runtime/instruments/harmonica/Bn2.mid
similarity index 100%
rename from sound/instruments/harmonica/Bn2.mid
rename to sound/runtime/instruments/harmonica/Bn2.mid
diff --git a/sound/instruments/harmonica/Bn3.mid b/sound/runtime/instruments/harmonica/Bn3.mid
similarity index 100%
rename from sound/instruments/harmonica/Bn3.mid
rename to sound/runtime/instruments/harmonica/Bn3.mid
diff --git a/sound/instruments/harmonica/Bn4.mid b/sound/runtime/instruments/harmonica/Bn4.mid
similarity index 100%
rename from sound/instruments/harmonica/Bn4.mid
rename to sound/runtime/instruments/harmonica/Bn4.mid
diff --git a/sound/instruments/harmonica/Bn5.mid b/sound/runtime/instruments/harmonica/Bn5.mid
similarity index 100%
rename from sound/instruments/harmonica/Bn5.mid
rename to sound/runtime/instruments/harmonica/Bn5.mid
diff --git a/sound/instruments/harmonica/Bn6.mid b/sound/runtime/instruments/harmonica/Bn6.mid
similarity index 100%
rename from sound/instruments/harmonica/Bn6.mid
rename to sound/runtime/instruments/harmonica/Bn6.mid
diff --git a/sound/instruments/harmonica/Cn2.mid b/sound/runtime/instruments/harmonica/Cn2.mid
similarity index 100%
rename from sound/instruments/harmonica/Cn2.mid
rename to sound/runtime/instruments/harmonica/Cn2.mid
diff --git a/sound/instruments/harmonica/Cn3.mid b/sound/runtime/instruments/harmonica/Cn3.mid
similarity index 100%
rename from sound/instruments/harmonica/Cn3.mid
rename to sound/runtime/instruments/harmonica/Cn3.mid
diff --git a/sound/instruments/harmonica/Cn4.mid b/sound/runtime/instruments/harmonica/Cn4.mid
similarity index 100%
rename from sound/instruments/harmonica/Cn4.mid
rename to sound/runtime/instruments/harmonica/Cn4.mid
diff --git a/sound/instruments/harmonica/Cn5.mid b/sound/runtime/instruments/harmonica/Cn5.mid
similarity index 100%
rename from sound/instruments/harmonica/Cn5.mid
rename to sound/runtime/instruments/harmonica/Cn5.mid
diff --git a/sound/instruments/harmonica/Cn6.mid b/sound/runtime/instruments/harmonica/Cn6.mid
similarity index 100%
rename from sound/instruments/harmonica/Cn6.mid
rename to sound/runtime/instruments/harmonica/Cn6.mid
diff --git a/sound/instruments/harmonica/Cn7.mid b/sound/runtime/instruments/harmonica/Cn7.mid
similarity index 100%
rename from sound/instruments/harmonica/Cn7.mid
rename to sound/runtime/instruments/harmonica/Cn7.mid
diff --git a/sound/instruments/harmonica/Db2.mid b/sound/runtime/instruments/harmonica/Db2.mid
similarity index 100%
rename from sound/instruments/harmonica/Db2.mid
rename to sound/runtime/instruments/harmonica/Db2.mid
diff --git a/sound/instruments/harmonica/Db3.mid b/sound/runtime/instruments/harmonica/Db3.mid
similarity index 100%
rename from sound/instruments/harmonica/Db3.mid
rename to sound/runtime/instruments/harmonica/Db3.mid
diff --git a/sound/instruments/harmonica/Db4.mid b/sound/runtime/instruments/harmonica/Db4.mid
similarity index 100%
rename from sound/instruments/harmonica/Db4.mid
rename to sound/runtime/instruments/harmonica/Db4.mid
diff --git a/sound/instruments/harmonica/Db5.mid b/sound/runtime/instruments/harmonica/Db5.mid
similarity index 100%
rename from sound/instruments/harmonica/Db5.mid
rename to sound/runtime/instruments/harmonica/Db5.mid
diff --git a/sound/instruments/harmonica/Db6.mid b/sound/runtime/instruments/harmonica/Db6.mid
similarity index 100%
rename from sound/instruments/harmonica/Db6.mid
rename to sound/runtime/instruments/harmonica/Db6.mid
diff --git a/sound/instruments/harmonica/Dn2.mid b/sound/runtime/instruments/harmonica/Dn2.mid
similarity index 100%
rename from sound/instruments/harmonica/Dn2.mid
rename to sound/runtime/instruments/harmonica/Dn2.mid
diff --git a/sound/instruments/harmonica/Dn3.mid b/sound/runtime/instruments/harmonica/Dn3.mid
similarity index 100%
rename from sound/instruments/harmonica/Dn3.mid
rename to sound/runtime/instruments/harmonica/Dn3.mid
diff --git a/sound/instruments/harmonica/Dn4.mid b/sound/runtime/instruments/harmonica/Dn4.mid
similarity index 100%
rename from sound/instruments/harmonica/Dn4.mid
rename to sound/runtime/instruments/harmonica/Dn4.mid
diff --git a/sound/instruments/harmonica/Dn5.mid b/sound/runtime/instruments/harmonica/Dn5.mid
similarity index 100%
rename from sound/instruments/harmonica/Dn5.mid
rename to sound/runtime/instruments/harmonica/Dn5.mid
diff --git a/sound/instruments/harmonica/Dn6.mid b/sound/runtime/instruments/harmonica/Dn6.mid
similarity index 100%
rename from sound/instruments/harmonica/Dn6.mid
rename to sound/runtime/instruments/harmonica/Dn6.mid
diff --git a/sound/instruments/harmonica/Eb2.mid b/sound/runtime/instruments/harmonica/Eb2.mid
similarity index 100%
rename from sound/instruments/harmonica/Eb2.mid
rename to sound/runtime/instruments/harmonica/Eb2.mid
diff --git a/sound/instruments/harmonica/Eb3.mid b/sound/runtime/instruments/harmonica/Eb3.mid
similarity index 100%
rename from sound/instruments/harmonica/Eb3.mid
rename to sound/runtime/instruments/harmonica/Eb3.mid
diff --git a/sound/instruments/harmonica/Eb4.mid b/sound/runtime/instruments/harmonica/Eb4.mid
similarity index 100%
rename from sound/instruments/harmonica/Eb4.mid
rename to sound/runtime/instruments/harmonica/Eb4.mid
diff --git a/sound/instruments/harmonica/Eb5.mid b/sound/runtime/instruments/harmonica/Eb5.mid
similarity index 100%
rename from sound/instruments/harmonica/Eb5.mid
rename to sound/runtime/instruments/harmonica/Eb5.mid
diff --git a/sound/instruments/harmonica/Eb6.mid b/sound/runtime/instruments/harmonica/Eb6.mid
similarity index 100%
rename from sound/instruments/harmonica/Eb6.mid
rename to sound/runtime/instruments/harmonica/Eb6.mid
diff --git a/sound/instruments/harmonica/En2.mid b/sound/runtime/instruments/harmonica/En2.mid
similarity index 100%
rename from sound/instruments/harmonica/En2.mid
rename to sound/runtime/instruments/harmonica/En2.mid
diff --git a/sound/instruments/harmonica/En3.mid b/sound/runtime/instruments/harmonica/En3.mid
similarity index 100%
rename from sound/instruments/harmonica/En3.mid
rename to sound/runtime/instruments/harmonica/En3.mid
diff --git a/sound/instruments/harmonica/En4.mid b/sound/runtime/instruments/harmonica/En4.mid
similarity index 100%
rename from sound/instruments/harmonica/En4.mid
rename to sound/runtime/instruments/harmonica/En4.mid
diff --git a/sound/instruments/harmonica/En5.mid b/sound/runtime/instruments/harmonica/En5.mid
similarity index 100%
rename from sound/instruments/harmonica/En5.mid
rename to sound/runtime/instruments/harmonica/En5.mid
diff --git a/sound/instruments/harmonica/En6.mid b/sound/runtime/instruments/harmonica/En6.mid
similarity index 100%
rename from sound/instruments/harmonica/En6.mid
rename to sound/runtime/instruments/harmonica/En6.mid
diff --git a/sound/instruments/harmonica/Fn2.mid b/sound/runtime/instruments/harmonica/Fn2.mid
similarity index 100%
rename from sound/instruments/harmonica/Fn2.mid
rename to sound/runtime/instruments/harmonica/Fn2.mid
diff --git a/sound/instruments/harmonica/Fn3.mid b/sound/runtime/instruments/harmonica/Fn3.mid
similarity index 100%
rename from sound/instruments/harmonica/Fn3.mid
rename to sound/runtime/instruments/harmonica/Fn3.mid
diff --git a/sound/instruments/harmonica/Fn4.mid b/sound/runtime/instruments/harmonica/Fn4.mid
similarity index 100%
rename from sound/instruments/harmonica/Fn4.mid
rename to sound/runtime/instruments/harmonica/Fn4.mid
diff --git a/sound/instruments/harmonica/Fn5.mid b/sound/runtime/instruments/harmonica/Fn5.mid
similarity index 100%
rename from sound/instruments/harmonica/Fn5.mid
rename to sound/runtime/instruments/harmonica/Fn5.mid
diff --git a/sound/instruments/harmonica/Fn6.mid b/sound/runtime/instruments/harmonica/Fn6.mid
similarity index 100%
rename from sound/instruments/harmonica/Fn6.mid
rename to sound/runtime/instruments/harmonica/Fn6.mid
diff --git a/sound/instruments/harmonica/Gb2.mid b/sound/runtime/instruments/harmonica/Gb2.mid
similarity index 100%
rename from sound/instruments/harmonica/Gb2.mid
rename to sound/runtime/instruments/harmonica/Gb2.mid
diff --git a/sound/instruments/harmonica/Gb3.mid b/sound/runtime/instruments/harmonica/Gb3.mid
similarity index 100%
rename from sound/instruments/harmonica/Gb3.mid
rename to sound/runtime/instruments/harmonica/Gb3.mid
diff --git a/sound/instruments/harmonica/Gb4.mid b/sound/runtime/instruments/harmonica/Gb4.mid
similarity index 100%
rename from sound/instruments/harmonica/Gb4.mid
rename to sound/runtime/instruments/harmonica/Gb4.mid
diff --git a/sound/instruments/harmonica/Gb5.mid b/sound/runtime/instruments/harmonica/Gb5.mid
similarity index 100%
rename from sound/instruments/harmonica/Gb5.mid
rename to sound/runtime/instruments/harmonica/Gb5.mid
diff --git a/sound/instruments/harmonica/Gb6.mid b/sound/runtime/instruments/harmonica/Gb6.mid
similarity index 100%
rename from sound/instruments/harmonica/Gb6.mid
rename to sound/runtime/instruments/harmonica/Gb6.mid
diff --git a/sound/instruments/harmonica/Gn2.mid b/sound/runtime/instruments/harmonica/Gn2.mid
similarity index 100%
rename from sound/instruments/harmonica/Gn2.mid
rename to sound/runtime/instruments/harmonica/Gn2.mid
diff --git a/sound/instruments/harmonica/Gn3.mid b/sound/runtime/instruments/harmonica/Gn3.mid
similarity index 100%
rename from sound/instruments/harmonica/Gn3.mid
rename to sound/runtime/instruments/harmonica/Gn3.mid
diff --git a/sound/instruments/harmonica/Gn4.mid b/sound/runtime/instruments/harmonica/Gn4.mid
similarity index 100%
rename from sound/instruments/harmonica/Gn4.mid
rename to sound/runtime/instruments/harmonica/Gn4.mid
diff --git a/sound/instruments/harmonica/Gn5.mid b/sound/runtime/instruments/harmonica/Gn5.mid
similarity index 100%
rename from sound/instruments/harmonica/Gn5.mid
rename to sound/runtime/instruments/harmonica/Gn5.mid
diff --git a/sound/instruments/harmonica/Gn6.mid b/sound/runtime/instruments/harmonica/Gn6.mid
similarity index 100%
rename from sound/instruments/harmonica/Gn6.mid
rename to sound/runtime/instruments/harmonica/Gn6.mid
diff --git a/sound/instruments/piano/Ab2.ogg b/sound/runtime/instruments/piano/Ab2.ogg
similarity index 100%
rename from sound/instruments/piano/Ab2.ogg
rename to sound/runtime/instruments/piano/Ab2.ogg
diff --git a/sound/instruments/piano/Ab3.ogg b/sound/runtime/instruments/piano/Ab3.ogg
similarity index 100%
rename from sound/instruments/piano/Ab3.ogg
rename to sound/runtime/instruments/piano/Ab3.ogg
diff --git a/sound/instruments/piano/Ab4.ogg b/sound/runtime/instruments/piano/Ab4.ogg
similarity index 100%
rename from sound/instruments/piano/Ab4.ogg
rename to sound/runtime/instruments/piano/Ab4.ogg
diff --git a/sound/instruments/piano/Ab5.ogg b/sound/runtime/instruments/piano/Ab5.ogg
similarity index 100%
rename from sound/instruments/piano/Ab5.ogg
rename to sound/runtime/instruments/piano/Ab5.ogg
diff --git a/sound/instruments/piano/Ab6.ogg b/sound/runtime/instruments/piano/Ab6.ogg
similarity index 100%
rename from sound/instruments/piano/Ab6.ogg
rename to sound/runtime/instruments/piano/Ab6.ogg
diff --git a/sound/instruments/piano/Ab7.ogg b/sound/runtime/instruments/piano/Ab7.ogg
similarity index 100%
rename from sound/instruments/piano/Ab7.ogg
rename to sound/runtime/instruments/piano/Ab7.ogg
diff --git a/sound/instruments/piano/Ab8.ogg b/sound/runtime/instruments/piano/Ab8.ogg
similarity index 100%
rename from sound/instruments/piano/Ab8.ogg
rename to sound/runtime/instruments/piano/Ab8.ogg
diff --git a/sound/instruments/piano/An1.ogg b/sound/runtime/instruments/piano/An1.ogg
similarity index 100%
rename from sound/instruments/piano/An1.ogg
rename to sound/runtime/instruments/piano/An1.ogg
diff --git a/sound/instruments/piano/An2.ogg b/sound/runtime/instruments/piano/An2.ogg
similarity index 100%
rename from sound/instruments/piano/An2.ogg
rename to sound/runtime/instruments/piano/An2.ogg
diff --git a/sound/instruments/piano/An3.ogg b/sound/runtime/instruments/piano/An3.ogg
similarity index 100%
rename from sound/instruments/piano/An3.ogg
rename to sound/runtime/instruments/piano/An3.ogg
diff --git a/sound/instruments/piano/An4.ogg b/sound/runtime/instruments/piano/An4.ogg
similarity index 100%
rename from sound/instruments/piano/An4.ogg
rename to sound/runtime/instruments/piano/An4.ogg
diff --git a/sound/instruments/piano/An5.ogg b/sound/runtime/instruments/piano/An5.ogg
similarity index 100%
rename from sound/instruments/piano/An5.ogg
rename to sound/runtime/instruments/piano/An5.ogg
diff --git a/sound/instruments/piano/An6.ogg b/sound/runtime/instruments/piano/An6.ogg
similarity index 100%
rename from sound/instruments/piano/An6.ogg
rename to sound/runtime/instruments/piano/An6.ogg
diff --git a/sound/instruments/piano/An7.ogg b/sound/runtime/instruments/piano/An7.ogg
similarity index 100%
rename from sound/instruments/piano/An7.ogg
rename to sound/runtime/instruments/piano/An7.ogg
diff --git a/sound/instruments/piano/An8.ogg b/sound/runtime/instruments/piano/An8.ogg
similarity index 100%
rename from sound/instruments/piano/An8.ogg
rename to sound/runtime/instruments/piano/An8.ogg
diff --git a/sound/instruments/piano/Bb1.ogg b/sound/runtime/instruments/piano/Bb1.ogg
similarity index 100%
rename from sound/instruments/piano/Bb1.ogg
rename to sound/runtime/instruments/piano/Bb1.ogg
diff --git a/sound/instruments/piano/Bb2.ogg b/sound/runtime/instruments/piano/Bb2.ogg
similarity index 100%
rename from sound/instruments/piano/Bb2.ogg
rename to sound/runtime/instruments/piano/Bb2.ogg
diff --git a/sound/instruments/piano/Bb3.ogg b/sound/runtime/instruments/piano/Bb3.ogg
similarity index 100%
rename from sound/instruments/piano/Bb3.ogg
rename to sound/runtime/instruments/piano/Bb3.ogg
diff --git a/sound/instruments/piano/Bb4.ogg b/sound/runtime/instruments/piano/Bb4.ogg
similarity index 100%
rename from sound/instruments/piano/Bb4.ogg
rename to sound/runtime/instruments/piano/Bb4.ogg
diff --git a/sound/instruments/piano/Bb5.ogg b/sound/runtime/instruments/piano/Bb5.ogg
similarity index 100%
rename from sound/instruments/piano/Bb5.ogg
rename to sound/runtime/instruments/piano/Bb5.ogg
diff --git a/sound/instruments/piano/Bb6.ogg b/sound/runtime/instruments/piano/Bb6.ogg
similarity index 100%
rename from sound/instruments/piano/Bb6.ogg
rename to sound/runtime/instruments/piano/Bb6.ogg
diff --git a/sound/instruments/piano/Bb7.ogg b/sound/runtime/instruments/piano/Bb7.ogg
similarity index 100%
rename from sound/instruments/piano/Bb7.ogg
rename to sound/runtime/instruments/piano/Bb7.ogg
diff --git a/sound/instruments/piano/Bb8.ogg b/sound/runtime/instruments/piano/Bb8.ogg
similarity index 100%
rename from sound/instruments/piano/Bb8.ogg
rename to sound/runtime/instruments/piano/Bb8.ogg
diff --git a/sound/instruments/piano/Bn1.ogg b/sound/runtime/instruments/piano/Bn1.ogg
similarity index 100%
rename from sound/instruments/piano/Bn1.ogg
rename to sound/runtime/instruments/piano/Bn1.ogg
diff --git a/sound/instruments/piano/Bn2.ogg b/sound/runtime/instruments/piano/Bn2.ogg
similarity index 100%
rename from sound/instruments/piano/Bn2.ogg
rename to sound/runtime/instruments/piano/Bn2.ogg
diff --git a/sound/instruments/piano/Bn3.ogg b/sound/runtime/instruments/piano/Bn3.ogg
similarity index 100%
rename from sound/instruments/piano/Bn3.ogg
rename to sound/runtime/instruments/piano/Bn3.ogg
diff --git a/sound/instruments/piano/Bn4.ogg b/sound/runtime/instruments/piano/Bn4.ogg
similarity index 100%
rename from sound/instruments/piano/Bn4.ogg
rename to sound/runtime/instruments/piano/Bn4.ogg
diff --git a/sound/instruments/piano/Bn5.ogg b/sound/runtime/instruments/piano/Bn5.ogg
similarity index 100%
rename from sound/instruments/piano/Bn5.ogg
rename to sound/runtime/instruments/piano/Bn5.ogg
diff --git a/sound/instruments/piano/Bn6.ogg b/sound/runtime/instruments/piano/Bn6.ogg
similarity index 100%
rename from sound/instruments/piano/Bn6.ogg
rename to sound/runtime/instruments/piano/Bn6.ogg
diff --git a/sound/instruments/piano/Bn7.ogg b/sound/runtime/instruments/piano/Bn7.ogg
similarity index 100%
rename from sound/instruments/piano/Bn7.ogg
rename to sound/runtime/instruments/piano/Bn7.ogg
diff --git a/sound/instruments/piano/Bn8.ogg b/sound/runtime/instruments/piano/Bn8.ogg
similarity index 100%
rename from sound/instruments/piano/Bn8.ogg
rename to sound/runtime/instruments/piano/Bn8.ogg
diff --git a/sound/instruments/piano/Cn2.ogg b/sound/runtime/instruments/piano/Cn2.ogg
similarity index 100%
rename from sound/instruments/piano/Cn2.ogg
rename to sound/runtime/instruments/piano/Cn2.ogg
diff --git a/sound/instruments/piano/Cn3.ogg b/sound/runtime/instruments/piano/Cn3.ogg
similarity index 100%
rename from sound/instruments/piano/Cn3.ogg
rename to sound/runtime/instruments/piano/Cn3.ogg
diff --git a/sound/instruments/piano/Cn4.ogg b/sound/runtime/instruments/piano/Cn4.ogg
similarity index 100%
rename from sound/instruments/piano/Cn4.ogg
rename to sound/runtime/instruments/piano/Cn4.ogg
diff --git a/sound/instruments/piano/Cn5.ogg b/sound/runtime/instruments/piano/Cn5.ogg
similarity index 100%
rename from sound/instruments/piano/Cn5.ogg
rename to sound/runtime/instruments/piano/Cn5.ogg
diff --git a/sound/instruments/piano/Cn6.ogg b/sound/runtime/instruments/piano/Cn6.ogg
similarity index 100%
rename from sound/instruments/piano/Cn6.ogg
rename to sound/runtime/instruments/piano/Cn6.ogg
diff --git a/sound/instruments/piano/Cn7.ogg b/sound/runtime/instruments/piano/Cn7.ogg
similarity index 100%
rename from sound/instruments/piano/Cn7.ogg
rename to sound/runtime/instruments/piano/Cn7.ogg
diff --git a/sound/instruments/piano/Cn8.ogg b/sound/runtime/instruments/piano/Cn8.ogg
similarity index 100%
rename from sound/instruments/piano/Cn8.ogg
rename to sound/runtime/instruments/piano/Cn8.ogg
diff --git a/sound/instruments/piano/Cn9.ogg b/sound/runtime/instruments/piano/Cn9.ogg
similarity index 100%
rename from sound/instruments/piano/Cn9.ogg
rename to sound/runtime/instruments/piano/Cn9.ogg
diff --git a/sound/instruments/piano/Db2.ogg b/sound/runtime/instruments/piano/Db2.ogg
similarity index 100%
rename from sound/instruments/piano/Db2.ogg
rename to sound/runtime/instruments/piano/Db2.ogg
diff --git a/sound/instruments/piano/Db3.ogg b/sound/runtime/instruments/piano/Db3.ogg
similarity index 100%
rename from sound/instruments/piano/Db3.ogg
rename to sound/runtime/instruments/piano/Db3.ogg
diff --git a/sound/instruments/piano/Db4.ogg b/sound/runtime/instruments/piano/Db4.ogg
similarity index 100%
rename from sound/instruments/piano/Db4.ogg
rename to sound/runtime/instruments/piano/Db4.ogg
diff --git a/sound/instruments/piano/Db5.ogg b/sound/runtime/instruments/piano/Db5.ogg
similarity index 100%
rename from sound/instruments/piano/Db5.ogg
rename to sound/runtime/instruments/piano/Db5.ogg
diff --git a/sound/instruments/piano/Db6.ogg b/sound/runtime/instruments/piano/Db6.ogg
similarity index 100%
rename from sound/instruments/piano/Db6.ogg
rename to sound/runtime/instruments/piano/Db6.ogg
diff --git a/sound/instruments/piano/Db7.ogg b/sound/runtime/instruments/piano/Db7.ogg
similarity index 100%
rename from sound/instruments/piano/Db7.ogg
rename to sound/runtime/instruments/piano/Db7.ogg
diff --git a/sound/instruments/piano/Db8.ogg b/sound/runtime/instruments/piano/Db8.ogg
similarity index 100%
rename from sound/instruments/piano/Db8.ogg
rename to sound/runtime/instruments/piano/Db8.ogg
diff --git a/sound/instruments/piano/Dn2.ogg b/sound/runtime/instruments/piano/Dn2.ogg
similarity index 100%
rename from sound/instruments/piano/Dn2.ogg
rename to sound/runtime/instruments/piano/Dn2.ogg
diff --git a/sound/instruments/piano/Dn3.ogg b/sound/runtime/instruments/piano/Dn3.ogg
similarity index 100%
rename from sound/instruments/piano/Dn3.ogg
rename to sound/runtime/instruments/piano/Dn3.ogg
diff --git a/sound/instruments/piano/Dn4.ogg b/sound/runtime/instruments/piano/Dn4.ogg
similarity index 100%
rename from sound/instruments/piano/Dn4.ogg
rename to sound/runtime/instruments/piano/Dn4.ogg
diff --git a/sound/instruments/piano/Dn5.ogg b/sound/runtime/instruments/piano/Dn5.ogg
similarity index 100%
rename from sound/instruments/piano/Dn5.ogg
rename to sound/runtime/instruments/piano/Dn5.ogg
diff --git a/sound/instruments/piano/Dn6.ogg b/sound/runtime/instruments/piano/Dn6.ogg
similarity index 100%
rename from sound/instruments/piano/Dn6.ogg
rename to sound/runtime/instruments/piano/Dn6.ogg
diff --git a/sound/instruments/piano/Dn7.ogg b/sound/runtime/instruments/piano/Dn7.ogg
similarity index 100%
rename from sound/instruments/piano/Dn7.ogg
rename to sound/runtime/instruments/piano/Dn7.ogg
diff --git a/sound/instruments/piano/Dn8.ogg b/sound/runtime/instruments/piano/Dn8.ogg
similarity index 100%
rename from sound/instruments/piano/Dn8.ogg
rename to sound/runtime/instruments/piano/Dn8.ogg
diff --git a/sound/instruments/piano/Eb2.ogg b/sound/runtime/instruments/piano/Eb2.ogg
similarity index 100%
rename from sound/instruments/piano/Eb2.ogg
rename to sound/runtime/instruments/piano/Eb2.ogg
diff --git a/sound/instruments/piano/Eb3.ogg b/sound/runtime/instruments/piano/Eb3.ogg
similarity index 100%
rename from sound/instruments/piano/Eb3.ogg
rename to sound/runtime/instruments/piano/Eb3.ogg
diff --git a/sound/instruments/piano/Eb4.ogg b/sound/runtime/instruments/piano/Eb4.ogg
similarity index 100%
rename from sound/instruments/piano/Eb4.ogg
rename to sound/runtime/instruments/piano/Eb4.ogg
diff --git a/sound/instruments/piano/Eb5.ogg b/sound/runtime/instruments/piano/Eb5.ogg
similarity index 100%
rename from sound/instruments/piano/Eb5.ogg
rename to sound/runtime/instruments/piano/Eb5.ogg
diff --git a/sound/instruments/piano/Eb6.ogg b/sound/runtime/instruments/piano/Eb6.ogg
similarity index 100%
rename from sound/instruments/piano/Eb6.ogg
rename to sound/runtime/instruments/piano/Eb6.ogg
diff --git a/sound/instruments/piano/Eb7.ogg b/sound/runtime/instruments/piano/Eb7.ogg
similarity index 100%
rename from sound/instruments/piano/Eb7.ogg
rename to sound/runtime/instruments/piano/Eb7.ogg
diff --git a/sound/instruments/piano/Eb8.ogg b/sound/runtime/instruments/piano/Eb8.ogg
similarity index 100%
rename from sound/instruments/piano/Eb8.ogg
rename to sound/runtime/instruments/piano/Eb8.ogg
diff --git a/sound/instruments/piano/En2.ogg b/sound/runtime/instruments/piano/En2.ogg
similarity index 100%
rename from sound/instruments/piano/En2.ogg
rename to sound/runtime/instruments/piano/En2.ogg
diff --git a/sound/instruments/piano/En3.ogg b/sound/runtime/instruments/piano/En3.ogg
similarity index 100%
rename from sound/instruments/piano/En3.ogg
rename to sound/runtime/instruments/piano/En3.ogg
diff --git a/sound/instruments/piano/En4.ogg b/sound/runtime/instruments/piano/En4.ogg
similarity index 100%
rename from sound/instruments/piano/En4.ogg
rename to sound/runtime/instruments/piano/En4.ogg
diff --git a/sound/instruments/piano/En5.ogg b/sound/runtime/instruments/piano/En5.ogg
similarity index 100%
rename from sound/instruments/piano/En5.ogg
rename to sound/runtime/instruments/piano/En5.ogg
diff --git a/sound/instruments/piano/En6.ogg b/sound/runtime/instruments/piano/En6.ogg
similarity index 100%
rename from sound/instruments/piano/En6.ogg
rename to sound/runtime/instruments/piano/En6.ogg
diff --git a/sound/instruments/piano/En7.ogg b/sound/runtime/instruments/piano/En7.ogg
similarity index 100%
rename from sound/instruments/piano/En7.ogg
rename to sound/runtime/instruments/piano/En7.ogg
diff --git a/sound/instruments/piano/En8.ogg b/sound/runtime/instruments/piano/En8.ogg
similarity index 100%
rename from sound/instruments/piano/En8.ogg
rename to sound/runtime/instruments/piano/En8.ogg
diff --git a/sound/instruments/piano/Fn2.ogg b/sound/runtime/instruments/piano/Fn2.ogg
similarity index 100%
rename from sound/instruments/piano/Fn2.ogg
rename to sound/runtime/instruments/piano/Fn2.ogg
diff --git a/sound/instruments/piano/Fn3.ogg b/sound/runtime/instruments/piano/Fn3.ogg
similarity index 100%
rename from sound/instruments/piano/Fn3.ogg
rename to sound/runtime/instruments/piano/Fn3.ogg
diff --git a/sound/instruments/piano/Fn4.ogg b/sound/runtime/instruments/piano/Fn4.ogg
similarity index 100%
rename from sound/instruments/piano/Fn4.ogg
rename to sound/runtime/instruments/piano/Fn4.ogg
diff --git a/sound/instruments/piano/Fn5.ogg b/sound/runtime/instruments/piano/Fn5.ogg
similarity index 100%
rename from sound/instruments/piano/Fn5.ogg
rename to sound/runtime/instruments/piano/Fn5.ogg
diff --git a/sound/instruments/piano/Fn6.ogg b/sound/runtime/instruments/piano/Fn6.ogg
similarity index 100%
rename from sound/instruments/piano/Fn6.ogg
rename to sound/runtime/instruments/piano/Fn6.ogg
diff --git a/sound/instruments/piano/Fn7.ogg b/sound/runtime/instruments/piano/Fn7.ogg
similarity index 100%
rename from sound/instruments/piano/Fn7.ogg
rename to sound/runtime/instruments/piano/Fn7.ogg
diff --git a/sound/instruments/piano/Fn8.ogg b/sound/runtime/instruments/piano/Fn8.ogg
similarity index 100%
rename from sound/instruments/piano/Fn8.ogg
rename to sound/runtime/instruments/piano/Fn8.ogg
diff --git a/sound/instruments/piano/Gb2.ogg b/sound/runtime/instruments/piano/Gb2.ogg
similarity index 100%
rename from sound/instruments/piano/Gb2.ogg
rename to sound/runtime/instruments/piano/Gb2.ogg
diff --git a/sound/instruments/piano/Gb3.ogg b/sound/runtime/instruments/piano/Gb3.ogg
similarity index 100%
rename from sound/instruments/piano/Gb3.ogg
rename to sound/runtime/instruments/piano/Gb3.ogg
diff --git a/sound/instruments/piano/Gb4.ogg b/sound/runtime/instruments/piano/Gb4.ogg
similarity index 100%
rename from sound/instruments/piano/Gb4.ogg
rename to sound/runtime/instruments/piano/Gb4.ogg
diff --git a/sound/instruments/piano/Gb5.ogg b/sound/runtime/instruments/piano/Gb5.ogg
similarity index 100%
rename from sound/instruments/piano/Gb5.ogg
rename to sound/runtime/instruments/piano/Gb5.ogg
diff --git a/sound/instruments/piano/Gb6.ogg b/sound/runtime/instruments/piano/Gb6.ogg
similarity index 100%
rename from sound/instruments/piano/Gb6.ogg
rename to sound/runtime/instruments/piano/Gb6.ogg
diff --git a/sound/instruments/piano/Gb7.ogg b/sound/runtime/instruments/piano/Gb7.ogg
similarity index 100%
rename from sound/instruments/piano/Gb7.ogg
rename to sound/runtime/instruments/piano/Gb7.ogg
diff --git a/sound/instruments/piano/Gb8.ogg b/sound/runtime/instruments/piano/Gb8.ogg
similarity index 100%
rename from sound/instruments/piano/Gb8.ogg
rename to sound/runtime/instruments/piano/Gb8.ogg
diff --git a/sound/instruments/piano/Gn2.ogg b/sound/runtime/instruments/piano/Gn2.ogg
similarity index 100%
rename from sound/instruments/piano/Gn2.ogg
rename to sound/runtime/instruments/piano/Gn2.ogg
diff --git a/sound/instruments/piano/Gn3.ogg b/sound/runtime/instruments/piano/Gn3.ogg
similarity index 100%
rename from sound/instruments/piano/Gn3.ogg
rename to sound/runtime/instruments/piano/Gn3.ogg
diff --git a/sound/instruments/piano/Gn4.ogg b/sound/runtime/instruments/piano/Gn4.ogg
similarity index 100%
rename from sound/instruments/piano/Gn4.ogg
rename to sound/runtime/instruments/piano/Gn4.ogg
diff --git a/sound/instruments/piano/Gn5.ogg b/sound/runtime/instruments/piano/Gn5.ogg
similarity index 100%
rename from sound/instruments/piano/Gn5.ogg
rename to sound/runtime/instruments/piano/Gn5.ogg
diff --git a/sound/instruments/piano/Gn6.ogg b/sound/runtime/instruments/piano/Gn6.ogg
similarity index 100%
rename from sound/instruments/piano/Gn6.ogg
rename to sound/runtime/instruments/piano/Gn6.ogg
diff --git a/sound/instruments/piano/Gn7.ogg b/sound/runtime/instruments/piano/Gn7.ogg
similarity index 100%
rename from sound/instruments/piano/Gn7.ogg
rename to sound/runtime/instruments/piano/Gn7.ogg
diff --git a/sound/instruments/piano/Gn8.ogg b/sound/runtime/instruments/piano/Gn8.ogg
similarity index 100%
rename from sound/instruments/piano/Gn8.ogg
rename to sound/runtime/instruments/piano/Gn8.ogg
diff --git a/sound/instruments/recorder/Ab2.mid b/sound/runtime/instruments/recorder/Ab2.mid
similarity index 100%
rename from sound/instruments/recorder/Ab2.mid
rename to sound/runtime/instruments/recorder/Ab2.mid
diff --git a/sound/instruments/recorder/Ab3.mid b/sound/runtime/instruments/recorder/Ab3.mid
similarity index 100%
rename from sound/instruments/recorder/Ab3.mid
rename to sound/runtime/instruments/recorder/Ab3.mid
diff --git a/sound/instruments/recorder/Ab4.mid b/sound/runtime/instruments/recorder/Ab4.mid
similarity index 100%
rename from sound/instruments/recorder/Ab4.mid
rename to sound/runtime/instruments/recorder/Ab4.mid
diff --git a/sound/instruments/recorder/Ab5.mid b/sound/runtime/instruments/recorder/Ab5.mid
similarity index 100%
rename from sound/instruments/recorder/Ab5.mid
rename to sound/runtime/instruments/recorder/Ab5.mid
diff --git a/sound/instruments/recorder/Ab6.mid b/sound/runtime/instruments/recorder/Ab6.mid
similarity index 100%
rename from sound/instruments/recorder/Ab6.mid
rename to sound/runtime/instruments/recorder/Ab6.mid
diff --git a/sound/instruments/recorder/An2.mid b/sound/runtime/instruments/recorder/An2.mid
similarity index 100%
rename from sound/instruments/recorder/An2.mid
rename to sound/runtime/instruments/recorder/An2.mid
diff --git a/sound/instruments/recorder/An3.mid b/sound/runtime/instruments/recorder/An3.mid
similarity index 100%
rename from sound/instruments/recorder/An3.mid
rename to sound/runtime/instruments/recorder/An3.mid
diff --git a/sound/instruments/recorder/An4.mid b/sound/runtime/instruments/recorder/An4.mid
similarity index 100%
rename from sound/instruments/recorder/An4.mid
rename to sound/runtime/instruments/recorder/An4.mid
diff --git a/sound/instruments/recorder/An5.mid b/sound/runtime/instruments/recorder/An5.mid
similarity index 100%
rename from sound/instruments/recorder/An5.mid
rename to sound/runtime/instruments/recorder/An5.mid
diff --git a/sound/instruments/recorder/An6.mid b/sound/runtime/instruments/recorder/An6.mid
similarity index 100%
rename from sound/instruments/recorder/An6.mid
rename to sound/runtime/instruments/recorder/An6.mid
diff --git a/sound/instruments/recorder/Bb2.mid b/sound/runtime/instruments/recorder/Bb2.mid
similarity index 100%
rename from sound/instruments/recorder/Bb2.mid
rename to sound/runtime/instruments/recorder/Bb2.mid
diff --git a/sound/instruments/recorder/Bb3.mid b/sound/runtime/instruments/recorder/Bb3.mid
similarity index 100%
rename from sound/instruments/recorder/Bb3.mid
rename to sound/runtime/instruments/recorder/Bb3.mid
diff --git a/sound/instruments/recorder/Bb4.mid b/sound/runtime/instruments/recorder/Bb4.mid
similarity index 100%
rename from sound/instruments/recorder/Bb4.mid
rename to sound/runtime/instruments/recorder/Bb4.mid
diff --git a/sound/instruments/recorder/Bb5.mid b/sound/runtime/instruments/recorder/Bb5.mid
similarity index 100%
rename from sound/instruments/recorder/Bb5.mid
rename to sound/runtime/instruments/recorder/Bb5.mid
diff --git a/sound/instruments/recorder/Bb6.mid b/sound/runtime/instruments/recorder/Bb6.mid
similarity index 100%
rename from sound/instruments/recorder/Bb6.mid
rename to sound/runtime/instruments/recorder/Bb6.mid
diff --git a/sound/instruments/recorder/Bn2.mid b/sound/runtime/instruments/recorder/Bn2.mid
similarity index 100%
rename from sound/instruments/recorder/Bn2.mid
rename to sound/runtime/instruments/recorder/Bn2.mid
diff --git a/sound/instruments/recorder/Bn3.mid b/sound/runtime/instruments/recorder/Bn3.mid
similarity index 100%
rename from sound/instruments/recorder/Bn3.mid
rename to sound/runtime/instruments/recorder/Bn3.mid
diff --git a/sound/instruments/recorder/Bn4.mid b/sound/runtime/instruments/recorder/Bn4.mid
similarity index 100%
rename from sound/instruments/recorder/Bn4.mid
rename to sound/runtime/instruments/recorder/Bn4.mid
diff --git a/sound/instruments/recorder/Bn5.mid b/sound/runtime/instruments/recorder/Bn5.mid
similarity index 100%
rename from sound/instruments/recorder/Bn5.mid
rename to sound/runtime/instruments/recorder/Bn5.mid
diff --git a/sound/instruments/recorder/Bn6.mid b/sound/runtime/instruments/recorder/Bn6.mid
similarity index 100%
rename from sound/instruments/recorder/Bn6.mid
rename to sound/runtime/instruments/recorder/Bn6.mid
diff --git a/sound/instruments/recorder/Cn2.mid b/sound/runtime/instruments/recorder/Cn2.mid
similarity index 100%
rename from sound/instruments/recorder/Cn2.mid
rename to sound/runtime/instruments/recorder/Cn2.mid
diff --git a/sound/instruments/recorder/Cn3.mid b/sound/runtime/instruments/recorder/Cn3.mid
similarity index 100%
rename from sound/instruments/recorder/Cn3.mid
rename to sound/runtime/instruments/recorder/Cn3.mid
diff --git a/sound/instruments/recorder/Cn4.mid b/sound/runtime/instruments/recorder/Cn4.mid
similarity index 100%
rename from sound/instruments/recorder/Cn4.mid
rename to sound/runtime/instruments/recorder/Cn4.mid
diff --git a/sound/instruments/recorder/Cn5.mid b/sound/runtime/instruments/recorder/Cn5.mid
similarity index 100%
rename from sound/instruments/recorder/Cn5.mid
rename to sound/runtime/instruments/recorder/Cn5.mid
diff --git a/sound/instruments/recorder/Cn6.mid b/sound/runtime/instruments/recorder/Cn6.mid
similarity index 100%
rename from sound/instruments/recorder/Cn6.mid
rename to sound/runtime/instruments/recorder/Cn6.mid
diff --git a/sound/instruments/recorder/Cn7.mid b/sound/runtime/instruments/recorder/Cn7.mid
similarity index 100%
rename from sound/instruments/recorder/Cn7.mid
rename to sound/runtime/instruments/recorder/Cn7.mid
diff --git a/sound/instruments/recorder/Db2.mid b/sound/runtime/instruments/recorder/Db2.mid
similarity index 100%
rename from sound/instruments/recorder/Db2.mid
rename to sound/runtime/instruments/recorder/Db2.mid
diff --git a/sound/instruments/recorder/Db3.mid b/sound/runtime/instruments/recorder/Db3.mid
similarity index 100%
rename from sound/instruments/recorder/Db3.mid
rename to sound/runtime/instruments/recorder/Db3.mid
diff --git a/sound/instruments/recorder/Db4.mid b/sound/runtime/instruments/recorder/Db4.mid
similarity index 100%
rename from sound/instruments/recorder/Db4.mid
rename to sound/runtime/instruments/recorder/Db4.mid
diff --git a/sound/instruments/recorder/Db5.mid b/sound/runtime/instruments/recorder/Db5.mid
similarity index 100%
rename from sound/instruments/recorder/Db5.mid
rename to sound/runtime/instruments/recorder/Db5.mid
diff --git a/sound/instruments/recorder/Db6.mid b/sound/runtime/instruments/recorder/Db6.mid
similarity index 100%
rename from sound/instruments/recorder/Db6.mid
rename to sound/runtime/instruments/recorder/Db6.mid
diff --git a/sound/instruments/recorder/Db7.mid b/sound/runtime/instruments/recorder/Db7.mid
similarity index 100%
rename from sound/instruments/recorder/Db7.mid
rename to sound/runtime/instruments/recorder/Db7.mid
diff --git a/sound/instruments/recorder/Dn2.mid b/sound/runtime/instruments/recorder/Dn2.mid
similarity index 100%
rename from sound/instruments/recorder/Dn2.mid
rename to sound/runtime/instruments/recorder/Dn2.mid
diff --git a/sound/instruments/recorder/Dn3.mid b/sound/runtime/instruments/recorder/Dn3.mid
similarity index 100%
rename from sound/instruments/recorder/Dn3.mid
rename to sound/runtime/instruments/recorder/Dn3.mid
diff --git a/sound/instruments/recorder/Dn4.mid b/sound/runtime/instruments/recorder/Dn4.mid
similarity index 100%
rename from sound/instruments/recorder/Dn4.mid
rename to sound/runtime/instruments/recorder/Dn4.mid
diff --git a/sound/instruments/recorder/Dn5.mid b/sound/runtime/instruments/recorder/Dn5.mid
similarity index 100%
rename from sound/instruments/recorder/Dn5.mid
rename to sound/runtime/instruments/recorder/Dn5.mid
diff --git a/sound/instruments/recorder/Dn6.mid b/sound/runtime/instruments/recorder/Dn6.mid
similarity index 100%
rename from sound/instruments/recorder/Dn6.mid
rename to sound/runtime/instruments/recorder/Dn6.mid
diff --git a/sound/instruments/recorder/Eb2.mid b/sound/runtime/instruments/recorder/Eb2.mid
similarity index 100%
rename from sound/instruments/recorder/Eb2.mid
rename to sound/runtime/instruments/recorder/Eb2.mid
diff --git a/sound/instruments/recorder/Eb3.mid b/sound/runtime/instruments/recorder/Eb3.mid
similarity index 100%
rename from sound/instruments/recorder/Eb3.mid
rename to sound/runtime/instruments/recorder/Eb3.mid
diff --git a/sound/instruments/recorder/Eb4.mid b/sound/runtime/instruments/recorder/Eb4.mid
similarity index 100%
rename from sound/instruments/recorder/Eb4.mid
rename to sound/runtime/instruments/recorder/Eb4.mid
diff --git a/sound/instruments/recorder/Eb5.mid b/sound/runtime/instruments/recorder/Eb5.mid
similarity index 100%
rename from sound/instruments/recorder/Eb5.mid
rename to sound/runtime/instruments/recorder/Eb5.mid
diff --git a/sound/instruments/recorder/Eb6.mid b/sound/runtime/instruments/recorder/Eb6.mid
similarity index 100%
rename from sound/instruments/recorder/Eb6.mid
rename to sound/runtime/instruments/recorder/Eb6.mid
diff --git a/sound/instruments/recorder/En2.mid b/sound/runtime/instruments/recorder/En2.mid
similarity index 100%
rename from sound/instruments/recorder/En2.mid
rename to sound/runtime/instruments/recorder/En2.mid
diff --git a/sound/instruments/recorder/En3.mid b/sound/runtime/instruments/recorder/En3.mid
similarity index 100%
rename from sound/instruments/recorder/En3.mid
rename to sound/runtime/instruments/recorder/En3.mid
diff --git a/sound/instruments/recorder/En4.mid b/sound/runtime/instruments/recorder/En4.mid
similarity index 100%
rename from sound/instruments/recorder/En4.mid
rename to sound/runtime/instruments/recorder/En4.mid
diff --git a/sound/instruments/recorder/En5.mid b/sound/runtime/instruments/recorder/En5.mid
similarity index 100%
rename from sound/instruments/recorder/En5.mid
rename to sound/runtime/instruments/recorder/En5.mid
diff --git a/sound/instruments/recorder/En6.mid b/sound/runtime/instruments/recorder/En6.mid
similarity index 100%
rename from sound/instruments/recorder/En6.mid
rename to sound/runtime/instruments/recorder/En6.mid
diff --git a/sound/instruments/recorder/Fn2.mid b/sound/runtime/instruments/recorder/Fn2.mid
similarity index 100%
rename from sound/instruments/recorder/Fn2.mid
rename to sound/runtime/instruments/recorder/Fn2.mid
diff --git a/sound/instruments/recorder/Fn3.mid b/sound/runtime/instruments/recorder/Fn3.mid
similarity index 100%
rename from sound/instruments/recorder/Fn3.mid
rename to sound/runtime/instruments/recorder/Fn3.mid
diff --git a/sound/instruments/recorder/Fn4.mid b/sound/runtime/instruments/recorder/Fn4.mid
similarity index 100%
rename from sound/instruments/recorder/Fn4.mid
rename to sound/runtime/instruments/recorder/Fn4.mid
diff --git a/sound/instruments/recorder/Fn5.mid b/sound/runtime/instruments/recorder/Fn5.mid
similarity index 100%
rename from sound/instruments/recorder/Fn5.mid
rename to sound/runtime/instruments/recorder/Fn5.mid
diff --git a/sound/instruments/recorder/Fn6.mid b/sound/runtime/instruments/recorder/Fn6.mid
similarity index 100%
rename from sound/instruments/recorder/Fn6.mid
rename to sound/runtime/instruments/recorder/Fn6.mid
diff --git a/sound/instruments/recorder/Gb2.mid b/sound/runtime/instruments/recorder/Gb2.mid
similarity index 100%
rename from sound/instruments/recorder/Gb2.mid
rename to sound/runtime/instruments/recorder/Gb2.mid
diff --git a/sound/instruments/recorder/Gb3.mid b/sound/runtime/instruments/recorder/Gb3.mid
similarity index 100%
rename from sound/instruments/recorder/Gb3.mid
rename to sound/runtime/instruments/recorder/Gb3.mid
diff --git a/sound/instruments/recorder/Gb4.mid b/sound/runtime/instruments/recorder/Gb4.mid
similarity index 100%
rename from sound/instruments/recorder/Gb4.mid
rename to sound/runtime/instruments/recorder/Gb4.mid
diff --git a/sound/instruments/recorder/Gb5.mid b/sound/runtime/instruments/recorder/Gb5.mid
similarity index 100%
rename from sound/instruments/recorder/Gb5.mid
rename to sound/runtime/instruments/recorder/Gb5.mid
diff --git a/sound/instruments/recorder/Gb6.mid b/sound/runtime/instruments/recorder/Gb6.mid
similarity index 100%
rename from sound/instruments/recorder/Gb6.mid
rename to sound/runtime/instruments/recorder/Gb6.mid
diff --git a/sound/instruments/recorder/Gn2.mid b/sound/runtime/instruments/recorder/Gn2.mid
similarity index 100%
rename from sound/instruments/recorder/Gn2.mid
rename to sound/runtime/instruments/recorder/Gn2.mid
diff --git a/sound/instruments/recorder/Gn3.mid b/sound/runtime/instruments/recorder/Gn3.mid
similarity index 100%
rename from sound/instruments/recorder/Gn3.mid
rename to sound/runtime/instruments/recorder/Gn3.mid
diff --git a/sound/instruments/recorder/Gn4.mid b/sound/runtime/instruments/recorder/Gn4.mid
similarity index 100%
rename from sound/instruments/recorder/Gn4.mid
rename to sound/runtime/instruments/recorder/Gn4.mid
diff --git a/sound/instruments/recorder/Gn5.mid b/sound/runtime/instruments/recorder/Gn5.mid
similarity index 100%
rename from sound/instruments/recorder/Gn5.mid
rename to sound/runtime/instruments/recorder/Gn5.mid
diff --git a/sound/instruments/recorder/Gn6.mid b/sound/runtime/instruments/recorder/Gn6.mid
similarity index 100%
rename from sound/instruments/recorder/Gn6.mid
rename to sound/runtime/instruments/recorder/Gn6.mid
diff --git a/sound/instruments/saxophone/Ab2.mid b/sound/runtime/instruments/saxophone/Ab2.mid
similarity index 100%
rename from sound/instruments/saxophone/Ab2.mid
rename to sound/runtime/instruments/saxophone/Ab2.mid
diff --git a/sound/instruments/saxophone/Ab3.mid b/sound/runtime/instruments/saxophone/Ab3.mid
similarity index 100%
rename from sound/instruments/saxophone/Ab3.mid
rename to sound/runtime/instruments/saxophone/Ab3.mid
diff --git a/sound/instruments/saxophone/Ab4.mid b/sound/runtime/instruments/saxophone/Ab4.mid
similarity index 100%
rename from sound/instruments/saxophone/Ab4.mid
rename to sound/runtime/instruments/saxophone/Ab4.mid
diff --git a/sound/instruments/saxophone/Ab5.mid b/sound/runtime/instruments/saxophone/Ab5.mid
similarity index 100%
rename from sound/instruments/saxophone/Ab5.mid
rename to sound/runtime/instruments/saxophone/Ab5.mid
diff --git a/sound/instruments/saxophone/Ab6.mid b/sound/runtime/instruments/saxophone/Ab6.mid
similarity index 100%
rename from sound/instruments/saxophone/Ab6.mid
rename to sound/runtime/instruments/saxophone/Ab6.mid
diff --git a/sound/instruments/saxophone/An2.mid b/sound/runtime/instruments/saxophone/An2.mid
similarity index 100%
rename from sound/instruments/saxophone/An2.mid
rename to sound/runtime/instruments/saxophone/An2.mid
diff --git a/sound/instruments/saxophone/An3.mid b/sound/runtime/instruments/saxophone/An3.mid
similarity index 100%
rename from sound/instruments/saxophone/An3.mid
rename to sound/runtime/instruments/saxophone/An3.mid
diff --git a/sound/instruments/saxophone/An4.mid b/sound/runtime/instruments/saxophone/An4.mid
similarity index 100%
rename from sound/instruments/saxophone/An4.mid
rename to sound/runtime/instruments/saxophone/An4.mid
diff --git a/sound/instruments/saxophone/An5.mid b/sound/runtime/instruments/saxophone/An5.mid
similarity index 100%
rename from sound/instruments/saxophone/An5.mid
rename to sound/runtime/instruments/saxophone/An5.mid
diff --git a/sound/instruments/saxophone/An6.mid b/sound/runtime/instruments/saxophone/An6.mid
similarity index 100%
rename from sound/instruments/saxophone/An6.mid
rename to sound/runtime/instruments/saxophone/An6.mid
diff --git a/sound/instruments/saxophone/Bb2.mid b/sound/runtime/instruments/saxophone/Bb2.mid
similarity index 100%
rename from sound/instruments/saxophone/Bb2.mid
rename to sound/runtime/instruments/saxophone/Bb2.mid
diff --git a/sound/instruments/saxophone/Bb3.mid b/sound/runtime/instruments/saxophone/Bb3.mid
similarity index 100%
rename from sound/instruments/saxophone/Bb3.mid
rename to sound/runtime/instruments/saxophone/Bb3.mid
diff --git a/sound/instruments/saxophone/Bb4.mid b/sound/runtime/instruments/saxophone/Bb4.mid
similarity index 100%
rename from sound/instruments/saxophone/Bb4.mid
rename to sound/runtime/instruments/saxophone/Bb4.mid
diff --git a/sound/instruments/saxophone/Bb5.mid b/sound/runtime/instruments/saxophone/Bb5.mid
similarity index 100%
rename from sound/instruments/saxophone/Bb5.mid
rename to sound/runtime/instruments/saxophone/Bb5.mid
diff --git a/sound/instruments/saxophone/Bb6.mid b/sound/runtime/instruments/saxophone/Bb6.mid
similarity index 100%
rename from sound/instruments/saxophone/Bb6.mid
rename to sound/runtime/instruments/saxophone/Bb6.mid
diff --git a/sound/instruments/saxophone/Bn2.mid b/sound/runtime/instruments/saxophone/Bn2.mid
similarity index 100%
rename from sound/instruments/saxophone/Bn2.mid
rename to sound/runtime/instruments/saxophone/Bn2.mid
diff --git a/sound/instruments/saxophone/Bn3.mid b/sound/runtime/instruments/saxophone/Bn3.mid
similarity index 100%
rename from sound/instruments/saxophone/Bn3.mid
rename to sound/runtime/instruments/saxophone/Bn3.mid
diff --git a/sound/instruments/saxophone/Bn4.mid b/sound/runtime/instruments/saxophone/Bn4.mid
similarity index 100%
rename from sound/instruments/saxophone/Bn4.mid
rename to sound/runtime/instruments/saxophone/Bn4.mid
diff --git a/sound/instruments/saxophone/Bn5.mid b/sound/runtime/instruments/saxophone/Bn5.mid
similarity index 100%
rename from sound/instruments/saxophone/Bn5.mid
rename to sound/runtime/instruments/saxophone/Bn5.mid
diff --git a/sound/instruments/saxophone/Bn6.mid b/sound/runtime/instruments/saxophone/Bn6.mid
similarity index 100%
rename from sound/instruments/saxophone/Bn6.mid
rename to sound/runtime/instruments/saxophone/Bn6.mid
diff --git a/sound/instruments/saxophone/Cn2.mid b/sound/runtime/instruments/saxophone/Cn2.mid
similarity index 100%
rename from sound/instruments/saxophone/Cn2.mid
rename to sound/runtime/instruments/saxophone/Cn2.mid
diff --git a/sound/instruments/saxophone/Cn3.mid b/sound/runtime/instruments/saxophone/Cn3.mid
similarity index 100%
rename from sound/instruments/saxophone/Cn3.mid
rename to sound/runtime/instruments/saxophone/Cn3.mid
diff --git a/sound/instruments/saxophone/Cn4.mid b/sound/runtime/instruments/saxophone/Cn4.mid
similarity index 100%
rename from sound/instruments/saxophone/Cn4.mid
rename to sound/runtime/instruments/saxophone/Cn4.mid
diff --git a/sound/instruments/saxophone/Cn5.mid b/sound/runtime/instruments/saxophone/Cn5.mid
similarity index 100%
rename from sound/instruments/saxophone/Cn5.mid
rename to sound/runtime/instruments/saxophone/Cn5.mid
diff --git a/sound/instruments/saxophone/Cn6.mid b/sound/runtime/instruments/saxophone/Cn6.mid
similarity index 100%
rename from sound/instruments/saxophone/Cn6.mid
rename to sound/runtime/instruments/saxophone/Cn6.mid
diff --git a/sound/instruments/saxophone/Db2.mid b/sound/runtime/instruments/saxophone/Db2.mid
similarity index 100%
rename from sound/instruments/saxophone/Db2.mid
rename to sound/runtime/instruments/saxophone/Db2.mid
diff --git a/sound/instruments/saxophone/Db3.mid b/sound/runtime/instruments/saxophone/Db3.mid
similarity index 100%
rename from sound/instruments/saxophone/Db3.mid
rename to sound/runtime/instruments/saxophone/Db3.mid
diff --git a/sound/instruments/saxophone/Db4.mid b/sound/runtime/instruments/saxophone/Db4.mid
similarity index 100%
rename from sound/instruments/saxophone/Db4.mid
rename to sound/runtime/instruments/saxophone/Db4.mid
diff --git a/sound/instruments/saxophone/Db5.mid b/sound/runtime/instruments/saxophone/Db5.mid
similarity index 100%
rename from sound/instruments/saxophone/Db5.mid
rename to sound/runtime/instruments/saxophone/Db5.mid
diff --git a/sound/instruments/saxophone/Db6.mid b/sound/runtime/instruments/saxophone/Db6.mid
similarity index 100%
rename from sound/instruments/saxophone/Db6.mid
rename to sound/runtime/instruments/saxophone/Db6.mid
diff --git a/sound/instruments/saxophone/Dn2.mid b/sound/runtime/instruments/saxophone/Dn2.mid
similarity index 100%
rename from sound/instruments/saxophone/Dn2.mid
rename to sound/runtime/instruments/saxophone/Dn2.mid
diff --git a/sound/instruments/saxophone/Dn3.mid b/sound/runtime/instruments/saxophone/Dn3.mid
similarity index 100%
rename from sound/instruments/saxophone/Dn3.mid
rename to sound/runtime/instruments/saxophone/Dn3.mid
diff --git a/sound/instruments/saxophone/Dn4.mid b/sound/runtime/instruments/saxophone/Dn4.mid
similarity index 100%
rename from sound/instruments/saxophone/Dn4.mid
rename to sound/runtime/instruments/saxophone/Dn4.mid
diff --git a/sound/instruments/saxophone/Dn5.mid b/sound/runtime/instruments/saxophone/Dn5.mid
similarity index 100%
rename from sound/instruments/saxophone/Dn5.mid
rename to sound/runtime/instruments/saxophone/Dn5.mid
diff --git a/sound/instruments/saxophone/Dn6.mid b/sound/runtime/instruments/saxophone/Dn6.mid
similarity index 100%
rename from sound/instruments/saxophone/Dn6.mid
rename to sound/runtime/instruments/saxophone/Dn6.mid
diff --git a/sound/instruments/saxophone/Eb2.mid b/sound/runtime/instruments/saxophone/Eb2.mid
similarity index 100%
rename from sound/instruments/saxophone/Eb2.mid
rename to sound/runtime/instruments/saxophone/Eb2.mid
diff --git a/sound/instruments/saxophone/Eb3.mid b/sound/runtime/instruments/saxophone/Eb3.mid
similarity index 100%
rename from sound/instruments/saxophone/Eb3.mid
rename to sound/runtime/instruments/saxophone/Eb3.mid
diff --git a/sound/instruments/saxophone/Eb4.mid b/sound/runtime/instruments/saxophone/Eb4.mid
similarity index 100%
rename from sound/instruments/saxophone/Eb4.mid
rename to sound/runtime/instruments/saxophone/Eb4.mid
diff --git a/sound/instruments/saxophone/Eb5.mid b/sound/runtime/instruments/saxophone/Eb5.mid
similarity index 100%
rename from sound/instruments/saxophone/Eb5.mid
rename to sound/runtime/instruments/saxophone/Eb5.mid
diff --git a/sound/instruments/saxophone/Eb6.mid b/sound/runtime/instruments/saxophone/Eb6.mid
similarity index 100%
rename from sound/instruments/saxophone/Eb6.mid
rename to sound/runtime/instruments/saxophone/Eb6.mid
diff --git a/sound/instruments/saxophone/En2.mid b/sound/runtime/instruments/saxophone/En2.mid
similarity index 100%
rename from sound/instruments/saxophone/En2.mid
rename to sound/runtime/instruments/saxophone/En2.mid
diff --git a/sound/instruments/saxophone/En3.mid b/sound/runtime/instruments/saxophone/En3.mid
similarity index 100%
rename from sound/instruments/saxophone/En3.mid
rename to sound/runtime/instruments/saxophone/En3.mid
diff --git a/sound/instruments/saxophone/En4.mid b/sound/runtime/instruments/saxophone/En4.mid
similarity index 100%
rename from sound/instruments/saxophone/En4.mid
rename to sound/runtime/instruments/saxophone/En4.mid
diff --git a/sound/instruments/saxophone/En5.mid b/sound/runtime/instruments/saxophone/En5.mid
similarity index 100%
rename from sound/instruments/saxophone/En5.mid
rename to sound/runtime/instruments/saxophone/En5.mid
diff --git a/sound/instruments/saxophone/En6.mid b/sound/runtime/instruments/saxophone/En6.mid
similarity index 100%
rename from sound/instruments/saxophone/En6.mid
rename to sound/runtime/instruments/saxophone/En6.mid
diff --git a/sound/instruments/saxophone/Fn2.mid b/sound/runtime/instruments/saxophone/Fn2.mid
similarity index 100%
rename from sound/instruments/saxophone/Fn2.mid
rename to sound/runtime/instruments/saxophone/Fn2.mid
diff --git a/sound/instruments/saxophone/Fn3.mid b/sound/runtime/instruments/saxophone/Fn3.mid
similarity index 100%
rename from sound/instruments/saxophone/Fn3.mid
rename to sound/runtime/instruments/saxophone/Fn3.mid
diff --git a/sound/instruments/saxophone/Fn4.mid b/sound/runtime/instruments/saxophone/Fn4.mid
similarity index 100%
rename from sound/instruments/saxophone/Fn4.mid
rename to sound/runtime/instruments/saxophone/Fn4.mid
diff --git a/sound/instruments/saxophone/Fn5.mid b/sound/runtime/instruments/saxophone/Fn5.mid
similarity index 100%
rename from sound/instruments/saxophone/Fn5.mid
rename to sound/runtime/instruments/saxophone/Fn5.mid
diff --git a/sound/instruments/saxophone/Fn6.mid b/sound/runtime/instruments/saxophone/Fn6.mid
similarity index 100%
rename from sound/instruments/saxophone/Fn6.mid
rename to sound/runtime/instruments/saxophone/Fn6.mid
diff --git a/sound/instruments/saxophone/Gb2.mid b/sound/runtime/instruments/saxophone/Gb2.mid
similarity index 100%
rename from sound/instruments/saxophone/Gb2.mid
rename to sound/runtime/instruments/saxophone/Gb2.mid
diff --git a/sound/instruments/saxophone/Gb3.mid b/sound/runtime/instruments/saxophone/Gb3.mid
similarity index 100%
rename from sound/instruments/saxophone/Gb3.mid
rename to sound/runtime/instruments/saxophone/Gb3.mid
diff --git a/sound/instruments/saxophone/Gb4.mid b/sound/runtime/instruments/saxophone/Gb4.mid
similarity index 100%
rename from sound/instruments/saxophone/Gb4.mid
rename to sound/runtime/instruments/saxophone/Gb4.mid
diff --git a/sound/instruments/saxophone/Gb5.mid b/sound/runtime/instruments/saxophone/Gb5.mid
similarity index 100%
rename from sound/instruments/saxophone/Gb5.mid
rename to sound/runtime/instruments/saxophone/Gb5.mid
diff --git a/sound/instruments/saxophone/Gb6.mid b/sound/runtime/instruments/saxophone/Gb6.mid
similarity index 100%
rename from sound/instruments/saxophone/Gb6.mid
rename to sound/runtime/instruments/saxophone/Gb6.mid
diff --git a/sound/instruments/saxophone/Gn2.mid b/sound/runtime/instruments/saxophone/Gn2.mid
similarity index 100%
rename from sound/instruments/saxophone/Gn2.mid
rename to sound/runtime/instruments/saxophone/Gn2.mid
diff --git a/sound/instruments/saxophone/Gn4.mid b/sound/runtime/instruments/saxophone/Gn4.mid
similarity index 100%
rename from sound/instruments/saxophone/Gn4.mid
rename to sound/runtime/instruments/saxophone/Gn4.mid
diff --git a/sound/instruments/saxophone/Gn5.mid b/sound/runtime/instruments/saxophone/Gn5.mid
similarity index 100%
rename from sound/instruments/saxophone/Gn5.mid
rename to sound/runtime/instruments/saxophone/Gn5.mid
diff --git a/sound/instruments/saxophone/Gn6.mid b/sound/runtime/instruments/saxophone/Gn6.mid
similarity index 100%
rename from sound/instruments/saxophone/Gn6.mid
rename to sound/runtime/instruments/saxophone/Gn6.mid
diff --git a/sound/instruments/synthesis_samples/brass/crisis_brass/c2.ogg b/sound/runtime/instruments/synthesis_samples/brass/crisis_brass/c2.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/brass/crisis_brass/c2.ogg
rename to sound/runtime/instruments/synthesis_samples/brass/crisis_brass/c2.ogg
diff --git a/sound/instruments/synthesis_samples/brass/crisis_brass/c3.ogg b/sound/runtime/instruments/synthesis_samples/brass/crisis_brass/c3.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/brass/crisis_brass/c3.ogg
rename to sound/runtime/instruments/synthesis_samples/brass/crisis_brass/c3.ogg
diff --git a/sound/instruments/synthesis_samples/brass/crisis_brass/c4.ogg b/sound/runtime/instruments/synthesis_samples/brass/crisis_brass/c4.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/brass/crisis_brass/c4.ogg
rename to sound/runtime/instruments/synthesis_samples/brass/crisis_brass/c4.ogg
diff --git a/sound/instruments/synthesis_samples/brass/crisis_brass/c5.ogg b/sound/runtime/instruments/synthesis_samples/brass/crisis_brass/c5.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/brass/crisis_brass/c5.ogg
rename to sound/runtime/instruments/synthesis_samples/brass/crisis_brass/c5.ogg
diff --git a/sound/instruments/synthesis_samples/brass/crisis_trombone/C2.ogg b/sound/runtime/instruments/synthesis_samples/brass/crisis_trombone/C2.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/brass/crisis_trombone/C2.ogg
rename to sound/runtime/instruments/synthesis_samples/brass/crisis_trombone/C2.ogg
diff --git a/sound/instruments/synthesis_samples/brass/crisis_trombone/C3.ogg b/sound/runtime/instruments/synthesis_samples/brass/crisis_trombone/C3.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/brass/crisis_trombone/C3.ogg
rename to sound/runtime/instruments/synthesis_samples/brass/crisis_trombone/C3.ogg
diff --git a/sound/instruments/synthesis_samples/brass/crisis_trombone/C4.ogg b/sound/runtime/instruments/synthesis_samples/brass/crisis_trombone/C4.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/brass/crisis_trombone/C4.ogg
rename to sound/runtime/instruments/synthesis_samples/brass/crisis_trombone/C4.ogg
diff --git a/sound/instruments/synthesis_samples/brass/crisis_trombone/C5.ogg b/sound/runtime/instruments/synthesis_samples/brass/crisis_trombone/C5.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/brass/crisis_trombone/C5.ogg
rename to sound/runtime/instruments/synthesis_samples/brass/crisis_trombone/C5.ogg
diff --git a/sound/instruments/synthesis_samples/brass/crisis_trumpet/C4.ogg b/sound/runtime/instruments/synthesis_samples/brass/crisis_trumpet/C4.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/brass/crisis_trumpet/C4.ogg
rename to sound/runtime/instruments/synthesis_samples/brass/crisis_trumpet/C4.ogg
diff --git a/sound/instruments/synthesis_samples/brass/crisis_trumpet/C5.ogg b/sound/runtime/instruments/synthesis_samples/brass/crisis_trumpet/C5.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/brass/crisis_trumpet/C5.ogg
rename to sound/runtime/instruments/synthesis_samples/brass/crisis_trumpet/C5.ogg
diff --git a/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C2.ogg b/sound/runtime/instruments/synthesis_samples/chromatic/fluid_celeste/C2.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/chromatic/fluid_celeste/C2.ogg
rename to sound/runtime/instruments/synthesis_samples/chromatic/fluid_celeste/C2.ogg
diff --git a/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C3.ogg b/sound/runtime/instruments/synthesis_samples/chromatic/fluid_celeste/C3.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/chromatic/fluid_celeste/C3.ogg
rename to sound/runtime/instruments/synthesis_samples/chromatic/fluid_celeste/C3.ogg
diff --git a/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C4.ogg b/sound/runtime/instruments/synthesis_samples/chromatic/fluid_celeste/C4.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/chromatic/fluid_celeste/C4.ogg
rename to sound/runtime/instruments/synthesis_samples/chromatic/fluid_celeste/C4.ogg
diff --git a/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C5.ogg b/sound/runtime/instruments/synthesis_samples/chromatic/fluid_celeste/C5.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/chromatic/fluid_celeste/C5.ogg
rename to sound/runtime/instruments/synthesis_samples/chromatic/fluid_celeste/C5.ogg
diff --git a/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C6.ogg b/sound/runtime/instruments/synthesis_samples/chromatic/fluid_celeste/C6.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/chromatic/fluid_celeste/C6.ogg
rename to sound/runtime/instruments/synthesis_samples/chromatic/fluid_celeste/C6.ogg
diff --git a/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C7.ogg b/sound/runtime/instruments/synthesis_samples/chromatic/fluid_celeste/C7.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/chromatic/fluid_celeste/C7.ogg
rename to sound/runtime/instruments/synthesis_samples/chromatic/fluid_celeste/C7.ogg
diff --git a/sound/instruments/synthesis_samples/chromatic/fluid_celeste/C8.ogg b/sound/runtime/instruments/synthesis_samples/chromatic/fluid_celeste/C8.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/chromatic/fluid_celeste/C8.ogg
rename to sound/runtime/instruments/synthesis_samples/chromatic/fluid_celeste/C8.ogg
diff --git a/sound/instruments/synthesis_samples/chromatic/sgmbox/c2.ogg b/sound/runtime/instruments/synthesis_samples/chromatic/sgmbox/c2.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/chromatic/sgmbox/c2.ogg
rename to sound/runtime/instruments/synthesis_samples/chromatic/sgmbox/c2.ogg
diff --git a/sound/instruments/synthesis_samples/chromatic/sgmbox/c3.ogg b/sound/runtime/instruments/synthesis_samples/chromatic/sgmbox/c3.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/chromatic/sgmbox/c3.ogg
rename to sound/runtime/instruments/synthesis_samples/chromatic/sgmbox/c3.ogg
diff --git a/sound/instruments/synthesis_samples/chromatic/sgmbox/c4.ogg b/sound/runtime/instruments/synthesis_samples/chromatic/sgmbox/c4.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/chromatic/sgmbox/c4.ogg
rename to sound/runtime/instruments/synthesis_samples/chromatic/sgmbox/c4.ogg
diff --git a/sound/instruments/synthesis_samples/chromatic/sgmbox/c5.ogg b/sound/runtime/instruments/synthesis_samples/chromatic/sgmbox/c5.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/chromatic/sgmbox/c5.ogg
rename to sound/runtime/instruments/synthesis_samples/chromatic/sgmbox/c5.ogg
diff --git a/sound/instruments/synthesis_samples/chromatic/vibraphone1/c2.ogg b/sound/runtime/instruments/synthesis_samples/chromatic/vibraphone1/c2.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/chromatic/vibraphone1/c2.ogg
rename to sound/runtime/instruments/synthesis_samples/chromatic/vibraphone1/c2.ogg
diff --git a/sound/instruments/synthesis_samples/chromatic/vibraphone1/c3.ogg b/sound/runtime/instruments/synthesis_samples/chromatic/vibraphone1/c3.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/chromatic/vibraphone1/c3.ogg
rename to sound/runtime/instruments/synthesis_samples/chromatic/vibraphone1/c3.ogg
diff --git a/sound/instruments/synthesis_samples/chromatic/vibraphone1/c4.ogg b/sound/runtime/instruments/synthesis_samples/chromatic/vibraphone1/c4.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/chromatic/vibraphone1/c4.ogg
rename to sound/runtime/instruments/synthesis_samples/chromatic/vibraphone1/c4.ogg
diff --git a/sound/instruments/synthesis_samples/chromatic/vibraphone1/c5.ogg b/sound/runtime/instruments/synthesis_samples/chromatic/vibraphone1/c5.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/chromatic/vibraphone1/c5.ogg
rename to sound/runtime/instruments/synthesis_samples/chromatic/vibraphone1/c5.ogg
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_clean/C2.ogg b/sound/runtime/instruments/synthesis_samples/guitar/crisis_clean/C2.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/guitar/crisis_clean/C2.ogg
rename to sound/runtime/instruments/synthesis_samples/guitar/crisis_clean/C2.ogg
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_clean/C3.ogg b/sound/runtime/instruments/synthesis_samples/guitar/crisis_clean/C3.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/guitar/crisis_clean/C3.ogg
rename to sound/runtime/instruments/synthesis_samples/guitar/crisis_clean/C3.ogg
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_clean/C4.ogg b/sound/runtime/instruments/synthesis_samples/guitar/crisis_clean/C4.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/guitar/crisis_clean/C4.ogg
rename to sound/runtime/instruments/synthesis_samples/guitar/crisis_clean/C4.ogg
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_clean/C5.ogg b/sound/runtime/instruments/synthesis_samples/guitar/crisis_clean/C5.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/guitar/crisis_clean/C5.ogg
rename to sound/runtime/instruments/synthesis_samples/guitar/crisis_clean/C5.ogg
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_muted/C2.ogg b/sound/runtime/instruments/synthesis_samples/guitar/crisis_muted/C2.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/guitar/crisis_muted/C2.ogg
rename to sound/runtime/instruments/synthesis_samples/guitar/crisis_muted/C2.ogg
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_muted/C3.ogg b/sound/runtime/instruments/synthesis_samples/guitar/crisis_muted/C3.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/guitar/crisis_muted/C3.ogg
rename to sound/runtime/instruments/synthesis_samples/guitar/crisis_muted/C3.ogg
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_muted/C4.ogg b/sound/runtime/instruments/synthesis_samples/guitar/crisis_muted/C4.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/guitar/crisis_muted/C4.ogg
rename to sound/runtime/instruments/synthesis_samples/guitar/crisis_muted/C4.ogg
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_muted/C5.ogg b/sound/runtime/instruments/synthesis_samples/guitar/crisis_muted/C5.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/guitar/crisis_muted/C5.ogg
rename to sound/runtime/instruments/synthesis_samples/guitar/crisis_muted/C5.ogg
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_nylon/c2.ogg b/sound/runtime/instruments/synthesis_samples/guitar/crisis_nylon/c2.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/guitar/crisis_nylon/c2.ogg
rename to sound/runtime/instruments/synthesis_samples/guitar/crisis_nylon/c2.ogg
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_nylon/c3.ogg b/sound/runtime/instruments/synthesis_samples/guitar/crisis_nylon/c3.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/guitar/crisis_nylon/c3.ogg
rename to sound/runtime/instruments/synthesis_samples/guitar/crisis_nylon/c3.ogg
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_nylon/c4.ogg b/sound/runtime/instruments/synthesis_samples/guitar/crisis_nylon/c4.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/guitar/crisis_nylon/c4.ogg
rename to sound/runtime/instruments/synthesis_samples/guitar/crisis_nylon/c4.ogg
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_nylon/c5.ogg b/sound/runtime/instruments/synthesis_samples/guitar/crisis_nylon/c5.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/guitar/crisis_nylon/c5.ogg
rename to sound/runtime/instruments/synthesis_samples/guitar/crisis_nylon/c5.ogg
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_steel/c2.ogg b/sound/runtime/instruments/synthesis_samples/guitar/crisis_steel/c2.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/guitar/crisis_steel/c2.ogg
rename to sound/runtime/instruments/synthesis_samples/guitar/crisis_steel/c2.ogg
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_steel/c3.ogg b/sound/runtime/instruments/synthesis_samples/guitar/crisis_steel/c3.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/guitar/crisis_steel/c3.ogg
rename to sound/runtime/instruments/synthesis_samples/guitar/crisis_steel/c3.ogg
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_steel/c4.ogg b/sound/runtime/instruments/synthesis_samples/guitar/crisis_steel/c4.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/guitar/crisis_steel/c4.ogg
rename to sound/runtime/instruments/synthesis_samples/guitar/crisis_steel/c4.ogg
diff --git a/sound/instruments/synthesis_samples/guitar/crisis_steel/c5.ogg b/sound/runtime/instruments/synthesis_samples/guitar/crisis_steel/c5.ogg
similarity index 100%
rename from sound/instruments/synthesis_samples/guitar/crisis_steel/c5.ogg
rename to sound/runtime/instruments/synthesis_samples/guitar/crisis_steel/c5.ogg
diff --git a/sound/runtime/instruments/synthesis_samples/meowsynth/LICENSE.txt b/sound/runtime/instruments/synthesis_samples/meowsynth/LICENSE.txt
new file mode 100644
index 0000000000..f00f3ce86c
--- /dev/null
+++ b/sound/runtime/instruments/synthesis_samples/meowsynth/LICENSE.txt
@@ -0,0 +1,14 @@
+The audio samples in this folder were created using the MeowSynth VST plugin.
+MeowSynth was created by a user named zipp and was released on knobster.org under the following terms:
+
+All KNOBSTER synthesizers are absolutely free, even for commercial use. Nevertheless, the author will gladly accept material gratitude, especially if it is done from the heart. You can send it to any of the wallets listed below:
+
+ Yandex money:
+ 41001357297942
+
+ webmoney:
+ Z407831455581
+ R770671369144
+ U877500879439
+
+Remember: by helping the author financially, you stimulate the improvement of existing and the creation of new free synthesizers. Thank you.
diff --git a/sound/runtime/instruments/synthesis_samples/meowsynth/c2.ogg b/sound/runtime/instruments/synthesis_samples/meowsynth/c2.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..1b2da03cf04f7658bf750d03d3f5271e89733605
GIT binary patch
literal 12609
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