diff --git a/code/_macros.dm b/code/_macros.dm index d8737d8d26..9cd11a6c15 100644 --- a/code/_macros.dm +++ b/code/_macros.dm @@ -91,4 +91,6 @@ // Null-safe L.Cut() #define LAZYCLEARLIST(L) if(L) L.Cut() // Reads L or an empty list if L is not a list. Note: Does NOT assign, L may be an expression. -#define SANITIZE_LIST(L) ( islist(L) ? L : list() ) \ No newline at end of file +#define SANITIZE_LIST(L) ( islist(L) ? L : list() ) +// Turns LAZYINITLIST(L) L[K] = V into ... for associated lists +#define LAZYSET(L, K, V) if(!L) { L = list(); } L[K] = V; \ No newline at end of file diff --git a/code/game/objects/items/devices/hacktool.dm b/code/game/objects/items/devices/hacktool.dm index b5d6439da3..fb3d8d9bcc 100644 --- a/code/game/objects/items/devices/hacktool.dm +++ b/code/game/objects/items/devices/hacktool.dm @@ -62,7 +62,7 @@ if(hack_result && in_hack_mode) user << "Your hacking attempt was succesful!" - user.playsound_local(get_turf(src), 'sound/piano/A#6.ogg', 50) + user.playsound_local(get_turf(src), 'sound/instruments/piano/An6.ogg', 50) else user << "Your hacking attempt failed!" return 0 diff --git a/code/game/objects/items/devices/violin.dm b/code/game/objects/items/devices/violin.dm index 683c74bd02..5dc215cf91 100644 --- a/code/game/objects/items/devices/violin.dm +++ b/code/game/objects/items/devices/violin.dm @@ -1,392 +1,41 @@ //copy pasta of the space piano, don't hurt me -Pete - -/obj/item/device/violin - name = "space violin" - desc = "A wooden musical instrument with four strings and a bow. \"The devil went down to space, he was looking for an assistant to grief.\"" +/obj/item/device/instrument + name = "generic instrument" + var/datum/song/handheld/song + var/instrumentId = "generic" + var/instrumentExt = "mid" icon = 'icons/obj/musician.dmi' - icon_state = "violin" force = 10 - var/datum/song/song - var/playing = 0 - var/help = 0 - var/edit = 1 - var/repeat = 0 -/obj/item/device/violin/proc/playnote(var/note as text) - //world << "Note: [note]" - var/soundfile - /*BYOND loads resource files at compile time if they are ''. This means you can't really manipulate them dynamically. - Tried doing it dynamically at first but its more trouble than its worth. Would have saved many lines tho.*/ - switch(note) - if("Cn1") soundfile = 'sound/violin/Cn1.mid' - if("C#1") soundfile = 'sound/violin/C#1.mid' - if("Db1") soundfile = 'sound/violin/Db1.mid' - if("Dn1") soundfile = 'sound/violin/Dn1.mid' - if("D#1") soundfile = 'sound/violin/D#1.mid' - if("Eb1") soundfile = 'sound/violin/Eb1.mid' - if("En1") soundfile = 'sound/violin/En1.mid' - if("E#1") soundfile = 'sound/violin/E#1.mid' - if("Fb1") soundfile = 'sound/violin/Fb1.mid' - if("Fn1") soundfile = 'sound/violin/Fn1.mid' - if("F#1") soundfile = 'sound/violin/F#1.mid' - if("Gb1") soundfile = 'sound/violin/Gb1.mid' - if("Gn1") soundfile = 'sound/violin/Gn1.mid' - if("G#1") soundfile = 'sound/violin/G#1.mid' - if("Ab1") soundfile = 'sound/violin/Ab1.mid' - if("An1") soundfile = 'sound/violin/An1.mid' - if("A#1") soundfile = 'sound/violin/A#1.mid' - if("Bb1") soundfile = 'sound/violin/Bb1.mid' - if("Bn1") soundfile = 'sound/violin/Bn1.mid' - if("B#1") soundfile = 'sound/violin/B#1.mid' - if("Cb2") soundfile = 'sound/violin/Cb2.mid' - if("Cn2") soundfile = 'sound/violin/Cn2.mid' - if("C#2") soundfile = 'sound/violin/C#2.mid' - if("Db2") soundfile = 'sound/violin/Db2.mid' - if("Dn2") soundfile = 'sound/violin/Dn2.mid' - if("D#2") soundfile = 'sound/violin/D#2.mid' - if("Eb2") soundfile = 'sound/violin/Eb2.mid' - if("En2") soundfile = 'sound/violin/En2.mid' - if("E#2") soundfile = 'sound/violin/E#2.mid' - if("Fb2") soundfile = 'sound/violin/Fb2.mid' - if("Fn2") soundfile = 'sound/violin/Fn2.mid' - if("F#2") soundfile = 'sound/violin/F#2.mid' - if("Gb2") soundfile = 'sound/violin/Gb2.mid' - if("Gn2") soundfile = 'sound/violin/Gn2.mid' - if("G#2") soundfile = 'sound/violin/G#2.mid' - if("Ab2") soundfile = 'sound/violin/Ab2.mid' - if("An2") soundfile = 'sound/violin/An2.mid' - if("A#2") soundfile = 'sound/violin/A#2.mid' - if("Bb2") soundfile = 'sound/violin/Bb2.mid' - if("Bn2") soundfile = 'sound/violin/Bn2.mid' - if("B#2") soundfile = 'sound/violin/B#2.mid' - if("Cb3") soundfile = 'sound/violin/Cb3.mid' - if("Cn3") soundfile = 'sound/violin/Cn3.mid' - if("C#3") soundfile = 'sound/violin/C#3.mid' - if("Db3") soundfile = 'sound/violin/Db3.mid' - if("Dn3") soundfile = 'sound/violin/Dn3.mid' - if("D#3") soundfile = 'sound/violin/D#3.mid' - if("Eb3") soundfile = 'sound/violin/Eb3.mid' - if("En3") soundfile = 'sound/violin/En3.mid' - if("E#3") soundfile = 'sound/violin/E#3.mid' - if("Fb3") soundfile = 'sound/violin/Fb3.mid' - if("Fn3") soundfile = 'sound/violin/Fn3.mid' - if("F#3") soundfile = 'sound/violin/F#3.mid' - if("Gb3") soundfile = 'sound/violin/Gb3.mid' - if("Gn3") soundfile = 'sound/violin/Gn3.mid' - if("G#3") soundfile = 'sound/violin/G#3.mid' - if("Ab3") soundfile = 'sound/violin/Ab3.mid' - if("An3") soundfile = 'sound/violin/An3.mid' - if("A#3") soundfile = 'sound/violin/A#3.mid' - if("Bb3") soundfile = 'sound/violin/Bb3.mid' - if("Bn3") soundfile = 'sound/violin/Bn3.mid' - if("B#3") soundfile = 'sound/violin/B#3.mid' - if("Cb4") soundfile = 'sound/violin/Cb4.mid' - if("Cn4") soundfile = 'sound/violin/Cn4.mid' - if("C#4") soundfile = 'sound/violin/C#4.mid' - if("Db4") soundfile = 'sound/violin/Db4.mid' - if("Dn4") soundfile = 'sound/violin/Dn4.mid' - if("D#4") soundfile = 'sound/violin/D#4.mid' - if("Eb4") soundfile = 'sound/violin/Eb4.mid' - if("En4") soundfile = 'sound/violin/En4.mid' - if("E#4") soundfile = 'sound/violin/E#4.mid' - if("Fb4") soundfile = 'sound/violin/Fb4.mid' - if("Fn4") soundfile = 'sound/violin/Fn4.mid' - if("F#4") soundfile = 'sound/violin/F#4.mid' - if("Gb4") soundfile = 'sound/violin/Gb4.mid' - if("Gn4") soundfile = 'sound/violin/Gn4.mid' - if("G#4") soundfile = 'sound/violin/G#4.mid' - if("Ab4") soundfile = 'sound/violin/Ab4.mid' - if("An4") soundfile = 'sound/violin/An4.mid' - if("A#4") soundfile = 'sound/violin/A#4.mid' - if("Bb4") soundfile = 'sound/violin/Bb4.mid' - if("Bn4") soundfile = 'sound/violin/Bn4.mid' - if("B#4") soundfile = 'sound/violin/B#4.mid' - if("Cb5") soundfile = 'sound/violin/Cb5.mid' - if("Cn5") soundfile = 'sound/violin/Cn5.mid' - if("C#5") soundfile = 'sound/violin/C#5.mid' - if("Db5") soundfile = 'sound/violin/Db5.mid' - if("Dn5") soundfile = 'sound/violin/Dn5.mid' - if("D#5") soundfile = 'sound/violin/D#5.mid' - if("Eb5") soundfile = 'sound/violin/Eb5.mid' - if("En5") soundfile = 'sound/violin/En5.mid' - if("E#5") soundfile = 'sound/violin/E#5.mid' - if("Fb5") soundfile = 'sound/violin/Fb5.mid' - if("Fn5") soundfile = 'sound/violin/Fn5.mid' - if("F#5") soundfile = 'sound/violin/F#5.mid' - if("Gb5") soundfile = 'sound/violin/Gb5.mid' - if("Gn5") soundfile = 'sound/violin/Gn5.mid' - if("G#5") soundfile = 'sound/violin/G#5.mid' - if("Ab5") soundfile = 'sound/violin/Ab5.mid' - if("An5") soundfile = 'sound/violin/An5.mid' - if("A#5") soundfile = 'sound/violin/A#5.mid' - if("Bb5") soundfile = 'sound/violin/Bb5.mid' - if("Bn5") soundfile = 'sound/violin/Bn5.mid' - if("B#5") soundfile = 'sound/violin/B#5.mid' - if("Cb6") soundfile = 'sound/violin/Cb6.mid' - if("Cn6") soundfile = 'sound/violin/Cn6.mid' - if("C#6") soundfile = 'sound/violin/C#6.mid' - if("Db6") soundfile = 'sound/violin/Db6.mid' - if("Dn6") soundfile = 'sound/violin/Dn6.mid' - if("D#6") soundfile = 'sound/violin/D#6.mid' - if("Eb6") soundfile = 'sound/violin/Eb6.mid' - if("En6") soundfile = 'sound/violin/En6.mid' - if("E#6") soundfile = 'sound/violin/E#6.mid' - if("Fb6") soundfile = 'sound/violin/Fb6.mid' - if("Fn6") soundfile = 'sound/violin/Fn6.mid' - if("F#6") soundfile = 'sound/violin/F#6.mid' - if("Gb6") soundfile = 'sound/violin/Gb6.mid' - if("Gn6") soundfile = 'sound/violin/Gn6.mid' - if("G#6") soundfile = 'sound/violin/G#6.mid' - if("Ab6") soundfile = 'sound/violin/Ab6.mid' - if("An6") soundfile = 'sound/violin/An6.mid' - if("A#6") soundfile = 'sound/violin/A#6.mid' - if("Bb6") soundfile = 'sound/violin/Bb6.mid' - if("Bn6") soundfile = 'sound/violin/Bn6.mid' - if("B#6") soundfile = 'sound/violin/B#6.mid' - if("Cb7") soundfile = 'sound/violin/Cb7.mid' - if("Cn7") soundfile = 'sound/violin/Cn7.mid' - if("C#7") soundfile = 'sound/violin/C#7.mid' - if("Db7") soundfile = 'sound/violin/Db7.mid' - if("Dn7") soundfile = 'sound/violin/Dn7.mid' - if("D#7") soundfile = 'sound/violin/D#7.mid' - if("Eb7") soundfile = 'sound/violin/Eb7.mid' - if("En7") soundfile = 'sound/violin/En7.mid' - if("E#7") soundfile = 'sound/violin/E#7.mid' - if("Fb7") soundfile = 'sound/violin/Fb7.mid' - if("Fn7") soundfile = 'sound/violin/Fn7.mid' - if("F#7") soundfile = 'sound/violin/F#7.mid' - if("Gb7") soundfile = 'sound/violin/Gb7.mid' - if("Gn7") soundfile = 'sound/violin/Gn7.mid' - if("G#7") soundfile = 'sound/violin/G#7.mid' - if("Ab7") soundfile = 'sound/violin/Ab7.mid' - if("An7") soundfile = 'sound/violin/An7.mid' - if("A#7") soundfile = 'sound/violin/A#7.mid' - if("Bb7") soundfile = 'sound/violin/Bb7.mid' - if("Bn7") soundfile = 'sound/violin/Bn7.mid' - if("B#7") soundfile = 'sound/violin/B#7.mid' - if("Cb8") soundfile = 'sound/violin/Cb8.mid' - if("Cn8") soundfile = 'sound/violin/Cn8.mid' - if("C#8") soundfile = 'sound/violin/C#8.mid' - if("Db8") soundfile = 'sound/violin/Db8.mid' - if("Dn8") soundfile = 'sound/violin/Dn8.mid' - if("D#8") soundfile = 'sound/violin/D#8.mid' - if("Eb8") soundfile = 'sound/violin/Eb8.mid' - if("En8") soundfile = 'sound/violin/En8.mid' - if("E#8") soundfile = 'sound/violin/E#8.mid' - if("Fb8") soundfile = 'sound/violin/Fb8.mid' - if("Fn8") soundfile = 'sound/violin/Fn8.mid' - if("F#8") soundfile = 'sound/violin/F#8.mid' - if("Gb8") soundfile = 'sound/violin/Gb8.mid' - if("Gn8") soundfile = 'sound/violin/Gn8.mid' - if("G#8") soundfile = 'sound/violin/G#8.mid' - if("Ab8") soundfile = 'sound/violin/Ab8.mid' - if("An8") soundfile = 'sound/violin/An8.mid' - if("A#8") soundfile = 'sound/violin/A#8.mid' - if("Bb8") soundfile = 'sound/violin/Bb8.mid' - if("Bn8") soundfile = 'sound/violin/Bn8.mid' - if("B#8") soundfile = 'sound/violin/B#8.mid' - if("Cb9") soundfile = 'sound/violin/Cb9.mid' - if("Cn9") soundfile = 'sound/violin/Cn9.mid' - else return +/obj/item/device/instrument/New() + ..() + song = new(instrumentId, src) + song.instrumentExt = instrumentExt - hearers(15, get_turf(src)) << sound(soundfile) +/obj/item/device/instrument/Destroy() + qdel(song) + song = null + ..() -/obj/item/device/violin/proc/playsong() - do - var/cur_oct[7] - var/cur_acc[7] - for(var/i = 1 to 7) - cur_oct[i] = "3" - cur_acc[i] = "n" +/obj/item/device/instrument/attack_self(mob/user as mob) + if(!user.IsAdvancedToolUser()) + to_chat(user, "You don't have the dexterity to do this!") + return 1 + interact(user) - for(var/line in song.lines) - //world << line - for(var/beat in splittext(lowertext(line), ",")) - //world << "beat: [beat]" - var/list/notes = splittext(beat, "/") - for(var/note in splittext(notes[1], "-")) - //world << "note: [note]" - if(!playing || !isliving(loc))//If the violin is playing, or isn't held by a person - playing = 0 - return - if(lentext(note) == 0) - continue - //world << "Parse: [copytext(note,1,2)]" - var/cur_note = text2ascii(note) - 96 - if(cur_note < 1 || cur_note > 7) - continue - for(var/i=2 to lentext(note)) - var/ni = copytext(note,i,i+1) - if(!text2num(ni)) - if(ni == "#" || ni == "b" || ni == "n") - cur_acc[cur_note] = ni - else if(ni == "s") - cur_acc[cur_note] = "#" // so shift is never required - else - cur_oct[cur_note] = ni - playnote(uppertext(copytext(note,1,2)) + cur_acc[cur_note] + cur_oct[cur_note]) - if(notes.len >= 2 && text2num(notes[2])) - sleep(song.tempo / text2num(notes[2])) - else - sleep(song.tempo) - if(repeat > 0) - repeat-- //Infinite loops are baaaad. - while(repeat > 0) - playing = 0 - -/obj/item/device/violin/attack_self(mob/user as mob) - if(!isliving(user) || user.stat || user.restrained() || user.lying) return - user.set_machine(src) - - var/dat = "Violin" - - if(song) - if(song.lines.len > 0 && !(playing)) - dat += "Play Song

" - dat += "Repeat Song: [repeat] times.

" - if(playing) - dat += "Stop Playing
" - dat += "Repeats left: [repeat].

" - if(!edit) - dat += "Show Editor

" - else - dat += "Hide Editor
" - dat += "Start a New Song
" - dat += "Import a Song

" - if(song) - var/calctempo = (10/song.tempo)*60 - dat += "Tempo : -- [calctempo] BPM ++

" - var/linecount = 0 - for(var/line in song.lines) - linecount += 1 - dat += "Line [linecount]: [line] Delete Line Modify Line
" - dat += "Add Line

