Fish Songs
From InsaniquariumGuide Wiki
In the Virtual Tank, certain fish will play music for you when you feed them (see the Virtual Store Guide for more information). Insaniquarium keeps all of that music in files called fish songs. So, add more fish songs, and your Virtual Tank fish can play new music! Fish songs are actually just plain text files (TXT), like the ones you can create in Notepad, that use a special language that Insaniquarium can read.
Contents |
Adding Fish Songs
To be able to add fish songs to Insaniquarium, you must first know where it keeps them. Right-click on Insaniquarium Deluxe in your Start menu. If you're using Windows Vista, you must then click "Open File Location", but for any version of Windows earlier than that, you must click "Properties" followed by "Find Target". In the window that appears, there should be a folder called "fishsongs". That's Insaniquarium Deluxe's fish song stash. The window should also tell you the location of Insaniquarium on your C: drive (or whichever letter drive). Make a note of that.
The Download Center has a great big collection of fish songs. To add a fish song from there into your game, you must use a program that can open ZIP files (7-Zip works if you don't have one already) and copy a fish song (TXT) from a ZIP file into Insaniquarium's fish songs folder. The MID files that you can also find in those ZIPs can be opened in Windows Media Player to let you hear what the fish song sounds like before you add it to the game, but be aware that a MID will sound a little different from its fish song counterpart.
Another place to grab fish songs is in the InsaniForum's Virtual Tank Fish Music area. Some posts in there put the fish song's code in a Quote or Code block. If that's the case, select everything within the Quote/Code block and press Ctrl+C, then open Notepad and press Ctrl-V followed by Ctrl-S. Enter something for the file name (it doesn't matter what, as long as it ends in .txt), and then save it to the fishsongs folder.
Listen Anytime
- The Tune Player by Flying Bear Entertainment will play fish songs exactly as Insaniquarium plays them.
- The Fish Song to Midi Converter by Phlip will convert the fishsong to a MIDI file that you can use in Windows Media Player.
If you're creating your own fish song (see below), these are great ways to make sure it works well.
Converting MIDIs to Fish Songs
The easiest way to create a new fish song is to grab a MIDI file and use the Midi to Fish Song Converter. You will need to have Java installed in order to use the Midi to Fish Song Converter. Use Google to look for MIDIs to use, or if you're looking for music from another video game you could just check VGMusic. Also see goom's MIDI conversion tips.
The information below contributed by FishMonger.
Writing Fish Songs from Scratch
Warning: Syntax errors in a songfile result in that song not being loaded. Debugging is done by eye and ear via trial and error. There also is an error file created in the main directory that also may prove useful.
Controls
*attrib
Title = Displayed title
Santarare, beethoven, etc = Song for special-named fish
*speed
Controls the tempo of the music. The lower the number, the faster the song. It seems to be equal to 1250 divided by the number of quarter notes per minute.
Warning!!! Using a fractional speed risks rounding errors that make your *lines go slightly out of sync with each other. A speed ending in .5 usually works, but some highly complex songs need speeds ending only in .0 to stay in sync.
*line1
*line2
*line3
Individual voices (limit 3), but each can play full chords (see duration 0 below)
*shift #
Transposes all voices by # halftones (shift 13 = raising 1 octave)
*localshift #
Same as shift but only for the current voice.
*volume #.#
Sets volume for current voice (1.0 = default and max?)
*off
*on
Seems to turn off/on interpretation of the music commands (a Commenting method?)
*rest #
Causes the current voice to wait until the # voice has finished playing notes defined up until that point. Useful if one voice is playing an introduction or other passage before/between the regular piece.
Musical Notation
@% ${+$+$...},
@ Key (a-g) with OPTIONAL Sharp/Flat (#,b)
% Octave (I think c3 is middle C)
$ Duration (w, h, q, e, s, t, z = whole, half, quarter, eighth, sixteenth, thirtysecond, sixtyfourth)
Also: (_d=dotted, _t=triplet; qd = quarter dotted, et = eighth triplet, etc)
+ OPTIONAL + adds multiple durations together
, Comma is required between notes, but OPTIONAL at end of lines (use them anyway!)
special values
@ = r indicates a Rest
$ = 0 indicates part of a chord, plays at the same time/duration as the next non-0 note.
Formatting Tips
Each voice plays in parallel to each other. The entire soprano part could be typed in one textline, while the harmony could be typed over ten lines as long as the total notes duration matched up. A good way to keep them all working in synch and to make sure you haven't skipped a note is to format the code instead of just typing all the notes in a row.
Have each textline represent 1 measure (or 2 if there are few notes per measure) for the entire song.
Group measures into larger 'paragraphs' in a way that makes sense. For example, many songs (especially hymns) have easily recognized verbal lines of 4-6 measures each. Use a blank line between paragraphs to make them visually distinguishable.
If the song is simple enough (no volume or speed changes, no repeated measures), you could code the whole thing with just one *line for each voice. More complex songs are easier to code if a set of *line calls (one each of #s 1-3) were treated like a 'page' of sheet music. The Legend of Zelda features a small page for its Intro and then a larger page for the main body that I cut and pasted to have it repeat once.
The method of grouping by page is also useful to break up larger songs into more easily workable chunks. Getting a whole song to work the first time is rather difficult since any syntax error makes the whole song not play. Get the smaller pages to work individually and then cut and pasting them together for final testing (forgetting the last note of one page is seldom obvious until the next page sounds out of sync with one voice starting earlier than the others).
_short and _long
Song filenames ending with _short and _long seem to be kept in separate lists (approx 1 in 4 random times it picks the long version of a song), but the _short version must exist or it won't ever pick the _long version. The exception to this seems to be some of the specially named singing fish (Kilgore and Santa seem to ignore _short and _long but Ludwig does not). Since the only programming difference is that _long songs are followed with brief applause sounds, you can just skip this concept altogether.
Miscellaneous
Tones are not sustained for their full duration, producing a sound more like a chime than that of an organ. A whole note doesn't sound different from a half note followed by a half rest. This instrument limitation makes everything sound staccato (for an instrument that plays only sustained tones, the staccato notes can be played as thirty-secondths followed by rests). On the other hand, this allows single notes to be modified into note/rest pairs of convenient duration that seem to exceed the 3 voice limitation (e.g. Frere Jacques).
Thanks
Thanks to Phlip for his attention to detail while crafting his fishsong-to-midi player/converter. His insights spared me from a lot of tedious trial-and-error plus resulted in a great software tool for us fishsong converters.
Thanks to Mr Flying Bear for his sharing of the Tune Player which included some documentation that confirmed much of our reverse-engineered syntax guidelines. Maybe you might find this post to be a worthy more complete Guide for Fishsong syntax.
| Main Menu |
|