" - if(help) - dat += "Hide Help
" - dat += {" - Lines are a series of chords, separated by commas (,), each with notes seperated 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 seperating each note with a hyphon: 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,/2,G#/8,B/8,E3-E4/4 -
- Lines may be up to 50 characters.
- A song may only contain up to 50 lines.
- "} - else - dat += "Show Help
" - dat += "" - user << browse(dat, "window=violin;size=700x300") - onclose(user, "violin") - -/obj/item/device/violin/Topic(href, href_list) - - if(!in_range(src, usr) || issilicon(usr) || !isliving(usr) || !usr.canmove || usr.restrained()) - usr << browse(null, "window=violin;size=700x300") - onclose(usr, "violin") +/obj/item/device/instrument/interact(mob/user as mob) + if(!user) return - if(href_list["newsong"]) - song = new() - else if(song) - 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. - var/tempnum = input("How many times do you want to repeat this piece? (max:10)") as num|null - if(tempnum > 10) - tempnum = 10 - if(tempnum < 0) - tempnum = 0 - repeat = round(tempnum) + if(user.incapacitated() || user.lying) + return - else if(href_list["tempo"]) - song.tempo += round(text2num(href_list["tempo"])) - if(song.tempo < 1) - song.tempo = 1 + user.set_machine(src) + song.interact(user) - else if(href_list["play"]) - if(song) - playing = 1 - spawn() playsong() - - else if(href_list["newline"]) - var/newline = html_encode(input("Enter your line: ", "violin") as text|null) - if(!newline) - return - if(song.lines.len > 50) - return - if(lentext(newline) > 50) - newline = copytext(newline, 1, 50) - song.lines.Add(newline) - - else if(href_list["deleteline"]) - var/num = round(text2num(href_list["deleteline"])) - if(num > song.lines.len || num < 1) - return - song.lines.Cut(num, num+1) - - else if(href_list["modifyline"]) - var/num = round(text2num(href_list["modifyline"]),1) - var/content = html_encode(input("Enter your line: ", "violin", song.lines[num]) as text|null) - if(!content) - return - if(lentext(content) > 50) - content = copytext(content, 1, 50) - if(num > song.lines.len || num < 1) - return - song.lines[num] = content - - else if(href_list["stop"]) - playing = 0 - - else if(href_list["help"]) - help = text2num(href_list["help"]) - 1 - - else if(href_list["edit"]) - edit = text2num(href_list["edit"]) - 1 - - else if(href_list["import"]) - var/t = "" - do - t = html_encode(input(usr, "Please paste the entire song, formatted:", text("[]", name), t) as message) - if(!in_range(src, usr)) - return - - if(lentext(t) >= 3072) - var/cont = input(usr, "Your message is too long! Would you like to continue editing it?", "", "yes") in list("yes", "no") - if(cont == "no") - break - while(lentext(t) > 3072) - - //split into lines - spawn() - var/list/lines = splittext(t, "\n") - var/tempo = 5 - if(copytext(lines[1],1,6) == "BPM: ") - tempo = 600 / text2num(copytext(lines[1],6)) - lines.Cut(1,2) - if(lines.len > 50) - usr << "Too many lines!" - lines.Cut(51) - var/linenum = 1 - for(var/l in lines) - if(lentext(l) > 50) - usr << "Line [linenum] too long!" - lines.Remove(l) - else - linenum++ - song = new() - song.lines = lines - song.tempo = tempo - - add_fingerprint(usr) - for(var/mob/M in viewers(1, loc)) - if((M.client && M.machine == src)) - attack_self(M) - return +/obj/item/device/instrument/violin + name = "space violin" + desc = "A wooden musical instrument with four strings and a bow. \"The devil went down to space, he was looking for an assistant to grief.\"" + icon_state = "violin" + attack_verb = list("smashed") + instrumentId = "violin" diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm index 177d674c6b..db9748e6af 100644 --- a/code/game/objects/items/weapons/gift_wrappaper.dm +++ b/code/game/objects/items/weapons/gift_wrappaper.dm @@ -101,7 +101,7 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus, /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris, /obj/item/device/paicard, - /obj/item/device/violin, + /obj/item/device/instrument/violin, /obj/item/weapon/storage/belt/utility/full, /obj/item/clothing/accessory/tie/horrible) diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm index 130c591613..95d2656ed5 100644 --- a/code/game/objects/structures/musician.dm +++ b/code/game/objects/structures/musician.dm @@ -1,23 +1,307 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 +#define MUSICIAN_HEARCHECK_MINDELAY 4 +#define INSTRUMENT_MAX_LINE_LENGTH 300 +#define INSTRUMENT_MAX_LINE_NUMBER 50 + /datum/song var/name = "Untitled" var/list/lines = new() - var/tempo = 5 + var/tempo = 5 // delay between notes + var/playing = 0 // if we're playing + var/help = 0 // if help is open + var/edit = 1 // if we're in editing mode + var/repeat = 0 // number of times remaining to repeat + var/max_repeats = 10 // maximum times we can repeat + + var/instrumentDir = "piano" // the folder with the sounds + var/instrumentExt = "ogg" // the file extension + var/obj/instrumentObj = null // the associated obj playing the sound + var/last_hearcheck = 0 + var/list/hearing_mobs + +/datum/song/New(dir, obj, ext = "ogg") + instrumentDir = dir + instrumentObj = obj + instrumentExt = ext + +/datum/song/Destroy() + instrumentObj = null + return ..() + + +// note is a number from 1-7 for A-G +// acc is either "b", "n", or "#" +// oct is 1-8 (or 9 for C) +/datum/song/proc/playnote(note, acc as text, oct) + // handle accidental -> B<>C of E<>F + if(acc == "b" && (note == 3 || note == 6)) // C or F + if(note == 3) + oct-- + note-- + acc = "n" + else if(acc == "#" && (note == 2 || note == 5)) // B or E + if(note == 2) + oct++ + note++ + acc = "n" + else if(acc == "#" && (note == 7)) //G# + note = 1 + acc = "b" + else if(acc == "#") // mass convert all sharps to flats, octave jump already handled + acc = "b" + note++ + + // check octave, C is allowed to go to 9 + if(oct < 1 || (note == 3 ? oct > 9 : oct > 8)) + return + + // now generate name + var/soundfile = "sound/instruments/[instrumentDir]/[ascii2text(note+64)][acc][oct].[instrumentExt]" + soundfile = file(soundfile) + // make sure the note exists + if(!fexists(soundfile)) + return + // and play + var/turf/source = get_turf(instrumentObj) + if((world.time - MUSICIAN_HEARCHECK_MINDELAY) > last_hearcheck) + LAZYCLEARLIST(hearing_mobs) + for(var/mob/M in hearers(15, source)) + if(!M.client || !(M.is_preference_enabled(/datum/client_preference/instrument_toggle))) + continue + LAZYSET(hearing_mobs, M, TRUE) + last_hearcheck = world.time + var/sound/music_played = sound(soundfile) + for(var/i in hearing_mobs) + var/mob/M = i + M.playsound_local(source, null, 100, falloff = 5, S = music_played) + +/datum/song/proc/updateDialog(mob/user) + instrumentObj.updateDialog() // assumes it's an object in world, override if otherwise + +/datum/song/proc/shouldStopPlaying(mob/user) + if(instrumentObj) + if(!instrumentObj.Adjacent(user) || user.stat) + return 1 + return !instrumentObj.anchored // add special cases to stop in subclasses + else + return 1 + +/datum/song/proc/playsong(mob/user) + while(repeat >= 0) + var/cur_oct[7] + var/cur_acc[7] + for(var/i = 1 to 7) + cur_oct[i] = 3 + cur_acc[i] = "n" + + for(var/line in lines) + for(var/beat in splittext(lowertext(line), ",")) + var/list/notes = splittext(beat, "/") + for(var/note in splittext(notes[1], "-")) + if(!playing || shouldStopPlaying(user))//If the instrument is playing, or special case + playing = 0 + return + if(lentext(note) == 0) + continue + var/cur_note = text2ascii(note) - 96 + if(cur_note < 1 || cur_note > 7) + continue + for(var/i=2 to lentext(note)) + var/ni = copytext(note,i,i+1) + if(!text2num(ni)) + if(ni == "#" || ni == "b" || ni == "n") + cur_acc[cur_note] = ni + else if(ni == "s") + cur_acc[cur_note] = "#" // so shift is never required + else + cur_oct[cur_note] = text2num(ni) + playnote(cur_note, cur_acc[cur_note], cur_oct[cur_note]) + if(notes.len >= 2 && text2num(notes[2])) + sleep(sanitize_tempo(tempo / text2num(notes[2]))) + else + sleep(tempo) + repeat-- + playing = 0 + repeat = 0 + updateDialog(user) + +/datum/song/proc/interact(mob/user) + var/dat = "" + if(lines.len > 0) + dat += "

Playback

" + if(!playing) + dat += {"Play Stop

+ Repeat Song: + [repeat > 0 ? "--" : "--"] + [repeat] times + [repeat < max_repeats ? "++" : "++"] +
"} + else + dat += {"Play Stop
+ Repeats left: [repeat]
"} + if(!edit) + dat += "
Show Editor
" + else + var/bpm = round(600 / tempo) + dat += {"

Editing

+ Hide Editor + Start a New Song + Import a Song

+ 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 += {"Hide Help
+ Lines are a series of chords, separated by commas (,), each with notes seperated 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 seperating each note with a hyphon: 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 50 characters.
+ A song may only contain up to 50 lines.
+ "} + else + dat += "Show Help
" + var/datum/browser/popup = new(user, "instrument", instrumentObj.name, 700, 500) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(instrumentObj.icon, instrumentObj.icon_state)) + popup.open() + +/datum/song/Topic(href, href_list) + if(!instrumentObj.Adjacent(usr) || usr.stat) + usr << browse(null, "window=instrument") + usr.unset_machine() + return + instrumentObj.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 = html_encode(input(usr, "Please paste the entire song, formatted:", text("[]", name), t) as message) + if(!in_range(instrumentObj, usr)) + return + if(lentext(t) >= INSTRUMENT_MAX_LINE_LENGTH*INSTRUMENT_MAX_LINE_NUMBER) + var/cont = input(usr, "Your message is too long! Would you like to continue editing it?", "", "yes") in list("yes", "no") + if(cont == "no") + break + while(lentext(t) > INSTRUMENT_MAX_LINE_LENGTH*INSTRUMENT_MAX_LINE_NUMBER) + //split into lines + spawn() + lines = splittext(t, "\n") + if(copytext(lines[1],1,6) == "BPM: ") + tempo = sanitize_tempo(600 / text2num(copytext(lines[1],6))) + lines.Cut(1,2) + else + tempo = sanitize_tempo(5) // default 120 BPM + if(lines.len > INSTRUMENT_MAX_LINE_NUMBER) + usr << "Too many lines!" + lines.Cut(INSTRUMENT_MAX_LINE_NUMBER+1) + var/linenum = 1 + for(var/l in lines) + if(lentext(l) > INSTRUMENT_MAX_LINE_LENGTH) + usr << "Line [linenum] too long!" + lines.Remove(l) + else + linenum++ + updateDialog(usr) // make sure updates when complete + else if(href_list["help"]) + help = text2num(href_list["help"]) - 1 + else if(href_list["edit"]) + edit = 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"]) + playing = 1 + spawn() + playsong(usr) + else if(href_list["newline"]) + var/newline = html_encode(input("Enter your line: ", instrumentObj.name) as text|null) + if(!newline || !in_range(instrumentObj, usr)) + return + if(lines.len > INSTRUMENT_MAX_LINE_NUMBER) + return + if(lentext(newline) > INSTRUMENT_MAX_LINE_LENGTH) + newline = copytext(newline, 1, INSTRUMENT_MAX_LINE_LENGTH) + 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 = html_encode(input("Enter your line: ", instrumentObj.name, lines[num]) as text|null) + if(!content || !in_range(instrumentObj, usr)) + return + if(lentext(content) > INSTRUMENT_MAX_LINE_LENGTH) + content = copytext(content, 1, INSTRUMENT_MAX_LINE_LENGTH) + if(num > lines.len || num < 1) + return + lines[num] = content + else if(href_list["stop"]) + playing = 0 + updateDialog(usr) + return + +/datum/song/proc/sanitize_tempo(new_tempo) + new_tempo = abs(new_tempo) + return max(round(new_tempo, world.tick_lag), world.tick_lag) + +// subclass for handheld instruments, like violin +/datum/song/handheld + +/datum/song/handheld/updateDialog(mob/user) + instrumentObj.interact(user) + +/datum/song/handheld/shouldStopPlaying() + if(instrumentObj) + return !isliving(instrumentObj.loc) + else + return 1 + +////////////////////////////////////////////////////////////////////////// /obj/structure/device/piano - name = "space minimoog" + name = "space piano" + desc = "This is a space piano; just like a regular piano, but always in tune! Even if the musician isn't." icon = 'icons/obj/musician.dmi' - icon_state = "minimoog" + icon_state = "piano" anchored = 1 density = 1 var/datum/song/song - var/playing = 0 - var/help = 0 - var/edit = 1 - var/repeat = 0 + +/obj/structure/device/piano/minimoog + name = "space minimoog" + icon_state = "minimoog" + desc = "This is a minimoog; just like a space piano, but more spacey!" /obj/structure/device/piano/New() + ..() + song = new("piano", src) + if(prob(50)) name = "space minimoog" desc = "This is a minimoog, like a space piano, but more spacey!" @@ -27,6 +311,11 @@ 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/device/piano/Destroy() + qdel(song) + song = null + ..() + /obj/structure/device/piano/verb/rotate() set name = "Rotate Piano" set category = "Object" @@ -44,389 +333,18 @@ src.set_dir(turn(src.dir, 90)) return -/obj/structure/device/piano/proc/playnote(var/note as text) - //world << "Note: [note]" - var/soundfile - /*BYOND loads resource files at compile time if they are ''. This means you can't really manipulate them dynamically. - Tried doing it dynamically at first but its more trouble than its worth. Would have saved many lines tho.*/ - switch(note) - if("Cn1") soundfile = 'sound/piano/Cn1.ogg' - if("C#1") soundfile = 'sound/piano/C#1.ogg' - if("Db1") soundfile = 'sound/piano/Db1.ogg' - if("Dn1") soundfile = 'sound/piano/Dn1.ogg' - if("D#1") soundfile = 'sound/piano/D#1.ogg' - if("Eb1") soundfile = 'sound/piano/Eb1.ogg' - if("En1") soundfile = 'sound/piano/En1.ogg' - if("E#1") soundfile = 'sound/piano/E#1.ogg' - if("Fb1") soundfile = 'sound/piano/Fb1.ogg' - if("Fn1") soundfile = 'sound/piano/Fn1.ogg' - if("F#1") soundfile = 'sound/piano/F#1.ogg' - if("Gb1") soundfile = 'sound/piano/Gb1.ogg' - if("Gn1") soundfile = 'sound/piano/Gn1.ogg' - if("G#1") soundfile = 'sound/piano/G#1.ogg' - if("Ab1") soundfile = 'sound/piano/Ab1.ogg' - if("An1") soundfile = 'sound/piano/An1.ogg' - if("A#1") soundfile = 'sound/piano/A#1.ogg' - if("Bb1") soundfile = 'sound/piano/Bb1.ogg' - if("Bn1") soundfile = 'sound/piano/Bn1.ogg' - if("B#1") soundfile = 'sound/piano/B#1.ogg' - if("Cb2") soundfile = 'sound/piano/Cb2.ogg' - if("Cn2") soundfile = 'sound/piano/Cn2.ogg' - if("C#2") soundfile = 'sound/piano/C#2.ogg' - if("Db2") soundfile = 'sound/piano/Db2.ogg' - if("Dn2") soundfile = 'sound/piano/Dn2.ogg' - if("D#2") soundfile = 'sound/piano/D#2.ogg' - if("Eb2") soundfile = 'sound/piano/Eb2.ogg' - if("En2") soundfile = 'sound/piano/En2.ogg' - if("E#2") soundfile = 'sound/piano/E#2.ogg' - if("Fb2") soundfile = 'sound/piano/Fb2.ogg' - if("Fn2") soundfile = 'sound/piano/Fn2.ogg' - if("F#2") soundfile = 'sound/piano/F#2.ogg' - if("Gb2") soundfile = 'sound/piano/Gb2.ogg' - if("Gn2") soundfile = 'sound/piano/Gn2.ogg' - if("G#2") soundfile = 'sound/piano/G#2.ogg' - if("Ab2") soundfile = 'sound/piano/Ab2.ogg' - if("An2") soundfile = 'sound/piano/An2.ogg' - if("A#2") soundfile = 'sound/piano/A#2.ogg' - if("Bb2") soundfile = 'sound/piano/Bb2.ogg' - if("Bn2") soundfile = 'sound/piano/Bn2.ogg' - if("B#2") soundfile = 'sound/piano/B#2.ogg' - if("Cb3") soundfile = 'sound/piano/Cb3.ogg' - if("Cn3") soundfile = 'sound/piano/Cn3.ogg' - if("C#3") soundfile = 'sound/piano/C#3.ogg' - if("Db3") soundfile = 'sound/piano/Db3.ogg' - if("Dn3") soundfile = 'sound/piano/Dn3.ogg' - if("D#3") soundfile = 'sound/piano/D#3.ogg' - if("Eb3") soundfile = 'sound/piano/Eb3.ogg' - if("En3") soundfile = 'sound/piano/En3.ogg' - if("E#3") soundfile = 'sound/piano/E#3.ogg' - if("Fb3") soundfile = 'sound/piano/Fb3.ogg' - if("Fn3") soundfile = 'sound/piano/Fn3.ogg' - if("F#3") soundfile = 'sound/piano/F#3.ogg' - if("Gb3") soundfile = 'sound/piano/Gb3.ogg' - if("Gn3") soundfile = 'sound/piano/Gn3.ogg' - if("G#3") soundfile = 'sound/piano/G#3.ogg' - if("Ab3") soundfile = 'sound/piano/Ab3.ogg' - if("An3") soundfile = 'sound/piano/An3.ogg' - if("A#3") soundfile = 'sound/piano/A#3.ogg' - if("Bb3") soundfile = 'sound/piano/Bb3.ogg' - if("Bn3") soundfile = 'sound/piano/Bn3.ogg' - if("B#3") soundfile = 'sound/piano/B#3.ogg' - if("Cb4") soundfile = 'sound/piano/Cb4.ogg' - if("Cn4") soundfile = 'sound/piano/Cn4.ogg' - if("C#4") soundfile = 'sound/piano/C#4.ogg' - if("Db4") soundfile = 'sound/piano/Db4.ogg' - if("Dn4") soundfile = 'sound/piano/Dn4.ogg' - if("D#4") soundfile = 'sound/piano/D#4.ogg' - if("Eb4") soundfile = 'sound/piano/Eb4.ogg' - if("En4") soundfile = 'sound/piano/En4.ogg' - if("E#4") soundfile = 'sound/piano/E#4.ogg' - if("Fb4") soundfile = 'sound/piano/Fb4.ogg' - if("Fn4") soundfile = 'sound/piano/Fn4.ogg' - if("F#4") soundfile = 'sound/piano/F#4.ogg' - if("Gb4") soundfile = 'sound/piano/Gb4.ogg' - if("Gn4") soundfile = 'sound/piano/Gn4.ogg' - if("G#4") soundfile = 'sound/piano/G#4.ogg' - if("Ab4") soundfile = 'sound/piano/Ab4.ogg' - if("An4") soundfile = 'sound/piano/An4.ogg' - if("A#4") soundfile = 'sound/piano/A#4.ogg' - if("Bb4") soundfile = 'sound/piano/Bb4.ogg' - if("Bn4") soundfile = 'sound/piano/Bn4.ogg' - if("B#4") soundfile = 'sound/piano/B#4.ogg' - if("Cb5") soundfile = 'sound/piano/Cb5.ogg' - if("Cn5") soundfile = 'sound/piano/Cn5.ogg' - if("C#5") soundfile = 'sound/piano/C#5.ogg' - if("Db5") soundfile = 'sound/piano/Db5.ogg' - if("Dn5") soundfile = 'sound/piano/Dn5.ogg' - if("D#5") soundfile = 'sound/piano/D#5.ogg' - if("Eb5") soundfile = 'sound/piano/Eb5.ogg' - if("En5") soundfile = 'sound/piano/En5.ogg' - if("E#5") soundfile = 'sound/piano/E#5.ogg' - if("Fb5") soundfile = 'sound/piano/Fb5.ogg' - if("Fn5") soundfile = 'sound/piano/Fn5.ogg' - if("F#5") soundfile = 'sound/piano/F#5.ogg' - if("Gb5") soundfile = 'sound/piano/Gb5.ogg' - if("Gn5") soundfile = 'sound/piano/Gn5.ogg' - if("G#5") soundfile = 'sound/piano/G#5.ogg' - if("Ab5") soundfile = 'sound/piano/Ab5.ogg' - if("An5") soundfile = 'sound/piano/An5.ogg' - if("A#5") soundfile = 'sound/piano/A#5.ogg' - if("Bb5") soundfile = 'sound/piano/Bb5.ogg' - if("Bn5") soundfile = 'sound/piano/Bn5.ogg' - if("B#5") soundfile = 'sound/piano/B#5.ogg' - if("Cb6") soundfile = 'sound/piano/Cb6.ogg' - if("Cn6") soundfile = 'sound/piano/Cn6.ogg' - if("C#6") soundfile = 'sound/piano/C#6.ogg' - if("Db6") soundfile = 'sound/piano/Db6.ogg' - if("Dn6") soundfile = 'sound/piano/Dn6.ogg' - if("D#6") soundfile = 'sound/piano/D#6.ogg' - if("Eb6") soundfile = 'sound/piano/Eb6.ogg' - if("En6") soundfile = 'sound/piano/En6.ogg' - if("E#6") soundfile = 'sound/piano/E#6.ogg' - if("Fb6") soundfile = 'sound/piano/Fb6.ogg' - if("Fn6") soundfile = 'sound/piano/Fn6.ogg' - if("F#6") soundfile = 'sound/piano/F#6.ogg' - if("Gb6") soundfile = 'sound/piano/Gb6.ogg' - if("Gn6") soundfile = 'sound/piano/Gn6.ogg' - if("G#6") soundfile = 'sound/piano/G#6.ogg' - if("Ab6") soundfile = 'sound/piano/Ab6.ogg' - if("An6") soundfile = 'sound/piano/An6.ogg' - if("A#6") soundfile = 'sound/piano/A#6.ogg' - if("Bb6") soundfile = 'sound/piano/Bb6.ogg' - if("Bn6") soundfile = 'sound/piano/Bn6.ogg' - if("B#6") soundfile = 'sound/piano/B#6.ogg' - if("Cb7") soundfile = 'sound/piano/Cb7.ogg' - if("Cn7") soundfile = 'sound/piano/Cn7.ogg' - if("C#7") soundfile = 'sound/piano/C#7.ogg' - if("Db7") soundfile = 'sound/piano/Db7.ogg' - if("Dn7") soundfile = 'sound/piano/Dn7.ogg' - if("D#7") soundfile = 'sound/piano/D#7.ogg' - if("Eb7") soundfile = 'sound/piano/Eb7.ogg' - if("En7") soundfile = 'sound/piano/En7.ogg' - if("E#7") soundfile = 'sound/piano/E#7.ogg' - if("Fb7") soundfile = 'sound/piano/Fb7.ogg' - if("Fn7") soundfile = 'sound/piano/Fn7.ogg' - if("F#7") soundfile = 'sound/piano/F#7.ogg' - if("Gb7") soundfile = 'sound/piano/Gb7.ogg' - if("Gn7") soundfile = 'sound/piano/Gn7.ogg' - if("G#7") soundfile = 'sound/piano/G#7.ogg' - if("Ab7") soundfile = 'sound/piano/Ab7.ogg' - if("An7") soundfile = 'sound/piano/An7.ogg' - if("A#7") soundfile = 'sound/piano/A#7.ogg' - if("Bb7") soundfile = 'sound/piano/Bb7.ogg' - if("Bn7") soundfile = 'sound/piano/Bn7.ogg' - if("B#7") soundfile = 'sound/piano/B#7.ogg' - if("Cb8") soundfile = 'sound/piano/Cb8.ogg' - if("Cn8") soundfile = 'sound/piano/Cn8.ogg' - if("C#8") soundfile = 'sound/piano/C#8.ogg' - if("Db8") soundfile = 'sound/piano/Db8.ogg' - if("Dn8") soundfile = 'sound/piano/Dn8.ogg' - if("D#8") soundfile = 'sound/piano/D#8.ogg' - if("Eb8") soundfile = 'sound/piano/Eb8.ogg' - if("En8") soundfile = 'sound/piano/En8.ogg' - if("E#8") soundfile = 'sound/piano/E#8.ogg' - if("Fb8") soundfile = 'sound/piano/Fb8.ogg' - if("Fn8") soundfile = 'sound/piano/Fn8.ogg' - if("F#8") soundfile = 'sound/piano/F#8.ogg' - if("Gb8") soundfile = 'sound/piano/Gb8.ogg' - if("Gn8") soundfile = 'sound/piano/Gn8.ogg' - if("G#8") soundfile = 'sound/piano/G#8.ogg' - if("Ab8") soundfile = 'sound/piano/Ab8.ogg' - if("An8") soundfile = 'sound/piano/An8.ogg' - if("A#8") soundfile = 'sound/piano/A#8.ogg' - if("Bb8") soundfile = 'sound/piano/Bb8.ogg' - if("Bn8") soundfile = 'sound/piano/Bn8.ogg' - if("B#8") soundfile = 'sound/piano/B#8.ogg' - if("Cb9") soundfile = 'sound/piano/Cb9.ogg' - if("Cn9") soundfile = 'sound/piano/Cn9.ogg' - else return +/obj/structure/device/piano/attack_hand(mob/user) + if(!user.IsAdvancedToolUser()) + to_chat(user, "You don't have the dexterity to do this!") + return 1 + interact(user) - //hearers(15, src) << sound(soundfile) - var/turf/source = get_turf(src) - for(var/mob/M in hearers(15, source)) - M.playsound_local(source, file(soundfile), 100, falloff = 5) - - -/obj/structure/device/piano/proc/playsong() - do - var/cur_oct[7] - var/cur_acc[7] - for(var/i = 1 to 7) - cur_oct[i] = "3" - cur_acc[i] = "n" - - for(var/line in song.lines) - //world << line - for(var/beat in splittext(lowertext(line), ",")) - //world << "beat: [beat]" - var/list/notes = splittext(beat, "/") - for(var/note in splittext(notes[1], "-")) - //world << "note: [note]" - if(!playing || !anchored)//If the piano is playing, or is loose - playing = 0 - return - if(lentext(note) == 0) - continue - //world << "Parse: [copytext(note,1,2)]" - var/cur_note = text2ascii(note) - 96 - if(cur_note < 1 || cur_note > 7) - continue - for(var/i=2 to lentext(note)) - var/ni = copytext(note,i,i+1) - if(!text2num(ni)) - if(ni == "#" || ni == "b" || ni == "n") - cur_acc[cur_note] = ni - else if(ni == "s") - cur_acc[cur_note] = "#" // so shift is never required - else - cur_oct[cur_note] = ni - playnote(uppertext(copytext(note,1,2)) + cur_acc[cur_note] + cur_oct[cur_note]) - if(notes.len >= 2 && text2num(notes[2])) - sleep(song.tempo / text2num(notes[2])) - else - sleep(song.tempo) - if(repeat > 0) - repeat-- //Infinite loops are baaaad. - while(repeat > 0) - playing = 0 - updateUsrDialog() - -/obj/structure/device/piano/attack_hand(var/mob/user as mob) - if(!anchored) +/obj/structure/device/piano/interact(mob/user) + if(!user || !anchored) return - usr.machine = src - var/dat = "Piano" - - if(song) - if(song.lines.len > 0 && !(playing)) - dat += "Play Song

" - dat += "Repeat Song: [repeat] times.

" - if(playing) - dat += "Stop Playing
" - dat += "Repeats left: [repeat].

" - if(!edit) - dat += "Show Editor

" - else - dat += "Hide Editor
" - dat += "Start a New Song
" - dat += "Import a Song

" - if(song) - var/calctempo = (10/song.tempo)*60 - dat += "Tempo : -- [calctempo] BPM ++

" - var/linecount = 0 - for(var/line in song.lines) - linecount += 1 - dat += "Line [linecount]: [line] Delete Line Modify Line
" - dat += "Add Line

" - if(help) - dat += "Hide Help
" - dat += {" - Lines are a series of chords, separated by commas (,), each with notes seperated 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 seperating each note with a hyphon: 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,/2,G#/8,B/8,E3-E4/4 -
- Lines may be up to 50 characters.
- A song may only contain up to 50 lines.
- "} - else - dat += "Show Help
" - dat += "" - user << browse(dat, "window=piano;size=700x300") - onclose(user, "piano") - -/obj/structure/device/piano/Topic(href, href_list) - - if(!in_range(src, usr) || issilicon(usr) || !anchored || !usr.canmove || usr.restrained()) - usr << browse(null, "window=piano;size=700x300") - onclose(usr, "piano") - return - - if(href_list["newsong"]) - song = new() - else if(song) - 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. - var/tempnum = input("How many times do you want to repeat this piece? (max:10)") as num|null - if(tempnum > 10) - tempnum = 10 - if(tempnum < 0) - tempnum = 0 - repeat = round(tempnum) - - else if(href_list["tempo"]) - song.tempo += round(text2num(href_list["tempo"])) - if(song.tempo < 1) - song.tempo = 1 - - else if(href_list["play"]) - if(song) - playing = 1 - spawn() playsong() - - else if(href_list["newline"]) - var/newline = html_encode(input("Enter your line: ", "Piano") as text|null) - if(!newline) - return - if(song.lines.len > 50) - return - if(lentext(newline) > 50) - newline = copytext(newline, 1, 50) - song.lines.Add(newline) - - else if(href_list["deleteline"]) - var/num = round(text2num(href_list["deleteline"])) - if(num > song.lines.len || num < 1) - return - song.lines.Cut(num, num+1) - - else if(href_list["modifyline"]) - var/num = round(text2num(href_list["modifyline"]),1) - var/content = html_encode(input("Enter your line: ", "Piano", song.lines[num]) as text|null) - if(!content) - return - if(lentext(content) > 50) - content = copytext(content, 1, 50) - if(num > song.lines.len || num < 1) - return - song.lines[num] = content - - else if(href_list["stop"]) - playing = 0 - - else if(href_list["help"]) - help = text2num(href_list["help"]) - 1 - - else if(href_list["edit"]) - edit = text2num(href_list["edit"]) - 1 - - else if(href_list["import"]) - var/t = "" - do - t = html_encode(input(usr, "Please paste the entire song, formatted:", text("[]", src.name), t) as message) - if (!in_range(src, usr)) - return - - if(lentext(t) >= 3072) - var/cont = input(usr, "Your message is too long! Would you like to continue editing it?", "", "yes") in list("yes", "no") - if(cont == "no") - break - while(lentext(t) > 3072) - - //split into lines - spawn() - var/list/lines = splittext(t, "\n") - var/tempo = 5 - if(copytext(lines[1],1,6) == "BPM: ") - tempo = 600 / text2num(copytext(lines[1],6)) - lines.Cut(1,2) - if(lines.len > 50) - usr << "Too many lines!" - lines.Cut(51) - var/linenum = 1 - for(var/l in lines) - if(lentext(l) > 50) - usr << "Line [linenum] too long!" - lines.Remove(l) - else - linenum++ - song = new() - song.lines = lines - song.tempo = tempo - updateUsrDialog() - - add_fingerprint(usr) - updateUsrDialog() - return + user.set_machine(src) + song.interact(user) /obj/structure/device/piano/attackby(obj/item/O as obj, mob/user as mob) if(O.is_wrench()) diff --git a/code/modules/client/preference_setup/global/setting_datums.dm b/code/modules/client/preference_setup/global/setting_datums.dm index c2f1450ca7..1b44fbc5de 100644 --- a/code/modules/client/preference_setup/global/setting_datums.dm +++ b/code/modules/client/preference_setup/global/setting_datums.dm @@ -102,7 +102,7 @@ var/list/_client_preferences_by_type description ="Mob tooltips" key = "MOB_TOOLTIPS" enabled_description = "Show" - disabled_description = "Hide" + disabled_description = "Hide" /datum/client_preference/attack_icons description ="Attack icons" @@ -183,6 +183,10 @@ var/list/_client_preferences_by_type PH.set_ao(VIS_OBJS, enabled) PH.set_ao(VIS_MOBS, enabled) +/datum/client_preference/instrument_toggle + description ="Hear In-game Instruments" + key = "SOUND_INSTRUMENT" + /******************** * Staff Preferences * ********************/ diff --git a/code/modules/client/preferences_toggle_procs.dm b/code/modules/client/preferences_toggle_procs.dm index 5312f1f07e..68747a4228 100644 --- a/code/modules/client/preferences_toggle_procs.dm +++ b/code/modules/client/preferences_toggle_procs.dm @@ -8,7 +8,7 @@ toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear all mob speech as a ghost." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear all mob speech as a ghost.") prefs.save_preferences() @@ -23,7 +23,7 @@ toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] see all emotes as a ghost." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] see all emotes as a ghost.") prefs.save_preferences() @@ -38,7 +38,7 @@ toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear all radios as a ghost." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear all radios as a ghost.") prefs.save_preferences() @@ -53,7 +53,7 @@ toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear dead chat as a ghost." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear dead chat as a ghost.") prefs.save_preferences() @@ -68,7 +68,7 @@ toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(/datum/client_preference/show_ooc)) ? "now" : "no longer"] hear global out of character chat." + to_chat(src,"You will [ (is_preference_enabled(/datum/client_preference/show_ooc)) ? "now" : "no longer"] hear global out of character chat.") prefs.save_preferences() @@ -83,7 +83,7 @@ toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear local out of character chat." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear local out of character chat.") prefs.save_preferences() @@ -98,7 +98,7 @@ toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] have the speech indicator." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] have the speech indicator.") prefs.save_preferences() @@ -113,7 +113,7 @@ toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] receive noise from admin messages." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] receive noise from admin messages.") prefs.save_preferences() @@ -128,7 +128,7 @@ toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear music in the lobby." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear music in the lobby.") prefs.save_preferences() @@ -143,7 +143,7 @@ toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : " no longer"] hear MIDIs from admins." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : " no longer"] hear MIDIs from admins.") prefs.save_preferences() @@ -158,7 +158,7 @@ toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : " no longer"] hear ambient noise." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : " no longer"] hear ambient noise.") prefs.save_preferences() @@ -175,7 +175,7 @@ prefs.be_special ^= role_flag prefs.save_preferences() - src << "You will [(prefs.be_special & role_flag) ? "now" : "no longer"] be considered for [role] events (where possible)." + to_chat(src,"You will [(prefs.be_special & role_flag) ? "now" : "no longer"] be considered for [role] events (where possible).") feedback_add_details("admin_verb","TBeSpecial") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -188,7 +188,7 @@ toggle_preference(pref_path) prefs.save_preferences() - src << "You will now use [(is_preference_enabled(/datum/client_preference/safefiring)) ? "safe" : "dangerous"] firearms firing." + to_chat(src,"You will now use [(is_preference_enabled(/datum/client_preference/safefiring)) ? "safe" : "dangerous"] firearms firing.") feedback_add_details("admin_verb","TFiringMode") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -201,10 +201,23 @@ toggle_preference(pref_path) prefs.save_preferences() - src << "You will now [(is_preference_enabled(/datum/client_preference/mob_tooltips)) ? "see" : "not see"] mob tooltips." + to_chat(src,"You will now [(is_preference_enabled(/datum/client_preference/mob_tooltips)) ? "see" : "not see"] mob tooltips.") feedback_add_details("admin_verb","TMobTooltips") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +/client/verb/toggle_hear_instruments() + set name = "Toggle Hear/Ignore Instruments" + set category = "Preferences" + set desc = "Hear In-game Instruments" + + var/pref_path = /datum/client_preference/instrument_toggle + toggle_preference(pref_path) + prefs.save_preferences() + + to_chat(src, "You will now [(is_preference_enabled(/datum/client_preference/instrument_toggle)) ? "hear" : "not hear"] instruments being played.") + + feedback_add_details("admin_verb","THInstm") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + //Toggles for Staff //Developers @@ -217,7 +230,7 @@ if(check_rights(R_ADMIN|R_DEBUG)) toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] receive debug logs." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] receive debug logs.") prefs.save_preferences() feedback_add_details("admin_verb","TBeSpecial") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -232,7 +245,7 @@ if(check_rights(R_ADMIN|R_MOD)) toggle_preference(pref_path) - src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] receive attack logs." + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] receive attack logs.") prefs.save_preferences() feedback_add_details("admin_verb","TBeSpecial") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/html/changelogs/changelog-instruments.yml b/html/changelogs/changelog-instruments.yml new file mode 100644 index 0000000000..0a37d08b12 --- /dev/null +++ b/html/changelogs/changelog-instruments.yml @@ -0,0 +1,5 @@ +author: "Poojawa" +delete-after: True +changes: + - rscadd: "Ported /vg/ instrument code, improved the UI of instruments." + - rscadd: "Added a client side pref that mutes instruments being played for you." diff --git a/sound/instruments/piano/Ab2.ogg b/sound/instruments/piano/Ab2.ogg new file mode 100644 index 0000000000..22591b0f2a Binary files /dev/null and b/sound/instruments/piano/Ab2.ogg differ diff --git a/sound/instruments/piano/Ab3.ogg b/sound/instruments/piano/Ab3.ogg new file mode 100644 index 0000000000..149fa26c89 Binary files /dev/null and b/sound/instruments/piano/Ab3.ogg differ diff --git a/sound/instruments/piano/Ab4.ogg b/sound/instruments/piano/Ab4.ogg new file mode 100644 index 0000000000..5a64cb10f8 Binary files /dev/null and b/sound/instruments/piano/Ab4.ogg differ diff --git a/sound/instruments/piano/Ab5.ogg b/sound/instruments/piano/Ab5.ogg new file mode 100644 index 0000000000..8635b8a624 Binary files /dev/null and b/sound/instruments/piano/Ab5.ogg differ diff --git a/sound/instruments/piano/Ab6.ogg b/sound/instruments/piano/Ab6.ogg new file mode 100644 index 0000000000..b771a29f27 Binary files /dev/null and b/sound/instruments/piano/Ab6.ogg differ diff --git a/sound/instruments/piano/Ab7.ogg b/sound/instruments/piano/Ab7.ogg new file mode 100644 index 0000000000..ff98fb05a8 Binary files /dev/null and b/sound/instruments/piano/Ab7.ogg differ diff --git a/sound/instruments/piano/Ab8.ogg b/sound/instruments/piano/Ab8.ogg new file mode 100644 index 0000000000..aca8ed4d4f Binary files /dev/null and b/sound/instruments/piano/Ab8.ogg differ diff --git a/sound/instruments/piano/An1.ogg b/sound/instruments/piano/An1.ogg new file mode 100644 index 0000000000..72c3a64360 Binary files /dev/null and b/sound/instruments/piano/An1.ogg differ diff --git a/sound/instruments/piano/An2.ogg b/sound/instruments/piano/An2.ogg new file mode 100644 index 0000000000..b92232621c Binary files /dev/null and b/sound/instruments/piano/An2.ogg differ diff --git a/sound/instruments/piano/An3.ogg b/sound/instruments/piano/An3.ogg new file mode 100644 index 0000000000..f4fa9a1e72 Binary files /dev/null and b/sound/instruments/piano/An3.ogg differ diff --git a/sound/instruments/piano/An4.ogg b/sound/instruments/piano/An4.ogg new file mode 100644 index 0000000000..6946e13516 Binary files /dev/null and b/sound/instruments/piano/An4.ogg differ diff --git a/sound/instruments/piano/An5.ogg b/sound/instruments/piano/An5.ogg new file mode 100644 index 0000000000..322cc3b4c5 Binary files /dev/null and b/sound/instruments/piano/An5.ogg differ diff --git a/sound/instruments/piano/An6.ogg b/sound/instruments/piano/An6.ogg new file mode 100644 index 0000000000..7a561af80e Binary files /dev/null and b/sound/instruments/piano/An6.ogg differ diff --git a/sound/instruments/piano/An7.ogg b/sound/instruments/piano/An7.ogg new file mode 100644 index 0000000000..5e935dfe3c Binary files /dev/null and b/sound/instruments/piano/An7.ogg differ diff --git a/sound/instruments/piano/An8.ogg b/sound/instruments/piano/An8.ogg new file mode 100644 index 0000000000..b70ba0b901 Binary files /dev/null and b/sound/instruments/piano/An8.ogg differ diff --git a/sound/instruments/piano/Bb1.ogg b/sound/instruments/piano/Bb1.ogg new file mode 100644 index 0000000000..d66d6b2f01 Binary files /dev/null and b/sound/instruments/piano/Bb1.ogg differ diff --git a/sound/instruments/piano/Bb2.ogg b/sound/instruments/piano/Bb2.ogg new file mode 100644 index 0000000000..c75195976c Binary files /dev/null and b/sound/instruments/piano/Bb2.ogg differ diff --git a/sound/instruments/piano/Bb3.ogg b/sound/instruments/piano/Bb3.ogg new file mode 100644 index 0000000000..648c8b3717 Binary files /dev/null and b/sound/instruments/piano/Bb3.ogg differ diff --git a/sound/instruments/piano/Bb4.ogg b/sound/instruments/piano/Bb4.ogg new file mode 100644 index 0000000000..aa842dd3ed Binary files /dev/null and b/sound/instruments/piano/Bb4.ogg differ diff --git a/sound/instruments/piano/Bb5.ogg b/sound/instruments/piano/Bb5.ogg new file mode 100644 index 0000000000..0ae78e81e6 Binary files /dev/null and b/sound/instruments/piano/Bb5.ogg differ diff --git a/sound/instruments/piano/Bb6.ogg b/sound/instruments/piano/Bb6.ogg new file mode 100644 index 0000000000..172f63f3f4 Binary files /dev/null and b/sound/instruments/piano/Bb6.ogg differ diff --git a/sound/instruments/piano/Bb7.ogg b/sound/instruments/piano/Bb7.ogg new file mode 100644 index 0000000000..d1240c623d Binary files /dev/null and b/sound/instruments/piano/Bb7.ogg differ diff --git a/sound/instruments/piano/Bb8.ogg b/sound/instruments/piano/Bb8.ogg new file mode 100644 index 0000000000..53eff2867d Binary files /dev/null and b/sound/instruments/piano/Bb8.ogg differ diff --git a/sound/instruments/piano/Bn1.ogg b/sound/instruments/piano/Bn1.ogg new file mode 100644 index 0000000000..1af185c0e8 Binary files /dev/null and b/sound/instruments/piano/Bn1.ogg differ diff --git a/sound/instruments/piano/Bn2.ogg b/sound/instruments/piano/Bn2.ogg new file mode 100644 index 0000000000..acd03a4f1d Binary files /dev/null and b/sound/instruments/piano/Bn2.ogg differ diff --git a/sound/instruments/piano/Bn3.ogg b/sound/instruments/piano/Bn3.ogg new file mode 100644 index 0000000000..61a8d157b7 Binary files /dev/null and b/sound/instruments/piano/Bn3.ogg differ diff --git a/sound/instruments/piano/Bn4.ogg b/sound/instruments/piano/Bn4.ogg new file mode 100644 index 0000000000..e38b9eec56 Binary files /dev/null and b/sound/instruments/piano/Bn4.ogg differ diff --git a/sound/instruments/piano/Bn5.ogg b/sound/instruments/piano/Bn5.ogg new file mode 100644 index 0000000000..4759c0f825 Binary files /dev/null and b/sound/instruments/piano/Bn5.ogg differ diff --git a/sound/instruments/piano/Bn6.ogg b/sound/instruments/piano/Bn6.ogg new file mode 100644 index 0000000000..0282535a01 Binary files /dev/null and b/sound/instruments/piano/Bn6.ogg differ diff --git a/sound/instruments/piano/Bn7.ogg b/sound/instruments/piano/Bn7.ogg new file mode 100644 index 0000000000..57334fba24 Binary files /dev/null and b/sound/instruments/piano/Bn7.ogg differ diff --git a/sound/instruments/piano/Bn8.ogg b/sound/instruments/piano/Bn8.ogg new file mode 100644 index 0000000000..5d723d196d Binary files /dev/null and b/sound/instruments/piano/Bn8.ogg differ diff --git a/sound/instruments/piano/Cn2.ogg b/sound/instruments/piano/Cn2.ogg new file mode 100644 index 0000000000..251c3bd1f2 Binary files /dev/null and b/sound/instruments/piano/Cn2.ogg differ diff --git a/sound/instruments/piano/Cn3.ogg b/sound/instruments/piano/Cn3.ogg new file mode 100644 index 0000000000..66286e5e71 Binary files /dev/null and b/sound/instruments/piano/Cn3.ogg differ diff --git a/sound/instruments/piano/Cn4.ogg b/sound/instruments/piano/Cn4.ogg new file mode 100644 index 0000000000..e271c7e4b0 Binary files /dev/null and b/sound/instruments/piano/Cn4.ogg differ diff --git a/sound/instruments/piano/Cn5.ogg b/sound/instruments/piano/Cn5.ogg new file mode 100644 index 0000000000..375987640d Binary files /dev/null and b/sound/instruments/piano/Cn5.ogg differ diff --git a/sound/instruments/piano/Cn6.ogg b/sound/instruments/piano/Cn6.ogg new file mode 100644 index 0000000000..1c675eb73e Binary files /dev/null and b/sound/instruments/piano/Cn6.ogg differ diff --git a/sound/instruments/piano/Cn7.ogg b/sound/instruments/piano/Cn7.ogg new file mode 100644 index 0000000000..8d87e17a64 Binary files /dev/null and b/sound/instruments/piano/Cn7.ogg differ diff --git a/sound/instruments/piano/Cn8.ogg b/sound/instruments/piano/Cn8.ogg new file mode 100644 index 0000000000..bdb8a046b6 Binary files /dev/null and b/sound/instruments/piano/Cn8.ogg differ diff --git a/sound/instruments/piano/Cn9.ogg b/sound/instruments/piano/Cn9.ogg new file mode 100644 index 0000000000..09ce034cd8 Binary files /dev/null and b/sound/instruments/piano/Cn9.ogg differ diff --git a/sound/instruments/piano/Db2.ogg b/sound/instruments/piano/Db2.ogg new file mode 100644 index 0000000000..840ffd49b5 Binary files /dev/null and b/sound/instruments/piano/Db2.ogg differ diff --git a/sound/instruments/piano/Db3.ogg b/sound/instruments/piano/Db3.ogg new file mode 100644 index 0000000000..d286473854 Binary files /dev/null and b/sound/instruments/piano/Db3.ogg differ diff --git a/sound/instruments/piano/Db4.ogg b/sound/instruments/piano/Db4.ogg new file mode 100644 index 0000000000..adffd15837 Binary files /dev/null and b/sound/instruments/piano/Db4.ogg differ diff --git a/sound/instruments/piano/Db5.ogg b/sound/instruments/piano/Db5.ogg new file mode 100644 index 0000000000..1c43e84804 Binary files /dev/null and b/sound/instruments/piano/Db5.ogg differ diff --git a/sound/instruments/piano/Db6.ogg b/sound/instruments/piano/Db6.ogg new file mode 100644 index 0000000000..92bd1d2aa6 Binary files /dev/null and b/sound/instruments/piano/Db6.ogg differ diff --git a/sound/instruments/piano/Db7.ogg b/sound/instruments/piano/Db7.ogg new file mode 100644 index 0000000000..72c34b0f6e Binary files /dev/null and b/sound/instruments/piano/Db7.ogg differ diff --git a/sound/instruments/piano/Db8.ogg b/sound/instruments/piano/Db8.ogg new file mode 100644 index 0000000000..4984f3da6f Binary files /dev/null and b/sound/instruments/piano/Db8.ogg differ diff --git a/sound/instruments/piano/Dn2.ogg b/sound/instruments/piano/Dn2.ogg new file mode 100644 index 0000000000..1d3b39a0f7 Binary files /dev/null and b/sound/instruments/piano/Dn2.ogg differ diff --git a/sound/instruments/piano/Dn3.ogg b/sound/instruments/piano/Dn3.ogg new file mode 100644 index 0000000000..36aa1e3e98 Binary files /dev/null and b/sound/instruments/piano/Dn3.ogg differ diff --git a/sound/instruments/piano/Dn4.ogg b/sound/instruments/piano/Dn4.ogg new file mode 100644 index 0000000000..89e64a10b6 Binary files /dev/null and b/sound/instruments/piano/Dn4.ogg differ diff --git a/sound/instruments/piano/Dn5.ogg b/sound/instruments/piano/Dn5.ogg new file mode 100644 index 0000000000..0e928f4613 Binary files /dev/null and b/sound/instruments/piano/Dn5.ogg differ diff --git a/sound/instruments/piano/Dn6.ogg b/sound/instruments/piano/Dn6.ogg new file mode 100644 index 0000000000..8413e46635 Binary files /dev/null and b/sound/instruments/piano/Dn6.ogg differ diff --git a/sound/instruments/piano/Dn7.ogg b/sound/instruments/piano/Dn7.ogg new file mode 100644 index 0000000000..4516a46bc4 Binary files /dev/null and b/sound/instruments/piano/Dn7.ogg differ diff --git a/sound/instruments/piano/Dn8.ogg b/sound/instruments/piano/Dn8.ogg new file mode 100644 index 0000000000..348c690fef Binary files /dev/null and b/sound/instruments/piano/Dn8.ogg differ diff --git a/sound/instruments/piano/Eb2.ogg b/sound/instruments/piano/Eb2.ogg new file mode 100644 index 0000000000..b300b39eb9 Binary files /dev/null and b/sound/instruments/piano/Eb2.ogg differ diff --git a/sound/instruments/piano/Eb3.ogg b/sound/instruments/piano/Eb3.ogg new file mode 100644 index 0000000000..879b6907fc Binary files /dev/null and b/sound/instruments/piano/Eb3.ogg differ diff --git a/sound/instruments/piano/Eb4.ogg b/sound/instruments/piano/Eb4.ogg new file mode 100644 index 0000000000..e2d57556db Binary files /dev/null and b/sound/instruments/piano/Eb4.ogg differ diff --git a/sound/instruments/piano/Eb5.ogg b/sound/instruments/piano/Eb5.ogg new file mode 100644 index 0000000000..6eec439bf8 Binary files /dev/null and b/sound/instruments/piano/Eb5.ogg differ diff --git a/sound/instruments/piano/Eb6.ogg b/sound/instruments/piano/Eb6.ogg new file mode 100644 index 0000000000..80b4952ab9 Binary files /dev/null and b/sound/instruments/piano/Eb6.ogg differ diff --git a/sound/instruments/piano/Eb7.ogg b/sound/instruments/piano/Eb7.ogg new file mode 100644 index 0000000000..e88eec4fec Binary files /dev/null and b/sound/instruments/piano/Eb7.ogg differ diff --git a/sound/instruments/piano/Eb8.ogg b/sound/instruments/piano/Eb8.ogg new file mode 100644 index 0000000000..cb7b3efdfd Binary files /dev/null and b/sound/instruments/piano/Eb8.ogg differ diff --git a/sound/instruments/piano/En2.ogg b/sound/instruments/piano/En2.ogg new file mode 100644 index 0000000000..0f5e8a073d Binary files /dev/null and b/sound/instruments/piano/En2.ogg differ diff --git a/sound/instruments/piano/En3.ogg b/sound/instruments/piano/En3.ogg new file mode 100644 index 0000000000..f24b26bf06 Binary files /dev/null and b/sound/instruments/piano/En3.ogg differ diff --git a/sound/instruments/piano/En4.ogg b/sound/instruments/piano/En4.ogg new file mode 100644 index 0000000000..eb409d0e09 Binary files /dev/null and b/sound/instruments/piano/En4.ogg differ diff --git a/sound/instruments/piano/En5.ogg b/sound/instruments/piano/En5.ogg new file mode 100644 index 0000000000..cd83f438d2 Binary files /dev/null and b/sound/instruments/piano/En5.ogg differ diff --git a/sound/instruments/piano/En6.ogg b/sound/instruments/piano/En6.ogg new file mode 100644 index 0000000000..62a0361284 Binary files /dev/null and b/sound/instruments/piano/En6.ogg differ diff --git a/sound/instruments/piano/En7.ogg b/sound/instruments/piano/En7.ogg new file mode 100644 index 0000000000..c1072ade23 Binary files /dev/null and b/sound/instruments/piano/En7.ogg differ diff --git a/sound/instruments/piano/En8.ogg b/sound/instruments/piano/En8.ogg new file mode 100644 index 0000000000..79b7176061 Binary files /dev/null and b/sound/instruments/piano/En8.ogg differ diff --git a/sound/instruments/piano/Fn2.ogg b/sound/instruments/piano/Fn2.ogg new file mode 100644 index 0000000000..449cd6a8a2 Binary files /dev/null and b/sound/instruments/piano/Fn2.ogg differ diff --git a/sound/instruments/piano/Fn3.ogg b/sound/instruments/piano/Fn3.ogg new file mode 100644 index 0000000000..afd5b3b802 Binary files /dev/null and b/sound/instruments/piano/Fn3.ogg differ diff --git a/sound/instruments/piano/Fn4.ogg b/sound/instruments/piano/Fn4.ogg new file mode 100644 index 0000000000..ac18206012 Binary files /dev/null and b/sound/instruments/piano/Fn4.ogg differ diff --git a/sound/instruments/piano/Fn5.ogg b/sound/instruments/piano/Fn5.ogg new file mode 100644 index 0000000000..e59a4c6cc6 Binary files /dev/null and b/sound/instruments/piano/Fn5.ogg differ diff --git a/sound/instruments/piano/Fn6.ogg b/sound/instruments/piano/Fn6.ogg new file mode 100644 index 0000000000..7636c242dc Binary files /dev/null and b/sound/instruments/piano/Fn6.ogg differ diff --git a/sound/instruments/piano/Fn7.ogg b/sound/instruments/piano/Fn7.ogg new file mode 100644 index 0000000000..810338b641 Binary files /dev/null and b/sound/instruments/piano/Fn7.ogg differ diff --git a/sound/instruments/piano/Fn8.ogg b/sound/instruments/piano/Fn8.ogg new file mode 100644 index 0000000000..3504877e8a Binary files /dev/null and b/sound/instruments/piano/Fn8.ogg differ diff --git a/sound/instruments/piano/Gb2.ogg b/sound/instruments/piano/Gb2.ogg new file mode 100644 index 0000000000..353d09af13 Binary files /dev/null and b/sound/instruments/piano/Gb2.ogg differ diff --git a/sound/instruments/piano/Gb3.ogg b/sound/instruments/piano/Gb3.ogg new file mode 100644 index 0000000000..4527d9849d Binary files /dev/null and b/sound/instruments/piano/Gb3.ogg differ diff --git a/sound/instruments/piano/Gb4.ogg b/sound/instruments/piano/Gb4.ogg new file mode 100644 index 0000000000..abb5264465 Binary files /dev/null and b/sound/instruments/piano/Gb4.ogg differ diff --git a/sound/instruments/piano/Gb5.ogg b/sound/instruments/piano/Gb5.ogg new file mode 100644 index 0000000000..3765c1882c Binary files /dev/null and b/sound/instruments/piano/Gb5.ogg differ diff --git a/sound/instruments/piano/Gb6.ogg b/sound/instruments/piano/Gb6.ogg new file mode 100644 index 0000000000..fb6ff9006b Binary files /dev/null and b/sound/instruments/piano/Gb6.ogg differ diff --git a/sound/instruments/piano/Gb7.ogg b/sound/instruments/piano/Gb7.ogg new file mode 100644 index 0000000000..07983100d5 Binary files /dev/null and b/sound/instruments/piano/Gb7.ogg differ diff --git a/sound/instruments/piano/Gb8.ogg b/sound/instruments/piano/Gb8.ogg new file mode 100644 index 0000000000..717707816b Binary files /dev/null and b/sound/instruments/piano/Gb8.ogg differ diff --git a/sound/instruments/piano/Gn2.ogg b/sound/instruments/piano/Gn2.ogg new file mode 100644 index 0000000000..bad4105f25 Binary files /dev/null and b/sound/instruments/piano/Gn2.ogg differ diff --git a/sound/instruments/piano/Gn3.ogg b/sound/instruments/piano/Gn3.ogg new file mode 100644 index 0000000000..b69d27986f Binary files /dev/null and b/sound/instruments/piano/Gn3.ogg differ diff --git a/sound/instruments/piano/Gn4.ogg b/sound/instruments/piano/Gn4.ogg new file mode 100644 index 0000000000..c26d227122 Binary files /dev/null and b/sound/instruments/piano/Gn4.ogg differ diff --git a/sound/instruments/piano/Gn5.ogg b/sound/instruments/piano/Gn5.ogg new file mode 100644 index 0000000000..18b94e8e72 Binary files /dev/null and b/sound/instruments/piano/Gn5.ogg differ diff --git a/sound/instruments/piano/Gn6.ogg b/sound/instruments/piano/Gn6.ogg new file mode 100644 index 0000000000..587a8432b0 Binary files /dev/null and b/sound/instruments/piano/Gn6.ogg differ diff --git a/sound/instruments/piano/Gn7.ogg b/sound/instruments/piano/Gn7.ogg new file mode 100644 index 0000000000..5da32b72a9 Binary files /dev/null and b/sound/instruments/piano/Gn7.ogg differ diff --git a/sound/instruments/piano/Gn8.ogg b/sound/instruments/piano/Gn8.ogg new file mode 100644 index 0000000000..13559c201d Binary files /dev/null and b/sound/instruments/piano/Gn8.ogg differ diff --git a/sound/violin/Ab1.mid b/sound/instruments/violin/Ab1.mid similarity index 100% rename from sound/violin/Ab1.mid rename to sound/instruments/violin/Ab1.mid diff --git a/sound/violin/Ab2.mid b/sound/instruments/violin/Ab2.mid similarity index 100% rename from sound/violin/Ab2.mid rename to sound/instruments/violin/Ab2.mid diff --git a/sound/violin/Ab3.mid b/sound/instruments/violin/Ab3.mid similarity index 100% rename from sound/violin/Ab3.mid rename to sound/instruments/violin/Ab3.mid diff --git a/sound/violin/Ab4.mid b/sound/instruments/violin/Ab4.mid similarity index 100% rename from sound/violin/Ab4.mid rename to sound/instruments/violin/Ab4.mid diff --git a/sound/violin/Ab5.mid b/sound/instruments/violin/Ab5.mid similarity index 100% rename from sound/violin/Ab5.mid rename to sound/instruments/violin/Ab5.mid diff --git a/sound/violin/Ab6.mid b/sound/instruments/violin/Ab6.mid similarity index 100% rename from sound/violin/Ab6.mid rename to sound/instruments/violin/Ab6.mid diff --git a/sound/violin/Ab7.mid b/sound/instruments/violin/Ab7.mid similarity index 100% rename from sound/violin/Ab7.mid rename to sound/instruments/violin/Ab7.mid diff --git a/sound/violin/Ab8.mid b/sound/instruments/violin/Ab8.mid similarity index 100% rename from sound/violin/Ab8.mid rename to sound/instruments/violin/Ab8.mid diff --git a/sound/violin/An1.mid b/sound/instruments/violin/An1.mid similarity index 100% rename from sound/violin/An1.mid rename to sound/instruments/violin/An1.mid diff --git a/sound/violin/An2.mid b/sound/instruments/violin/An2.mid similarity index 100% rename from sound/violin/An2.mid rename to sound/instruments/violin/An2.mid diff --git a/sound/violin/An3.mid b/sound/instruments/violin/An3.mid similarity index 100% rename from sound/violin/An3.mid rename to sound/instruments/violin/An3.mid diff --git a/sound/violin/An4.mid b/sound/instruments/violin/An4.mid similarity index 100% rename from sound/violin/An4.mid rename to sound/instruments/violin/An4.mid diff --git a/sound/violin/An5.mid b/sound/instruments/violin/An5.mid similarity index 100% rename from sound/violin/An5.mid rename to sound/instruments/violin/An5.mid diff --git a/sound/violin/An6.mid b/sound/instruments/violin/An6.mid similarity index 100% rename from sound/violin/An6.mid rename to sound/instruments/violin/An6.mid diff --git a/sound/violin/An7.mid b/sound/instruments/violin/An7.mid similarity index 100% rename from sound/violin/An7.mid rename to sound/instruments/violin/An7.mid diff --git a/sound/violin/An8.mid b/sound/instruments/violin/An8.mid similarity index 100% rename from sound/violin/An8.mid rename to sound/instruments/violin/An8.mid diff --git a/sound/violin/Bb1.mid b/sound/instruments/violin/Bb1.mid similarity index 100% rename from sound/violin/Bb1.mid rename to sound/instruments/violin/Bb1.mid diff --git a/sound/violin/Bb2.mid b/sound/instruments/violin/Bb2.mid similarity index 100% rename from sound/violin/Bb2.mid rename to sound/instruments/violin/Bb2.mid diff --git a/sound/violin/Bb3.mid b/sound/instruments/violin/Bb3.mid similarity index 100% rename from sound/violin/Bb3.mid rename to sound/instruments/violin/Bb3.mid diff --git a/sound/violin/Bb4.mid b/sound/instruments/violin/Bb4.mid similarity index 100% rename from sound/violin/Bb4.mid rename to sound/instruments/violin/Bb4.mid diff --git a/sound/violin/Bb5.mid b/sound/instruments/violin/Bb5.mid similarity index 100% rename from sound/violin/Bb5.mid rename to sound/instruments/violin/Bb5.mid diff --git a/sound/violin/Bb6.mid b/sound/instruments/violin/Bb6.mid similarity index 100% rename from sound/violin/Bb6.mid rename to sound/instruments/violin/Bb6.mid diff --git a/sound/violin/Bb7.mid b/sound/instruments/violin/Bb7.mid similarity index 100% rename from sound/violin/Bb7.mid rename to sound/instruments/violin/Bb7.mid diff --git a/sound/violin/Bb8.mid b/sound/instruments/violin/Bb8.mid similarity index 100% rename from sound/violin/Bb8.mid rename to sound/instruments/violin/Bb8.mid diff --git a/sound/violin/Bn1.mid b/sound/instruments/violin/Bn1.mid similarity index 100% rename from sound/violin/Bn1.mid rename to sound/instruments/violin/Bn1.mid diff --git a/sound/violin/Bn2.mid b/sound/instruments/violin/Bn2.mid similarity index 100% rename from sound/violin/Bn2.mid rename to sound/instruments/violin/Bn2.mid diff --git a/sound/violin/Bn3.mid b/sound/instruments/violin/Bn3.mid similarity index 100% rename from sound/violin/Bn3.mid rename to sound/instruments/violin/Bn3.mid diff --git a/sound/violin/Bn4.mid b/sound/instruments/violin/Bn4.mid similarity index 100% rename from sound/violin/Bn4.mid rename to sound/instruments/violin/Bn4.mid diff --git a/sound/violin/Bn5.mid b/sound/instruments/violin/Bn5.mid similarity index 100% rename from sound/violin/Bn5.mid rename to sound/instruments/violin/Bn5.mid diff --git a/sound/violin/Bn6.mid b/sound/instruments/violin/Bn6.mid similarity index 100% rename from sound/violin/Bn6.mid rename to sound/instruments/violin/Bn6.mid diff --git a/sound/violin/Bn7.mid b/sound/instruments/violin/Bn7.mid similarity index 100% rename from sound/violin/Bn7.mid rename to sound/instruments/violin/Bn7.mid diff --git a/sound/violin/Bn8.mid b/sound/instruments/violin/Bn8.mid similarity index 100% rename from sound/violin/Bn8.mid rename to sound/instruments/violin/Bn8.mid diff --git a/sound/violin/Cn1.mid b/sound/instruments/violin/Cn1.mid similarity index 100% rename from sound/violin/Cn1.mid rename to sound/instruments/violin/Cn1.mid diff --git a/sound/violin/Cn2.mid b/sound/instruments/violin/Cn2.mid similarity index 100% rename from sound/violin/Cn2.mid rename to sound/instruments/violin/Cn2.mid diff --git a/sound/violin/Cn3.mid b/sound/instruments/violin/Cn3.mid similarity index 100% rename from sound/violin/Cn3.mid rename to sound/instruments/violin/Cn3.mid diff --git a/sound/violin/Cn4.mid b/sound/instruments/violin/Cn4.mid similarity index 100% rename from sound/violin/Cn4.mid rename to sound/instruments/violin/Cn4.mid diff --git a/sound/violin/Cn5.mid b/sound/instruments/violin/Cn5.mid similarity index 100% rename from sound/violin/Cn5.mid rename to sound/instruments/violin/Cn5.mid diff --git a/sound/violin/Cn6.mid b/sound/instruments/violin/Cn6.mid similarity index 100% rename from sound/violin/Cn6.mid rename to sound/instruments/violin/Cn6.mid diff --git a/sound/violin/Cn7.mid b/sound/instruments/violin/Cn7.mid similarity index 100% rename from sound/violin/Cn7.mid rename to sound/instruments/violin/Cn7.mid diff --git a/sound/violin/Cn8.mid b/sound/instruments/violin/Cn8.mid similarity index 100% rename from sound/violin/Cn8.mid rename to sound/instruments/violin/Cn8.mid diff --git a/sound/violin/Cn9.mid b/sound/instruments/violin/Cn9.mid similarity index 100% rename from sound/violin/Cn9.mid rename to sound/instruments/violin/Cn9.mid diff --git a/sound/violin/Db1.mid b/sound/instruments/violin/Db1.mid similarity index 100% rename from sound/violin/Db1.mid rename to sound/instruments/violin/Db1.mid diff --git a/sound/violin/Db2.mid b/sound/instruments/violin/Db2.mid similarity index 100% rename from sound/violin/Db2.mid rename to sound/instruments/violin/Db2.mid diff --git a/sound/violin/Db3.mid b/sound/instruments/violin/Db3.mid similarity index 100% rename from sound/violin/Db3.mid rename to sound/instruments/violin/Db3.mid diff --git a/sound/violin/Db4.mid b/sound/instruments/violin/Db4.mid similarity index 100% rename from sound/violin/Db4.mid rename to sound/instruments/violin/Db4.mid diff --git a/sound/violin/Db5.mid b/sound/instruments/violin/Db5.mid similarity index 100% rename from sound/violin/Db5.mid rename to sound/instruments/violin/Db5.mid diff --git a/sound/violin/Db6.mid b/sound/instruments/violin/Db6.mid similarity index 100% rename from sound/violin/Db6.mid rename to sound/instruments/violin/Db6.mid diff --git a/sound/violin/Db7.mid b/sound/instruments/violin/Db7.mid similarity index 100% rename from sound/violin/Db7.mid rename to sound/instruments/violin/Db7.mid diff --git a/sound/violin/Db8.mid b/sound/instruments/violin/Db8.mid similarity index 100% rename from sound/violin/Db8.mid rename to sound/instruments/violin/Db8.mid diff --git a/sound/violin/Dn1.mid b/sound/instruments/violin/Dn1.mid similarity index 100% rename from sound/violin/Dn1.mid rename to sound/instruments/violin/Dn1.mid diff --git a/sound/violin/Dn2.mid b/sound/instruments/violin/Dn2.mid similarity index 100% rename from sound/violin/Dn2.mid rename to sound/instruments/violin/Dn2.mid diff --git a/sound/violin/Dn3.mid b/sound/instruments/violin/Dn3.mid similarity index 100% rename from sound/violin/Dn3.mid rename to sound/instruments/violin/Dn3.mid diff --git a/sound/violin/Dn4.mid b/sound/instruments/violin/Dn4.mid similarity index 100% rename from sound/violin/Dn4.mid rename to sound/instruments/violin/Dn4.mid diff --git a/sound/violin/Dn5.mid b/sound/instruments/violin/Dn5.mid similarity index 100% rename from sound/violin/Dn5.mid rename to sound/instruments/violin/Dn5.mid diff --git a/sound/violin/Dn6.mid b/sound/instruments/violin/Dn6.mid similarity index 100% rename from sound/violin/Dn6.mid rename to sound/instruments/violin/Dn6.mid diff --git a/sound/violin/Dn7.mid b/sound/instruments/violin/Dn7.mid similarity index 100% rename from sound/violin/Dn7.mid rename to sound/instruments/violin/Dn7.mid diff --git a/sound/violin/Dn8.mid b/sound/instruments/violin/Dn8.mid similarity index 100% rename from sound/violin/Dn8.mid rename to sound/instruments/violin/Dn8.mid diff --git a/sound/violin/Eb1.mid b/sound/instruments/violin/Eb1.mid similarity index 100% rename from sound/violin/Eb1.mid rename to sound/instruments/violin/Eb1.mid diff --git a/sound/violin/Eb2.mid b/sound/instruments/violin/Eb2.mid similarity index 100% rename from sound/violin/Eb2.mid rename to sound/instruments/violin/Eb2.mid diff --git a/sound/violin/Eb3.mid b/sound/instruments/violin/Eb3.mid similarity index 100% rename from sound/violin/Eb3.mid rename to sound/instruments/violin/Eb3.mid diff --git a/sound/violin/Eb4.mid b/sound/instruments/violin/Eb4.mid similarity index 100% rename from sound/violin/Eb4.mid rename to sound/instruments/violin/Eb4.mid diff --git a/sound/violin/Eb5.mid b/sound/instruments/violin/Eb5.mid similarity index 100% rename from sound/violin/Eb5.mid rename to sound/instruments/violin/Eb5.mid diff --git a/sound/violin/Eb6.mid b/sound/instruments/violin/Eb6.mid similarity index 100% rename from sound/violin/Eb6.mid rename to sound/instruments/violin/Eb6.mid diff --git a/sound/violin/Eb7.mid b/sound/instruments/violin/Eb7.mid similarity index 100% rename from sound/violin/Eb7.mid rename to sound/instruments/violin/Eb7.mid diff --git a/sound/violin/Eb8.mid b/sound/instruments/violin/Eb8.mid similarity index 100% rename from sound/violin/Eb8.mid rename to sound/instruments/violin/Eb8.mid diff --git a/sound/violin/En1.mid b/sound/instruments/violin/En1.mid similarity index 100% rename from sound/violin/En1.mid rename to sound/instruments/violin/En1.mid diff --git a/sound/violin/En2.mid b/sound/instruments/violin/En2.mid similarity index 100% rename from sound/violin/En2.mid rename to sound/instruments/violin/En2.mid diff --git a/sound/violin/En3.mid b/sound/instruments/violin/En3.mid similarity index 100% rename from sound/violin/En3.mid rename to sound/instruments/violin/En3.mid diff --git a/sound/violin/En4.mid b/sound/instruments/violin/En4.mid similarity index 100% rename from sound/violin/En4.mid rename to sound/instruments/violin/En4.mid diff --git a/sound/violin/En5.mid b/sound/instruments/violin/En5.mid similarity index 100% rename from sound/violin/En5.mid rename to sound/instruments/violin/En5.mid diff --git a/sound/violin/En6.mid b/sound/instruments/violin/En6.mid similarity index 100% rename from sound/violin/En6.mid rename to sound/instruments/violin/En6.mid diff --git a/sound/violin/En7.mid b/sound/instruments/violin/En7.mid similarity index 100% rename from sound/violin/En7.mid rename to sound/instruments/violin/En7.mid diff --git a/sound/violin/En8.mid b/sound/instruments/violin/En8.mid similarity index 100% rename from sound/violin/En8.mid rename to sound/instruments/violin/En8.mid diff --git a/sound/violin/Fn1.mid b/sound/instruments/violin/Fn1.mid similarity index 100% rename from sound/violin/Fn1.mid rename to sound/instruments/violin/Fn1.mid diff --git a/sound/violin/Fn2.mid b/sound/instruments/violin/Fn2.mid similarity index 100% rename from sound/violin/Fn2.mid rename to sound/instruments/violin/Fn2.mid diff --git a/sound/violin/Fn3.mid b/sound/instruments/violin/Fn3.mid similarity index 100% rename from sound/violin/Fn3.mid rename to sound/instruments/violin/Fn3.mid diff --git a/sound/violin/Fn4.mid b/sound/instruments/violin/Fn4.mid similarity index 100% rename from sound/violin/Fn4.mid rename to sound/instruments/violin/Fn4.mid diff --git a/sound/violin/Fn5.mid b/sound/instruments/violin/Fn5.mid similarity index 100% rename from sound/violin/Fn5.mid rename to sound/instruments/violin/Fn5.mid diff --git a/sound/violin/Fn6.mid b/sound/instruments/violin/Fn6.mid similarity index 100% rename from sound/violin/Fn6.mid rename to sound/instruments/violin/Fn6.mid diff --git a/sound/violin/Fn7.mid b/sound/instruments/violin/Fn7.mid similarity index 100% rename from sound/violin/Fn7.mid rename to sound/instruments/violin/Fn7.mid diff --git a/sound/violin/Fn8.mid b/sound/instruments/violin/Fn8.mid similarity index 100% rename from sound/violin/Fn8.mid rename to sound/instruments/violin/Fn8.mid diff --git a/sound/violin/Gb1.mid b/sound/instruments/violin/Gb1.mid similarity index 100% rename from sound/violin/Gb1.mid rename to sound/instruments/violin/Gb1.mid diff --git a/sound/violin/Gb2.mid b/sound/instruments/violin/Gb2.mid similarity index 100% rename from sound/violin/Gb2.mid rename to sound/instruments/violin/Gb2.mid diff --git a/sound/violin/Gb3.mid b/sound/instruments/violin/Gb3.mid similarity index 100% rename from sound/violin/Gb3.mid rename to sound/instruments/violin/Gb3.mid diff --git a/sound/violin/Gb4.mid b/sound/instruments/violin/Gb4.mid similarity index 100% rename from sound/violin/Gb4.mid rename to sound/instruments/violin/Gb4.mid diff --git a/sound/violin/Gb5.mid b/sound/instruments/violin/Gb5.mid similarity index 100% rename from sound/violin/Gb5.mid rename to sound/instruments/violin/Gb5.mid diff --git a/sound/violin/Gb6.mid b/sound/instruments/violin/Gb6.mid similarity index 100% rename from sound/violin/Gb6.mid rename to sound/instruments/violin/Gb6.mid diff --git a/sound/violin/Gb7.mid b/sound/instruments/violin/Gb7.mid similarity index 100% rename from sound/violin/Gb7.mid rename to sound/instruments/violin/Gb7.mid diff --git a/sound/violin/Gb8.mid b/sound/instruments/violin/Gb8.mid similarity index 100% rename from sound/violin/Gb8.mid rename to sound/instruments/violin/Gb8.mid diff --git a/sound/violin/Gn1.mid b/sound/instruments/violin/Gn1.mid similarity index 100% rename from sound/violin/Gn1.mid rename to sound/instruments/violin/Gn1.mid diff --git a/sound/violin/Gn2.mid b/sound/instruments/violin/Gn2.mid similarity index 100% rename from sound/violin/Gn2.mid rename to sound/instruments/violin/Gn2.mid diff --git a/sound/violin/Gn3.mid b/sound/instruments/violin/Gn3.mid similarity index 100% rename from sound/violin/Gn3.mid rename to sound/instruments/violin/Gn3.mid diff --git a/sound/violin/Gn4.mid b/sound/instruments/violin/Gn4.mid similarity index 100% rename from sound/violin/Gn4.mid rename to sound/instruments/violin/Gn4.mid diff --git a/sound/violin/Gn5.mid b/sound/instruments/violin/Gn5.mid similarity index 100% rename from sound/violin/Gn5.mid rename to sound/instruments/violin/Gn5.mid diff --git a/sound/violin/Gn6.mid b/sound/instruments/violin/Gn6.mid similarity index 100% rename from sound/violin/Gn6.mid rename to sound/instruments/violin/Gn6.mid diff --git a/sound/violin/Gn7.mid b/sound/instruments/violin/Gn7.mid similarity index 100% rename from sound/violin/Gn7.mid rename to sound/instruments/violin/Gn7.mid diff --git a/sound/violin/Gn8.mid b/sound/instruments/violin/Gn8.mid similarity index 100% rename from sound/violin/Gn8.mid rename to sound/instruments/violin/Gn8.mid diff --git a/sound/piano/A#1.ogg b/sound/piano/A#1.ogg deleted file mode 100644 index b40cc72333..0000000000 Binary files a/sound/piano/A#1.ogg and /dev/null differ diff --git a/sound/piano/A#2.ogg b/sound/piano/A#2.ogg deleted file mode 100644 index 2b0677d44a..0000000000 Binary files a/sound/piano/A#2.ogg and /dev/null differ diff --git a/sound/piano/A#3.ogg b/sound/piano/A#3.ogg deleted file mode 100644 index e8fc263d8f..0000000000 Binary files a/sound/piano/A#3.ogg and /dev/null differ diff --git a/sound/piano/A#4.ogg b/sound/piano/A#4.ogg deleted file mode 100644 index 8ba7c40d33..0000000000 Binary files a/sound/piano/A#4.ogg and /dev/null differ diff --git a/sound/piano/A#5.ogg b/sound/piano/A#5.ogg deleted file mode 100644 index 65c14d3320..0000000000 Binary files a/sound/piano/A#5.ogg and /dev/null differ diff --git a/sound/piano/A#6.ogg b/sound/piano/A#6.ogg deleted file mode 100644 index 88317f7d55..0000000000 Binary files a/sound/piano/A#6.ogg and /dev/null differ diff --git a/sound/piano/A#7.ogg b/sound/piano/A#7.ogg deleted file mode 100644 index e7354522fe..0000000000 Binary files a/sound/piano/A#7.ogg and /dev/null differ diff --git a/sound/piano/A#8.ogg b/sound/piano/A#8.ogg deleted file mode 100644 index 7d8014c059..0000000000 Binary files a/sound/piano/A#8.ogg and /dev/null differ diff --git a/sound/piano/Ab1.ogg b/sound/piano/Ab1.ogg deleted file mode 100644 index 0c5ae36216..0000000000 Binary files a/sound/piano/Ab1.ogg and /dev/null differ diff --git a/sound/piano/Ab2.ogg b/sound/piano/Ab2.ogg deleted file mode 100644 index 4dabf2cc82..0000000000 Binary files a/sound/piano/Ab2.ogg and /dev/null differ diff --git a/sound/piano/Ab3.ogg b/sound/piano/Ab3.ogg deleted file mode 100644 index beb96005de..0000000000 Binary files a/sound/piano/Ab3.ogg and /dev/null differ diff --git a/sound/piano/Ab4.ogg b/sound/piano/Ab4.ogg deleted file mode 100644 index bfcf301877..0000000000 Binary files a/sound/piano/Ab4.ogg and /dev/null differ diff --git a/sound/piano/Ab5.ogg b/sound/piano/Ab5.ogg deleted file mode 100644 index b95acaf5a0..0000000000 Binary files a/sound/piano/Ab5.ogg and /dev/null differ diff --git a/sound/piano/Ab6.ogg b/sound/piano/Ab6.ogg deleted file mode 100644 index 501f51b3e1..0000000000 Binary files a/sound/piano/Ab6.ogg and /dev/null differ diff --git a/sound/piano/Ab7.ogg b/sound/piano/Ab7.ogg deleted file mode 100644 index b96f4e0766..0000000000 Binary files a/sound/piano/Ab7.ogg and /dev/null differ diff --git a/sound/piano/Ab8.ogg b/sound/piano/Ab8.ogg deleted file mode 100644 index c4bd37195b..0000000000 Binary files a/sound/piano/Ab8.ogg and /dev/null differ diff --git a/sound/piano/An1.ogg b/sound/piano/An1.ogg deleted file mode 100644 index 5698578e79..0000000000 Binary files a/sound/piano/An1.ogg and /dev/null differ diff --git a/sound/piano/An2.ogg b/sound/piano/An2.ogg deleted file mode 100644 index aaff9b8e65..0000000000 Binary files a/sound/piano/An2.ogg and /dev/null differ diff --git a/sound/piano/An3.ogg b/sound/piano/An3.ogg deleted file mode 100644 index 16fe54be83..0000000000 Binary files a/sound/piano/An3.ogg and /dev/null differ diff --git a/sound/piano/An4.ogg b/sound/piano/An4.ogg deleted file mode 100644 index 52cfc701a0..0000000000 Binary files a/sound/piano/An4.ogg and /dev/null differ diff --git a/sound/piano/An5.ogg b/sound/piano/An5.ogg deleted file mode 100644 index ba4ad8ee61..0000000000 Binary files a/sound/piano/An5.ogg and /dev/null differ diff --git a/sound/piano/An6.ogg b/sound/piano/An6.ogg deleted file mode 100644 index 49be4e31a8..0000000000 Binary files a/sound/piano/An6.ogg and /dev/null differ diff --git a/sound/piano/An7.ogg b/sound/piano/An7.ogg deleted file mode 100644 index da5f477db7..0000000000 Binary files a/sound/piano/An7.ogg and /dev/null differ diff --git a/sound/piano/An8.ogg b/sound/piano/An8.ogg deleted file mode 100644 index 32e5cb81e7..0000000000 Binary files a/sound/piano/An8.ogg and /dev/null differ diff --git a/sound/piano/B#1.ogg b/sound/piano/B#1.ogg deleted file mode 100644 index b82c6cff8a..0000000000 Binary files a/sound/piano/B#1.ogg and /dev/null differ diff --git a/sound/piano/B#2.ogg b/sound/piano/B#2.ogg deleted file mode 100644 index e218380629..0000000000 Binary files a/sound/piano/B#2.ogg and /dev/null differ diff --git a/sound/piano/B#3.ogg b/sound/piano/B#3.ogg deleted file mode 100644 index b4dd559a24..0000000000 Binary files a/sound/piano/B#3.ogg and /dev/null differ diff --git a/sound/piano/B#4.ogg b/sound/piano/B#4.ogg deleted file mode 100644 index 578c45e452..0000000000 Binary files a/sound/piano/B#4.ogg and /dev/null differ diff --git a/sound/piano/B#5.ogg b/sound/piano/B#5.ogg deleted file mode 100644 index 6dfd56115f..0000000000 Binary files a/sound/piano/B#5.ogg and /dev/null differ diff --git a/sound/piano/B#6.ogg b/sound/piano/B#6.ogg deleted file mode 100644 index 32996328c8..0000000000 Binary files a/sound/piano/B#6.ogg and /dev/null differ diff --git a/sound/piano/B#7.ogg b/sound/piano/B#7.ogg deleted file mode 100644 index 89b771aa37..0000000000 Binary files a/sound/piano/B#7.ogg and /dev/null differ diff --git a/sound/piano/B#8.ogg b/sound/piano/B#8.ogg deleted file mode 100644 index cca99040de..0000000000 Binary files a/sound/piano/B#8.ogg and /dev/null differ diff --git a/sound/piano/Bb1.ogg b/sound/piano/Bb1.ogg deleted file mode 100644 index c872abe1a9..0000000000 Binary files a/sound/piano/Bb1.ogg and /dev/null differ diff --git a/sound/piano/Bb2.ogg b/sound/piano/Bb2.ogg deleted file mode 100644 index acd54ab388..0000000000 Binary files a/sound/piano/Bb2.ogg and /dev/null differ diff --git a/sound/piano/Bb3.ogg b/sound/piano/Bb3.ogg deleted file mode 100644 index 33bea9f079..0000000000 Binary files a/sound/piano/Bb3.ogg and /dev/null differ diff --git a/sound/piano/Bb4.ogg b/sound/piano/Bb4.ogg deleted file mode 100644 index 736fa1fc8d..0000000000 Binary files a/sound/piano/Bb4.ogg and /dev/null differ diff --git a/sound/piano/Bb5.ogg b/sound/piano/Bb5.ogg deleted file mode 100644 index 38bddcf761..0000000000 Binary files a/sound/piano/Bb5.ogg and /dev/null differ diff --git a/sound/piano/Bb6.ogg b/sound/piano/Bb6.ogg deleted file mode 100644 index e7a0425745..0000000000 Binary files a/sound/piano/Bb6.ogg and /dev/null differ diff --git a/sound/piano/Bb7.ogg b/sound/piano/Bb7.ogg deleted file mode 100644 index 89441baba6..0000000000 Binary files a/sound/piano/Bb7.ogg and /dev/null differ diff --git a/sound/piano/Bb8.ogg b/sound/piano/Bb8.ogg deleted file mode 100644 index 49dce93253..0000000000 Binary files a/sound/piano/Bb8.ogg and /dev/null differ diff --git a/sound/piano/Bn1.ogg b/sound/piano/Bn1.ogg deleted file mode 100644 index 2ddf3f59b8..0000000000 Binary files a/sound/piano/Bn1.ogg and /dev/null differ diff --git a/sound/piano/Bn2.ogg b/sound/piano/Bn2.ogg deleted file mode 100644 index 92b49a24ca..0000000000 Binary files a/sound/piano/Bn2.ogg and /dev/null differ diff --git a/sound/piano/Bn3.ogg b/sound/piano/Bn3.ogg deleted file mode 100644 index 20aa8ca434..0000000000 Binary files a/sound/piano/Bn3.ogg and /dev/null differ diff --git a/sound/piano/Bn4.ogg b/sound/piano/Bn4.ogg deleted file mode 100644 index b2ecc85255..0000000000 Binary files a/sound/piano/Bn4.ogg and /dev/null differ diff --git a/sound/piano/Bn5.ogg b/sound/piano/Bn5.ogg deleted file mode 100644 index e03af44292..0000000000 Binary files a/sound/piano/Bn5.ogg and /dev/null differ diff --git a/sound/piano/Bn6.ogg b/sound/piano/Bn6.ogg deleted file mode 100644 index 1acf0d94d0..0000000000 Binary files a/sound/piano/Bn6.ogg and /dev/null differ diff --git a/sound/piano/Bn7.ogg b/sound/piano/Bn7.ogg deleted file mode 100644 index b68372b4ab..0000000000 Binary files a/sound/piano/Bn7.ogg and /dev/null differ diff --git a/sound/piano/Bn8.ogg b/sound/piano/Bn8.ogg deleted file mode 100644 index 5db915a607..0000000000 Binary files a/sound/piano/Bn8.ogg and /dev/null differ diff --git a/sound/piano/C#1.ogg b/sound/piano/C#1.ogg deleted file mode 100644 index dc3c859cae..0000000000 Binary files a/sound/piano/C#1.ogg and /dev/null differ diff --git a/sound/piano/C#2.ogg b/sound/piano/C#2.ogg deleted file mode 100644 index 5a36e244a7..0000000000 Binary files a/sound/piano/C#2.ogg and /dev/null differ diff --git a/sound/piano/C#3.ogg b/sound/piano/C#3.ogg deleted file mode 100644 index af3e49f21e..0000000000 Binary files a/sound/piano/C#3.ogg and /dev/null differ diff --git a/sound/piano/C#4.ogg b/sound/piano/C#4.ogg deleted file mode 100644 index 8b18a4ce41..0000000000 Binary files a/sound/piano/C#4.ogg and /dev/null differ diff --git a/sound/piano/C#5.ogg b/sound/piano/C#5.ogg deleted file mode 100644 index 690bd2763e..0000000000 Binary files a/sound/piano/C#5.ogg and /dev/null differ diff --git a/sound/piano/C#6.ogg b/sound/piano/C#6.ogg deleted file mode 100644 index 3a27950bd3..0000000000 Binary files a/sound/piano/C#6.ogg and /dev/null differ diff --git a/sound/piano/C#7.ogg b/sound/piano/C#7.ogg deleted file mode 100644 index 9a7bc071ea..0000000000 Binary files a/sound/piano/C#7.ogg and /dev/null differ diff --git a/sound/piano/C#8.ogg b/sound/piano/C#8.ogg deleted file mode 100644 index 9adc2dbbbc..0000000000 Binary files a/sound/piano/C#8.ogg and /dev/null differ diff --git a/sound/piano/Cb2.ogg b/sound/piano/Cb2.ogg deleted file mode 100644 index 7c36759c95..0000000000 Binary files a/sound/piano/Cb2.ogg and /dev/null differ diff --git a/sound/piano/Cb3.ogg b/sound/piano/Cb3.ogg deleted file mode 100644 index b856963854..0000000000 Binary files a/sound/piano/Cb3.ogg and /dev/null differ diff --git a/sound/piano/Cb4.ogg b/sound/piano/Cb4.ogg deleted file mode 100644 index fb693c0cad..0000000000 Binary files a/sound/piano/Cb4.ogg and /dev/null differ diff --git a/sound/piano/Cb5.ogg b/sound/piano/Cb5.ogg deleted file mode 100644 index b114181e3f..0000000000 Binary files a/sound/piano/Cb5.ogg and /dev/null differ diff --git a/sound/piano/Cb6.ogg b/sound/piano/Cb6.ogg deleted file mode 100644 index 42470f9f3a..0000000000 Binary files a/sound/piano/Cb6.ogg and /dev/null differ diff --git a/sound/piano/Cb7.ogg b/sound/piano/Cb7.ogg deleted file mode 100644 index adeb34cacd..0000000000 Binary files a/sound/piano/Cb7.ogg and /dev/null differ diff --git a/sound/piano/Cb8.ogg b/sound/piano/Cb8.ogg deleted file mode 100644 index 1f2cbb94dd..0000000000 Binary files a/sound/piano/Cb8.ogg and /dev/null differ diff --git a/sound/piano/Cb9.ogg b/sound/piano/Cb9.ogg deleted file mode 100644 index 25c0d646c3..0000000000 Binary files a/sound/piano/Cb9.ogg and /dev/null differ diff --git a/sound/piano/Cn1.ogg b/sound/piano/Cn1.ogg deleted file mode 100644 index e05b36d325..0000000000 Binary files a/sound/piano/Cn1.ogg and /dev/null differ diff --git a/sound/piano/Cn2.ogg b/sound/piano/Cn2.ogg deleted file mode 100644 index cc96f26570..0000000000 Binary files a/sound/piano/Cn2.ogg and /dev/null differ diff --git a/sound/piano/Cn3.ogg b/sound/piano/Cn3.ogg deleted file mode 100644 index 6d2f206927..0000000000 Binary files a/sound/piano/Cn3.ogg and /dev/null differ diff --git a/sound/piano/Cn4.ogg b/sound/piano/Cn4.ogg deleted file mode 100644 index d0c0f4995e..0000000000 Binary files a/sound/piano/Cn4.ogg and /dev/null differ diff --git a/sound/piano/Cn5.ogg b/sound/piano/Cn5.ogg deleted file mode 100644 index 1d95dfa099..0000000000 Binary files a/sound/piano/Cn5.ogg and /dev/null differ diff --git a/sound/piano/Cn6.ogg b/sound/piano/Cn6.ogg deleted file mode 100644 index f1e847d32f..0000000000 Binary files a/sound/piano/Cn6.ogg and /dev/null differ diff --git a/sound/piano/Cn7.ogg b/sound/piano/Cn7.ogg deleted file mode 100644 index 85cb1dd0fe..0000000000 Binary files a/sound/piano/Cn7.ogg and /dev/null differ diff --git a/sound/piano/Cn8.ogg b/sound/piano/Cn8.ogg deleted file mode 100644 index f081d91d8b..0000000000 Binary files a/sound/piano/Cn8.ogg and /dev/null differ diff --git a/sound/piano/Cn9.ogg b/sound/piano/Cn9.ogg deleted file mode 100644 index 06172ca6f1..0000000000 Binary files a/sound/piano/Cn9.ogg and /dev/null differ diff --git a/sound/piano/D#1.ogg b/sound/piano/D#1.ogg deleted file mode 100644 index bd58c7dd75..0000000000 Binary files a/sound/piano/D#1.ogg and /dev/null differ diff --git a/sound/piano/D#2.ogg b/sound/piano/D#2.ogg deleted file mode 100644 index fc01076810..0000000000 Binary files a/sound/piano/D#2.ogg and /dev/null differ diff --git a/sound/piano/D#3.ogg b/sound/piano/D#3.ogg deleted file mode 100644 index e437f44466..0000000000 Binary files a/sound/piano/D#3.ogg and /dev/null differ diff --git a/sound/piano/D#4.ogg b/sound/piano/D#4.ogg deleted file mode 100644 index 0804aa03de..0000000000 Binary files a/sound/piano/D#4.ogg and /dev/null differ diff --git a/sound/piano/D#5.ogg b/sound/piano/D#5.ogg deleted file mode 100644 index 40889dbae5..0000000000 Binary files a/sound/piano/D#5.ogg and /dev/null differ diff --git a/sound/piano/D#6.ogg b/sound/piano/D#6.ogg deleted file mode 100644 index 616481d2f9..0000000000 Binary files a/sound/piano/D#6.ogg and /dev/null differ diff --git a/sound/piano/D#7.ogg b/sound/piano/D#7.ogg deleted file mode 100644 index 5c191fb7f6..0000000000 Binary files a/sound/piano/D#7.ogg and /dev/null differ diff --git a/sound/piano/D#8.ogg b/sound/piano/D#8.ogg deleted file mode 100644 index 5955ed7f8d..0000000000 Binary files a/sound/piano/D#8.ogg and /dev/null differ diff --git a/sound/piano/Db1.ogg b/sound/piano/Db1.ogg deleted file mode 100644 index a33554e476..0000000000 Binary files a/sound/piano/Db1.ogg and /dev/null differ diff --git a/sound/piano/Db2.ogg b/sound/piano/Db2.ogg deleted file mode 100644 index dd45c2f11d..0000000000 Binary files a/sound/piano/Db2.ogg and /dev/null differ diff --git a/sound/piano/Db3.ogg b/sound/piano/Db3.ogg deleted file mode 100644 index ebfa23bbc3..0000000000 Binary files a/sound/piano/Db3.ogg and /dev/null differ diff --git a/sound/piano/Db4.ogg b/sound/piano/Db4.ogg deleted file mode 100644 index 52486484eb..0000000000 Binary files a/sound/piano/Db4.ogg and /dev/null differ diff --git a/sound/piano/Db5.ogg b/sound/piano/Db5.ogg deleted file mode 100644 index 8250bbb7cb..0000000000 Binary files a/sound/piano/Db5.ogg and /dev/null differ diff --git a/sound/piano/Db6.ogg b/sound/piano/Db6.ogg deleted file mode 100644 index 8ec394da17..0000000000 Binary files a/sound/piano/Db6.ogg and /dev/null differ diff --git a/sound/piano/Db7.ogg b/sound/piano/Db7.ogg deleted file mode 100644 index 9a6c81dc34..0000000000 Binary files a/sound/piano/Db7.ogg and /dev/null differ diff --git a/sound/piano/Db8.ogg b/sound/piano/Db8.ogg deleted file mode 100644 index 2790f60390..0000000000 Binary files a/sound/piano/Db8.ogg and /dev/null differ diff --git a/sound/piano/Dn1.ogg b/sound/piano/Dn1.ogg deleted file mode 100644 index 89ac14cc14..0000000000 Binary files a/sound/piano/Dn1.ogg and /dev/null differ diff --git a/sound/piano/Dn2.ogg b/sound/piano/Dn2.ogg deleted file mode 100644 index bb5f18fbf7..0000000000 Binary files a/sound/piano/Dn2.ogg and /dev/null differ diff --git a/sound/piano/Dn3.ogg b/sound/piano/Dn3.ogg deleted file mode 100644 index 6a54b77549..0000000000 Binary files a/sound/piano/Dn3.ogg and /dev/null differ diff --git a/sound/piano/Dn4.ogg b/sound/piano/Dn4.ogg deleted file mode 100644 index 8f930b8b50..0000000000 Binary files a/sound/piano/Dn4.ogg and /dev/null differ diff --git a/sound/piano/Dn5.ogg b/sound/piano/Dn5.ogg deleted file mode 100644 index 981d37e910..0000000000 Binary files a/sound/piano/Dn5.ogg and /dev/null differ diff --git a/sound/piano/Dn6.ogg b/sound/piano/Dn6.ogg deleted file mode 100644 index 112f101bb2..0000000000 Binary files a/sound/piano/Dn6.ogg and /dev/null differ diff --git a/sound/piano/Dn7.ogg b/sound/piano/Dn7.ogg deleted file mode 100644 index ff2724463c..0000000000 Binary files a/sound/piano/Dn7.ogg and /dev/null differ diff --git a/sound/piano/Dn8.ogg b/sound/piano/Dn8.ogg deleted file mode 100644 index 5e2523f123..0000000000 Binary files a/sound/piano/Dn8.ogg and /dev/null differ diff --git a/sound/piano/E#1.ogg b/sound/piano/E#1.ogg deleted file mode 100644 index c192032dc0..0000000000 Binary files a/sound/piano/E#1.ogg and /dev/null differ diff --git a/sound/piano/E#2.ogg b/sound/piano/E#2.ogg deleted file mode 100644 index da09b64979..0000000000 Binary files a/sound/piano/E#2.ogg and /dev/null differ diff --git a/sound/piano/E#3.ogg b/sound/piano/E#3.ogg deleted file mode 100644 index e7a2f93535..0000000000 Binary files a/sound/piano/E#3.ogg and /dev/null differ diff --git a/sound/piano/E#4.ogg b/sound/piano/E#4.ogg deleted file mode 100644 index b3b14b7266..0000000000 Binary files a/sound/piano/E#4.ogg and /dev/null differ diff --git a/sound/piano/E#5.ogg b/sound/piano/E#5.ogg deleted file mode 100644 index 08bc2cf5a8..0000000000 Binary files a/sound/piano/E#5.ogg and /dev/null differ diff --git a/sound/piano/E#6.ogg b/sound/piano/E#6.ogg deleted file mode 100644 index 6060576f36..0000000000 Binary files a/sound/piano/E#6.ogg and /dev/null differ diff --git a/sound/piano/E#7.ogg b/sound/piano/E#7.ogg deleted file mode 100644 index 77a81ed570..0000000000 Binary files a/sound/piano/E#7.ogg and /dev/null differ diff --git a/sound/piano/E#8.ogg b/sound/piano/E#8.ogg deleted file mode 100644 index 5502fedbda..0000000000 Binary files a/sound/piano/E#8.ogg and /dev/null differ diff --git a/sound/piano/Eb1.ogg b/sound/piano/Eb1.ogg deleted file mode 100644 index 8923e11fd9..0000000000 Binary files a/sound/piano/Eb1.ogg and /dev/null differ diff --git a/sound/piano/Eb2.ogg b/sound/piano/Eb2.ogg deleted file mode 100644 index b61faa1737..0000000000 Binary files a/sound/piano/Eb2.ogg and /dev/null differ diff --git a/sound/piano/Eb3.ogg b/sound/piano/Eb3.ogg deleted file mode 100644 index bf80c6eeeb..0000000000 Binary files a/sound/piano/Eb3.ogg and /dev/null differ diff --git a/sound/piano/Eb4.ogg b/sound/piano/Eb4.ogg deleted file mode 100644 index fa991d11c5..0000000000 Binary files a/sound/piano/Eb4.ogg and /dev/null differ diff --git a/sound/piano/Eb5.ogg b/sound/piano/Eb5.ogg deleted file mode 100644 index e63e0143a5..0000000000 Binary files a/sound/piano/Eb5.ogg and /dev/null differ diff --git a/sound/piano/Eb6.ogg b/sound/piano/Eb6.ogg deleted file mode 100644 index e3f6ccb4c4..0000000000 Binary files a/sound/piano/Eb6.ogg and /dev/null differ diff --git a/sound/piano/Eb7.ogg b/sound/piano/Eb7.ogg deleted file mode 100644 index a7dc94edbd..0000000000 Binary files a/sound/piano/Eb7.ogg and /dev/null differ diff --git a/sound/piano/Eb8.ogg b/sound/piano/Eb8.ogg deleted file mode 100644 index f6a7f46657..0000000000 Binary files a/sound/piano/Eb8.ogg and /dev/null differ diff --git a/sound/piano/En1.ogg b/sound/piano/En1.ogg deleted file mode 100644 index fbcb29c2de..0000000000 Binary files a/sound/piano/En1.ogg and /dev/null differ diff --git a/sound/piano/En2.ogg b/sound/piano/En2.ogg deleted file mode 100644 index b6f4f1a5e8..0000000000 Binary files a/sound/piano/En2.ogg and /dev/null differ diff --git a/sound/piano/En3.ogg b/sound/piano/En3.ogg deleted file mode 100644 index 5f6ade5f1b..0000000000 Binary files a/sound/piano/En3.ogg and /dev/null differ diff --git a/sound/piano/En4.ogg b/sound/piano/En4.ogg deleted file mode 100644 index 0f567ffb98..0000000000 Binary files a/sound/piano/En4.ogg and /dev/null differ diff --git a/sound/piano/En5.ogg b/sound/piano/En5.ogg deleted file mode 100644 index 05719f2a2d..0000000000 Binary files a/sound/piano/En5.ogg and /dev/null differ diff --git a/sound/piano/En6.ogg b/sound/piano/En6.ogg deleted file mode 100644 index b1295b67ee..0000000000 Binary files a/sound/piano/En6.ogg and /dev/null differ diff --git a/sound/piano/En7.ogg b/sound/piano/En7.ogg deleted file mode 100644 index 0d97b93fbc..0000000000 Binary files a/sound/piano/En7.ogg and /dev/null differ diff --git a/sound/piano/En8.ogg b/sound/piano/En8.ogg deleted file mode 100644 index f0ea5f1ec5..0000000000 Binary files a/sound/piano/En8.ogg and /dev/null differ diff --git a/sound/piano/F#1.ogg b/sound/piano/F#1.ogg deleted file mode 100644 index ad9e0a563c..0000000000 Binary files a/sound/piano/F#1.ogg and /dev/null differ diff --git a/sound/piano/F#2.ogg b/sound/piano/F#2.ogg deleted file mode 100644 index b1e86bfeaa..0000000000 Binary files a/sound/piano/F#2.ogg and /dev/null differ diff --git a/sound/piano/F#3.ogg b/sound/piano/F#3.ogg deleted file mode 100644 index 53b56c5017..0000000000 Binary files a/sound/piano/F#3.ogg and /dev/null differ diff --git a/sound/piano/F#4.ogg b/sound/piano/F#4.ogg deleted file mode 100644 index e9d71303a1..0000000000 Binary files a/sound/piano/F#4.ogg and /dev/null differ diff --git a/sound/piano/F#5.ogg b/sound/piano/F#5.ogg deleted file mode 100644 index c4cc3165ab..0000000000 Binary files a/sound/piano/F#5.ogg and /dev/null differ diff --git a/sound/piano/F#6.ogg b/sound/piano/F#6.ogg deleted file mode 100644 index 0942095116..0000000000 Binary files a/sound/piano/F#6.ogg and /dev/null differ diff --git a/sound/piano/F#7.ogg b/sound/piano/F#7.ogg deleted file mode 100644 index c37dc8fb37..0000000000 Binary files a/sound/piano/F#7.ogg and /dev/null differ diff --git a/sound/piano/F#8.ogg b/sound/piano/F#8.ogg deleted file mode 100644 index 0241e9beab..0000000000 Binary files a/sound/piano/F#8.ogg and /dev/null differ diff --git a/sound/piano/Fb1.ogg b/sound/piano/Fb1.ogg deleted file mode 100644 index fbcb29c2de..0000000000 Binary files a/sound/piano/Fb1.ogg and /dev/null differ diff --git a/sound/piano/Fb2.ogg b/sound/piano/Fb2.ogg deleted file mode 100644 index 4cece2d9cd..0000000000 Binary files a/sound/piano/Fb2.ogg and /dev/null differ diff --git a/sound/piano/Fb3.ogg b/sound/piano/Fb3.ogg deleted file mode 100644 index 3675271a15..0000000000 Binary files a/sound/piano/Fb3.ogg and /dev/null differ diff --git a/sound/piano/Fb4.ogg b/sound/piano/Fb4.ogg deleted file mode 100644 index 2608770227..0000000000 Binary files a/sound/piano/Fb4.ogg and /dev/null differ diff --git a/sound/piano/Fb5.ogg b/sound/piano/Fb5.ogg deleted file mode 100644 index f8016a6d24..0000000000 Binary files a/sound/piano/Fb5.ogg and /dev/null differ diff --git a/sound/piano/Fb6.ogg b/sound/piano/Fb6.ogg deleted file mode 100644 index 397714bdaa..0000000000 Binary files a/sound/piano/Fb6.ogg and /dev/null differ diff --git a/sound/piano/Fb7.ogg b/sound/piano/Fb7.ogg deleted file mode 100644 index d9f630f11d..0000000000 Binary files a/sound/piano/Fb7.ogg and /dev/null differ diff --git a/sound/piano/Fb8.ogg b/sound/piano/Fb8.ogg deleted file mode 100644 index 28ae958d82..0000000000 Binary files a/sound/piano/Fb8.ogg and /dev/null differ diff --git a/sound/piano/Fn1.ogg b/sound/piano/Fn1.ogg deleted file mode 100644 index 9d10f8ccf6..0000000000 Binary files a/sound/piano/Fn1.ogg and /dev/null differ diff --git a/sound/piano/Fn2.ogg b/sound/piano/Fn2.ogg deleted file mode 100644 index 24cff105e6..0000000000 Binary files a/sound/piano/Fn2.ogg and /dev/null differ diff --git a/sound/piano/Fn3.ogg b/sound/piano/Fn3.ogg deleted file mode 100644 index 313c54b59a..0000000000 Binary files a/sound/piano/Fn3.ogg and /dev/null differ diff --git a/sound/piano/Fn4.ogg b/sound/piano/Fn4.ogg deleted file mode 100644 index 3331d67fbe..0000000000 Binary files a/sound/piano/Fn4.ogg and /dev/null differ diff --git a/sound/piano/Fn5.ogg b/sound/piano/Fn5.ogg deleted file mode 100644 index 7294171595..0000000000 Binary files a/sound/piano/Fn5.ogg and /dev/null differ diff --git a/sound/piano/Fn6.ogg b/sound/piano/Fn6.ogg deleted file mode 100644 index 8218928c85..0000000000 Binary files a/sound/piano/Fn6.ogg and /dev/null differ diff --git a/sound/piano/Fn7.ogg b/sound/piano/Fn7.ogg deleted file mode 100644 index b459e82acd..0000000000 Binary files a/sound/piano/Fn7.ogg and /dev/null differ diff --git a/sound/piano/Fn8.ogg b/sound/piano/Fn8.ogg deleted file mode 100644 index be14499059..0000000000 Binary files a/sound/piano/Fn8.ogg and /dev/null differ diff --git a/sound/piano/G#1.ogg b/sound/piano/G#1.ogg deleted file mode 100644 index 3ef68c0d87..0000000000 Binary files a/sound/piano/G#1.ogg and /dev/null differ diff --git a/sound/piano/G#2.ogg b/sound/piano/G#2.ogg deleted file mode 100644 index 4d92169365..0000000000 Binary files a/sound/piano/G#2.ogg and /dev/null differ diff --git a/sound/piano/G#3.ogg b/sound/piano/G#3.ogg deleted file mode 100644 index 21a03c7805..0000000000 Binary files a/sound/piano/G#3.ogg and /dev/null differ diff --git a/sound/piano/G#4.ogg b/sound/piano/G#4.ogg deleted file mode 100644 index 070ad2b453..0000000000 Binary files a/sound/piano/G#4.ogg and /dev/null differ diff --git a/sound/piano/G#5.ogg b/sound/piano/G#5.ogg deleted file mode 100644 index 233256500f..0000000000 Binary files a/sound/piano/G#5.ogg and /dev/null differ diff --git a/sound/piano/G#6.ogg b/sound/piano/G#6.ogg deleted file mode 100644 index 3c387fcfab..0000000000 Binary files a/sound/piano/G#6.ogg and /dev/null differ diff --git a/sound/piano/G#7.ogg b/sound/piano/G#7.ogg deleted file mode 100644 index 4ba6c8b658..0000000000 Binary files a/sound/piano/G#7.ogg and /dev/null differ diff --git a/sound/piano/G#8.ogg b/sound/piano/G#8.ogg deleted file mode 100644 index b847ab1c86..0000000000 Binary files a/sound/piano/G#8.ogg and /dev/null differ diff --git a/sound/piano/Gb1.ogg b/sound/piano/Gb1.ogg deleted file mode 100644 index d53e3ea9d8..0000000000 Binary files a/sound/piano/Gb1.ogg and /dev/null differ diff --git a/sound/piano/Gb2.ogg b/sound/piano/Gb2.ogg deleted file mode 100644 index 0ceea3ecc8..0000000000 Binary files a/sound/piano/Gb2.ogg and /dev/null differ diff --git a/sound/piano/Gb3.ogg b/sound/piano/Gb3.ogg deleted file mode 100644 index 53b56c5017..0000000000 Binary files a/sound/piano/Gb3.ogg and /dev/null differ diff --git a/sound/piano/Gb4.ogg b/sound/piano/Gb4.ogg deleted file mode 100644 index c982d7beaf..0000000000 Binary files a/sound/piano/Gb4.ogg and /dev/null differ diff --git a/sound/piano/Gb5.ogg b/sound/piano/Gb5.ogg deleted file mode 100644 index 787c19bed8..0000000000 Binary files a/sound/piano/Gb5.ogg and /dev/null differ diff --git a/sound/piano/Gb6.ogg b/sound/piano/Gb6.ogg deleted file mode 100644 index d5a5dbb2d1..0000000000 Binary files a/sound/piano/Gb6.ogg and /dev/null differ diff --git a/sound/piano/Gb7.ogg b/sound/piano/Gb7.ogg deleted file mode 100644 index c6f9271680..0000000000 Binary files a/sound/piano/Gb7.ogg and /dev/null differ diff --git a/sound/piano/Gb8.ogg b/sound/piano/Gb8.ogg deleted file mode 100644 index 85c0b70754..0000000000 Binary files a/sound/piano/Gb8.ogg and /dev/null differ diff --git a/sound/piano/Gn1.ogg b/sound/piano/Gn1.ogg deleted file mode 100644 index d2829a4c0b..0000000000 Binary files a/sound/piano/Gn1.ogg and /dev/null differ diff --git a/sound/piano/Gn2.ogg b/sound/piano/Gn2.ogg deleted file mode 100644 index e657124c71..0000000000 Binary files a/sound/piano/Gn2.ogg and /dev/null differ diff --git a/sound/piano/Gn3.ogg b/sound/piano/Gn3.ogg deleted file mode 100644 index c1e88555f1..0000000000 Binary files a/sound/piano/Gn3.ogg and /dev/null differ diff --git a/sound/piano/Gn4.ogg b/sound/piano/Gn4.ogg deleted file mode 100644 index bbae7fa3e8..0000000000 Binary files a/sound/piano/Gn4.ogg and /dev/null differ diff --git a/sound/piano/Gn5.ogg b/sound/piano/Gn5.ogg deleted file mode 100644 index 556cd6085a..0000000000 Binary files a/sound/piano/Gn5.ogg and /dev/null differ diff --git a/sound/piano/Gn6.ogg b/sound/piano/Gn6.ogg deleted file mode 100644 index 6bf8c36013..0000000000 Binary files a/sound/piano/Gn6.ogg and /dev/null differ diff --git a/sound/piano/Gn7.ogg b/sound/piano/Gn7.ogg deleted file mode 100644 index 0637492985..0000000000 Binary files a/sound/piano/Gn7.ogg and /dev/null differ diff --git a/sound/piano/Gn8.ogg b/sound/piano/Gn8.ogg deleted file mode 100644 index 85f89a198e..0000000000 Binary files a/sound/piano/Gn8.ogg and /dev/null differ diff --git a/sound/violin/A#1.mid b/sound/violin/A#1.mid deleted file mode 100644 index 693b73f542..0000000000 Binary files a/sound/violin/A#1.mid and /dev/null differ diff --git a/sound/violin/A#2.mid b/sound/violin/A#2.mid deleted file mode 100644 index 40da5f3da1..0000000000 Binary files a/sound/violin/A#2.mid and /dev/null differ diff --git a/sound/violin/A#3.mid b/sound/violin/A#3.mid deleted file mode 100644 index 5bab6ccd63..0000000000 Binary files a/sound/violin/A#3.mid and /dev/null differ diff --git a/sound/violin/A#4.mid b/sound/violin/A#4.mid deleted file mode 100644 index dce830448e..0000000000 Binary files a/sound/violin/A#4.mid and /dev/null differ diff --git a/sound/violin/A#5.mid b/sound/violin/A#5.mid deleted file mode 100644 index fda796e27b..0000000000 Binary files a/sound/violin/A#5.mid and /dev/null differ diff --git a/sound/violin/A#6.mid b/sound/violin/A#6.mid deleted file mode 100644 index 9e5da684f4..0000000000 Binary files a/sound/violin/A#6.mid and /dev/null differ diff --git a/sound/violin/A#7.mid b/sound/violin/A#7.mid deleted file mode 100644 index 215c56cbe7..0000000000 Binary files a/sound/violin/A#7.mid and /dev/null differ diff --git a/sound/violin/A#8.mid b/sound/violin/A#8.mid deleted file mode 100644 index 4b55c34691..0000000000 Binary files a/sound/violin/A#8.mid and /dev/null differ diff --git a/sound/violin/B#1.mid b/sound/violin/B#1.mid deleted file mode 100644 index d83b176edd..0000000000 Binary files a/sound/violin/B#1.mid and /dev/null differ diff --git a/sound/violin/B#2.mid b/sound/violin/B#2.mid deleted file mode 100644 index cddff75625..0000000000 Binary files a/sound/violin/B#2.mid and /dev/null differ diff --git a/sound/violin/B#3.mid b/sound/violin/B#3.mid deleted file mode 100644 index 8bd7ec2fa9..0000000000 Binary files a/sound/violin/B#3.mid and /dev/null differ diff --git a/sound/violin/B#4.mid b/sound/violin/B#4.mid deleted file mode 100644 index 4c7ab84b57..0000000000 Binary files a/sound/violin/B#4.mid and /dev/null differ diff --git a/sound/violin/B#5.mid b/sound/violin/B#5.mid deleted file mode 100644 index d7f990b2d6..0000000000 Binary files a/sound/violin/B#5.mid and /dev/null differ diff --git a/sound/violin/B#6.mid b/sound/violin/B#6.mid deleted file mode 100644 index e124ccb8e2..0000000000 Binary files a/sound/violin/B#6.mid and /dev/null differ diff --git a/sound/violin/B#7.mid b/sound/violin/B#7.mid deleted file mode 100644 index 231c9e428d..0000000000 Binary files a/sound/violin/B#7.mid and /dev/null differ diff --git a/sound/violin/B#8.mid b/sound/violin/B#8.mid deleted file mode 100644 index 981943c08f..0000000000 Binary files a/sound/violin/B#8.mid and /dev/null differ diff --git a/sound/violin/C#1.mid b/sound/violin/C#1.mid deleted file mode 100644 index 88dba85145..0000000000 Binary files a/sound/violin/C#1.mid and /dev/null differ diff --git a/sound/violin/C#2.mid b/sound/violin/C#2.mid deleted file mode 100644 index b510926b45..0000000000 Binary files a/sound/violin/C#2.mid and /dev/null differ diff --git a/sound/violin/C#3.mid b/sound/violin/C#3.mid deleted file mode 100644 index 9954bbe478..0000000000 Binary files a/sound/violin/C#3.mid and /dev/null differ diff --git a/sound/violin/C#4.mid b/sound/violin/C#4.mid deleted file mode 100644 index 2c5ff74db0..0000000000 Binary files a/sound/violin/C#4.mid and /dev/null differ diff --git a/sound/violin/C#5.mid b/sound/violin/C#5.mid deleted file mode 100644 index e5850a3fd0..0000000000 Binary files a/sound/violin/C#5.mid and /dev/null differ diff --git a/sound/violin/C#6.mid b/sound/violin/C#6.mid deleted file mode 100644 index 217c0ad014..0000000000 Binary files a/sound/violin/C#6.mid and /dev/null differ diff --git a/sound/violin/C#7.mid b/sound/violin/C#7.mid deleted file mode 100644 index ec32bdbf90..0000000000 Binary files a/sound/violin/C#7.mid and /dev/null differ diff --git a/sound/violin/C#8.mid b/sound/violin/C#8.mid deleted file mode 100644 index 555bce3db0..0000000000 Binary files a/sound/violin/C#8.mid and /dev/null differ diff --git a/sound/violin/Cb1.mid b/sound/violin/Cb1.mid deleted file mode 100644 index a00f09dfb0..0000000000 Binary files a/sound/violin/Cb1.mid and /dev/null differ diff --git a/sound/violin/Cb2.mid b/sound/violin/Cb2.mid deleted file mode 100644 index 4085711bf1..0000000000 Binary files a/sound/violin/Cb2.mid and /dev/null differ diff --git a/sound/violin/Cb3.mid b/sound/violin/Cb3.mid deleted file mode 100644 index f647983ef0..0000000000 Binary files a/sound/violin/Cb3.mid and /dev/null differ diff --git a/sound/violin/Cb4.mid b/sound/violin/Cb4.mid deleted file mode 100644 index 24f22f09ee..0000000000 Binary files a/sound/violin/Cb4.mid and /dev/null differ diff --git a/sound/violin/Cb5.mid b/sound/violin/Cb5.mid deleted file mode 100644 index 057e97c5e0..0000000000 Binary files a/sound/violin/Cb5.mid and /dev/null differ diff --git a/sound/violin/Cb6.mid b/sound/violin/Cb6.mid deleted file mode 100644 index 887e65fc13..0000000000 Binary files a/sound/violin/Cb6.mid and /dev/null differ diff --git a/sound/violin/Cb7.mid b/sound/violin/Cb7.mid deleted file mode 100644 index 99668bc192..0000000000 Binary files a/sound/violin/Cb7.mid and /dev/null differ diff --git a/sound/violin/Cb8.mid b/sound/violin/Cb8.mid deleted file mode 100644 index 53ea61d1b2..0000000000 Binary files a/sound/violin/Cb8.mid and /dev/null differ diff --git a/sound/violin/Cb9.mid b/sound/violin/Cb9.mid deleted file mode 100644 index 1e8c3afadf..0000000000 Binary files a/sound/violin/Cb9.mid and /dev/null differ diff --git a/sound/violin/D#1.mid b/sound/violin/D#1.mid deleted file mode 100644 index 829e6fcf18..0000000000 Binary files a/sound/violin/D#1.mid and /dev/null differ diff --git a/sound/violin/D#2.mid b/sound/violin/D#2.mid deleted file mode 100644 index 66029b340c..0000000000 Binary files a/sound/violin/D#2.mid and /dev/null differ diff --git a/sound/violin/D#3.mid b/sound/violin/D#3.mid deleted file mode 100644 index c982375941..0000000000 Binary files a/sound/violin/D#3.mid and /dev/null differ diff --git a/sound/violin/D#4.mid b/sound/violin/D#4.mid deleted file mode 100644 index 016ed4f1ed..0000000000 Binary files a/sound/violin/D#4.mid and /dev/null differ diff --git a/sound/violin/D#5.mid b/sound/violin/D#5.mid deleted file mode 100644 index ddb511795d..0000000000 Binary files a/sound/violin/D#5.mid and /dev/null differ diff --git a/sound/violin/D#6.mid b/sound/violin/D#6.mid deleted file mode 100644 index b7242b9ab9..0000000000 Binary files a/sound/violin/D#6.mid and /dev/null differ diff --git a/sound/violin/D#7.mid b/sound/violin/D#7.mid deleted file mode 100644 index 773538340a..0000000000 Binary files a/sound/violin/D#7.mid and /dev/null differ diff --git a/sound/violin/D#8.mid b/sound/violin/D#8.mid deleted file mode 100644 index 4ad074e173..0000000000 Binary files a/sound/violin/D#8.mid and /dev/null differ diff --git a/sound/violin/E#1.mid b/sound/violin/E#1.mid deleted file mode 100644 index 3f130ee126..0000000000 Binary files a/sound/violin/E#1.mid and /dev/null differ diff --git a/sound/violin/E#2.mid b/sound/violin/E#2.mid deleted file mode 100644 index f67c2d0a26..0000000000 Binary files a/sound/violin/E#2.mid and /dev/null differ diff --git a/sound/violin/E#3.mid b/sound/violin/E#3.mid deleted file mode 100644 index bb393382d6..0000000000 Binary files a/sound/violin/E#3.mid and /dev/null differ diff --git a/sound/violin/E#4.mid b/sound/violin/E#4.mid deleted file mode 100644 index a96520c595..0000000000 Binary files a/sound/violin/E#4.mid and /dev/null differ diff --git a/sound/violin/E#5.mid b/sound/violin/E#5.mid deleted file mode 100644 index d1378af197..0000000000 Binary files a/sound/violin/E#5.mid and /dev/null differ diff --git a/sound/violin/E#6.mid b/sound/violin/E#6.mid deleted file mode 100644 index 7abe40bd82..0000000000 Binary files a/sound/violin/E#6.mid and /dev/null differ diff --git a/sound/violin/E#7.mid b/sound/violin/E#7.mid deleted file mode 100644 index df278c20d6..0000000000 Binary files a/sound/violin/E#7.mid and /dev/null differ diff --git a/sound/violin/E#8.mid b/sound/violin/E#8.mid deleted file mode 100644 index 35254cd5b2..0000000000 Binary files a/sound/violin/E#8.mid and /dev/null differ diff --git a/sound/violin/F#1.mid b/sound/violin/F#1.mid deleted file mode 100644 index d18668e891..0000000000 Binary files a/sound/violin/F#1.mid and /dev/null differ diff --git a/sound/violin/F#2.mid b/sound/violin/F#2.mid deleted file mode 100644 index 302f0c6fdc..0000000000 Binary files a/sound/violin/F#2.mid and /dev/null differ diff --git a/sound/violin/F#3.mid b/sound/violin/F#3.mid deleted file mode 100644 index 1f592fc903..0000000000 Binary files a/sound/violin/F#3.mid and /dev/null differ diff --git a/sound/violin/F#4.mid b/sound/violin/F#4.mid deleted file mode 100644 index 45854126f9..0000000000 Binary files a/sound/violin/F#4.mid and /dev/null differ diff --git a/sound/violin/F#5.mid b/sound/violin/F#5.mid deleted file mode 100644 index fb1e1da339..0000000000 Binary files a/sound/violin/F#5.mid and /dev/null differ diff --git a/sound/violin/F#6.mid b/sound/violin/F#6.mid deleted file mode 100644 index bfa896bb78..0000000000 Binary files a/sound/violin/F#6.mid and /dev/null differ diff --git a/sound/violin/F#7.mid b/sound/violin/F#7.mid deleted file mode 100644 index a27763c1d4..0000000000 Binary files a/sound/violin/F#7.mid and /dev/null differ diff --git a/sound/violin/F#8.mid b/sound/violin/F#8.mid deleted file mode 100644 index aaab80a727..0000000000 Binary files a/sound/violin/F#8.mid and /dev/null differ diff --git a/sound/violin/Fb1.mid b/sound/violin/Fb1.mid deleted file mode 100644 index c89b3f36b4..0000000000 Binary files a/sound/violin/Fb1.mid and /dev/null differ diff --git a/sound/violin/Fb2.mid b/sound/violin/Fb2.mid deleted file mode 100644 index 3db6af1aa4..0000000000 Binary files a/sound/violin/Fb2.mid and /dev/null differ diff --git a/sound/violin/Fb3.mid b/sound/violin/Fb3.mid deleted file mode 100644 index 5f601f3ac4..0000000000 Binary files a/sound/violin/Fb3.mid and /dev/null differ diff --git a/sound/violin/Fb4.mid b/sound/violin/Fb4.mid deleted file mode 100644 index f1abc8109d..0000000000 Binary files a/sound/violin/Fb4.mid and /dev/null differ diff --git a/sound/violin/Fb5.mid b/sound/violin/Fb5.mid deleted file mode 100644 index 2ec1b2e512..0000000000 Binary files a/sound/violin/Fb5.mid and /dev/null differ diff --git a/sound/violin/Fb6.mid b/sound/violin/Fb6.mid deleted file mode 100644 index b8bdf7fee0..0000000000 Binary files a/sound/violin/Fb6.mid and /dev/null differ diff --git a/sound/violin/Fb7.mid b/sound/violin/Fb7.mid deleted file mode 100644 index 51f5f1bcdb..0000000000 Binary files a/sound/violin/Fb7.mid and /dev/null differ diff --git a/sound/violin/Fb8.mid b/sound/violin/Fb8.mid deleted file mode 100644 index 47928f3847..0000000000 Binary files a/sound/violin/Fb8.mid and /dev/null differ diff --git a/sound/violin/G#1.mid b/sound/violin/G#1.mid deleted file mode 100644 index b1b3885685..0000000000 Binary files a/sound/violin/G#1.mid and /dev/null differ diff --git a/sound/violin/G#2.mid b/sound/violin/G#2.mid deleted file mode 100644 index e827cfc635..0000000000 Binary files a/sound/violin/G#2.mid and /dev/null differ diff --git a/sound/violin/G#3.mid b/sound/violin/G#3.mid deleted file mode 100644 index 57e1f76c97..0000000000 Binary files a/sound/violin/G#3.mid and /dev/null differ diff --git a/sound/violin/G#4.mid b/sound/violin/G#4.mid deleted file mode 100644 index 59e95a6d99..0000000000 Binary files a/sound/violin/G#4.mid and /dev/null differ diff --git a/sound/violin/G#5.mid b/sound/violin/G#5.mid deleted file mode 100644 index 9bd3436287..0000000000 Binary files a/sound/violin/G#5.mid and /dev/null differ diff --git a/sound/violin/G#6.mid b/sound/violin/G#6.mid deleted file mode 100644 index 3c90af807e..0000000000 Binary files a/sound/violin/G#6.mid and /dev/null differ diff --git a/sound/violin/G#7.mid b/sound/violin/G#7.mid deleted file mode 100644 index b51afd323c..0000000000 Binary files a/sound/violin/G#7.mid and /dev/null differ diff --git a/sound/violin/G#8.mid b/sound/violin/G#8.mid deleted file mode 100644 index d3f5c898d4..0000000000 Binary files a/sound/violin/G#8.mid and /dev/null differ