<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://pikmintkb.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Waffles</id>
	<title>Pikmin Technical Knowledge Base - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://pikmintkb.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Waffles"/>
	<link rel="alternate" type="text/html" href="https://pikmintkb.com/wiki/Special:Contributions/Waffles"/>
	<updated>2026-05-11T02:09:39Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4803</id>
		<title>Creating cave music</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4803"/>
		<updated>2024-10-02T14:12:25Z</updated>

		<summary type="html">&lt;p&gt;Waffles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Randomly generating cave music in Pikmin 2 needs to have two files: a .bms (sequence) file, and a .cnd (conductor) file.&lt;br /&gt;
&lt;br /&gt;
The BMS file type is a sequenced music format used in many games. For the cave music in Pikmin 2 however, it is specially-formatted. It mainly contains many short snippets of musical information to be randomized.&lt;br /&gt;
&lt;br /&gt;
The CND files are the actual &amp;quot;songs&amp;quot;; they take specific groups of snippets from a BMS file, and endlessly puzzle-piece them together to form a coherent piece of music. &lt;br /&gt;
&lt;br /&gt;
This guide will function as a walkthrough for creating your own randomly sequencing cave song. Basic understanding of how [https://youtube.com/watch?v=QPFWzSlg-78 cave music works] and [[Creating Interactive BMS Files|standard interactive music]] is recommended before starting. Most of the editing will be done in hexadecimal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be generating a lot of tiny BMS files, to turn them into &amp;quot;gestures&amp;quot;.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
Additionally, studying the existing cave songs on your own and how those exploit the conductor system in interesting ways will help you come up with ideas for your own custom cave music.&lt;br /&gt;
&lt;br /&gt;
== Overview of file functions ==&lt;br /&gt;
Here are some infographics that you can reference at any time. These show all the functions of a CND file, and all the contents of a BMS file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
File:BMS_functions.png|How information is stored in a BMS file.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up your BMS file ==&lt;br /&gt;
Before you begin, set your byte grouping to &amp;quot;3&amp;quot;, so every 3 bytes is visually separated by a space. This will make it easier to see stuff.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Starting with a completely blank BMS file, begin by pasting the following:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Every cave music BMS begins with this same information, and will go mostly untouched.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set list ==&lt;br /&gt;
Exactly right after &amp;lt;code&amp;gt;34C600&amp;lt;/code&amp;gt; will be a list of every gesture set&#039;s location in the BMS. Each entry is the gesture set&#039;s hexadecimal location (offset), and each entry in the sequence begins with &amp;quot;&amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;&amp;quot;. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0001B0 0001BF 0001CE 0001D4 0001DA 0001E9 0001F8 0001FE 000204 00020A FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Gesture set &amp;quot;0&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1B0&amp;lt;/code&amp;gt;, gesture set &amp;quot;1&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1BF&amp;lt;/code&amp;gt;, gesture set &amp;quot;2&amp;quot; will be at &amp;lt;code&amp;gt;0x1CE&amp;lt;/code&amp;gt;, and so on. There are a total of 10 gesture sets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Until we create our gesture sets, let&#039;s use &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt; as placeholders so we can easily find and get back to this section later on. You can have as many gesture sets as you like; we&#039;ll create 16 entries for this tutorial. You may insert this into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our BMS should now currently look like this:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
You can also add an entire row of padding/zeros after this. You can do this for each section, to better visually separate them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing ruleset list ==&lt;br /&gt;
This is another sequence of offsets. These just point to the location of a &amp;quot;[[#Inserting_timetables|timetable]]&amp;quot;, which will be located at the end of our BMS file. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0005AB 0005AB 0005AF 0005C1 0005AB 0005AB 0005C1 0005C1 0005C1 0005C1 FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Timing ruleset &amp;quot;0&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;1&amp;quot; will also use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;2&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AF&amp;lt;/code&amp;gt;, and so on. There are a total of 10 timing rulesets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Let&#039;s use &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt; as placeholders again, and create 16 of them. Insert this anywhere into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set contents ==&lt;br /&gt;
A &#039;&#039;gesture set&#039;&#039; is a group of many gestures.&amp;lt;br&amp;gt;&lt;br /&gt;
Here, we list each gesture set&#039;s contents (which will be... the locations of the gestures!). Each gesture set begins before with &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt; and ends with &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how the gesture set list should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;000210 00022A 000258 000281 FFFFFF 0002B4 0002D9 000303 000331 FFFFFF 000355 FFFFFF 000361 FFFFFF 0003A8 0003C2 0003F0 000419 FFFFFF 00044C 000471 00049B 0004C9 FFFFFF 0004ED FFFFFF 000543 FFFFFF 000580 FFFFFF 00059E FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
There are 10 gesture sets listed above. The first gesture set has 4 gestures, located at &amp;lt;code&amp;gt;0x210&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x22A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x258&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;0x281&amp;lt;/code&amp;gt;. You can have any amount of gestures in a gesture set; even 1 is fine.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You can paste the following placeholder information for now:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It might be a good idea to leave a decent amount of zeros after this list; this one will expand a lot as gestures and gesture sets are added to it.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How is your BMS looking? ==&lt;br /&gt;
If you have been copy-pasting everything correctly, your BMS will look something like this:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=300px heights=300px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_1.png|Orange is &amp;quot;gesture set list&amp;quot;, yellow is &amp;quot;timing ruleset list&amp;quot;, and blue is &amp;quot;gesture set contents&amp;quot;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Once again, you can add as much padding between each section as you want, it will work fine.&lt;br /&gt;
&lt;br /&gt;
== Creating gestures ==&lt;br /&gt;
First, you should sketch out your song idea in your DAW, and then cut your song into tiny blocks. These blocks will be your song&#039;s individual gestures. You should also consider dragging these blocks around in various arrangements to make sure they sound good in any order.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once you are ready, have them nicely organized and ready to be exported into individual MIDI files:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_Pro_gestures.png|A Logic Pro project with a bunch of short blocks of music. Each block will be a &amp;quot;gesture&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
For some reason, imported BMS files play 4 times as slow in cave songs. So if you import these gestures as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export your gestures, you need to modify your gestures to run &#039;&#039;4 times as fast&#039;&#039;. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Logic Pro can easily speed up MIDI regions with MIDI Transform. You want to use the &amp;quot;Double Speed&amp;quot; transformation twice on each block.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_pro_double_speed.gif|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting gestures ==&lt;br /&gt;
Gestures use same the note/music information as standard BMS songs.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should have converted all your MIDIs into BMS files. Open up one of your converted BMS files, and look for the first note/pitch value. If you used [[Pikmin 2 custom music|flaaffy]], this will most likely be somewhere after &amp;lt;code&amp;gt;0x1B&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;0x1D&amp;lt;/code&amp;gt;. The note&#039;s pitch value will often be followed by a &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;, then the velocity value. Copy this note, all the way to the end of the sequence, which should be &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=600px&amp;gt;&lt;br /&gt;
File:Copy_pasting_BMS_info.png|The value &amp;quot;2D&amp;quot; here is the hex value of a certain pitch, and the very first note of the sequence. Copy this, all the way to &amp;quot;FF&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
To add your gesture, start it with &amp;lt;code&amp;gt;C40000015D&amp;lt;/code&amp;gt;, then paste in what you copied. Each gesture should end with that &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;. Add as many gestures as you please!&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_2.png|The purple lines indicate where a gesture starts.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting timetables ==&lt;br /&gt;
So, how do we choose how often gestures will play? Will a gesture play every beat? Every 1/2 a beat? You will need to add a timetable for that!&lt;br /&gt;
A timetable is a sequence that dictates when gestures should play. A timetable ends with &amp;lt;code&amp;gt;FFFF&amp;lt;/code&amp;gt;. You can make a timetable as complex as you like.&amp;lt;br&amp;gt; Some examples of timetables you can use are:&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0780 FFFF&amp;lt;/code&amp;gt; Play a gesture every 16 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C0 FFFF&amp;lt;/code&amp;gt; Play a gesture every 8 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;01E0 FFFF&amp;lt;/code&amp;gt; Play a gesture every 4 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C0 03C0 03C0 01E0 01E0 01E0 01E0 03C0 FFFF&amp;lt;/code&amp;gt; This sequence will play a gesture every 8 beats (3x), play a gesture every 4 beats (4x), then play a gesture for 8 beats (1x), in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0 FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/2 note (every 2 beats).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0078 FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/4 note (every beat).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003C FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/8th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;001E FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/16th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003C 0078 001E FFFF&amp;lt;/code&amp;gt; This sequence will play a gesture for an 1/8th note, play a gesture for a 1/4 note, then play a gesture for a 1/16th note, in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
Considering that &amp;lt;code&amp;gt;001E&amp;lt;/code&amp;gt; (30 in decimal) is a 1/16th note, you can create any specific timing you want. Just add another 30 to the value for each additional sixteenth note in length.&amp;lt;br&amp;gt;&lt;br /&gt;
For example, Soil 1&#039;s enemy mix piano plays a gesture every three sixteenth notes. That would be 90 in decimal, and its timetable would look like &amp;lt;code&amp;gt;005A FFFF&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
You can insert your timetables anywhere at the end of your BMS.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_3.png|Each timetable has a pink box around it.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in info ==&lt;br /&gt;
Once you have your gestures and timetables inserted, go back and fill in those &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00CCCC&amp;lt;/code&amp;gt; placeholders with the locations of your gesture sets, timetables, and gestures you want to use. Remember that gesture sets begin with the &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Also in the very beginning of your BMS, make sure the value at &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; has the location of where your gesture set list begins (this one will probably be fine), and the value at &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; has the location of where your timing ruleset list begins.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_4.png|Put the location of where the &amp;quot;timing ruleset list&amp;quot; begins here.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in the conductor file ==&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
In your song&#039;s associated conductor file, try to stretch out the window so that the instrument names are all in the same column if you can, like in the image above.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Each line represents one track. You give each track a instrument (program), and what gesture set and timing ruleset to use.&amp;lt;br&amp;gt;&lt;br /&gt;
The CND infographic above does a good job explaining all the functions, but they&#039;ll be explained again down here.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the top left corner are three important values:&lt;br /&gt;
* The first value is the swing time. &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt; is 1/16th swing, while &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; is 1/8th swing. If your song is below 100bpm, you might want to use &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt;. If its faster, try &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
* The second value is the tempo, in hex.&lt;br /&gt;
* The third value is how many tracks there will be, in hex.&lt;br /&gt;
&lt;br /&gt;
Each column explained:&lt;br /&gt;
* A: Initial delay. How many beats until this track starts running. In the vanilla game, you can notice how some song&#039;s melodies do not immediately begin playing upon the start of the level. This is useful for that; ease the listener into the music.&lt;br /&gt;
* B/Q: If set to 1, all gestures will be delayed by an 1/8th note.&lt;br /&gt;
* C: Text string. You can make this say whatever you like. Useful for keeping track of what you want each track to be, like &amp;quot;Lead&amp;quot;, &amp;quot;Trumpet&amp;quot;, &amp;quot;MelodyA&amp;quot;/&amp;quot;MelodyB&amp;quot;, &amp;quot;Bass&amp;quot;, or &amp;quot;Drums&amp;quot;&lt;br /&gt;
* D: Track copy. Select a previous track # to copy the gestures from. If the track its copying plays &amp;quot;gesture 3&amp;quot; from its gesture set, this track will also play its &amp;quot;gesture 3&amp;quot;. Often used for treasure mix instruments. You can have them use different gesture sets if you like.&lt;br /&gt;
* E: Echo strength.&lt;br /&gt;
* F: If set to 1, the values in this track&#039;s timetable will always be played in order, in a loop. If set to 0, it will randomly select values from its timetable, thus, allowing you to randomize when gestures play.&lt;br /&gt;
* G: Bank number.&lt;br /&gt;
* H: Program number. For a list of all programs in the default game and the wScenes that support them, view [[Pikmin 2 custom_music/available instruments|this page]].&lt;br /&gt;
* I: Gesture set, select the set # you want to use from the BMS. &lt;br /&gt;
* J: Timing ruleset, select the set # you want to use from the BMS.&lt;br /&gt;
* K: How many gestures this track will play, before playing &amp;quot;silent gestures&amp;quot;. Linked to below. These function as a sort of on/off cycle.&lt;br /&gt;
* L: How many &amp;quot;silent gestures&amp;quot; this track will play, before playing normal gestures. Linked to above. These function as a sort of on/off cycle.&lt;br /&gt;
* M: If notes are being transposed down (see below), this is set to FF. But this column doesn&#039;t actually do anything, so you don&#039;t need to edit this.&lt;br /&gt;
* N: Transpose all notes played by this track. To transpose up, use values 1-127. To transpose down, use the sign 2 compliment (values 128-255).&lt;br /&gt;
* O: Volume.&lt;br /&gt;
* P: Stereo panning.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas/considerations:&lt;br /&gt;
* You can use the on/off cycle feature (column K and L) to make your melodic instrument &amp;quot;take a break&amp;quot; every once in a while. You can have it play 4 gestures, but then be silent for 2.&lt;br /&gt;
* If your timing ruleset is strict (as in, the timings for when gestures occur is always consistent), something fun to try is to have the melody be a back-and-forth between two different instruments. Set the initial delay for the second instrument to be longer than the first one, and then cleverly use the on/off cycle to have the instruments take turns sounding a gesture. This is done for the melody in the Bulblax Kingdom and Frontier Cavern for example.&lt;br /&gt;
* If you are using the &amp;quot;track copy&amp;quot; feature (column D), you can have the primary instrument play a melody, and have this instrument always play chords that perfectly match that melody.&lt;br /&gt;
&lt;br /&gt;
== Mapping the tracks ==&lt;br /&gt;
With all that done, don&#039;t forget to edit the song&#039;s [[Trackmap parameters|trackMap]]! Edit your song in the trackMap files in either &amp;lt;code&amp;gt;/user/Totaka&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/user/Wakai&amp;lt;/code&amp;gt;, and set how many instruments will be in each mix. It goes in order from: Main Mix, Task (event), Treasure (otakara), Enemy near (kehai), Combat mix, and Spiderwort mix (ground). Although you cannot find Spiderworts underground, you will have to sacrifice at least one track for that mix. You cannot set any of the mixes to have 0 tracks in them.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Filenames for brand new CND files ==&lt;br /&gt;
If you are adding a brand new CND file instead of replacing an existing one, the prefix will determine which BMS is loaded, and which wScene. Try not to add special characters to filenames, aside from underscores.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to load the correct BMS file, the CND must start with the name of the BMS file.&lt;br /&gt;
* &amp;quot;caveconc.cnd&amp;quot;, &amp;quot;caveconc_458435.cnd&amp;quot;, &amp;quot;caveconc_Waffles.cnd&amp;quot;, and &amp;quot;caveconc_Waffles_Song_2.cnd&amp;quot; will all load caveconc.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;caverelax.cnd&amp;quot;, &amp;quot;caverelax_Gmajor.cnd&amp;quot;, and &amp;quot;caverelax_mamuta_dinner.cnd&amp;quot; will all load caverelax.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;new_09_4.cnd&amp;quot;, &amp;quot;new_09_4000.cnd&amp;quot;, and &amp;quot;new_09_portal_PotaTOS.cnd&amp;quot; will load new_09.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For cavesoil, caveconc, and cavemetal only, the game also checks for an additional &amp;quot;_00&amp;quot;, &amp;quot;_05&amp;quot;, and &amp;quot;_10&amp;quot; right after the prefix, for the purpose of loading one of three different wScenes. You must include it if you want the correct wScene to load. For example, caveconc_05 loads wScene 31, so if you want your custom song to also load wScene 31, acceptable names include &amp;quot;caveconc_05_WAFFLES.cnd&amp;quot;, &amp;quot;caveconc_05_52_46356.cnd&amp;quot;, or &amp;quot;caveconc_05_super_boss.cnd&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After adding your new CND file, be sure to add it to its respective trackMap file.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding new content to a vanilla BMS file ==&lt;br /&gt;
Adding new hex data in the middle of a file will shift all the offsets that come after it, causing your BMS to jump to the wrong locations, and likely cause a crash if vanilla songs are loaded.&amp;lt;br&amp;gt;&lt;br /&gt;
In order to add new content in addition to what&#039;s already in the BMS:&lt;br /&gt;
* Find and copy the gesture set list and the timing ruleset list, and paste them at the end of the file. (Separate them with lots of zeros so you have lots more space to add content to these lists)&lt;br /&gt;
* Change &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; to point to your new gesture set list and timing ruleset list. These two values tell the game where the lists are.&lt;br /&gt;
The game should now use these brand new lists, instead of the original instances that occur earlier in the file. Since they still contain all the locations of the vanilla gesture sets/timetables from above in the same order, the existing CND songs won&#039;t be affected and will continue to function, but now you can expand upon these lists with brand new entries now that you&#039;ve made the space for them. All new gestures, gesture sets and timetables can be added further down the file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Editing_vanilla_BMS_file.png|The new gesture set list and timing ruleset list we want to use will be at the bottom.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding gesture cutoffs in timetables ==&lt;br /&gt;
An intentional compositional choice in some songs is to cutoff gestures while they&#039;re in the middle of playing. The most common way this is done is to quickly trigger another gesture; if the last gesture has not finished playing, it will stop playing that gesture and begin playing the new one. It&#039;s also possible to add &amp;quot;empty&amp;quot; gestures to gesture sets (like &amp;lt;code&amp;gt;C40000015DFF&amp;lt;/code&amp;gt;, a gesture which ends immediately and plays nothing), so you can randomly interrupt gestures in your song with silence, or have there be a chance to play nothing.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
However, if you wish to interrupt gestures in your song at specified times without the randomness, there is a special function in timetables for doing this. In the vanilla game, this is used for the trumpet in [https://www.youtube.com/watch?v=qOhmS1YLpF8 Fire]. The trumpet plays two interrupted gestures, then plays a third gesture in full. Below is the timetable for this trumpet:&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;0078 8168 81E0 00F0 80F0 81E0 0780 FFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The trumpet will:&lt;br /&gt;
* &amp;lt;code&amp;gt;0078&amp;lt;/code&amp;gt; play a gesture for 1 beat&lt;br /&gt;
* &amp;lt;code&amp;gt;8168&amp;lt;/code&amp;gt; cutoff after this 1 beat&lt;br /&gt;
* &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; extend the silence for another 4 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0&amp;lt;/code&amp;gt; play a gesture for 2 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;80F0&amp;lt;/code&amp;gt; cutoff after these 2 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; extend the silence for another 4 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;0780&amp;lt;/code&amp;gt; play a gesture for 16 beats.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In order to put a &amp;quot;cutoff&amp;quot; in your timetable:&lt;br /&gt;
* Start with how long you want your &amp;quot;playing&amp;quot; gesture to play for, before it gets cutoff. I want the the first gesture to last for one beat (four 1/16th notes), so I&#039;ll put &amp;lt;code&amp;gt;0078&amp;lt;/code&amp;gt;. Remember that every &amp;quot;30&amp;quot; in decimal is equivalent to a sixteenth note.&lt;br /&gt;
* Immediately next in the sequence will be a value that indicates when the cutoff begins. Calculate the difference between &amp;quot;81E0&amp;quot; and the previous value you had just inserted. 81E0 - 0078 = 8168 (in decimal, 33248 - 120 = 33128). I will put &amp;lt;code&amp;gt;8168&amp;lt;/code&amp;gt; next in my sequence.&lt;br /&gt;
My sequence is now &amp;lt;code&amp;gt;0078 8168 FFFF&amp;lt;/code&amp;gt;; this will play a gesture normally for 1 beat, but then immediately cut it off after that 1 beat.&amp;lt;br&amp;gt;&lt;br /&gt;
Putting an additional &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; in the sequence right after will extend the silence for another 4 beats if you so desire. You can keep putting &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; right after several times in a row if you want silence to last extra long until the next gesture plays.&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Pikmin_2_directory_tree&amp;diff=4743</id>
		<title>Pikmin 2 directory tree</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Pikmin_2_directory_tree&amp;diff=4743"/>
		<updated>2024-07-31T18:12:28Z</updated>

		<summary type="html">&lt;p&gt;Waffles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:&#039;&#039;Pikmin 2&#039;&#039; directory tree}}&lt;br /&gt;
This article lists all folders and noteworthy files in &#039;&#039;Pikmin 2&#039;&#039;, and recommended tools for viewing or modifying them.&amp;lt;br&amp;gt;&lt;br /&gt;
Yellow rows are folders, and red rows are unused files or folders with no effect on the game.&lt;br /&gt;
&lt;br /&gt;
{{todo|Add links for everything.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Path || Details || Recommended Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Jsystem#JAudio|JAudio]] resources. Contains data for music, instruments, and sound effects. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Banks&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[AW file|&amp;lt;code&amp;gt;.AW&amp;lt;/code&amp;gt; wave scene files]]. Contain audio samples of instruments and sound effects for the instrument programs. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;AudioRes/BgmList.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Early list of [[Pikmin 2 BMS file list|sequences]] and volume settings. The real &amp;lt;code&amp;gt;BgmList.txt&amp;lt;/code&amp;gt; is in Totaka&#039;s folder. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Conductor.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. Creates music for caves. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Key.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.BAS&amp;lt;/code&amp;gt; files, which link SoundIDs to enemy animations. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Key.arc/enemy.prj&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Leftover project information about the &amp;lt;code&amp;gt;.BAS&amp;lt;/code&amp;gt; files.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/PSound.aaf&amp;lt;/code&amp;gt; || [[AFF file|&amp;lt;code&amp;gt;.AAF&amp;lt;/code&amp;gt; audio archive file]]. Integral file that contains information about all the available sound effects, waves, instrument banks + programs, and music. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/PSound.asn&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;.ASN&amp;lt;/code&amp;gt; audio sound names. Contains a list of all SoundIDs, which reference a sequence from &amp;lt;code&amp;gt;se.bms&amp;lt;/code&amp;gt;. || asn2csv&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Seqs/Seq.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; binary music sequences]].  Contains sequenced music (akin to MIDI files). || flaaffy or JAIMaker&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/Seqs/Seq.arc/se.bms&amp;lt;/code&amp;gt; || Special &amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; file containing all sound effect sequences in the game. || p2setoolkit, flaaffy or JAIMaker&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Stream/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[AST file list|&amp;lt;code&amp;gt;.AST&amp;lt;/code&amp;gt; audio streams.]]  Contains streamed music (akin to WAV or MP3 files). || JATAST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;banner/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Contains three different Gamecube banner images for &#039;&#039;Pikmin 2&#039;&#039;. This folder is unused; depending on the region, one of these was copied and placed into the root directory as &amp;lt;code&amp;gt;opening.bnr&amp;lt;/code&amp;gt; || pyisotools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Enemy data. Also includes plants, hazards, and misc. objects.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/common/enemyCommon.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models of the rocks used in petrification. || FinModelUtility, SuperBMD, RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/data/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Enemy models, &amp;lt;code&amp;gt;.BCA&amp;lt;/code&amp;gt; animations, and textures. || FinModelUtility, SuperBMD (animations), RiiStudio, GameCube File Tools (for &amp;lt;code&amp;gt;.BTI&amp;lt;/code&amp;gt; textures).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/parm/enemyParms.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 enemy parameters|Parameters for enemy HP, damage, move speed, collisions, animations, and ultra-bitter petrification models]]. || Notepad++, Pikmin 2 Enemy Collision Tree Blender Addon, Pikmin 2 Enemy Bitter/Stoneinfo Blender Addon&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;enemy/parm/enemyResList.txt&amp;lt;/code&amp;gt; || List of enemy resource file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;*gameConfig.ini&amp;lt;/code&amp;gt; ||  style=&amp;quot;background-color:#ffd1d1&amp;quot;|These were likely game configuration settings that changed how the game was compiled, to create special versions of &#039;&#039;Pikmin 2&#039;&#039;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;memoryCard/memoryCardHeader.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Memory card menu icons and banner images. || Wiimms Image Tool + Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/font_*.szs/pikmin2main.bfn&amp;lt;/code&amp;gt; || Font data and textures. || bfntoolkit + GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/mesRes_*.szs/pikmin2.bmc&amp;lt;/code&amp;gt; || Data for font coloring. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/mesRes_*.szs/pikmin2.bmg&amp;lt;/code&amp;gt; || [[BMG file]], all text strings and dialog in the game. || pikminBMG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;new_screen/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[BLO file|&amp;lt;code&amp;gt;.BLO&amp;lt;/code&amp;gt;files]]: HUDs, interfaces, and menus, with all their resources like graphics and animations. || pyblo2-gui&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;opening.bnr&amp;lt;/code&amp;gt; || Gamecube banner image. || pyisotools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2*P.MAP&amp;lt;/code&amp;gt; || Symbol map. Text file that lists where every function and piece of data in the game&#039;s code is located and its name, and is used in-game by the crash handler for debugging purposes. The symbol map in retail versions of the game is unreadable. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;thp/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[THP file|&amp;lt;code&amp;gt;.THP&amp;lt;/code&amp;gt;files]]. Pre-rendered videos. The .ini files control when text strings are loaded on top of the videos. || wiiflowthpvideoconverter, Notepad++ (for .ini files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;timeStamp*.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Build dates. &amp;quot;J&amp;quot;, &amp;quot;P&amp;quot;, and &amp;quot;U&amp;quot; likely represent the Japanese, PAL, and US versions. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Masamichi Abe&#039;s folder, who was a director for the game.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/cave/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 cave lighting files|Lighting files for caves]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/barrelParms.txt&amp;lt;/code&amp;gt; || Clog health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/bridgeParms.txt&amp;lt;/code&amp;gt; || Bridge health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/fountainParms.txt&amp;lt;/code&amp;gt; || Challenge Mode geyser health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/plantParms.txt&amp;lt;/code&amp;gt; || Burgeoning Spiderwort parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/rockParms.txt&amp;lt;/code&amp;gt; || Burgeoning Spiderwort mold parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/TreasureParms.txt&amp;lt;/code&amp;gt; || Buried treasure health parameters. || Notepad++ &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/map/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Routes/pathing, [[Pikmin 2 area generator file|object generation]], [[Pikmin 2 map lighting files|day cycle lighting]], and settings for aboveground areas (including the test map and Piklopedia areas). || Gen &amp;amp; Route Editor, Notepad++  (for .txt files/.ini lighting)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|All treasure models and their &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; carrying animations, as well as parameters for all carriable objects. || FinModelUtility, SuperBMD (animations), RiiStudio, Notepad++ (for collision/parameters)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/carcass_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused enemy carcass parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/item_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused Exploration Kit treasure parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/item_texts.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the Exploration Kit treasures, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/otakara_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused treasure parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/otakara_texts.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the treasures, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pellet.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|All numbered pellet models, their &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; carrying animations, and &amp;lt;code&amp;gt;.BRK&amp;lt;/code&amp;gt; files that control their color. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pellet_texts.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the numbered pellets, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Carryable object parameters, including enemy carcasses, Spiderwort berries, treasures, Exploration Kit treasures, and the numbered pellets. Includes carry weights, pokos earned, seeds earned, and the depth treasures are buried. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/piki/naviParms.txt&amp;lt;/code&amp;gt; || [[NaviParms|Leader parameters]], like speed and attack power. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/piki/pikiParms.txt&amp;lt;/code&amp;gt; || [[PikiParms|Pikmin parameters]], like speed and attack power. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/stages.txt&amp;lt;/code&amp;gt; || List of aboveground areas and parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/time/time.ini&amp;lt;/code&amp;gt; || Day cycle parameters, controlling the length of the day and the related events that occur. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/vs/stages.txt&amp;lt;/code&amp;gt; || [[2-Player Battle stage parameters|List of 2-Player Battle stages and parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/vs/vs_X_*.txt&amp;lt;/code&amp;gt; || [[Cave fixed layout|Pre-determined layouts]] for the 2-Player Battle stages, listing the cave units they use and their locations. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yasushi Ebisawa&#039;s folder, who programmed the particle effects and title screen.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/card_e_reader/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.DWN&amp;lt;/code&amp;gt; files for the three e-Reader Pikmin minigames.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/effect/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.JPC&amp;lt;/code&amp;gt; [[Jsystem#JParticle|JParticle]] archive files. All of the game&#039;s used particles and effects. || jpc_conv, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/testdata/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused menu files, e-Reader files, and title screen things. || FinModelUtility, SuperBMD (animations), RiiStudio, GameCube File Tools (for &amp;lt;code&amp;gt;.BTI&amp;lt;/code&amp;gt; textures)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/title/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models and &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; animations for the title screen and enemies/Pikmin on it. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Ebisawa/title/title.szs/param/param_pikmin.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 title screen|Title screen Pikmin parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Ebisawa/title/title.szs/param/param_title.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 title screen|Title screen parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yuji Kando&#039;s folder, who programmed the Pikmin and other various systems.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Kando/aiConstants.txt&amp;lt;/code&amp;gt; || Some parameters for constants: gravity, Spiderwort berries needed to create 1 spray, amount needed to repay the debt, and &amp;quot;camera angle&amp;quot; (the Y-axis rotation for when you enter a stage). || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/bridge/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused bridge models. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files), GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/develop/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Leftover development tool resources, seemingly for a map editor, route/path manager, a [[Jsystem#J2DGraph|2D graphic]] tester, and animation tester, among other things. || FinModelUtility, SuperBMD, RiiStudio, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/effect/game.jpc&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused &amp;lt;code&amp;gt;.JPC&amp;lt;/code&amp;gt; [[Jsystem#JParticle|JParticle]] archive file with a bunch of particle effects. || jpc_conv, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/effect/modeleffect.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Onion beam model and &amp;lt;code&amp;gt;.BRK&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;.BTK&amp;lt;/code&amp;gt; animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/maps/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models for aboveground/piklopedia areas, [[Pikmin 2 waterboxes|waterboxes]], and [https://www.pikminwiki.com/Pikmin_2_cave_generation#Backgrounds cave vrboxes]. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/mizu.bti&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused texture. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/objects/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models and animations for some objects: clog, bridge, seesaw blocks, cave entrances, gates, nectar, geyser, Burgeoning Spiderwort mold, Pikmin head, Burgeoning Spiderwort, nectar rock, Ujadani, and nectar weed. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/onyon/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Onion models and animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/piki/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Model and animations for Pikmin, leaders, and the cursor + reticle. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/pod*/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Research Pod model and animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/resulttex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused old Treasure Hoard icons, likely for cave/day end results. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Kando/texCaster/arc.szs/tex.bti&amp;lt;/code&amp;gt; || Texture that is placed below treasures that spawn in caves. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/ufo*/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hocotate Ship model and animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/vstex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|2-Player Battle Roulette icons and other minor HUD textures. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/zukan/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Slightly simpler copy of the unused test map, with its own generation and lighting settings. || Gen &amp;amp; Route Editor (for routes/finding coords for [[Pikmin 2 waterboxes|waterboxes]]), Notepad++ (for .txt files/.ini lighting)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Koono/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hiroyuki Kono (Koono)&#039;s folder, who programmed menus for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Koono/mail_icon.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Space mail icons. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Koono/mail_table.szs/mail_table.bin&amp;lt;/code&amp;gt; || IDs from the &amp;lt;code&amp;gt;.BMG&amp;lt;/code&amp;gt; that correspond to each piece of [[mail]]. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Matoba/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Taku Matoba&#039;s folder, who designed caves for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Matoba/challenge/stages.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 Challenge Mode settings|List of Challenge Mode stages and parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Matoba/challenge/kfes-stages.txt&amp;lt;/code&amp;gt; || List of Challenge Mode stages and parameters, when the game is in KFes mode. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Matoba/resulttex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Treasure icons used in the Treasure Hoard and cave/day end results. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Morimura/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Naoya Morimura&#039;s leftover folder, who programmed the more complicated enemies for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yutaka Hiramuki&#039;s folder, who designed caves for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/mapunits/arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave unit generation|Cave unit assets and data]]. Contains models, routes/pathfinding, and [[Pikmin 2 waterboxes|waterboxes]]. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files, Gen &amp;amp; Route Editor (for routes/finding coords for waterboxes), Notepad++ (for waterboxes), GameCube File Tools (for radar texture)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/caveinfo/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave generation parameters|Cave generation files]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/units/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave unit definition file|Cave unit definition files]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/movie/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[STB file|&amp;lt;code&amp;gt;.STB&amp;lt;/code&amp;gt; files]]. In-game cutscenes. || pikmin2-stb&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Katsushito Nishimura&#039;s folder, who programmed enemies and the levels for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Camera/caveCameraParms.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 camera parameters|Camera parameters]] when in caves. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Camera/groundCameraParms.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 camera parameters|Camera parameters]] when aboveground. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/引きカメラcameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/撮影cameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/本物 groundCameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/本物caveCameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Rumble/rumbleData.txt&amp;lt;/code&amp;gt; || Controller rumble time and power parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Rumble/rumbleParms.txt&amp;lt;/code&amp;gt; || Controller rumble modifier for distant objects. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Shadow/shadowParms.txt&amp;lt;/code&amp;gt; || Shadow parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Ogawa/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Yuzuru Ogawa&#039;s leftover folder, who programmed menus for &#039;&#039;Pikmin 2&#039;&#039;,&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Totaka/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Kazumi Totaka&#039;s folder, who directed the sound design and created some music and sound effects for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList.txt&amp;lt;/code&amp;gt; || List of all [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]] and volume settings for each. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Totaka/BgmList_BgmTest.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|List of all [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] in the game, with a leftover developer comment about compiling cave songs. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Forest.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Awakening Wood cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Last.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Wistful Wild cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Tutorial.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Valley of Repose cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Yakushima.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Perplexing Pool cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/ChallengeBgmList.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for all Challenge Mode cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/StreamList.txt&amp;lt;/code&amp;gt; || List of all [[AST file list|streams]], their ID, and volume settings. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/trackMap_Cond_T.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to caveconc and new_XX [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/trackMap_Seq_T.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to caveglass and caverelax [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Wakai/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hajime Wakai&#039;s folder, who wrote music for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Wakai/trackMap_Cond_W.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to cavemetal and cavesoil [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Wakai/trackMap_Seq_W.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to a few of Hajime Wakai&#039;s [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]].|| Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yoshikazu Yamashita&#039;s folder, who did system programming and programmed most of the enemies for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Boot screen textures. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/enemytex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Piklopedia icons. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/zukan/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Piklopedia enemy appearance parameters and day cycle lighting parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;br /&gt;
[[Category:Directory trees]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Pikmin_2_directory_tree&amp;diff=4692</id>
		<title>Pikmin 2 directory tree</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Pikmin_2_directory_tree&amp;diff=4692"/>
		<updated>2024-05-10T09:18:46Z</updated>

		<summary type="html">&lt;p&gt;Waffles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:&#039;&#039;Pikmin 2&#039;&#039; directory tree}}&lt;br /&gt;
This article lists all folders and noteworthy files in &#039;&#039;Pikmin 2&#039;&#039;, and recommended tools for viewing or modifying them.&amp;lt;br&amp;gt;&lt;br /&gt;
Yellow rows are folders, and red rows are unused files or folders with no effect on the game.&lt;br /&gt;
&lt;br /&gt;
{{todo|Add links for everything.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Path || Details || Recommended Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Jsystem#JAudio|JAudio]] resources. Contains data for music, instruments, and sound effects. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Banks&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[AW file|&amp;lt;code&amp;gt;.AW&amp;lt;/code&amp;gt; wave scene files]]. Contain audio samples of instruments and sound effects for the instrument programs. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;AudioRes/BgmList.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Early list of [[Pikmin 2 BMS file list|sequences]] and volume settings. The real &amp;lt;code&amp;gt;BgmList.txt&amp;lt;/code&amp;gt; is in Totaka&#039;s folder. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Conductor.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. Creates music for caves. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Key.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.BAS&amp;lt;/code&amp;gt; files, which link SoundIDs to enemy animations. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Key.arc/enemy.prj&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Leftover project information about the &amp;lt;code&amp;gt;.BAS&amp;lt;/code&amp;gt; files.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/PSound.aaf&amp;lt;/code&amp;gt; || [[AFF file|&amp;lt;code&amp;gt;.AAF&amp;lt;/code&amp;gt; audio archive file]]. Integral file that contains information about all the available sound effects, waves, instrument banks + programs, and music. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/PSound.asn&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;.ASN&amp;lt;/code&amp;gt; audio sound names. Contains a list of all SoundIDs, which reference a sequence from &amp;lt;code&amp;gt;se.bms&amp;lt;/code&amp;gt;. || asn2csv&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Seqs/Seq.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; binary music sequences]].  Contains sequenced music (akin to MIDI files). || flaaffy or JAIMaker&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/Seqs/Seq.arc/se.bms&amp;lt;/code&amp;gt; || Special &amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; file containing all sound effect sequences in the game. || p2setoolkit, flaaffy or JAIMaker&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Stream/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[AST file list|&amp;lt;code&amp;gt;.AST&amp;lt;/code&amp;gt; audio streams.]]  Contains streamed music (akin to WAV or MP3 files). || JATAST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;banner/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Contains three different Gamecube banner images for &#039;&#039;Pikmin 2&#039;&#039;. This folder is unused; depending on the region, one of these was copied and placed into the root directory as &amp;lt;code&amp;gt;opening.bnr&amp;lt;/code&amp;gt; || pyisotools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Enemy data. Also includes plants, hazards, and misc. objects.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/common/enemyCommon.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models of the rocks used in petrification. || FinModelUtility, SuperBMD, RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/data/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Enemy models, &amp;lt;code&amp;gt;.BCA&amp;lt;/code&amp;gt; animations, and textures. || FinModelUtility, SuperBMD (animations), RiiStudio, GameCube File Tools (for &amp;lt;code&amp;gt;.BTI&amp;lt;/code&amp;gt; textures).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/parm/enemyParms.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 enemy parameters|Parameters for enemy HP, damage, move speed, collisions, animations, and ultra-bitter petrification models]]. || Notepad++, Pikmin 2 Enemy Collision Tree Blender Addon, Pikmin 2 Enemy Bitter/Stoneinfo Blender Addon&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;enemy/parm/enemyResList.txt&amp;lt;/code&amp;gt; || List of enemy resource file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;*gameConfig.ini&amp;lt;/code&amp;gt; ||  style=&amp;quot;background-color:#ffd1d1&amp;quot;|These were likely game configuration settings that changed how the game was compiled, to create special versions of &#039;&#039;Pikmin 2&#039;&#039;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;memoryCard/memoryCardHeader.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Memory card menu icons and banner images. || Wiimms Image Tool + Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/font_*.szs/pikmin2main.bfn&amp;lt;/code&amp;gt; || Font data and textures. || bfntoolkit + GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/mesRes_*.szs/pikmin2.bmc&amp;lt;/code&amp;gt; || Data for font coloring. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/mesRes_*.szs/pikmin2.bmg&amp;lt;/code&amp;gt; || [[BMG file]], all text strings and dialog in the game. || pikminBMG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;new_screen/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[BLO file|&amp;lt;code&amp;gt;.BLO&amp;lt;/code&amp;gt;files]]: HUDs, interfaces, and menus, with all their resources like graphics and animations. || pyblo2-gui&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;opening.bnr&amp;lt;/code&amp;gt; || Gamecube banner image. || pyisotools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2*P.MAP&amp;lt;/code&amp;gt; || Symbol map. Text file that lists where every function and piece of data in the game&#039;s code is located and its name, and is used in-game by the crash handler for debugging purposes. The symbol map in retail versions of the game is unreadable. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;thp/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[THP file|&amp;lt;code&amp;gt;.THP&amp;lt;/code&amp;gt;files]]. Pre-rendered videos. The .ini files control when text strings are loaded on top of the videos. || wiiflowthpvideoconverter, Notepad++ (for .ini files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;timeStamp*.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Build dates. &amp;quot;J&amp;quot;, &amp;quot;P&amp;quot;, and &amp;quot;U&amp;quot; likely represent the Japanese, PAL, and US versions. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Masamichi Abe&#039;s folder, who was a director for the game.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/cave/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 cave lighting files|Lighting files for caves]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/barrelParms.txt&amp;lt;/code&amp;gt; || Clog health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/bridgeParms.txt&amp;lt;/code&amp;gt; || Bridge health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/fountainParms.txt&amp;lt;/code&amp;gt; || Challenge Mode geyser health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/plantParms.txt&amp;lt;/code&amp;gt; || Burgeoning Spiderwort parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/rockParms.txt&amp;lt;/code&amp;gt; || Burgeoning Spiderwort mold parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/TreasureParms.txt&amp;lt;/code&amp;gt; || Buried treasure health parameters. || Notepad++ &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/map/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Routes/pathing, [[Pikmin 2 area generator file|object generation]], [[Pikmin 2 map lighting files|day cycle lighting]], and settings for aboveground areas (including the test map and Piklopedia areas). || Gen &amp;amp; Route Editor, Notepad++  (for .txt files/.ini lighting)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|All treasure models and their &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; carrying animations, as well as parameters for all carriable objects. || FinModelUtility, SuperBMD (animations), RiiStudio, Notepad++ (for collision/parameters)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/carcass_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused enemy carcass parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/item_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused Exploration Kit treasure parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/item_texts.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the Exploration Kit treasures, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/otakara_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused treasure parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/otakara_texts.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the treasures, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pellet.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|All numbered pellet models, their &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; carrying animations, and &amp;lt;code&amp;gt;.BRK&amp;lt;/code&amp;gt; files that control their color. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pellet_texts.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the numbered pellets, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Carryable object parameters, including enemy carcasses, Spiderwort berries, treasures, Exploration Kit treasures, and the numbered pellets. Includes carry weights, pokos earned, seeds earned, and the depth treasures are buried. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/piki/naviParms.txt&amp;lt;/code&amp;gt; || [[NaviParms|Leader parameters]], like speed and attack power. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/piki/pikiParms.txt&amp;lt;/code&amp;gt; || [[PikiParms|Pikmin parameters]], like speed and attack power. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/stages.txt&amp;lt;/code&amp;gt; || List of aboveground areas and parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/time/time.ini&amp;lt;/code&amp;gt; || Day cycle parameters, controlling the length of the day and the related events that occur. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/vs/stages.txt&amp;lt;/code&amp;gt; || [[2-Player Battle stage parameters|List of 2-Player Battle stages and parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/vs/vs_X_*.txt&amp;lt;/code&amp;gt; || [[Cave fixed layout|Pre-determined layouts]] for the 2-Player Battle stages, listing the cave units they use and their locations. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yasushi Ebisawa&#039;s folder, who programmed the particle effects and title screen.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/card_e_reader/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.DWN&amp;lt;/code&amp;gt; files for the three e-Reader Pikmin minigames.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/effect/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.JPC&amp;lt;/code&amp;gt; [[Jsystem#JParticle|JParticle]] archive files. All of the game&#039;s used particles and effects. || jpc_conv, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/testdata/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused menu files, e-Reader files, and title screen things. || FinModelUtility, SuperBMD (animations), RiiStudio, GameCube File Tools (for &amp;lt;code&amp;gt;.BTI&amp;lt;/code&amp;gt; textures)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/title/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models and &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; animations for the title screen and enemies/Pikmin on it. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Ebisawa/title/title.szs/param/param_pikmin.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 title screen|Title screen Pikmin parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Ebisawa/title/title.szs/param/param_title.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 title screen|Title screen parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yuji Kando&#039;s folder, who programmed the Pikmin and other various systems.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Kando/aiConstants.txt&amp;lt;/code&amp;gt; || Some parameters for constants: gravity, Spiderwort berries needed to create 1 spray, amount needed to repay the debt, and &amp;quot;camera angle&amp;quot; (the Y-axis rotation for when you enter a stage). || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/bridge/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused bridge models. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files), GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/develop/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Leftover development tool resources, seemingly for a map editor, route/path manager, a [[Jsystem#J2DGraph|2D graphic]] tester, and animation tester, among other things. || FinModelUtility, SuperBMD, RiiStudio, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/effect/game.jpc&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused &amp;lt;code&amp;gt;.JPC&amp;lt;/code&amp;gt; [[Jsystem#JParticle|JParticle]] archive file with a bunch of particle effects. || jpc_conv, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/effect/modeleffect.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Onion beam model and &amp;lt;code&amp;gt;.BRK&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;.BTK&amp;lt;/code&amp;gt; animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/maps/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models for aboveground/piklopedia areas, [[Pikmin 2 waterboxes|waterboxes]], and [https://www.pikminwiki.com/Pikmin_2_cave_generation#Backgrounds cave vrboxes]. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/mizu.bti&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused texture. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/objects/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models and animations for some objects: clog, bridge, seesaw blocks, cave entrances, gates, nectar, geyser, Burgeoning Spiderwort mold, Pikmin head, Burgeoning Spiderwort, nectar rock, Ujadani, and nectar weed. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/onyon/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Onion models and animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/piki/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Model and animations for Pikmin, leaders, and the cursor + reticle. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/pod*/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Research Pod model and animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/resulttex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused old Treasure Hoard icons, likely for cave/day end results. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/texCaster/arc.szs/tex.bti&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused texture. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/ufo*/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hocotate Ship model and animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/vstex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|2-Player Battle Roulette icons and other minor HUD textures. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/zukan/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Slightly simpler copy of the unused test map, with its own generation and lighting settings. || Gen &amp;amp; Route Editor (for routes/finding coords for [[Pikmin 2 waterboxes|waterboxes]]), Notepad++ (for .txt files/.ini lighting)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Koono/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hiroyuki Kono (Koono)&#039;s folder, who programmed menus for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Koono/mail_icon.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Space mail icons. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Koono/mail_table.szs/mail_table.bin&amp;lt;/code&amp;gt; || IDs from the &amp;lt;code&amp;gt;.BMG&amp;lt;/code&amp;gt; that correspond to each piece of [[mail]]. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Matoba/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Taku Matoba&#039;s folder, who designed caves for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Matoba/challenge/stages.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 Challenge Mode settings|List of Challenge Mode stages and parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Matoba/challenge/kfes-stages.txt&amp;lt;/code&amp;gt; || List of Challenge Mode stages and parameters, when the game is in KFes mode. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Matoba/resulttex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Treasure icons used in the Treasure Hoard and cave/day end results. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Morimura/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Naoya Morimura&#039;s leftover folder, who programmed the more complicated enemies for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yutaka Hiramuki&#039;s folder, who designed caves for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/mapunits/arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave unit generation|Cave unit assets and data]]. Contains models, routes/pathfinding, and [[Pikmin 2 waterboxes|waterboxes]]. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files, Gen &amp;amp; Route Editor (for routes/finding coords for waterboxes), Notepad++ (for waterboxes), GameCube File Tools (for radar texture)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/caveinfo/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave generation parameters|Cave generation files]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/units/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave unit definition file|Cave unit definition files]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/movie/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[STB file|&amp;lt;code&amp;gt;.STB&amp;lt;/code&amp;gt; files]]. In-game cutscenes. || pikmin2-stb&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Katsushito Nishimura&#039;s folder, who programmed enemies and the levels for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Camera/caveCameraParms.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 camera parameters|Camera parameters]] when in caves. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Camera/groundCameraParms.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 camera parameters|Camera parameters]] when aboveground. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/引きカメラcameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/撮影cameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/本物 groundCameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/本物caveCameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Rumble/rumbleData.txt&amp;lt;/code&amp;gt; || Controller rumble time and power parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Rumble/rumbleParms.txt&amp;lt;/code&amp;gt; || Controller rumble modifier for distant objects. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Shadow/shadowParms.txt&amp;lt;/code&amp;gt; || Shadow parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Ogawa/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Yuzuru Ogawa&#039;s leftover folder, who programmed menus for &#039;&#039;Pikmin 2&#039;&#039;,&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Totaka/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Kazumi Totaka&#039;s folder, who directed the sound design and created some music and sound effects for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList.txt&amp;lt;/code&amp;gt; || List of all [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]] and volume settings for each. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Totaka/BgmList_BgmTest.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|List of all [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] in the game, with a leftover developer comment about compiling cave songs. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Forest.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Awakening Wood cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Last.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Wistful Wild cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Tutorial.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Valley of Repose cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Yakushima.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Perplexing Pool cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/ChallengeBgmList.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for all Challenge Mode cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/StreamList.txt&amp;lt;/code&amp;gt; || List of all [[AST file list|streams]], their ID, and volume settings. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/trackMap_Cond_T.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to caveconc and new_XX [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/trackMap_Seq_T.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to caveglass and caverelax [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Wakai/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hajime Wakai&#039;s folder, who wrote music for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Wakai/trackMap_Cond_W.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to cavemetal and cavesoil [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Wakai/trackMap_Seq_W.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to a few of Hajime Wakai&#039;s [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]].|| Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yoshikazu Yamashita&#039;s folder, who did system programming and programmed most of the enemies for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Boot screen textures. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/enemytex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Piklopedia icons. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/zukan/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Piklopedia enemy appearance parameters and day cycle lighting parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;br /&gt;
[[Category:Directory trees]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Cave_generation_parameters&amp;diff=4691</id>
		<title>Cave generation parameters</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Cave_generation_parameters&amp;diff=4691"/>
		<updated>2024-05-10T05:56:08Z</updated>

		<summary type="html">&lt;p&gt;Waffles: /* FloorInfo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In &#039;&#039;Pikmin 2&#039;&#039;, the files that define a cave&#039;s settings can be found in &amp;lt;code&amp;gt;/user/Mukki/mapunits/caveinfo&amp;lt;/code&amp;gt;. For instance, the Emergence Cave uses &amp;lt;code&amp;gt;tutorial_1.txt&amp;lt;/code&amp;gt;. All comments (Japanese or English statements followed by a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;) are unnecessary and deleting them will save file space.&lt;br /&gt;
&lt;br /&gt;
To avoid any issues when reading or writing these files, use [https://notepad-plus-plus.org/download/v7.5.6.html Notepad++].&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
It is important to know these basic concepts.&lt;br /&gt;
&lt;br /&gt;
Each object-related block in a sublevel has a series of data on what objects to spawn, and how. In this page, each of these data is called an &#039;&#039;&#039;entry&#039;&#039;&#039;. Each entry merely contains information about &#039;&#039;how&#039;&#039; to spawn an object, it does not actually reflect a specific object. For instance, there could be an entry for a Dwarf Bulborb that fall from the sky carrying the Essence of Desire, but the game could spawn 10 Dwarf Bulborbs from this entry &amp;amp;ndash; in this case all ten would fall from the sky and carry the Essence of Desire.&lt;br /&gt;
&lt;br /&gt;
Each entry can belong to one of the following categories, which affect many things, some of which are detailed in this table:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Category || Block || Kind of object || Locations || Min. amount? || Used for filler? || Other notes&lt;br /&gt;
|-&lt;br /&gt;
! Main&lt;br /&gt;
| [[#TekiInfo|TekiInfo]]&lt;br /&gt;
| Anything but treasures and gates&lt;br /&gt;
| &amp;quot;Room&amp;quot; cave units&lt;br /&gt;
| Yes&lt;br /&gt;
| Until the limit in [[#FloorInfo|parameter &amp;lt;code&amp;gt;{f002}&amp;lt;/code&amp;gt;]]&lt;br /&gt;
| [[#Spawn type|Spawn type]] is 0, 1, 5, or 8&lt;br /&gt;
|-&lt;br /&gt;
! Decorative&lt;br /&gt;
| [[#TekiInfo|TekiInfo]]&lt;br /&gt;
| Anything but treasures and gates&lt;br /&gt;
| &amp;quot;Room&amp;quot; cave units&lt;br /&gt;
| Yes&lt;br /&gt;
| No&lt;br /&gt;
| [[#Spawn type|Spawn type]] is 6&lt;br /&gt;
|-&lt;br /&gt;
! Treasure&lt;br /&gt;
| [[#ItemInfo|ItemInfo]]&lt;br /&gt;
| Treasures only&lt;br /&gt;
| &amp;quot;Room&amp;quot; cave units or those with &amp;quot;item&amp;quot; in the name&lt;br /&gt;
| Yes&lt;br /&gt;
| Until the limit in [[#FloorInfo|parameter &amp;lt;code&amp;gt;{f003}&amp;lt;/code&amp;gt;]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
! Gate&lt;br /&gt;
| [[#GateInfo|GateInfo]]&lt;br /&gt;
| Gates only&lt;br /&gt;
| Seams between units&lt;br /&gt;
| No&lt;br /&gt;
| Until the limit in [[#FloorInfo|parameter &amp;lt;code&amp;gt;{f004}&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
! Dead end&lt;br /&gt;
| [[#CapInfo|CapInfo]]&lt;br /&gt;
| Anything but gates&lt;br /&gt;
| &amp;quot;Dead end&amp;quot; cave units with &amp;quot;item&amp;quot; in the name&lt;br /&gt;
| Yes&lt;br /&gt;
| Until it runs out of dead ends&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These categories are not recognized by the game, and their names are merely guidelines. This is because you can have fully-functional enemies in the &amp;quot;decorative&amp;quot; category, and you can have cosmetic plants in the &amp;quot;main&amp;quot; category, for instance. What is important is understanding that the game reads and controls object entries differently depending on a lot of factors, and this categorization is just a simple way of explaining everything.&lt;br /&gt;
&lt;br /&gt;
While this page explains how the text file works, it will not explain how spawning works. For that, there is the &#039;&#039;&#039;[[cave spawning]]&#039;&#039;&#039; article. You don&#039;t need to read the whole thing, but for context for this article, you should at least read the [[Cave spawning#Summary|summary]].&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
These text files must be encoded in Shift-JIS, or at least ASCII. If the file is saved as a UTF-8 text file with the &amp;lt;code&amp;gt;EF BB BF&amp;lt;/code&amp;gt; magic word at the start, the game will not read it correctly, assuming you only have one sublevel. With Notepad++, you can check if the encoding is right in the bottom right.&lt;br /&gt;
&lt;br /&gt;
Each file starts with the header, [[#CaveInfo|CaveInfo]]. Afterwards comes the data for each sublevel. Each sublevel consists of five consecutive blocks of information: [[#FloorInfo|FloorInfo]], [[#TekiInfo|TekiInfo]], [[#ItemInfo|ItemInfo]], [[#GateInfo|GateInfo]], and [[#CapInfo|CapInfo]].&lt;br /&gt;
&lt;br /&gt;
When this page refers to &amp;quot;parameters&amp;quot;, it means something along the lines of &amp;lt;code&amp;gt;{f000} 4 0&amp;lt;/code&amp;gt;. The first word is the parameter&#039;s name. The second word is the type: &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; for numbers and &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt; for strings. The third word is the parameter&#039;s value &amp;amp;ndash; the one you can modify.&lt;br /&gt;
&lt;br /&gt;
=== CaveInfo ===&lt;br /&gt;
The header block is usually commented with &amp;lt;code&amp;gt;CaveInfo&amp;lt;/code&amp;gt;. It contains only one parameter, &amp;lt;code&amp;gt;{c000}&amp;lt;/code&amp;gt;, which controls the number of sublevels in the cave.&lt;br /&gt;
&lt;br /&gt;
After the opening block there is a lone number. This number is, once again, the number of sublevels in the cave.&lt;br /&gt;
&lt;br /&gt;
=== FloorInfo ===&lt;br /&gt;
Each sublevel starts with a block typically commented with &amp;lt;code&amp;gt;FloorInfo&amp;lt;/code&amp;gt;. It has a large number of parameters that determine how the sublevel works. The following table lists what parameters exist, what they do, and what comments (in Japanese) usually follow the value.&lt;br /&gt;
&lt;br /&gt;
{{todo|Figure out what happens if you change {f000} and {f001}. Also specify what happens if {f003}/{f004} are set to 0.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter || Description || Japanese comment&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;{f000}&amp;lt;/code&amp;gt; || The sublevel number this sublevel belongs to, minus 1. For example, if this floor is sublevel 1, the value is 0. Comment translates to &amp;quot;floor introduction&amp;quot;. Seems to crash the game if lower than the current sublevel. || 階はじめ&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;{f001}&amp;lt;/code&amp;gt; || Same as above. Comment translates to &amp;quot;floor end&amp;quot;. Seems to duplicate the floor and replace future sublevels. For example, if you are on sublevel 1 ({f000} is set to 0) when {f001} is set to 2, sublevels 2 and 3 will be the exact same as the first sublevel. The other sublevels will be untouched.  || 階おわり&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;{f002}&amp;lt;/code&amp;gt; || Ideal maximum number of objects in the main [[#Concepts|category]]. See [[#Amount|here]] and [[#Weight|here]] for more details. If this is set to 0, absolutely no objects of the main category will spawn. || 敵最大数&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;{f003}&amp;lt;/code&amp;gt; || Same as &amp;lt;code&amp;gt;{f002}&amp;lt;/code&amp;gt; but for objects in the treasure [[#Concepts|category]]. It does not count treasures inside enemies. || アイテム最大数&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;{f004}&amp;lt;/code&amp;gt; || Same as &amp;lt;code&amp;gt;{f002}&amp;lt;/code&amp;gt; but for objects in the gate [[#Concepts|category]]. || ゲート最大数&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;{f005}&amp;lt;/code&amp;gt; || Number of &amp;quot;room&amp;quot; cave units. || ルーム数&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;{f006}&amp;lt;/code&amp;gt; || Corridor probability. If this number is higher, the game will spawn more corridors relative to the number of rooms. || ルートの割合&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;{f007}&amp;lt;/code&amp;gt; || 1 if this floor has a geyser, 0 otherwise. || 帰還噴水(1=あり)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;{f008}&amp;lt;/code&amp;gt; || [[Cave unit definition file]] name. || 使用ユニット&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;{f009}&amp;lt;/code&amp;gt; || Lighting definition file name. || 使用ライト&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;{f00A}&amp;lt;/code&amp;gt; || Skybox. Existing skyboxes are: &amp;lt;code&amp;gt;ice&amp;lt;/code&amp;gt; (ice cavern), &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; (cavern), &amp;lt;code&amp;gt;build&amp;lt;/code&amp;gt; (steel), &amp;lt;code&amp;gt;hiroba&amp;lt;/code&amp;gt; (garden), &amp;lt;code&amp;gt;flooring&amp;lt;/code&amp;gt; (wooden floor), &amp;lt;code&amp;gt;tatami&amp;lt;/code&amp;gt; (carpet). If an invalid name is used, then there will be no skybox. || VRBOX&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;{f010}&amp;lt;/code&amp;gt; || 1 if the next sublevel hole is clogged, 0 otherwise. || 階段を壊す岩で隠す(0=オフ 1=オン)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;{f011}&amp;lt;/code&amp;gt; || Echo strength; 0 for longest echo, used in soil/remaining themes, 1 is normally used for metal, 2 is used for concrete, 3 is used for tile, 4 is used for garden, and 5 is an almost unnoticeable echo, used for toy themes. || α属性&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;{f012}&amp;lt;/code&amp;gt; || Music type; 0 for normal, 1 to mute (until a boss), 2 to use rest sublevel music || β属性&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;{f013}&amp;lt;/code&amp;gt; || 1 if sublevel has an invisible solid plane of ground, generally used for the &amp;lt;code&amp;gt;hiroba&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;flooring&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;tatami&amp;lt;/code&amp;gt; skyboxes. If 0, Pikmin can fall off the edge to their deaths. || 隠し床&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;{f014}&amp;lt;/code&amp;gt; || Dead end probability (0-100). E.g. if this value is 50, open doors will be set to dead ends with 50% probability. || キャップ最大数&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;{f015}&amp;lt;/code&amp;gt; || File format version; 1 is normal, 0 will ignore all dead end spawns ([[#CapInfo|CapInfo]]) || Version&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;{f016}&amp;lt;/code&amp;gt; || {{unsure|Time until the Waterwraith appears. || BlackManTimer&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;{f017}&amp;lt;/code&amp;gt; || 0 is normal, anything else makes it spawn two (connected) seesaw blocks randomly in the level. May spawn the leaders and Pikmin inside one. &#039;&#039;&#039;Unused.&#039;&#039;&#039; || 沈む壁&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== TekiInfo ===&lt;br /&gt;
&amp;lt;code&amp;gt;TekiInfo&amp;lt;/code&amp;gt; determines the [[#Concepts|main category]] objects and the [[#Concepts|decorative category]] objects to spawn on the sublevel. It also controls what sort of spawn points they appear in, if they fall from the sky or not, if they are carrying a treasure inside, and more. Gates and treasures cannot be specified here (other than the treasures that are [[#Carrying|carried]] by enemies). The game will spawn the minimum amounts specified in these entries and then, in the case of main category objects, keep filling randomly until the limit in [[#FloorInfo|parameter &amp;lt;code&amp;gt;{f002}&amp;lt;/code&amp;gt;]]. These objects only appear in &amp;quot;room&amp;quot; cave units.&lt;br /&gt;
&lt;br /&gt;
The first number in the block is the total of [[#Entry|entries]]. It is usually commented with &amp;lt;code&amp;gt;num&amp;lt;/code&amp;gt;. Each entry consists of two lines:&lt;br /&gt;
&lt;br /&gt;
# The first line in an entry starts with the object&#039;s [[#Fall method|fall method]], the object&#039;s [[#Class|class]], what treasure it is [[#Carrying|carrying]], then a space, then the [[#Amount|amount]] to spawn, and/or its [[#Weight|random filling weight]]. Note that entries of the decorative category do not have a random filling weight. It is typically commented with the word &amp;quot;weight&amp;quot;.&lt;br /&gt;
# The second line of each entry is the [[#Spawn type|spawn type]]. It is typically commented with the word &amp;quot;type&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== ItemInfo ===&lt;br /&gt;
&amp;lt;code&amp;gt;ItemInfo&amp;lt;/code&amp;gt; controls what [[#Concepts|treasure category]] objects spawn. The game will spawn the minimum amounts for these treasures, and then will keep filling randomly until it reaches the limit defined in [[#FloorInfo|parameter &amp;lt;code&amp;gt;{f003}&amp;lt;/code&amp;gt;]]. Treasures inside enemies aren&#039;t included here, nor are they counted for the limit. Instead, they are defined in the [[#Carrying|carrying]] data of objects in [[#TekiInfo|TekiInfo]] or [[#CapInfo|CapInfo]]. Only treasures can be specified in this block &amp;amp;ndash; if you try to spawn something here that is not a treasure, the game will crash. These objects only appear in &amp;quot;room&amp;quot; cave units, or any unit that has &amp;quot;item&amp;quot; in the name.&lt;br /&gt;
&lt;br /&gt;
The first number in the block is the total of [[#Entry|entries]]. It is usually commented with &amp;lt;code&amp;gt;num&amp;lt;/code&amp;gt;. Each entry consists of one line:&lt;br /&gt;
&lt;br /&gt;
# This line contains the object&#039;s [[#Class|class]], then a space, then the [[#Amount|amount]] to spawn, and/or its [[#Weight|random filling weight]]. It is typically commented with the word &amp;quot;weight&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
=== GateInfo ===&lt;br /&gt;
{{todo|Confirm the claim that the weight only uses the last digit.}}&lt;br /&gt;
&amp;lt;code&amp;gt;GateInfo&amp;lt;/code&amp;gt; controls what [[#Concepts|gate category]] objects will appear. Each individual gate on a sublevel is randomly colored, and always appears in seams. The game will spawn the number of gates defined in [[#FloorInfo|parameter &amp;lt;code&amp;gt;{f004}&amp;lt;/code&amp;gt;]]. These objects appear in the seams between two cave units.&lt;br /&gt;
&lt;br /&gt;
The first number in the block is the total of [[#Entry|entries]]. It is usually commented with &amp;lt;code&amp;gt;num&amp;lt;/code&amp;gt;. Each entry consists of two lines:&lt;br /&gt;
&lt;br /&gt;
# The first line is the gate&#039;s HP. This line starts with any word (although the word &amp;lt;code&amp;gt;gate&amp;lt;/code&amp;gt; is what&#039;s used in the vanilla game), and after a space, the amount of hit points it has, with decimal places (e.g. &amp;lt;code&amp;gt;1000.000000&amp;lt;/code&amp;gt;). It is typically commented with the word &amp;quot;life&amp;quot;.&lt;br /&gt;
# The second line contains the object&#039;s [[#Weight|random filling weight]]. Only the last digit is read by the game, though. If the weight number is 0, the game will not spawn any gate from this entry, of course. It is typically commented with the word &amp;quot;weight&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== CapInfo ===&lt;br /&gt;
&amp;lt;code&amp;gt;CapInfo&amp;lt;/code&amp;gt; determines what [[#Concepts|dead end category]] objects to spawn. It works similarly to the [[#TekiInfo|&amp;lt;code&amp;gt;TekiInfo&amp;lt;/code&amp;gt; block]], though with some differences:&lt;br /&gt;
* While in the &amp;lt;code&amp;gt;TekiInfo&amp;lt;/code&amp;gt; block the locations of objects spawned is determined by the spawn type, that is not the case here. These objects only spawn in &amp;quot;dead end&amp;quot; cave units with &amp;quot;item&amp;quot; in the name.&lt;br /&gt;
* Objects spawned with this block do not count for any limit (e.g. [[#FloorInfo|parameter &amp;lt;code&amp;gt;{f003}&amp;lt;/code&amp;gt;]]).&lt;br /&gt;
* Treasures can also be specified in this block.&lt;br /&gt;
&lt;br /&gt;
The first number in the block is the total of [[#Entry|entries]]. It is usually commented with &amp;lt;code&amp;gt;num&amp;lt;/code&amp;gt;. Each entry consists of three lines:&lt;br /&gt;
&lt;br /&gt;
# The first line is presumably, the type of dead end this spawn applies to. It always has the value &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; in the vanilla game. It is typically commented with the word &amp;quot;captype&amp;quot;.&lt;br /&gt;
# The second line in an entry starts with the object&#039;s [[#Fall method|fall method]], the object&#039;s [[#Class|class]], what treasure it is [[#Carrying|carrying]], then a space, then the [[#Amount|amount]] to spawn, and/or its [[#Weight|random filling weight]]. It is typically commented with the word &amp;quot;weight&amp;quot;.&lt;br /&gt;
# The third line of each entry is the &amp;quot;type&amp;quot;. 0 makes it so two objects spawn in the same spot, while 1 allows only one object. It is typically commented with the word &amp;quot;type&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Entry ==&lt;br /&gt;
Depending on its [[#Concepts|category]], an entry can have or not have certain information.&lt;br /&gt;
&lt;br /&gt;
To note is that if something is wrong with the entry&#039;s data, the game will probably break down when trying to spawn an item of said entry, but it might also trigger an error handler. If it does, the object will be turned into a fully-functional Common Glowcap. Typing an invalid class name will trigger the error handler.&lt;br /&gt;
&lt;br /&gt;
=== Class ===&lt;br /&gt;
[[#Concepts|Categories]]: main, decorative, treasure, dead end.&lt;br /&gt;
&lt;br /&gt;
This is the class of object to spawn (e.g. fire geyser, Red Bulborb, clover, etc.). The name typed here must match the [[Pikmin 2 identifiers|internal name]]. (e.g. &amp;lt;code&amp;gt;MaroFrog&amp;lt;/code&amp;gt; for a Wollywog.) For main, decorative, and dead end category objects, this name is normally not case-sensitive, but if it&#039;s an enemy [[#Carrying|carrying]] something, then it becomes case-sensitive. For treasure category objects, the name must be all lowercase.&lt;br /&gt;
&lt;br /&gt;
=== Carrying ===&lt;br /&gt;
[[#Concepts|Categories]]: main, decorative, dead end.&lt;br /&gt;
&lt;br /&gt;
An entry can specify if an enemy is meant to carry a treasure inside it. If it is, then after the [[#Class|class]] name there should be an underscore, and then afterwards, in all lowercase, the [[Pikmin 2 identifiers|internal name]] of said treasure. (e.g. &amp;lt;code&amp;gt;Chappy_key&amp;lt;/code&amp;gt; for a Red Bulborb carrying The Key.) Note that for entries regarding enemies that are carrying something, the class name becomes case-sensitive.&lt;br /&gt;
&lt;br /&gt;
Note that just because an underscore exists doesn&#039;t mean for sure that one object is carrying another. If the game sees the name &amp;lt;code&amp;gt;Wakame_s&amp;lt;/code&amp;gt;, it isn&#039;t going to think that it&#039;s an object &amp;lt;code&amp;gt;Wakame&amp;lt;/code&amp;gt; carrying an object &amp;lt;code&amp;gt;s&amp;lt;/code&amp;gt;, but rather that it is a small shoot. Also note that treasures specified here do not count towards the limit in [[#FloorInfo|parameter &amp;lt;code&amp;gt;{f003}&amp;lt;/code&amp;gt;]].&lt;br /&gt;
&lt;br /&gt;
=== Fall method ===&lt;br /&gt;
[[#Concepts|Categories]]: main, decorative, dead end.&lt;br /&gt;
&lt;br /&gt;
Some objects spawn in the sky and then fall, like Volatile Dweevils that only appear when you get close to their spawn position. To get an object to do this, write a dollar sign and/or a number, before the [[#Class|class]] of the entry, without a space in between. (e.g. &amp;lt;code&amp;gt;$4BombOtakara&amp;lt;/code&amp;gt; for a Volatile Dweevil that spawns when Pikmin are carrying nearby). You have to write a specific thing to get a specific behavior, and if you write an invalid one, the game crashes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Code || Effect || Notes&lt;br /&gt;
|-&lt;br /&gt;
| (Nothing) || Spawns normally. || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$&amp;lt;/code&amp;gt; || Falls, if a Pikmin or leader is nearby. || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$0&amp;lt;/code&amp;gt; || Triggers the Common Glowcap error handler. || &#039;&#039;&#039;Unused&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$1&amp;lt;/code&amp;gt; || Identical to &amp;lt;code&amp;gt;$&amp;lt;/code&amp;gt;. || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$2&amp;lt;/code&amp;gt; || Falls, if a Pikmin is nearby. Leaders are ignored. || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$3&amp;lt;/code&amp;gt; || Falls, if a leader is nearby. Pikmin are ignored. || &#039;&#039;&#039;Unused&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$4&amp;lt;/code&amp;gt; || Falls, if Pikmin are carrying nearby. || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$5&amp;lt;/code&amp;gt; || Falls, if a Purple Pikmin causes an earthquake nearby. || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Not all objects support this feature. The objects that don&#039;t support the feature completely ignore whatever fall method is written and spawn normally. Other objects support it, but have some interesting behavior. Here is a list of all possibilities:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
! Objects || Result&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
* All bosses&lt;br /&gt;
* All plants (besides Candypop Buds)&lt;br /&gt;
* Antenna Beetle&lt;br /&gt;
* Armored Cannon Beetle Larva (buried version)&lt;br /&gt;
* Breadbug&lt;br /&gt;
* Cloaking Burrow-nit&lt;br /&gt;
* Creeping Chrysanthemum&lt;br /&gt;
* Doodlebug&lt;br /&gt;
* Electrical wire&lt;br /&gt;
* Female Sheargrub&lt;br /&gt;
* Fire geyser&lt;br /&gt;
* Gas pipe&lt;br /&gt;
* Hermit Crawmad&lt;br /&gt;
* Honeywisp&lt;br /&gt;
* Iridescent Flint Beetle&lt;br /&gt;
* Iridescent Glint Beetle&lt;br /&gt;
* Male Sheargrub&lt;br /&gt;
* Mamuta&lt;br /&gt;
* Mitite&lt;br /&gt;
* Ravenous Whiskerpillar&lt;br /&gt;
* Shearwig&lt;br /&gt;
* Skitter Leaf&lt;br /&gt;
* Toady Bloyster&lt;br /&gt;
* Unmarked Spectralids&lt;br /&gt;
* Waterwraith rollers (unused)&lt;br /&gt;
| Not supported&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
* Bumbling Snitchbug&lt;br /&gt;
* Careening Dirigibug&lt;br /&gt;
* Greater Spotted Jellyfloat&lt;br /&gt;
* Lesser Spotted Jellyfloat&lt;br /&gt;
* Puffy Blowhog&lt;br /&gt;
* Swooping Snitchbug&lt;br /&gt;
* Withering Blowhog&lt;br /&gt;
| Supported, floats down from the sky&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
* Bulborb Larva &amp;amp;ndash; Uses a unique falling animation, the same animation that&#039;s used when it is born from the Empress Bulblax.&lt;br /&gt;
* Egg &amp;amp;ndash; Breaks upon hitting the ground.&lt;br /&gt;
* Falling boulder &amp;amp;ndash; Falling boulders sort of float in place for a bit, then fall down at a much quicker speed than normal. If multiple boulders spawn inside of each other, they will bounce off of each other at an angle when they are triggered by the player.&lt;br /&gt;
* Lithopod boulder (unused) &amp;amp;ndash; The trail particles of the boulder will remain stationary in the air until the rolling boulder is triggered by the player.&lt;br /&gt;
| Supported, special behavior&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
* Everything else&lt;br /&gt;
| Supported, falls normally&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Amount ===&lt;br /&gt;
[[#Concepts|Categories]]: main, decorative, treasure, dead end.&lt;br /&gt;
&lt;br /&gt;
Some entries can specify that the sublevel must spawn at least a minimum amount of objects from that entry. The game can possibly [[#Weight|spawn more randomly]] afterwards, but at least the minimum amount will be met (under ideal circumstances anyway). Note that while there are sublevel [[#FloorInfo|parameters]] that control the maximum number of main, treasure, or gate objects, they will not be taken into account when spawning these minimum amounts.&lt;br /&gt;
&lt;br /&gt;
In an entry, the amount comes after the [[#Class|class]] (and [[#Carrying|carry]]), with a space in between. Whatever number is written here is the minimum amount. 0 can be used to specify that there is no minimum amount, and that this entry should only be used for random filler. The filler weight, described [[#Weight|here]], is another number that goes attached to this one. If the filler weight is present, then the amount number can be absent; in this case the game will assume it is 0. Note that while gate category entries need the minimum amount, the game will not actually do anything with that amount.&lt;br /&gt;
&lt;br /&gt;
=== Weight ===&lt;br /&gt;
[[#Concepts|Categories]]: main, treasure, gate, dead end.&lt;br /&gt;
&lt;br /&gt;
When the game wants to fill in the sublevel with some randomly-picked objects, it checks the relevant entries to figure out which ones it can pick, and with what chances, as detailed [[Cave spawning#Weighted distribution|here]]. It eventually stops spawning, and the exact conditions depend the [[#Concepts|category]] of the entry. Note that for many reasons, explained in the [[cave spawning]] article, objects may fail to appear, so the sublevel will contain fewer objects of a given category than the sublevel [[#FloorInfo|parameter]] for that limit specifies.&lt;br /&gt;
&lt;br /&gt;
In an entry, the random filling weight comes directly after the [[#Amount|amount]], without even a space in between. The weight is only one digit, meaning it can only go from 0 to 9. If it is 0, the game will not use this entry for random filling. Note that if only one digit is present, then it refers to the weight, and the game assumes the minimum amount is 0. Also note that entries of the decorative category do not have weight.&lt;br /&gt;
&lt;br /&gt;
{{credits|Jimble, [[User:Espyo|Espyo]]}}&lt;br /&gt;
&lt;br /&gt;
=== Spawn type ===&lt;br /&gt;
[[#Concepts|Categories]]: main, decorative.&lt;br /&gt;
&lt;br /&gt;
This number controls what type of spawning logic to use, where it spawns, and to a lesser degree, what category of object this is. The number ranges from 0 to 8, and most of these also correspond to a group of spawn coordinates. When spawning an instance of this object, the game picks a random coordinate from the group, if applicable. Note that certain entry categories can only use certain numbers.&lt;br /&gt;
&lt;br /&gt;
The following table lists the possible numbers, and the comments on the various [[Cave unit definition file|unit layout files]] (in &amp;lt;code&amp;gt;/user/Mukki/mapunits/arc/*/texts.szs/layout.txt&amp;lt;/code&amp;gt;) are also included due to them helping understand what each number means.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Group || rowspan=&amp;quot;2&amp;quot; | Content || rowspan=&amp;quot;2&amp;quot; | &amp;lt;code&amp;gt;layout.txt&amp;lt;/code&amp;gt; comment || rowspan=&amp;quot;2&amp;quot; | Notes || colspan=&amp;quot;2&amp;quot; | Category availability&lt;br /&gt;
|-&lt;br /&gt;
! Main || Decorative&lt;br /&gt;
|-&lt;br /&gt;
| 0 || &amp;quot;Easy&amp;quot; enemy group || &amp;lt;code&amp;gt;Teki A&amp;lt;/code&amp;gt; || Commonly used for easier enemies. Objects using this spawn type can spawn multiple in the same spot. (Depends on the spawn point&#039;s minimum and maximum amount.) || style=&amp;quot;background-color: #aca;&amp;quot; | Yes || style=&amp;quot;background-color: #caa;&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;quot;Hard&amp;quot; enemy group || &amp;lt;code&amp;gt;Teki B&amp;lt;/code&amp;gt; || Commonly used for harder enemies. || style=&amp;quot;background-color: #aca;&amp;quot; | Yes || style=&amp;quot;background-color: #caa;&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Treasure || &amp;lt;code&amp;gt;Item&amp;lt;/code&amp;gt; || Not used directly by any object in the vanilla game. In a cave unit, it marks the location of objects from the treasure category. || style=&amp;quot;background-color: #caa;&amp;quot; | No || style=&amp;quot;background-color: #caa;&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
| 3 || {{unsure|Unknown}} || || There is no object or cave unit that uses this number. || style=&amp;quot;background-color: #caa;&amp;quot; | No || style=&amp;quot;background-color: #caa;&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Hole/Geyser || &amp;lt;code&amp;gt;FixObj&amp;lt;/code&amp;gt; || Objects can&#039;t use this number. In a cave unit, it marks a viable location for the next sublevel hole/geyser in a room, if dead ends are not present in the sublevel. || style=&amp;quot;background-color: #caa;&amp;quot; | No || style=&amp;quot;background-color: #caa;&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Seams || || Commonly used for hazards such as fire geysers, electrical wires and gas pipes. These spots are located in the seams between two connected cave units. || style=&amp;quot;background-color: #aca;&amp;quot; | Yes || style=&amp;quot;background-color: #caa;&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Plant || &amp;lt;code&amp;gt;Plant&amp;lt;/code&amp;gt; || Commonly used by decorative plants. || style=&amp;quot;background-color: #caa;&amp;quot; | No || style=&amp;quot;background-color: #aca;&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
| 7 || Leader spawn || &amp;lt;code&amp;gt;Start&amp;lt;/code&amp;gt; || Objects can&#039;t use this number. In a cave unit, it marks a possible player starting spot in the sublevel. The Y coordinate is ignored; it snaps to the ground. || style=&amp;quot;background-color: #caa;&amp;quot; | No || style=&amp;quot;background-color: #caa;&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
| 8 || &amp;quot;Special&amp;quot; enemy group || &amp;lt;code&amp;gt;Teki F&amp;lt;/code&amp;gt; || Commonly used for boss locations, or the location of tower Gatling Groinks/buried Armored Cannon Beetle Larvae. Most rooms do not have coordinates for this. || style=&amp;quot;background-color: #aca;&amp;quot; | Yes || style=&amp;quot;background-color: #caa;&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Pikmin_2_directory_tree&amp;diff=4690</id>
		<title>Pikmin 2 directory tree</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Pikmin_2_directory_tree&amp;diff=4690"/>
		<updated>2024-05-09T13:11:32Z</updated>

		<summary type="html">&lt;p&gt;Waffles: simplify&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:&#039;&#039;Pikmin 2&#039;&#039; directory tree}}&lt;br /&gt;
This article lists all folders and noteworthy files in &#039;&#039;Pikmin 2&#039;&#039;, and recommended tools for viewing or modifying them.&amp;lt;br&amp;gt;&lt;br /&gt;
Yellow rows are folders, and red rows are unused files or folders with no effect on the game.&lt;br /&gt;
&lt;br /&gt;
{{todo|Add links for everything.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Path || Details || Recommended Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Jsystem#JAudio|JAudio]] resources. Contains data for music, instruments, and sound effects. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Banks&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[AW file|&amp;lt;code&amp;gt;.AW&amp;lt;/code&amp;gt; wave scene files]]. Contain audio samples of instruments and sound effects for the instrument programs. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;AudioRes/BgmList.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Early list of [[Pikmin 2 BMS file list|sequences]] and volume settings. The real &amp;lt;code&amp;gt;BgmList.txt&amp;lt;/code&amp;gt; is in Totaka&#039;s folder. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Conductor.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. Creates music for caves. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Key.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.BAS&amp;lt;/code&amp;gt; files, which link SoundIDs to enemy animations. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Key.arc/enemy.prj&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Leftover project information about the &amp;lt;code&amp;gt;.BAS&amp;lt;/code&amp;gt; files.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/PSound.aaf&amp;lt;/code&amp;gt; || [[AFF file|&amp;lt;code&amp;gt;.AAF&amp;lt;/code&amp;gt; audio archive file]]. Integral file that contains information about all the available sound effects, waves, instrument banks + programs, and music. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/PSound.asn&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;.ASN&amp;lt;/code&amp;gt; audio sound names. Contains a list of all SoundIDs, which reference a sequence from &amp;lt;code&amp;gt;se.bms&amp;lt;/code&amp;gt;. || asn2csv&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Seqs/Seq.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; binary music sequences]].  Contains sequenced music (akin to MIDI files). || flaaffy or JAIMaker&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/Seqs/Seq.arc/se.bms&amp;lt;/code&amp;gt; || Special &amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; file containing all sound effect sequences in the game. || p2setoolkit, flaaffy or JAIMaker&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Stream/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[AST file list|&amp;lt;code&amp;gt;.AST&amp;lt;/code&amp;gt; audio streams.]]  Contains streamed music (akin to WAV or MP3 files). || JATAST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;banner/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Contains three different Gamecube banner images for &#039;&#039;Pikmin 2&#039;&#039;. This folder is unused; depending on the region, one of these was copied and placed into the root directory as &amp;lt;code&amp;gt;opening.bnr&amp;lt;/code&amp;gt; || pyisotools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Enemy data. Also includes plants, hazards, and misc. objects.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/common/enemyCommon.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models of the rocks used in petrification. || FinModelUtility, SuperBMD, RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/data/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Enemy models, &amp;lt;code&amp;gt;.BCA&amp;lt;/code&amp;gt; animations, and textures. || FinModelUtility, SuperBMD (animations), RiiStudio, GameCube File Tools (for &amp;lt;code&amp;gt;.BTI&amp;lt;/code&amp;gt; textures).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/parm/enemyParms.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 enemy parameters|Parameters for enemy HP, damage, move speed, collisions, animations, and ultra-bitter petrification models]]. || Notepad++, Pikmin 2 Enemy Collision Tree Blender Addon, Pikmin 2 Enemy Bitter/Stoneinfo Blender Addon&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;enemy/parm/enemyResList.txt&amp;lt;/code&amp;gt; || List of enemy resource file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;*gameConfig.ini&amp;lt;/code&amp;gt; ||  style=&amp;quot;background-color:#ffd1d1&amp;quot;|These were likely game configuration settings that changed how the game was compiled, to create special versions of &#039;&#039;Pikmin 2&#039;&#039;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;memoryCard/memoryCardHeader.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Memory card menu icons and banner images. || Wiimms Image Tool + Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/font_*.szs/pikmin2main.bfn&amp;lt;/code&amp;gt; || Font data and textures. || bfntoolkit + GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/mesRes_*.szs/pikmin2.bmc&amp;lt;/code&amp;gt; || Data for font coloring. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/mesRes_*.szs/pikmin2.bmg&amp;lt;/code&amp;gt; || [[BMG file]], all text strings and dialog in the game. || pikminBMG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;new_screen/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[BLO file|&amp;lt;code&amp;gt;.BLO&amp;lt;/code&amp;gt;files]]: HUDs, interfaces, and menus, with all their resources like graphics and animations. || pyblo2-gui&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;opening.bnr&amp;lt;/code&amp;gt; || Gamecube banner image. || pyisotools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2*P.MAP&amp;lt;/code&amp;gt; || Symbol map. Text file that lists where every function and piece of data in the game&#039;s code is located and its name, and is used in-game by the crash handler for debugging purposes. The symbol map in retail versions of the game is unreadable. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;thp/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[THP file|&amp;lt;code&amp;gt;.THP&amp;lt;/code&amp;gt;files]]. Pre-rendered videos. The .ini files control when text strings are loaded on top of the videos. || wiiflowthpvideoconverter, Notepad++ (for .ini files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;timeStamp*.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Build dates. &amp;quot;J&amp;quot;, &amp;quot;P&amp;quot;, and &amp;quot;U&amp;quot; likely represent the Japanese, PAL, and US versions. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Masamichi Abe&#039;s folder, who was a director for the game.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/cave/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 cave lighting files|Lighting files for caves]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/barrelParms.txt&amp;lt;/code&amp;gt; || Clog health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/bridgeParms.txt&amp;lt;/code&amp;gt; || Bridge health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/fountainParms.txt&amp;lt;/code&amp;gt; || Challenge Mode Geyser health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/plantParms.txt&amp;lt;/code&amp;gt; || Burgeoning Spiderwort parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/rockParms.txt&amp;lt;/code&amp;gt; || Burgeoning Spiderwort mold parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/TreasureParms.txt&amp;lt;/code&amp;gt; || Buried treasure health parameters. || Notepad++ &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/map/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Routes/pathing, [[Pikmin 2 area generator file|object generation]], [[Pikmin 2 map lighting files|day cycle lighting]], and settings for aboveground areas (including the test map and Piklopedia areas). || Gen &amp;amp; Route Editor, Notepad++  (for .txt files/.ini lighting)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|All treasure models and their &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; carrying animations, as well as parameters for all carriable objects. || FinModelUtility, SuperBMD (animations), RiiStudio, Notepad++ (for collision/parameters)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/carcass_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused enemy carcass parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/item_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused Exploration Kit treasure parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/item_texts.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the Exploration Kit treasures, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/otakara_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused treasure parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/otakara_texts.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the treasures, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pellet.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|All numbered pellet models, their &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; carrying animations, and &amp;lt;code&amp;gt;.BRK&amp;lt;/code&amp;gt; files that control their color. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pellet_texts.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the numbered pellets, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Carryable object parameters, including enemy carcasses, Spiderwort berries, treasures, Exploration Kit treasures, and the numbered pellets. Includes carry weights, pokos earned, seeds earned, and the depth treasures are buried. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/piki/naviParms.txt&amp;lt;/code&amp;gt; || [[NaviParms|Leader parameters]], like speed and attack power. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/piki/pikiParms.txt&amp;lt;/code&amp;gt; || [[PikiParms|Pikmin parameters]], like speed and attack power. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/stages.txt&amp;lt;/code&amp;gt; || List of aboveground areas and parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/time/time.ini&amp;lt;/code&amp;gt; || Day cycle parameters, controlling the length of the day and the related events that occur. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/vs/stages.txt&amp;lt;/code&amp;gt; || [[2-Player Battle stage parameters|List of 2-Player Battle stages and parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/vs/vs_X_*.txt&amp;lt;/code&amp;gt; || [[Cave fixed layout|Pre-determined layouts]] for the 2-Player Battle stages, listing the cave units they use and their locations. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yasushi Ebisawa&#039;s folder, who programmed the particle effects and title screen.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/card_e_reader/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.DWN&amp;lt;/code&amp;gt; files for the three e-Reader Pikmin minigames.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/effect/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.JPC&amp;lt;/code&amp;gt; [[Jsystem#JParticle|JParticle]] archive files. All of the game&#039;s used particles and effects. || jpc_conv, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/testdata/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused menu files, e-Reader files, and title screen things. || FinModelUtility, SuperBMD (animations), RiiStudio, GameCube File Tools (for &amp;lt;code&amp;gt;.BTI&amp;lt;/code&amp;gt; textures)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/title/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models and &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; animations for the title screen and enemies/Pikmin on it. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Ebisawa/title/title.szs/param/param_pikmin.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 title screen|Title screen Pikmin parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Ebisawa/title/title.szs/param/param_title.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 title screen|Title screen parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yuji Kando&#039;s folder, who programmed the Pikmin and other various systems.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Kando/aiConstants.txt&amp;lt;/code&amp;gt; || Some parameters for constants: gravity, Spiderwort berries needed to create 1 spray, amount needed to repay the debt, and &amp;quot;camera angle&amp;quot; (the Y-axis rotation for when you enter a stage). || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/bridge/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused bridge models. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files), GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/develop/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Leftover development tool resources, seemingly for a map editor, route/path manager, a [[Jsystem#J2DGraph|2D graphic]] tester, and animation tester, among other things. || FinModelUtility, SuperBMD, RiiStudio, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/effect/game.jpc&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused &amp;lt;code&amp;gt;.JPC&amp;lt;/code&amp;gt; [[Jsystem#JParticle|JParticle]] archive file with a bunch of particle effects. || jpc_conv, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/effect/modeleffect.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Onion beam model and &amp;lt;code&amp;gt;.BRK&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;.BTK&amp;lt;/code&amp;gt; animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/maps/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models for aboveground/piklopedia areas, [[Pikmin 2 waterboxes|waterboxes]], and [https://www.pikminwiki.com/Pikmin_2_cave_generation#Backgrounds cave vrboxes]. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/mizu.bti&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused texture. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/objects/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models and animations for some objects: clog, bridge, seesaw blocks, cave entrances, gates, nectar, geyser, Burgeoning Spiderwort mold, Pikmin head, Burgeoning Spiderwort, nectar rock, Ujadani, and nectar weed. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/onyon/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Onion models and animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/piki/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Model and animations for Pikmin, leaders, and the cursor + reticle. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/pod*/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Research Pod model and animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/resulttex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused old Treasure Hoard icons, likely for cave/day end results. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/texCaster/arc.szs/tex.bti&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused texture. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/ufo*/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hocotate Ship model and animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/vstex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|2-Player Battle Roulette icons and other minor HUD textures. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/zukan/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Slightly simpler copy of the unused test map, with its own generation and lighting settings. || Gen &amp;amp; Route Editor (for routes/finding coords for [[Pikmin 2 waterboxes|waterboxes]]), Notepad++ (for .txt files/.ini lighting)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Koono/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hiroyuki Kono (Koono)&#039;s folder, who programmed menus for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Koono/mail_icon.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Space mail icons. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Koono/mail_table.szs/mail_table.bin&amp;lt;/code&amp;gt; || IDs from the &amp;lt;code&amp;gt;.BMG&amp;lt;/code&amp;gt; that correspond to each piece of [[mail]]. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Matoba/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Taku Matoba&#039;s folder, who designed caves for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Matoba/challenge/stages.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 Challenge Mode settings|List of Challenge Mode stages and parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Matoba/challenge/kfes-stages.txt&amp;lt;/code&amp;gt; || List of Challenge Mode stages and parameters, when the game is in KFes mode. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Matoba/resulttex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Treasure icons used in the Treasure Hoard and cave/day end results. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Morimura/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Naoya Morimura&#039;s leftover folder, who programmed the more complicated enemies for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yutaka Hiramuki&#039;s folder, who designed caves for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/mapunits/arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave unit generation|Cave unit assets and data]]. Contains models, routes/pathfinding, and [[Pikmin 2 waterboxes|waterboxes]]. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files, Gen &amp;amp; Route Editor (for routes/finding coords for waterboxes), Notepad++ (for waterboxes), GameCube File Tools (for radar texture)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/caveinfo/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave generation parameters|Cave generation files]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/units/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave unit definition file|Cave unit definition files]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/movie/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[STB file|&amp;lt;code&amp;gt;.STB&amp;lt;/code&amp;gt; files]]. In-game cutscenes. || pikmin2-stb&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Katsushito Nishimura&#039;s folder, who programmed enemies and the levels for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Camera/caveCameraParms.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 camera parameters|Camera parameters]] when in caves. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Camera/groundCameraParms.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 camera parameters|Camera parameters]] when aboveground. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/引きカメラcameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/撮影cameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/本物 groundCameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/本物caveCameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Rumble/rumbleData.txt&amp;lt;/code&amp;gt; || Controller rumble time and power parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Rumble/rumbleParms.txt&amp;lt;/code&amp;gt; || Controller rumble modifier for distant objects. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Shadow/shadowParms.txt&amp;lt;/code&amp;gt; || Shadow parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Ogawa/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Yuzuru Ogawa&#039;s leftover folder, who programmed menus for &#039;&#039;Pikmin 2&#039;&#039;,&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Totaka/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Kazumi Totaka&#039;s folder, who directed the sound design and created some music and sound effects for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList.txt&amp;lt;/code&amp;gt; || List of all [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]] and volume settings for each. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_BgmTest.txt&amp;lt;/code&amp;gt; || List of all [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] in the game, with a leftover developer comment about compiling cave songs. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Forest.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Awakening Wood cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Last.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Wistful Wild cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Tutorial.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Valley of Repose cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Yakushima.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Perplexing Pool cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/ChallengeBgmList.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for all Challenge Mode cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/StreamList.txt&amp;lt;/code&amp;gt; || List of all [[AST file list|streams]], their ID, and volume settings. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/trackMap_Cond_T.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to caveconc and new_XX [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/trackMap_Seq_T.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to caveglass and caverelax [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Wakai/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hajime Wakai&#039;s folder, who wrote music for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Wakai/trackMap_Cond_W.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to cavemetal and cavesoil [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Wakai/trackMap_Seq_W.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to a few of Hajime Wakai&#039;s [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]].|| Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yoshikazu Yamashita&#039;s folder, who did system programming and programmed most of the enemies for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Boot screen textures. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/enemytex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Piklopedia icons. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/zukan/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Piklopedia enemy appearance parameters and day cycle lighting parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;br /&gt;
[[Category:Directory trees]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Pikmin_2_directory_tree&amp;diff=4689</id>
		<title>Pikmin 2 directory tree</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Pikmin_2_directory_tree&amp;diff=4689"/>
		<updated>2024-05-09T13:04:10Z</updated>

		<summary type="html">&lt;p&gt;Waffles: trackmap&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:&#039;&#039;Pikmin 2&#039;&#039; directory tree}}&lt;br /&gt;
This article lists all folders and noteworthy files in &#039;&#039;Pikmin 2&#039;&#039;, and recommended tools for viewing or modifying them.&amp;lt;br&amp;gt;&lt;br /&gt;
Yellow rows are folders, and red rows are unused files or folders with no effect on the game.&lt;br /&gt;
&lt;br /&gt;
{{todo|Add links for everything.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Path || Details || Recommended Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Jsystem#JAudio|JAudio]] resources. Contains data for music, instruments, and sound effects. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Banks&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[AW file|&amp;lt;code&amp;gt;.AW&amp;lt;/code&amp;gt; wave scene files]]. Contain audio samples of instruments and sound effects for the instrument programs. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;AudioRes/BgmList.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Early list of [[Pikmin 2 BMS file list|sequences]] and volume settings. The real &amp;lt;code&amp;gt;BgmList.txt&amp;lt;/code&amp;gt; is in Totaka&#039;s folder. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Conductor.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. Creates music for caves. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Key.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.BAS&amp;lt;/code&amp;gt; files, which link SoundIDs to enemy animations. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Key.arc/enemy.prj&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Leftover project information about the &amp;lt;code&amp;gt;.BAS&amp;lt;/code&amp;gt; files.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/PSound.aaf&amp;lt;/code&amp;gt; || [[AFF file|&amp;lt;code&amp;gt;.AAF&amp;lt;/code&amp;gt; audio archive file]]. Integral file that contains information about all the available sound effects, waves, instrument banks + programs, and music. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/PSound.asn&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;.ASN&amp;lt;/code&amp;gt; audio sound names. Contains a list of all SoundIDs, which reference a sequence from &amp;lt;code&amp;gt;se.bms&amp;lt;/code&amp;gt;. || asn2csv&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Seqs/Seq.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; binary music sequences]].  Contains sequenced music (akin to MIDI files). || flaaffy or JAIMaker&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/Seqs/Seq.arc/se.bms&amp;lt;/code&amp;gt; || Special &amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; file containing all sound effect sequences in the game. || p2setoolkit, flaaffy or JAIMaker&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Stream/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[AST file list|&amp;lt;code&amp;gt;.AST&amp;lt;/code&amp;gt; audio streams.]]  Contains streamed music (akin to WAV or MP3 files). || JATAST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;banner/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Contains three different Gamecube banner images for &#039;&#039;Pikmin 2&#039;&#039;. This folder is unused; depending on the region, one of these was copied and placed into the root directory as &amp;lt;code&amp;gt;opening.bnr&amp;lt;/code&amp;gt; || pyisotools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Enemy data. Also includes plants, hazards, and misc. objects.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/common/enemyCommon.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models of the rocks used in petrification. || FinModelUtility, SuperBMD, RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/data/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Enemy models, &amp;lt;code&amp;gt;.BCA&amp;lt;/code&amp;gt; animations, and textures. || FinModelUtility, SuperBMD (animations), RiiStudio, GameCube File Tools (for &amp;lt;code&amp;gt;.BTI&amp;lt;/code&amp;gt; textures).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/parm/enemyParms.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 enemy parameters|Parameters for enemy HP, damage, move speed, collisions, animations, and ultra-bitter petrification models]]. || Notepad++, Pikmin 2 Enemy Collision Tree Blender Addon, Pikmin 2 Enemy Bitter/Stoneinfo Blender Addon&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;enemy/parm/enemyResList.txt&amp;lt;/code&amp;gt; || List of enemy resource file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;*gameConfig.ini&amp;lt;/code&amp;gt; ||  style=&amp;quot;background-color:#ffd1d1&amp;quot;|These were likely game configuration settings that changed how the game was compiled, to create special versions of &#039;&#039;Pikmin 2&#039;&#039;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;memoryCard/memoryCardHeader.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Memory card menu icons and banner images. || Wiimms Image Tool + Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/font_*.szs/pikmin2main.bfn&amp;lt;/code&amp;gt; || Font data and textures. || bfntoolkit + GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/mesRes_*.szs/pikmin2.bmc&amp;lt;/code&amp;gt; || Data for font coloring. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/mesRes_*.szs/pikmin2.bmg&amp;lt;/code&amp;gt; || [[BMG file]], all text strings and dialog in the game. || pikminBMG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;new_screen/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[BLO file|&amp;lt;code&amp;gt;.BLO&amp;lt;/code&amp;gt;files]]: HUDs, interfaces, and menus, with all their resources like graphics and animations. || pyblo2-gui&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;opening.bnr&amp;lt;/code&amp;gt; || Gamecube banner image. || pyisotools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2*P.MAP&amp;lt;/code&amp;gt; || Symbol map. Text file that lists where every function and piece of data in the game&#039;s code is located and its name, and is used in-game by the crash handler for debugging purposes. The symbol map in retail versions of the game is unreadable. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;thp/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[THP file|&amp;lt;code&amp;gt;.THP&amp;lt;/code&amp;gt;files]]. Pre-rendered videos. The .ini files control when text strings are loaded on top of the videos. || wiiflowthpvideoconverter, Notepad++ (for .ini files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;timeStamp*.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Build dates. &amp;quot;J&amp;quot;, &amp;quot;P&amp;quot;, and &amp;quot;U&amp;quot; likely represent the Japanese, PAL, and US versions. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Masamichi Abe&#039;s folder, who was a director for the game.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/cave/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 cave lighting files|Lighting files for caves]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/barrelParms.txt&amp;lt;/code&amp;gt; || Clog health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/bridgeParms.txt&amp;lt;/code&amp;gt; || Bridge health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/fountainParms.txt&amp;lt;/code&amp;gt; || Challenge Mode Geyser health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/plantParms.txt&amp;lt;/code&amp;gt; || Burgeoning Spiderwort parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/rockParms.txt&amp;lt;/code&amp;gt; || Burgeoning Spiderwort mold parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/TreasureParms.txt&amp;lt;/code&amp;gt; || Buried treasure health parameters. || Notepad++ &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/map/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Routes/pathing, [[Pikmin 2 area generator file|object generation]], [[Pikmin 2 map lighting files|day cycle lighting]], and settings for aboveground areas (including the test map and Piklopedia areas). || Gen &amp;amp; Route Editor, Notepad++  (for .txt files/.ini lighting)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|All treasure models and their &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; carrying animations, as well as parameters for all carriable objects. || FinModelUtility, SuperBMD (animations), RiiStudio, Notepad++ (for collision/parameters)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/carcass_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused enemy carcass parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/item_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused Exploration Kit treasure parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/item_texts.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the Exploration Kit treasures, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/otakara_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused treasure parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/otakara_texts.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the treasures, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pellet.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|All numbered pellet models, their &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; carrying animations, and &amp;lt;code&amp;gt;.BRK&amp;lt;/code&amp;gt; files that control their color. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pellet_texts.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the numbered pellets, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Carryable object parameters, including enemy carcasses, Spiderwort berries, treasures, Exploration Kit treasures, and the numbered pellets. Includes carry weights, pokos earned, seeds earned, and the depth treasures are buried. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/piki/naviParms.txt&amp;lt;/code&amp;gt; || [[NaviParms|Leader parameters]], like speed and attack power. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/piki/pikiParms.txt&amp;lt;/code&amp;gt; || [[PikiParms|Pikmin parameters]], like speed and attack power. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/stages.txt&amp;lt;/code&amp;gt; || List of aboveground areas and parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/time/time.ini&amp;lt;/code&amp;gt; || Day cycle parameters, controlling the length of the day and the related events that occur. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/vs/stages.txt&amp;lt;/code&amp;gt; || [[2-Player Battle stage parameters|List of 2-Player Battle stages and parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/vs/vs_X_*.txt&amp;lt;/code&amp;gt; || [[Cave fixed layout|Pre-determined layouts]] for the 2-Player Battle stages, listing the cave units they use and their locations. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yasushi Ebisawa&#039;s folder, who programmed the particle effects and title screen.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/card_e_reader/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.DWN&amp;lt;/code&amp;gt; files for the three e-Reader Pikmin minigames.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/effect/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.JPC&amp;lt;/code&amp;gt; [[Jsystem#JParticle|JParticle]] archive files. All of the game&#039;s used particles and effects. || jpc_conv, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/testdata/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused menu files, e-Reader files, and title screen things. || FinModelUtility, SuperBMD (animations), RiiStudio, GameCube File Tools (for &amp;lt;code&amp;gt;.BTI&amp;lt;/code&amp;gt; textures)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/title/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models and &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; animations for the title screen and enemies/Pikmin on it. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Ebisawa/title/title.szs/param/param_pikmin.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 title screen|Title screen Pikmin parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Ebisawa/title/title.szs/param/param_title.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 title screen|Title screen parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yuji Kando&#039;s folder, who programmed the Pikmin and other various systems.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Kando/aiConstants.txt&amp;lt;/code&amp;gt; || Some parameters for constants: gravity, Spiderwort berries needed to create 1 spray, amount needed to repay the debt, and &amp;quot;camera angle&amp;quot; (the Y-axis rotation for when you enter a stage). || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/bridge/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused bridge models. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files), GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/develop/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Leftover development tool resources, seemingly for a map editor, route/path manager, a [[Jsystem#J2DGraph|2D graphic]] tester, and animation tester, among other things. || FinModelUtility, SuperBMD, RiiStudio, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/effect/game.jpc&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused &amp;lt;code&amp;gt;.JPC&amp;lt;/code&amp;gt; [[Jsystem#JParticle|JParticle]] archive file with a bunch of particle effects. || jpc_conv, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/effect/modeleffect.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Onion beam model and &amp;lt;code&amp;gt;.BRK&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;.BTK&amp;lt;/code&amp;gt; animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/maps/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models for aboveground/piklopedia areas, [[Pikmin 2 waterboxes|waterboxes]], and [https://www.pikminwiki.com/Pikmin_2_cave_generation#Backgrounds cave vrboxes]. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/mizu.bti&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused texture. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/objects/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models and animations for some objects: clog, bridge, seesaw blocks, cave entrances, gates, nectar, geyser, Burgeoning Spiderwort mold, Pikmin head, Burgeoning Spiderwort, nectar rock, Ujadani, and nectar weed. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/onyon/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Onion models and animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/piki/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Model and animations for Pikmin, leaders, and the cursor + reticle. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/pod*/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Research Pod model and animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/resulttex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused old Treasure Hoard icons, likely for cave/day end results. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/texCaster/arc.szs/tex.bti&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused texture. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/ufo*/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hocotate Ship model and animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/vstex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|2-Player Battle Roulette icons and other minor HUD textures. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/zukan/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Slightly simpler copy of the unused test map, with its own generation and lighting settings. || Gen &amp;amp; Route Editor (for routes/finding coords for [[Pikmin 2 waterboxes|waterboxes]]), Notepad++ (for .txt files/.ini lighting)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Koono/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hiroyuki Kono (Koono)&#039;s folder, who programmed menus for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Koono/mail_icon.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Space mail icons. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Koono/mail_table.szs/mail_table.bin&amp;lt;/code&amp;gt; || IDs from the &amp;lt;code&amp;gt;.BMG&amp;lt;/code&amp;gt; that correspond to each piece of [[mail]]. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Matoba/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Taku Matoba&#039;s folder, who designed caves for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Matoba/challenge/stages.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 Challenge Mode settings|List of Challenge Mode stages and parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Matoba/challenge/kfes-stages.txt&amp;lt;/code&amp;gt; || List of Challenge Mode stages and parameters, when the game is in KFes mode. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Matoba/resulttex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Treasure icons used in the Treasure Hoard and cave/day end results. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Morimura/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Naoya Morimura&#039;s leftover folder, who programmed the more complicated enemies for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yutaka Hiramuki&#039;s folder, who designed caves for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/mapunits/arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave unit generation|Cave unit assets and data]]. Contains models, routes/pathfinding, and [[Pikmin 2 waterboxes|waterboxes]]. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files, Gen &amp;amp; Route Editor (for routes/finding coords for waterboxes), Notepad++ (for waterboxes), GameCube File Tools (for radar texture)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/caveinfo/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave generation parameters|Cave generation files]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/units/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave unit definition file|Cave unit definition files]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/movie/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[STB file|&amp;lt;code&amp;gt;.STB&amp;lt;/code&amp;gt; files]]. In-game cutscenes. || pikmin2-stb&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Katsushito Nishimura&#039;s folder, who programmed enemies and the levels for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Camera/caveCameraParms.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 camera parameters|Camera parameters]] when in caves. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Camera/groundCameraParms.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 camera parameters|Camera parameters]] when aboveground. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/引きカメラcameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/撮影cameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/本物 groundCameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/本物caveCameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Rumble/rumbleData.txt&amp;lt;/code&amp;gt; || Controller rumble time and power parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Rumble/rumbleParms.txt&amp;lt;/code&amp;gt; || Controller rumble modifier for distant objects. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Shadow/shadowParms.txt&amp;lt;/code&amp;gt; || Shadow parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Ogawa/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Yuzuru Ogawa&#039;s leftover folder, who programmed menus for &#039;&#039;Pikmin 2&#039;&#039;,&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Totaka/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Kazumi Totaka&#039;s folder, who directed the sound design and created some music and sound effects for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList.txt&amp;lt;/code&amp;gt; || List of all [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]] and volume settings for each. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_BgmTest.txt&amp;lt;/code&amp;gt; || List of all [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] in the game, with a leftover developer comment about compiling cave songs. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Forest.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Awakening Wood cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Last.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Wistful Wild cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Tutorial.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Valley of Repose cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Yakushima.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Perplexing Pool cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/ChallengeBgmList.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for all Challenge Mode cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/StreamList.txt&amp;lt;/code&amp;gt; || List of all [[AST file list|streams]], their ID, and volume settings. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/trackMap_Cond_T.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to caveconc and new_XX&#039;s [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. The listed songs were written by Kazumi Totaka. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/trackMap_Seq_T.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to caveglass and caverelax&#039;s [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]]. The listed songs were written by Kazumi Totaka. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Wakai/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hajime Wakai&#039;s folder, who wrote music for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Wakai/trackMap_Cond_W.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to cavemetal and cavesoil [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. The listed songs were written by Hajime Wakai. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Wakai/trackMap_Seq_W.txt&amp;lt;/code&amp;gt; || [[Trackmap parameters|Track mappings]] that apply to a few of Hajime Wakai&#039;s [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]].|| Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yoshikazu Yamashita&#039;s folder, who did system programming and programmed most of the enemies for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Boot screen textures. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/enemytex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Piklopedia icons. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/zukan/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Piklopedia enemy appearance parameters and day cycle lighting parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;br /&gt;
[[Category:Directory trees]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Pikmin_2_directory_tree&amp;diff=4688</id>
		<title>Pikmin 2 directory tree</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Pikmin_2_directory_tree&amp;diff=4688"/>
		<updated>2024-05-09T13:01:08Z</updated>

		<summary type="html">&lt;p&gt;Waffles: added some links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:&#039;&#039;Pikmin 2&#039;&#039; directory tree}}&lt;br /&gt;
This article lists all folders and noteworthy files in &#039;&#039;Pikmin 2&#039;&#039;, and recommended tools for viewing or modifying them.&amp;lt;br&amp;gt;&lt;br /&gt;
Yellow rows are folders, and red rows are unused files or folders with no effect on the game.&lt;br /&gt;
&lt;br /&gt;
{{todo|Add links for everything.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Path || Details || Recommended Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Jsystem#JAudio|JAudio]] resources. Contains data for music, instruments, and sound effects. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Banks&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[AW file|&amp;lt;code&amp;gt;.AW&amp;lt;/code&amp;gt; wave scene files]]. Contain audio samples of instruments and sound effects for the instrument programs. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;AudioRes/BgmList.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Early list of [[Pikmin 2 BMS file list|sequences]] and volume settings. The real &amp;lt;code&amp;gt;BgmList.txt&amp;lt;/code&amp;gt; is in Totaka&#039;s folder. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Conductor.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. Creates music for caves. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Key.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.BAS&amp;lt;/code&amp;gt; files, which link SoundIDs to enemy animations. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Key.arc/enemy.prj&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Leftover project information about the &amp;lt;code&amp;gt;.BAS&amp;lt;/code&amp;gt; files.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/PSound.aaf&amp;lt;/code&amp;gt; || [[AFF file|&amp;lt;code&amp;gt;.AAF&amp;lt;/code&amp;gt; audio archive file]]. Integral file that contains information about all the available sound effects, waves, instrument banks + programs, and music. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/PSound.asn&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;.ASN&amp;lt;/code&amp;gt; audio sound names. Contains a list of all SoundIDs, which reference a sequence from &amp;lt;code&amp;gt;se.bms&amp;lt;/code&amp;gt;. || asn2csv&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Seqs/Seq.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; binary music sequences]].  Contains sequenced music (akin to MIDI files). || flaaffy or JAIMaker&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/Seqs/Seq.arc/se.bms&amp;lt;/code&amp;gt; || Special &amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; file containing all sound effect sequences in the game. || p2setoolkit, flaaffy or JAIMaker&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Stream/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[AST file list|&amp;lt;code&amp;gt;.AST&amp;lt;/code&amp;gt; audio streams.]]  Contains streamed music (akin to WAV or MP3 files). || JATAST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;banner/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Contains three different Gamecube banner images for &#039;&#039;Pikmin 2&#039;&#039;. This folder is unused; depending on the region, one of these was copied and placed into the root directory as &amp;lt;code&amp;gt;opening.bnr&amp;lt;/code&amp;gt; || pyisotools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Enemy data. Also includes plants, hazards, and misc. objects.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/common/enemyCommon.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models of the rocks used in petrification. || FinModelUtility, SuperBMD, RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/data/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Enemy models, &amp;lt;code&amp;gt;.BCA&amp;lt;/code&amp;gt; animations, and textures. || FinModelUtility, SuperBMD (animations), RiiStudio, GameCube File Tools (for &amp;lt;code&amp;gt;.BTI&amp;lt;/code&amp;gt; textures).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/parm/enemyParms.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 enemy parameters|Parameters for enemy HP, damage, move speed, collisions, animations, and ultra-bitter petrification models]]. || Notepad++, Pikmin 2 Enemy Collision Tree Blender Addon, Pikmin 2 Enemy Bitter/Stoneinfo Blender Addon&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;enemy/parm/enemyResList.txt&amp;lt;/code&amp;gt; || List of enemy resource file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;*gameConfig.ini&amp;lt;/code&amp;gt; ||  style=&amp;quot;background-color:#ffd1d1&amp;quot;|These were likely game configuration settings that changed how the game was compiled, to create special versions of &#039;&#039;Pikmin 2&#039;&#039;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;memoryCard/memoryCardHeader.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Memory card menu icons and banner images. || Wiimms Image Tool + Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/font_*.szs/pikmin2main.bfn&amp;lt;/code&amp;gt; || Font data and textures. || bfntoolkit + GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/mesRes_*.szs/pikmin2.bmc&amp;lt;/code&amp;gt; || Data for font coloring. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/mesRes_*.szs/pikmin2.bmg&amp;lt;/code&amp;gt; || [[BMG file]], all text strings and dialog in the game. || pikminBMG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;new_screen/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[BLO file|&amp;lt;code&amp;gt;.BLO&amp;lt;/code&amp;gt;files]]: HUDs, interfaces, and menus, with all their resources like graphics and animations. || pyblo2-gui&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;opening.bnr&amp;lt;/code&amp;gt; || Gamecube banner image. || pyisotools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2*P.MAP&amp;lt;/code&amp;gt; || Symbol map. Text file that lists where every function and piece of data in the game&#039;s code is located and its name, and is used in-game by the crash handler for debugging purposes. The symbol map in retail versions of the game is unreadable. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;thp/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[THP file|&amp;lt;code&amp;gt;.THP&amp;lt;/code&amp;gt;files]]. Pre-rendered videos. The .ini files control when text strings are loaded on top of the videos. || wiiflowthpvideoconverter, Notepad++ (for .ini files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;timeStamp*.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Build dates. &amp;quot;J&amp;quot;, &amp;quot;P&amp;quot;, and &amp;quot;U&amp;quot; likely represent the Japanese, PAL, and US versions. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Masamichi Abe&#039;s folder, who was a director for the game.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/cave/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Pikmin 2 cave lighting files|Lighting files for caves]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/barrelParms.txt&amp;lt;/code&amp;gt; || Clog health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/bridgeParms.txt&amp;lt;/code&amp;gt; || Bridge health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/fountainParms.txt&amp;lt;/code&amp;gt; || Challenge Mode Geyser health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/plantParms.txt&amp;lt;/code&amp;gt; || Burgeoning Spiderwort parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/rockParms.txt&amp;lt;/code&amp;gt; || Burgeoning Spiderwort mold parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/TreasureParms.txt&amp;lt;/code&amp;gt; || Buried treasure health parameters. || Notepad++ &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/map/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Routes/pathing, [[Pikmin 2 area generator file|object generation]], [[Pikmin 2 map lighting files|day cycle lighting]], and settings for aboveground areas (including the test map and Piklopedia areas). || Gen &amp;amp; Route Editor, Notepad++  (for .txt files/.ini lighting)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|All treasure models and their &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; carrying animations, as well as parameters for all carriable objects. || FinModelUtility, SuperBMD (animations), RiiStudio, Notepad++ (for collision/parameters)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/carcass_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused enemy carcass parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/item_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused Exploration Kit treasure parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/item_texts.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the Exploration Kit treasures, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/otakara_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused treasure parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/otakara_texts.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the treasures, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pellet.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|All numbered pellet models, their &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; carrying animations, and &amp;lt;code&amp;gt;.BRK&amp;lt;/code&amp;gt; files that control their color. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pellet_texts.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the numbered pellets, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Carryable object parameters, including enemy carcasses, Spiderwort berries, treasures, Exploration Kit treasures, and the numbered pellets. Includes carry weights, pokos earned, seeds earned, and the depth treasures are buried. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/piki/naviParms.txt&amp;lt;/code&amp;gt; || [[NaviParms|Leader parameters]], like speed and attack power. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/piki/pikiParms.txt&amp;lt;/code&amp;gt; || [[PikiParms|Pikmin parameters]], like speed and attack power. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/stages.txt&amp;lt;/code&amp;gt; || List of aboveground areas and parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/time/time.ini&amp;lt;/code&amp;gt; || Day cycle parameters, controlling the length of the day and the related events that occur. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/vs/stages.txt&amp;lt;/code&amp;gt; || [[2-Player Battle stage parameters|List of 2-Player Battle stages and parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/vs/vs_X_*.txt&amp;lt;/code&amp;gt; || [[Cave fixed layout|Pre-determined layouts]] for the 2-Player Battle stages, listing the cave units they use and their locations. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yasushi Ebisawa&#039;s folder, who programmed the particle effects and title screen.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/card_e_reader/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.DWN&amp;lt;/code&amp;gt; files for the three e-Reader Pikmin minigames.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/effect/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.JPC&amp;lt;/code&amp;gt; [[Jsystem#JParticle|JParticle]] archive files. All of the game&#039;s used particles and effects. || jpc_conv, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/testdata/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused menu files, e-Reader files, and title screen things. || FinModelUtility, SuperBMD (animations), RiiStudio, GameCube File Tools (for &amp;lt;code&amp;gt;.BTI&amp;lt;/code&amp;gt; textures)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/title/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models and &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; animations for the title screen and enemies/Pikmin on it. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Ebisawa/title/title.szs/param/param_pikmin.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 title screen|Title screen Pikmin parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Ebisawa/title/title.szs/param/param_title.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 title screen|Title screen parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yuji Kando&#039;s folder, who programmed the Pikmin and other various systems.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Kando/aiConstants.txt&amp;lt;/code&amp;gt; || Some parameters for constants: gravity, Spiderwort berries needed to create 1 spray, amount needed to repay the debt, and &amp;quot;camera angle&amp;quot; (the Y-axis rotation for when you enter a stage). || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/bridge/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused bridge models. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files), GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/develop/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Leftover development tool resources, seemingly for a map editor, route/path manager, a [[Jsystem#J2DGraph|2D graphic]] tester, and animation tester, among other things. || FinModelUtility, SuperBMD, RiiStudio, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/effect/game.jpc&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused &amp;lt;code&amp;gt;.JPC&amp;lt;/code&amp;gt; [[Jsystem#JParticle|JParticle]] archive file with a bunch of particle effects. || jpc_conv, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/effect/modeleffect.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Onion beam model and &amp;lt;code&amp;gt;.BRK&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;.BTK&amp;lt;/code&amp;gt; animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/maps/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models for aboveground/piklopedia areas, [[Pikmin 2 waterboxes|waterboxes]], and [https://www.pikminwiki.com/Pikmin_2_cave_generation#Backgrounds cave vrboxes]. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/mizu.bti&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused texture. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/objects/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models and animations for some objects: clog, bridge, seesaw blocks, cave entrances, gates, nectar, geyser, Burgeoning Spiderwort mold, Pikmin head, Burgeoning Spiderwort, nectar rock, Ujadani, and nectar weed. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/onyon/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Onion models and animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/piki/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Model and animations for Pikmin, leaders, and the cursor + reticle. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/pod*/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Research Pod model and animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/resulttex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused old Treasure Hoard icons, likely for cave/day end results. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/texCaster/arc.szs/tex.bti&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused texture. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/ufo*/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hocotate Ship model and animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/vstex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|2-Player Battle Roulette icons and other minor HUD textures. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/zukan/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Slightly simpler copy of the unused test map, with its own generation and lighting settings. || Gen &amp;amp; Route Editor (for routes/finding coords for [[Pikmin 2 waterboxes|waterboxes]]), Notepad++ (for .txt files/.ini lighting)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Koono/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hiroyuki Kono (Koono)&#039;s folder, who programmed menus for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Koono/mail_icon.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Space mail icons. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Koono/mail_table.szs/mail_table.bin&amp;lt;/code&amp;gt; || IDs from the &amp;lt;code&amp;gt;.BMG&amp;lt;/code&amp;gt; that correspond to each piece of [[mail]]. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Matoba/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Taku Matoba&#039;s folder, who designed caves for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Matoba/challenge/stages.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 Challenge Mode settings|List of Challenge Mode stages and parameters]]. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Matoba/challenge/kfes-stages.txt&amp;lt;/code&amp;gt; || List of Challenge Mode stages and parameters, when the game is in KFes mode. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Matoba/resulttex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Treasure icons used in the Treasure Hoard and cave/day end results. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Morimura/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Naoya Morimura&#039;s leftover folder, who programmed the more complicated enemies for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yutaka Hiramuki&#039;s folder, who designed caves for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/mapunits/arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave unit generation|Cave unit assets and data]]. Contains models, routes/pathfinding, and [[Pikmin 2 waterboxes|waterboxes]]. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files, Gen &amp;amp; Route Editor (for routes/finding coords for waterboxes), Notepad++ (for waterboxes), GameCube File Tools (for radar texture)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/caveinfo/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave generation parameters|Cave generation files]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/units/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[Cave unit definition file|Cave unit definition files]]. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/movie/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|[[STB file|&amp;lt;code&amp;gt;.STB&amp;lt;/code&amp;gt; files]]. In-game cutscenes. || pikmin2-stb&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Katsushito Nishimura&#039;s folder, who programmed enemies and the levels for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Camera/caveCameraParms.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 camera parameters|Camera parameters]] when in caves. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Camera/groundCameraParms.txt&amp;lt;/code&amp;gt; || [[Pikmin 2 camera parameters|Camera parameters]] when aboveground. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/引きカメラcameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/撮影cameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/本物 groundCameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/本物caveCameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused [[Pikmin 2 camera parameters|camera parameters]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Rumble/rumbleData.txt&amp;lt;/code&amp;gt; || Controller rumble time and power parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Rumble/rumbleParms.txt&amp;lt;/code&amp;gt; || Controller rumble modifier for distant objects. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Shadow/shadowParms.txt&amp;lt;/code&amp;gt; || Shadow parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Ogawa/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Yuzuru Ogawa&#039;s leftover folder, who programmed menus for &#039;&#039;Pikmin 2&#039;&#039;,&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Totaka/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Kazumi Totaka&#039;s folder, who directed the sound design and created some music and sound effects for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList.txt&amp;lt;/code&amp;gt; || List of all [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]] and volume settings for each. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_BgmTest.txt&amp;lt;/code&amp;gt; || List of all [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] in the game, with a leftover developer comment about compiling cave songs. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Forest.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Awakening Wood cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Last.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Wistful Wild cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Tutorial.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Valley of Repose cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Yakushima.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for Perplexing Pool cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/ChallengeBgmList.txt&amp;lt;/code&amp;gt; || List of [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]] to use for all Challenge Mode cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/StreamList.txt&amp;lt;/code&amp;gt; || List of all [[AST file list|streams]], their ID, and volume settings. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/trackMap_Cond_T.txt&amp;lt;/code&amp;gt; || Track mappings that apply to caveconc and new_XX&#039;s [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. The listed songs were written by Kazumi Totaka. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/trackMap_Seq_T.txt&amp;lt;/code&amp;gt; || Track mappings that apply to caveglass and caverelax&#039;s [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]]. The listed songs were written by Kazumi Totaka. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Wakai/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hajime Wakai&#039;s folder, who wrote music for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Wakai/trackMap_Cond_W.txt&amp;lt;/code&amp;gt; || Track mappings that apply to cavemetal and cavesoil [[Pikmin 2 CND file list|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files]]. The listed songs were written by Hajime Wakai. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Wakai/trackMap_Seq_W.txt&amp;lt;/code&amp;gt; || Track mappings that apply to a few of Hajime Wakai&#039;s [[Pikmin 2 BMS file list|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences]].|| Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yoshikazu Yamashita&#039;s folder, who did system programming and programmed most of the enemies for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Boot screen textures. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/enemytex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Piklopedia icons. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/zukan/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Piklopedia enemy appearance parameters and day cycle lighting parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;br /&gt;
[[Category:Directory trees]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Pikmin_2_directory_tree&amp;diff=4687</id>
		<title>Pikmin 2 directory tree</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Pikmin_2_directory_tree&amp;diff=4687"/>
		<updated>2024-05-09T12:13:25Z</updated>

		<summary type="html">&lt;p&gt;Waffles: Explained every folder and file. Todo: Links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:&#039;&#039;Pikmin 2&#039;&#039; directory tree}}&lt;br /&gt;
This article lists all folders and noteworthy files in &#039;&#039;Pikmin 2&#039;&#039;, and recommended tools for viewing or modifying them.&amp;lt;br&amp;gt;&lt;br /&gt;
Yellow rows are folders, and red rows are unused files or folders with no effect on the game.&lt;br /&gt;
&lt;br /&gt;
{{todo|Add links for everything.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Path || Details || Recommended Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|JAudio resources. Contains data for music, instruments, and sound effects. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Banks&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.AW&amp;lt;/code&amp;gt; wave scene files. Contain audio samples of instruments and sound effects for the instrument programs. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;AudioRes/BgmList.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Early list of sequences and volume settings. The real &amp;lt;code&amp;gt;BgmList.txt&amp;lt;/code&amp;gt; is in Totaka&#039;s folder. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Conductor.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files. Creates music for caves. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Key.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.BAS&amp;lt;/code&amp;gt; files, which link SoundIDs to enemy animations. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Key.arc/enemy.prj&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Leftover project information about the &amp;lt;code&amp;gt;.BAS&amp;lt;/code&amp;gt; files.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/PSound.aaf&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;.AAF&amp;lt;/code&amp;gt; audio archive file. Integral file that contains information about all the available sound effects, waves, instrument banks + programs, and music. || Pikmin 2 Sound Modding Toolkit&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/PSound.asn&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;.ASN&amp;lt;/code&amp;gt; audio sound names. Contains a list of all SoundIDs, which reference a sequence from &amp;lt;code&amp;gt;se.bms&amp;lt;/code&amp;gt;. || asn2csv&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Seqs/Seq.arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; binary music sequences.  Contains sequenced music (akin to MIDI files). || flaaffy or JAIMaker&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AudioRes/Seqs/Seq.arc/se.bms&amp;lt;/code&amp;gt; || Special &amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; file containing all sound effect sequences in the game. || p2setoolkit, flaaffy or JAIMaker&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;AudioRes/Stream/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.AST&amp;lt;/code&amp;gt; audio streams.  Contains streamed music (akin to WAV or MP3 files). || JATAST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;banner/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Contains three different Gamecube banner images for &#039;&#039;Pikmin 2&#039;&#039;. This folder is unused; depending on the region, one of these was copied and placed into the root directory as &amp;lt;code&amp;gt;opening.bnr&amp;lt;/code&amp;gt; || pyisotools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Enemy data. Also includes plants, hazards, and misc. objects.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/common/enemyCommon.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models of the rocks used in petrification. || FinModelUtility, SuperBMD, RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/data/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Enemy models, &amp;lt;code&amp;gt;.BCA&amp;lt;/code&amp;gt; animations, and textures. || FinModelUtility, SuperBMD (animations), RiiStudio, GameCube File Tools (for &amp;lt;code&amp;gt;.BTI&amp;lt;/code&amp;gt; textures).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;enemy/parm/enemyParms.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Parameters for enemy HP, damage, move speed, collisions, animations, ultra-bitter petrification models, and more. || Notepad++, Pikmin 2 Enemy Collision Tree Blender Addon, Pikmin 2 Enemy Bitter/Stoneinfo Blender Addon&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;enemy/parm/enemyResList.txt&amp;lt;/code&amp;gt; || List of enemy resource file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;*gameConfig.ini&amp;lt;/code&amp;gt; ||  style=&amp;quot;background-color:#ffd1d1&amp;quot;|These were likely game configuration settings that changed how the game was compiled, to create special versions of &#039;&#039;Pikmin 2&#039;&#039;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;memoryCard/memoryCardHeader.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Memory card menu icons and banner images. || Wiimms Image Tool + Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/font_*.szs/pikmin2main.bfn&amp;lt;/code&amp;gt; || Font data and textures. || bfntoolkit + GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/mesRes_*.szs/pikmin2.bmc&amp;lt;/code&amp;gt; || Data for font coloring. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;message/mesRes_*.szs/pikmin2.bmg&amp;lt;/code&amp;gt; || All text strings and dialog in the game. || pikminBMG&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;new_screen/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.BLO&amp;lt;/code&amp;gt;files: HUDs, interfaces, and menus, with all their resources like graphics and animations. || pyblo2-gui&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;opening.bnr&amp;lt;/code&amp;gt; || Gamecube banner image. || pyisotools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pikmin2*P.MAP&amp;lt;/code&amp;gt; || Symbol map. Text file that lists where every function and piece of data in the game&#039;s code is located and its name, and is used in-game by the crash handler for debugging purposes. The symbol map in retail versions of the game is unreadable. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;thp/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.THP&amp;lt;/code&amp;gt;files. Pre-rendered videos. The .ini files control when text strings are loaded on top of the videos. || wiiflowthpvideoconverter, Notepad++ (for .ini files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;timeStamp*.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Build dates. &amp;quot;J&amp;quot;, &amp;quot;P&amp;quot;, and &amp;quot;U&amp;quot; likely represent the Japanese, PAL, and US versions. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Masamichi Abe&#039;s folder, who was a director for the game.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/cave/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Lighting files for caves. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/barrelParms.txt&amp;lt;/code&amp;gt; || Clog health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/bridgeParms.txt&amp;lt;/code&amp;gt; || Bridge health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/fountainParms.txt&amp;lt;/code&amp;gt; || Challenge Mode Geyser health parameter. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/plantParms.txt&amp;lt;/code&amp;gt; || Burgeoning Spiderwort parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/rockParms.txt&amp;lt;/code&amp;gt; || Burgeoning Spiderwort mold parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/item/TreasureParms.txt&amp;lt;/code&amp;gt; || Buried treasure health parameters. || Notepad++ &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/map/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Routes/pathing, object generation, and day cycle lighting, and  settings for aboveground areas (including the test map and Piklopedia areas). || Gen &amp;amp; Route Editor, Notepad++  (for .txt files/.ini lighting)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|All treasure models and their &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; carrying animations, as well as parameters for all carriable objects. || FinModelUtility, SuperBMD (animations), RiiStudio, Notepad++ (for collision/parameters)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/carcass_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused enemy carcass parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/item_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused Exploration Kit treasure parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/item_texts.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the Exploration Kit treasures, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/otakara_config.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused treasure parameters. The real parameters are in &amp;lt;code&amp;gt;/user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt;. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/otakara_texts.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the treasures, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pellet.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|All numbered pellet models, their &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; carrying animations, and &amp;lt;code&amp;gt;.BRK&amp;lt;/code&amp;gt; files that control their color. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pellet_texts.szs/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Collision parameters for the numbered pellets, and their animation file paths. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Abe/Pellet/*/pelletlist_*.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Carryable object parameters, including enemy carcasses, Spiderwort berries, treasures, Exploration Kit treasures, and the numbered pellets. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/piki/naviParms.txt&amp;lt;/code&amp;gt; || Leader parameters, like speed and attack power. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/piki/pikiParms.txt&amp;lt;/code&amp;gt; || Pikmin parameters, like speed and attack power. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/stages.txt&amp;lt;/code&amp;gt; || List of aboveground areas and parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/time/time.ini&amp;lt;/code&amp;gt; || Day cycle parameters, controlling the length of the day and the related events that occur. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/vs/stages.txt&amp;lt;/code&amp;gt; || List of 2-Player Battle stages and parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Abe/vs/vs_X_*.txt&amp;lt;/code&amp;gt; || Pre-determined layouts for the 2-Player Battle stages, listing the cave units they use and their locations. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yasushi Ebisawa&#039;s folder, who programmed the particle effects and title screen.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/card_e_reader/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.DWN&amp;lt;/code&amp;gt; files for the three e-Reader Pikmin minigames.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/effect/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.JPC&amp;lt;/code&amp;gt; JParticle archive files. All of the game&#039;s used particles and effects. || jpc_conv, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/testdata/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused menu files, e-Reader files, and title screen things. || FinModelUtility, SuperBMD (animations), RiiStudio, GameCube File Tools (for &amp;lt;code&amp;gt;.BTI&amp;lt;/code&amp;gt; textures)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Ebisawa/title/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models and &amp;lt;code&amp;gt;.BCK&amp;lt;/code&amp;gt; animations for the title screen and enemies/Pikmin on it. || FinModelUtility, SuperBMD (animations), RiiStudio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Ebisawa/title/title.szs/param/param_pikmin.txt&amp;lt;/code&amp;gt; || Title screen Pikmin parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Ebisawa/title/title.szs/param/param_title.txt&amp;lt;/code&amp;gt; || Title screen parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yuji Kando&#039;s folder, who programmed the Pikmin and other various systems.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Kando/aiConstants.txt&amp;lt;/code&amp;gt; || Some parameters for constants: gravity, Spiderwort berries needed to create 1 spray, amount needed to repay the debt, and &amp;quot;camera angle&amp;quot; (the Y-axis rotation for when you enter a stage). || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/bridge/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused bridge models. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files), GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/develop/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Leftover development tool resources, seemingly for a map editor, route/path manager, a J2DGraph 2D graphic tester, and animation tester, among other things. || FinModelUtility, SuperBMD, RiiStudio, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/effect/game.jpc&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused &amp;lt;code&amp;gt;.JPC&amp;lt;/code&amp;gt; JParticle archive file with a bunch of particle effects. || jpc_conv, GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/effect/modeleffect.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Onion beam model and &amp;lt;code&amp;gt;.BRK&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;.BTK&amp;lt;/code&amp;gt; animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/maps/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models for aboveground/piklopedia areas, waterboxes, and cave vrboxes. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/mizu.bti&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused texture. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/objects/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Models and animations for some objects: clog, bridge, seesaw blocks, cave entrances, gates, nectar, geyser, Burgeoning Spiderwort mold, Pikmin head, Burgeoning Spiderwort, nectar rock, Ujadani, and nectar weed. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/onyon/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Onion models and animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/piki/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Model and animations for Pikmin, leaders, and the cursor + reticle. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/pod*/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Research Pod model and animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/resulttex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused old Treasure Hoard icons, likely for cave/day end results. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Kando/texCaster/arc.szs/tex.bti&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unused texture. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/ufo*/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hocotate Ship model and animations. || FinModelUtility, SuperBMD (animations), RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/vstex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|2-Player Battle Roulette icons and other minor HUD textures. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Kando/zukan/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Slightly simpler copy of the unused test map, with its own generation and lighting settings. || Gen &amp;amp; Route Editor (for routes/finding coords for waterboxes), Notepad++ (for .txt files/.ini lighting)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Koono/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hiroyuki Kono (Koono)&#039;s folder, who programmed menus for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Koono/mail_icon.szs&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Space mail icons. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Koono/mail_table.szs/mail_table.bin&amp;lt;/code&amp;gt; || IDs from the &amp;lt;code&amp;gt;.BMG&amp;lt;/code&amp;gt; that correspond to each piece of mail. || Hex Editor&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Matoba/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Taku Matoba&#039;s folder, who designed caves for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Matoba/challenge/stages.txt&amp;lt;/code&amp;gt; || List of Challenge Mode stages and parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Matoba/challenge/kfes-stages.txt&amp;lt;/code&amp;gt; || List of Challenge Mode stages and parameters, when the game is in KFes mode. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Matoba/resulttex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Treasure icons used in the Treasure Hoard and cave/day end results. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Morimura/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Naoya Morimura&#039;s leftover folder, who programmed the more complicated enemies for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yutaka Hiramuki&#039;s folder, who designed caves for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/mapunits/arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Cave unit models, routes/pathfinding, and waterboxes. || FinModelUtility, SuperBMD, RiiStudio, obj2grid (for the &amp;lt;code&amp;gt;.BIN&amp;lt;/code&amp;gt; collision files, Gen &amp;amp; Route Editor (for routes/finding coords for waterboxes), Notepad++ (for waterboxes), GameCube File Tools (for radar texture)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/caveinfo/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Cave files. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/units/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Cave unit list files. || Drought Ender&#039;s Cave Creator, Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Mukki/movie/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;.STB&amp;lt;/code&amp;gt; files. In-game cutscenes. || pikmin2-stb&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Katsushito Nishimura&#039;s folder, who programmed enemies and the levels for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Camera/caveCameraParms.txt&amp;lt;/code&amp;gt; || Camera parameters when in caves. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Camera/groundCameraParms.txt&amp;lt;/code&amp;gt; || Camera parameters when aboveground. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/引きカメラcameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unknown camera parameters.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/撮影cameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unknown camera parameters.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/本物 groundCameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unknown camera parameters.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Nishimura/Camera/本物caveCameraParms.txt&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Unknown camera parameters.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Rumble/rumbleData.txt&amp;lt;/code&amp;gt; || Controller rumble time and power parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Rumble/rumbleParms.txt&amp;lt;/code&amp;gt; || Controller rumble modifier for distant objects. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Nishimura/Shadow/shadowParms.txt&amp;lt;/code&amp;gt; || Shadow parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffd1d1&amp;quot;|&amp;lt;code&amp;gt;user/Ogawa/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffd1d1&amp;quot;|Yuzuru Ogawa&#039;s leftover folder, who programmed menus for &#039;&#039;Pikmin 2&#039;&#039;,&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Totaka/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Kazumi Totaka&#039;s folder, who directed the sound design and created some music and sound effects for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList.txt&amp;lt;/code&amp;gt; || List of all &amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences and volume settings for each. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_BgmTest.txt&amp;lt;/code&amp;gt; || List of all &amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files in the game, with a leftover developer comment about compiling cave songs. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Forest.txt&amp;lt;/code&amp;gt; || List of &amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files to use for Awakening Wood cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Last.txt&amp;lt;/code&amp;gt; || List of &amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files to use for Wistful Wild cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Tutorial.txt&amp;lt;/code&amp;gt; || List of &amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files to use for Valley of Repose cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/BgmList_Yakushima.txt&amp;lt;/code&amp;gt; || List of &amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files to use for Perplexing Pool cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/ChallengeBgmList.txt&amp;lt;/code&amp;gt; || List of &amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files to use for all Challenge Mode cave sublevels. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/StreamList.txt&amp;lt;/code&amp;gt; || List of all streams, their ID, and volume settings. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/trackMap_Cond_T.txt&amp;lt;/code&amp;gt; || Track mappings that apply to caveconc and new_XX&#039;s &amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files. The listed songs were written by Kazumi Totaka. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Totaka/trackMap_Seq_T.txt&amp;lt;/code&amp;gt; || Track mappings that apply to caveglass and caverelax&#039;s &amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences. The listed songs were written by Kazumi Totaka. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Wakai/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Hajime Wakai&#039;s folder, who wrote music for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Wakai/trackMap_Cond_W.txt&amp;lt;/code&amp;gt; || Track mappings that apply to cavemetal and cavesoil &amp;lt;code&amp;gt;.CND&amp;lt;/code&amp;gt; conductor files. The listed songs were written by Hajime Wakai. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user/Wakai/trackMap_Seq_W.txt&amp;lt;/code&amp;gt; || Track mappings that apply to a few of Hajime Wakai&#039;s &amp;lt;code&amp;gt;.BMS&amp;lt;/code&amp;gt; sequences.|| Notepad++&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Yoshikazu Yamashita&#039;s folder, who did system programming and programmed most of the enemies for &#039;&#039;Pikmin 2&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/arc/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Boot screen textures. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/enemytex/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Piklopedia icons. || GameCube File Tools&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffcc&amp;quot;|&amp;lt;code&amp;gt;user/Yamashita/zukan/&amp;lt;/code&amp;gt; || style=&amp;quot;background-color:#ffffcc&amp;quot;|Piklopedia enemy and used lighting parameters. || Notepad++&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;br /&gt;
[[Category:Directory trees]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4660</id>
		<title>Creating cave music</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4660"/>
		<updated>2024-04-19T14:03:39Z</updated>

		<summary type="html">&lt;p&gt;Waffles: Improvements&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Randomly generating cave music in Pikmin 2 needs to have two files: a .bms (sequence) file, and a .cnd (conductor) file.&lt;br /&gt;
&lt;br /&gt;
The BMS file type is a sequenced music format used in many games. For the cave music in Pikmin 2 however, it is specially-formatted. It mainly contains many short snippets of musical information to be randomized.&lt;br /&gt;
&lt;br /&gt;
The CND files are the actual &amp;quot;songs&amp;quot;; they take specific groups of snippets from a BMS file, and endlessly puzzle-piece them together to form a coherent piece of music. &lt;br /&gt;
&lt;br /&gt;
This guide will function as a walkthrough for creating your own randomly sequencing cave song. Basic understanding of how [https://youtube.com/watch?v=QPFWzSlg-78 cave music works] and [[Creating Interactive BMS Files|standard interactive music]] is recommended before starting. Most of the editing will be done in hexadecimal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be generating a lot of tiny BMS files, to turn them into &amp;quot;gestures&amp;quot;.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
Additionally, studying the existing cave songs on your own and how those exploit the conductor system in interesting ways will help you come up with ideas for your own custom cave music.&lt;br /&gt;
&lt;br /&gt;
== Overview of file functions ==&lt;br /&gt;
Here are some infographics that you can reference at any time. These show all the functions of a CND file, and all the contents of a BMS file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
File:BMS_functions.png|How information is stored in a BMS file.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up your BMS file ==&lt;br /&gt;
Before you begin, set your byte grouping to &amp;quot;3&amp;quot;, so every 3 bytes is visually separated by a space. This will make it easier to see stuff.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Starting with a completely blank BMS file, begin by pasting the following:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Every cave music BMS begins with this same information, and will go mostly untouched.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set list ==&lt;br /&gt;
Exactly right after &amp;lt;code&amp;gt;34C600&amp;lt;/code&amp;gt; will be a list of every gesture set&#039;s location in the BMS. Each entry is the gesture set&#039;s hexadecimal location (offset), and each entry in the sequence begins with &amp;quot;&amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;&amp;quot;. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0001B0 0001BF 0001CE 0001D4 0001DA 0001E9 0001F8 0001FE 000204 00020A FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Gesture set &amp;quot;0&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1B0&amp;lt;/code&amp;gt;, gesture set &amp;quot;1&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1BF&amp;lt;/code&amp;gt;, gesture set &amp;quot;2&amp;quot; will be at &amp;lt;code&amp;gt;0x1CE&amp;lt;/code&amp;gt;, and so on. There are a total of 10 gesture sets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Until we create our gesture sets, let&#039;s use &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt; as placeholders so we can easily find and get back to this section later on. You can have as many gesture sets as you like; we&#039;ll create 16 entries for this tutorial. You may insert this into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our BMS should now currently look like this:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
You can also add an entire row of padding/zeros after this. You can do this for each section, to better visually separate them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing ruleset list ==&lt;br /&gt;
This is another sequence of offsets. These just point to the location of a &amp;quot;[[#Inserting_timetables|timetable]]&amp;quot;, which will be located at the end of our BMS file. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0005AB 0005AB 0005AF 0005C1 0005AB 0005AB 0005C1 0005C1 0005C1 0005C1 FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Timing ruleset &amp;quot;0&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;1&amp;quot; will also use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;2&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AF&amp;lt;/code&amp;gt;, and so on. There are a total of 10 timing rulesets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Let&#039;s use &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt; as placeholders again, and create 16 of them. Insert this anywhere into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set contents ==&lt;br /&gt;
A &#039;&#039;gesture set&#039;&#039; is a group of many gestures.&amp;lt;br&amp;gt;&lt;br /&gt;
Here, we list each gesture set&#039;s contents (which will be... the locations of the gestures!). Each gesture set begins before with &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt; and ends with &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how the gesture set list should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;000210 00022A 000258 000281 FFFFFF 0002B4 0002D9 000303 000331 FFFFFF 000355 FFFFFF 000361 FFFFFF 0003A8 0003C2 0003F0 000419 FFFFFF 00044C 000471 00049B 0004C9 FFFFFF 0004ED FFFFFF 000543 FFFFFF 000580 FFFFFF 00059E FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
There are 10 gesture sets listed above. The first gesture set has 4 gestures, located at &amp;lt;code&amp;gt;0x210&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x22A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x258&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;0x281&amp;lt;/code&amp;gt;. You can have any amount of gestures in a gesture set; even 1 is fine.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You can paste the following placeholder information for now:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It might be a good idea to leave a decent amount of zeros after this list; this one will expand a lot as gestures and gesture sets are added to it.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How is your BMS looking? ==&lt;br /&gt;
If you have been copy-pasting everything correctly, your BMS will look something like this:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=300px heights=300px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_1.png|Orange is &amp;quot;gesture set list&amp;quot;, yellow is &amp;quot;timing ruleset list&amp;quot;, and blue is &amp;quot;gesture set contents&amp;quot;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Once again, you can add as much padding between each section as you want, it will work fine.&lt;br /&gt;
&lt;br /&gt;
== Creating gestures ==&lt;br /&gt;
First, you should sketch out your song idea in your DAW, and then cut your song into tiny blocks. These blocks will be your song&#039;s individual gestures. You should also consider dragging these blocks around in various arrangements to make sure they sound good in any order.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once you are ready, have them nicely organized and ready to be exported into individual MIDI files:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_Pro_gestures.png|A Logic Pro project with a bunch of short blocks of music. Each block will be a &amp;quot;gesture&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
For some reason, imported BMS files play 4 times as slow in cave songs. So if you import these gestures as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export your gestures, you need to modify your gestures to run &#039;&#039;4 times as fast&#039;&#039;. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Logic Pro can easily speed up MIDI regions with MIDI Transform. You want to use the &amp;quot;Double Speed&amp;quot; transformation twice on each block.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_pro_double_speed.gif|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting gestures ==&lt;br /&gt;
Gestures use same the note/music information as standard BMS songs.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should have converted all your MIDIs into BMS files. Open up one of your converted BMS files, and look for the first note/pitch value. If you used [[Pikmin 2 custom music|flaaffy]], this will most likely be somewhere after &amp;lt;code&amp;gt;0x1B&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;0x1D&amp;lt;/code&amp;gt;. The note&#039;s pitch value will often be followed by a &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;, then the velocity value. Copy this note, all the way to the end of the sequence, which should be &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=600px&amp;gt;&lt;br /&gt;
File:Copy_pasting_BMS_info.png|The value &amp;quot;2D&amp;quot; here is the hex value of a certain pitch, and the very first note of the sequence. Copy this, all the way to &amp;quot;FF&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
To add your gesture, start it with &amp;lt;code&amp;gt;C40000015D&amp;lt;/code&amp;gt;, then paste in what you copied. Each gesture should end with that &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;. Add as many gestures as you please!&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_2.png|The purple lines indicate where a gesture starts.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting timetables ==&lt;br /&gt;
So, how do we choose how often gestures will play? Will a gesture play every beat? Every 1/2 a beat? You will need to add a timetable for that!&lt;br /&gt;
A timetable is a sequence that dictates when gestures should play. A timetable ends with &amp;lt;code&amp;gt;FFFF&amp;lt;/code&amp;gt;. You can make a timetable as complex as you like.&amp;lt;br&amp;gt; Some examples of timetables you can use are:&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0780 FFFF&amp;lt;/code&amp;gt; Play a gesture every 16 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C0 FFFF&amp;lt;/code&amp;gt; Play a gesture every 8 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;01E0 FFFF&amp;lt;/code&amp;gt; Play a gesture every 4 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C0 03C0 03C0 01E0 01E0 01E0 01E0 03C0 FFFF&amp;lt;/code&amp;gt; This sequence will play a gesture every 8 beats (3x), play a gesture every 4 beats (4x), then play a gesture for 8 beats (1x), in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0 FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/2 note (every 2 beats).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0078 FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/4 note (every beat).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003C FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/8th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;001E FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/16th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003C 0078 001E FFFF&amp;lt;/code&amp;gt; This sequence will play a gesture for an 1/8th note, play a gesture for a 1/4 note, then play a gesture for a 1/16th note, in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
Considering that &amp;lt;code&amp;gt;001E&amp;lt;/code&amp;gt; (30 in decimal) is a 1/16th note, you can create any specific timing you want. Just add another 30 to the value for each additional sixteenth note in length.&amp;lt;br&amp;gt;&lt;br /&gt;
For example, Soil 1&#039;s enemy mix piano plays a gesture every three sixteenth notes. That would be 90 in decimal, and its timetable would look like &amp;lt;code&amp;gt;005A FFFF&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
You can insert your timetables anywhere at the end of your BMS.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_3.png|Each timetable has a pink box around it.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in info ==&lt;br /&gt;
Once you have your gestures and timetables inserted, go back and fill in those &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00CCCC&amp;lt;/code&amp;gt; placeholders with the locations of your gesture sets, timetables, and gestures you want to use. Remember that gesture sets begin with the &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Also in the very beginning of your BMS, make sure the value at &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; has the location of where your gesture set list begins (this one will probably be fine), and the value at &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; has the location of where your timing ruleset list begins.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_4.png|Put the location of where the &amp;quot;timing ruleset list&amp;quot; begins here.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in the conductor file ==&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
In your song&#039;s associated conductor file, try to stretch out the window so that the instrument names are all in the same column if you can, like in the image above.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Each line represents one track. You give each track a instrument (program), and what gesture set and timing ruleset to use.&amp;lt;br&amp;gt;&lt;br /&gt;
The CND infographic above does a good job explaining all the functions, but they&#039;ll be explained again down here.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the top left corner are three important values:&lt;br /&gt;
* The first value is the swing time. &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt; is 1/16th swing, while &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; is 1/8th swing. If your song is below 100bpm, you might want to use &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt;. If its faster, try &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
* The second value is the tempo, in hex.&lt;br /&gt;
* The third value is how many tracks there will be, in hex.&lt;br /&gt;
&lt;br /&gt;
Each column explained:&lt;br /&gt;
* A: Initial delay. How many beats until this track starts running. In the vanilla game, you can notice how some song&#039;s melodies do not immediately begin playing upon the start of level. This is useful for that; ease the listener into the music.&lt;br /&gt;
* B/Q: If set to 1, all gestures will be delayed by an 1/8th note..&lt;br /&gt;
* C: Text string. You can make this say whatever you like. Useful for keeping track of what you want each track to be, like &amp;quot;Lead&amp;quot;, &amp;quot;Trumpet&amp;quot;, &amp;quot;MelodyA&amp;quot;/&amp;quot;MelodyB&amp;quot;, &amp;quot;Bass&amp;quot;, or &amp;quot;Drums&amp;quot;&lt;br /&gt;
* D: Track copy. Select a previous track # to copy the gestures from. If the track its copying plays &amp;quot;gesture 3&amp;quot; from its gesture set, this track will also play its &amp;quot;gesture 3&amp;quot;. Often used for treasure mix instruments. You can have them use different gesture sets if you like.&lt;br /&gt;
* E: Echo strength.&lt;br /&gt;
* F: If set to 1, the values in this track&#039;s timetable will always be played in order, in a loop. If set to 0, it will randomly select values from its timetable, thus, allowing you to randomize when gestures play.&lt;br /&gt;
* G: Bank number.&lt;br /&gt;
* H: Program number. For a list of all programs in the default game and the wScenes that support them, view [[Pikmin 2 custom_music/available instruments|this page]].&lt;br /&gt;
* I: Gesture set, select the set # you want to use from the BMS. &lt;br /&gt;
* J: Timing ruleset, select the set # you want to use from the BMS.&lt;br /&gt;
* K: How many gestures this track will play, before playing &amp;quot;silent gestures&amp;quot;. Linked to below. These function as a sort of on/off cycle.&lt;br /&gt;
* L: How many &amp;quot;silent gestures&amp;quot; this track will play, before playing normal gestures. Linked to above. These function as a sort of on/off cycle.&lt;br /&gt;
* M: If notes are being transposed down (see below), this is set to FF. But this column doesn&#039;t actually do anything, so you don&#039;t need to edit this.&lt;br /&gt;
* N: Transpose all notes played by this track. To transpose up, use values 1-127. To transpose down, use the sign 2 compliment (values 128-255).&lt;br /&gt;
* O: Volume.&lt;br /&gt;
* P: Stereo panning.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas/considerations:&lt;br /&gt;
* You can use the on/off cycle feature (column K and L) to make your melodic instrument &amp;quot;take a break&amp;quot; every once in a while. You can have it play 4 gestures, but then be silent for 2.&lt;br /&gt;
* If your timing ruleset is strict (as in, the timings for when gestures occur is always consistent), something fun to try is to have the melody be a back-and-forth between two different instruments. Set the initial delay for the second instrument to be longer than the first one, and then cleverly use the on/off cycle to have the instruments take turns sounding a gesture. This is done for the melody in the Bulblax Kingdom and Frontier Cavern for example.&lt;br /&gt;
* If you are using the &amp;quot;track copy&amp;quot; feature (column D), you can have the primary instrument play a melody, and have this instrument always play chords that perfectly match that melody.&lt;br /&gt;
&lt;br /&gt;
== Mapping the tracks ==&lt;br /&gt;
With all that done, don&#039;t forget to edit the song&#039;s [[Trackmap parameters|trackMap]]! Edit your song in the trackMap files in either &amp;lt;code&amp;gt;/user/Totaka&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/user/Wakai&amp;lt;/code&amp;gt;, and set how many instruments will be in each mix. It goes in order from: Main Mix, Task (event), Treasure (otakara), Enemy near (kehai), Combat mix, and Spiderwort mix (ground). Although you cannot find Spiderworts underground, you will have to sacrifice at least one track for that mix. You cannot set any of the mixes to have 0 instruments in them.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Filenames for brand new CND files ==&lt;br /&gt;
If you are adding a brand new CND file instead of replacing an existing one, the prefix will determine which BMS is loaded, and which wScene. Try not to add special characters to filenames, aside from underscores.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to load the correct BMS file, the CND must start with the name of the BMS file.&lt;br /&gt;
* &amp;quot;caveconc.cnd&amp;quot;, &amp;quot;caveconc_458435.cnd&amp;quot;, &amp;quot;caveconc_Waffles.cnd&amp;quot;, and &amp;quot;caveconc_Waffles_Song_2.cnd&amp;quot; will all load caveconc.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;caverelax.cnd&amp;quot;, &amp;quot;caverelax_Gmajor.cnd&amp;quot;, and &amp;quot;caverelax_mamuta_dinner.cnd&amp;quot; will all load caverelax.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;new_09_4.cnd&amp;quot;, &amp;quot;new_09_4000.cnd&amp;quot;, and &amp;quot;new_09_portal_PotaTOS.cnd&amp;quot; will load new_09.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For cavesoil, caveconc, and cavemetal only, the game also checks for an additional &amp;quot;_00&amp;quot;, &amp;quot;_05&amp;quot;, and &amp;quot;_10&amp;quot; right after the prefix, for the purpose of loading one of three different wScenes. You must include it if you want the correct wScene to load. For example, caveconc_05 loads wScene 31, so if you want your custom song to also load wScene 31, acceptable names include &amp;quot;caveconc_05_WAFFLES.cnd&amp;quot;, &amp;quot;caveconc_05_52_46356.cnd&amp;quot;, or &amp;quot;caveconc_05_super_boss.cnd&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After adding your new CND file, be sure to add it to its respective trackMap file.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding new content to a vanilla BMS file ==&lt;br /&gt;
Adding new hex data in the middle of a file will shift all the offsets that come after it, causing your BMS to jump to the wrong locations, and likely cause a crash if vanilla songs are loaded.&amp;lt;br&amp;gt;&lt;br /&gt;
In order to add new content in addition to what&#039;s already in the BMS:&lt;br /&gt;
* Find and copy the gesture set list and the timing ruleset list, and paste them at the end of the file. (Separate them with lots of zeros so you have lots more space to add content to these lists)&lt;br /&gt;
* Change &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; to point to your new gesture set list and timing ruleset list. These two values tell the game where the lists are.&lt;br /&gt;
The game should now use these brand new lists, instead of the original instances that occur earlier in the file. Since they still contain all the locations of the vanilla gesture sets/timetables from above in the same order, the existing CND songs won&#039;t be affected and will continue to function, but now you can expand upon these lists with brand new entries now that you&#039;ve made the space for them. All new gestures, gesture sets and timetables can be added further down the file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Editing_vanilla_BMS_file.png|The new gesture set list and timing ruleset list we want to use will be at the bottom.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding gesture cutoffs in timetables ==&lt;br /&gt;
An intentional compositional choice in some songs is to cutoff gestures while they&#039;re in the middle of playing. The most common way this is done is to quickly trigger another gesture; if the last gesture has not finished playing, it will stop playing that gesture and begin playing the new one. It&#039;s also possible to add &amp;quot;empty&amp;quot; gestures to gesture sets (like &amp;lt;code&amp;gt;C40000015DFF&amp;lt;/code&amp;gt;, a gesture which ends immediately and plays nothing), so you can randomly interrupt gestures in your song with silence, or have there be a chance to play nothing.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
However, if you wish to interrupt gestures in your song at specified times without the randomness, there is a special function in timetables for doing this. In the vanilla game, this is used for the trumpet in [https://www.youtube.com/watch?v=qOhmS1YLpF8 Fire]. The trumpet plays two interrupted gestures, then plays a third gesture in full. Below is the timetable for this trumpet:&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;0078 8168 81E0 00F0 80F0 81E0 0780 FFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The trumpet will:&lt;br /&gt;
* &amp;lt;code&amp;gt;0078&amp;lt;/code&amp;gt; play a gesture for 1 beat&lt;br /&gt;
* &amp;lt;code&amp;gt;8168&amp;lt;/code&amp;gt; cutoff after this 1 beat&lt;br /&gt;
* &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; extend the silence for another 4 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0&amp;lt;/code&amp;gt; play a gesture for 2 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;80F0&amp;lt;/code&amp;gt; cutoff after these 2 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; extend the silence for another 4 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;0780&amp;lt;/code&amp;gt; play a gesture for 16 beats.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In order to put a &amp;quot;cutoff&amp;quot; in your timetable:&lt;br /&gt;
* Start with how long you want your &amp;quot;playing&amp;quot; gesture to play for, before it gets cutoff. I want the the first gesture to last for one beat (four 1/16th notes), so I&#039;ll put &amp;lt;code&amp;gt;0078&amp;lt;/code&amp;gt;. Remember that every &amp;quot;30&amp;quot; in decimal is equivalent to a sixteenth note.&lt;br /&gt;
* Immediately next in the sequence will be a value that indicates when the cutoff begins. Calculate the difference between &amp;quot;81E0&amp;quot; and the previous value you had just inserted. 81E0 - 0078 = 8168 (in decimal, 33248 - 120 = 33128). I will put &amp;lt;code&amp;gt;8168&amp;lt;/code&amp;gt; next in my sequence.&lt;br /&gt;
My sequence is now &amp;lt;code&amp;gt;0078 8168 FFFF&amp;lt;/code&amp;gt;; this will play a gesture normally for 1 beat, but then immediately cut it off after that 1 beat.&amp;lt;br&amp;gt;&lt;br /&gt;
Putting an additional &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; in the sequence right after will extend the silence for another 4 beats if you so desire. You can keep putting &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; right after several times in a row if you want silence to last extra long until the next gesture plays.&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_Interactive_BMS_Files&amp;diff=4659</id>
		<title>Creating Interactive BMS Files</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_Interactive_BMS_Files&amp;diff=4659"/>
		<updated>2024-04-18T16:53:41Z</updated>

		<summary type="html">&lt;p&gt;Waffles: /* Missing/dropped notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide will function as a walkthrough for creating interactive music for Pikmin 2&#039;s main areas.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be exporting each track of your MIDI separately as its own BMS file, and importing them one at a time.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
Most of the editing will be done in hexadecimal. Creating [[Creating cave music|cave music]] is very similar.&lt;br /&gt;
&lt;br /&gt;
== Preparing and exporting MIDIs ==&lt;br /&gt;
You will be exporting each track of your song as its own separate MIDI file, and then convert each MIDI into a mini BMS file of its own.&amp;lt;br&amp;gt;&lt;br /&gt;
If your song has 14 instruments, then you&#039;ll export 14 MIDIs. Make sure each track is the same length so that looping will work properly.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some reason, imported BMS files play exactly 4 times as slow in interactive music. So if you import the tracks as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export them, you need to modify them to run 4 times as fast. Do not address this by changing the BPM in your DAW, you need to shorten the actual regions instead. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Logic Pro can easily speed up MIDI regions with MIDI Transform. You want to use the &amp;quot;Double Speed&amp;quot; transformation twice on each entire track.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial5.png|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
(Note: While you *can* technically just multiply the BPM value by 4 in the BMS later on, Louie&#039;s variant is dependent on the BPM being something normal, so the swing will not be applied properly if you do that.)&lt;br /&gt;
&lt;br /&gt;
== Base BMS file ==&lt;br /&gt;
Starting from scratch, here is a base for you to work off of. In a hex editor, copy and paste this into a completely new, blank BMS file:&lt;br /&gt;
&amp;lt;pre&amp;gt;E74000A0 0003AC04 0104AA20 050400B1 C1400005 AC04010A AA200504 00B1C140 0105AC04 0110AA20 050400B1 C1400205 AC040116 AA200504 00B1C140 0305AC04 011CAA20 050400B1 C1400405 AC040122 AA200504 00B1C140 0505AC04 0128AA20 050400B1 C1400605 AC04012E AA200504 00B1C140 0705AC04 0134AA20 050400B1 C1400805 AC04013A AA200504 00B1C140 0905AC04 0140AA20 050400B1 C1400A05 AC040146 AA200504 00B1C140 0B05AC04 014CAA20 050400B1 C1400C05 AC040152 AA200504 00B1C140 0D05AC04 0158AA20 050400B1 C1400E05 AC04015E AA200504 00B1C140 0F05FE00 78FD0066 C8000001 9F884B00 C8000000 E9884B00 C8000000 F98001FF 0002AA00 071E0002 E600075A 00032200 07960003 5E0007D2 00039A00 080E0003 D600084A 00041200 08860004 4E0008C2 00048A00 08FE0004 C600093A 00050200 09760005 3E0009B2 00057A00 09EE0005 B6000A2A 0005F200 0A660006 2E000AA2 C600E70E 00DF0700 018AE72E 00CF03C8 0000016E E70E00DF 0700018A E72E00CF 03C80000 0180E71E 00E3E700 00E70F00 DF070001 9BC600E7 1F00E3E7 0E00DF07 0001B9E7 4001C805 000000E7 2E00CF03 C8000001 A7E71E00 E74001C8 050001C5 E3E1C800 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 44617920 76657273 696F6E3A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000042 00004900 00560000 50000000 00000000 00000000 5365713A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000294C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0002D0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00030CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000348C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000384C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0003C0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0003FCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000438C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000474C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0004B0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0004ECC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000528C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000564C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0005A0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0005DCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000618C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 53756E73 65742076 65722E3A 00000020 20202000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000042 00004900 00560000 50000000 00000000 00000000 5365713A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000708C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000744C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000780C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0007BCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0007F8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000834C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000870C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008ACC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008E8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000924C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000960C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00099CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0009D8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000A14C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000A50C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00058CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 FF000000 3C2D2028 4E756C6C 20747261 636B2061 74203078 30623034 2C20666F 7220616E 7920656D 70747920 74726163 6B732900 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 76767620 50617374 6520796F 75722073 65717565 6E636573 20686572 65212076 76760000 00000000 00000000 00000000 00000000 00000000 00000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file is setup with all the important information already filled out for you. You should resize the window so that you can see all 16 Day tracks and all 16 Sunset tracks evenly spaced on each line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial1.png|You can use this image as a guide for the &amp;quot;mixer&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section is sort of like a mixer; you can set the volume and stereo panning of each track. More importantly, you also choose the bank and program here.&amp;lt;br&amp;gt;Most importantly, at the end of each track, you select what sequence the track uses. You just type in the offset of the sequence there.&lt;br /&gt;
&lt;br /&gt;
== Importing sequences ==&lt;br /&gt;
=== Converting ===&lt;br /&gt;
Convert all your MIDIs into BMS files with [[Pikmin 2 custom music|flaaffy]]. You can use the following commands in the command line (make sure to include the &amp;quot;-loop&amp;quot; argument in the first command, so it knows to loop the sequence):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mareep.exe mareep -errand jolt -input exampletrack02.midi -output exampletrack02.txt -loop&lt;br /&gt;
mareep.exe mareep -errand cotton -input exampletrack02.txt -output exampletrack02.bms&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Flaaffy turns the MIDI into a text file before it is converted into a BMS. The text file is &amp;quot;cotton&amp;quot;, flaaffy&#039;s assembly language. Viewing the cotton file can be useful for double checking there&#039;s in fact only one track in each of your MIDIs. You will open each BMS file you make with flaaffy, and copy paste the hex data of each into the bottom of the Base BMS. &lt;br /&gt;
&lt;br /&gt;
=== Copying and pasting ===&lt;br /&gt;
In your exported BMS, look for the instance of &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; (if there are multiple, use the last occurrence of it). This A420 is what sets the bank of the sequence, and it will be followed by either a 00, 01, 02, 03, 04, or 05 after it.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to use bank 0, change it to &amp;lt;code&amp;gt;A42000&amp;lt;/code&amp;gt;, if you want to use bank 4, change it to &amp;lt;code&amp;gt;A42004&amp;lt;/code&amp;gt;, and so on.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; and the entire remainder of the file, and paste everything into your Base BMS, anywhere at the bottom of it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=160px heights=160px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial2.png|This is what you should copy. If your track has a lot of notes in it, this can be much longer.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=220px heights=220px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial3.png|This is how you should paste in the sequences.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should paste each converted BMS on a new line, separated by an empty line of zeros so its easy to tell where each sequence begins.&lt;br /&gt;
&lt;br /&gt;
=== Looping ===&lt;br /&gt;
Notice the &amp;lt;code&amp;gt;C80000XXXX&amp;lt;/code&amp;gt; at the very end of the sequence you pasted in (the C80000 will be the same, but the numbers at the end will be different). The &amp;quot;XXXX&amp;quot; tells the sequence where the song loops and should restart at. Change XXXX to be where the sequence starts in the base BMS file. (Ex: do &amp;lt;code&amp;gt;C8000011D4&amp;lt;/code&amp;gt; if the sequence starts at 0x11D4).&lt;br /&gt;
&lt;br /&gt;
== Finishing touches ==&lt;br /&gt;
=== Fill in the mixer ===&lt;br /&gt;
After you have imported all the sequences, have made sure all the &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt;&#039;s have the right bank, and looped them, go back to the Base BMS mixer and fill in the appropriate information. (Bank, program, volume, panning, sequence location.) The &amp;quot;sequence location&amp;quot; will be the offset where each &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; is.&lt;br /&gt;
&lt;br /&gt;
(Note: You do not have to import the same sequence over and over again if there are any identical sequences; you are free to reference the same one sequence and just give them different instruments. This is useful for sunset versions or treasure mix instruments.)&lt;br /&gt;
&lt;br /&gt;
=== Null track ===&lt;br /&gt;
If you don&#039;t want a track to play anything, have it go to the &amp;quot;null track&amp;quot; located at &amp;lt;code&amp;gt;0B04&amp;lt;/code&amp;gt;. (If you look, it&#039;s just a single &amp;quot;FF&amp;quot;, which is a sequence that ends immediately.) This is what each track is set to by default in the provided Base BMS.&lt;br /&gt;
&lt;br /&gt;
=== Tempo ===&lt;br /&gt;
You don&#039;t have to touch anything in the header at the top of the Base BMS, except for changing the BPM. The BPM for your song is located at 0xEA and takes up two bytes. (Ex: &amp;quot;&amp;lt;code&amp;gt;0066&amp;lt;/code&amp;gt;&amp;quot; for 102 BPM).&lt;br /&gt;
&lt;br /&gt;
=== Padding ===&lt;br /&gt;
Add in an extra line of zeros or two at the end of your finished Base BMS, because it sometimes crashes if extra padding is not there.&lt;br /&gt;
&lt;br /&gt;
=== trackMap ===&lt;br /&gt;
Make sure the tracks in the Base BMS mixer go in order: Main -&amp;gt; Task -&amp;gt; Treasure -&amp;gt; Enemy near -&amp;gt; Battle -&amp;gt; Spiderwort. Same for the sunset version.&amp;lt;br&amp;gt;&lt;br /&gt;
Open the sequence trackMap in &amp;lt;code&amp;gt;/user/Wakai/&amp;lt;/code&amp;gt;, find the song you are replacing (forest.bms, last.bms...), and [[Trackmap parameters|edit the values in the trackMap]] to reflect how many instruments will be in each mix. The main and sunset version will use the same mapping. You can make unnecessary tracks silent in the Base BMS&#039;s mixer if your sunset version has less instruments.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Tracks not looping correctly ===&lt;br /&gt;
Make sure each track is exactly the same length. You can export your entire song as one MIDI, convert it to BMS, and import it into the game as an un-interactive BMS file just to check. Flaaffy is finicky with looping occasionally; you may need to add a note at the end or start of a track so flaaffy knows thats the definitive start/end point of that track. (Make the note very quiet, low-pitch, and or short so its practically inaudible.)&lt;br /&gt;
&lt;br /&gt;
=== Tracks not looping at all ===&lt;br /&gt;
Double-check you added the -loop argument in flaaffy. Test with an un-interactive BMS file. Make sure there isn&#039;t any stray information somewhere in your MIDI.&lt;br /&gt;
&lt;br /&gt;
=== Volume/panning/program settings not working ===&lt;br /&gt;
It is possible there is volume automation, panning automation, or program changes somewhere in your MIDI/BMS you have imported. This is something you can add intentionally if you really want to (like changing the program for a track in the middle of the song), but it will override the values you put in the Base BMS mixer.&lt;br /&gt;
&lt;br /&gt;
=== Track not playing at all===&lt;br /&gt;
The most common cause of this is accidentally setting the wrong bank.&lt;br /&gt;
&lt;br /&gt;
=== Missing/dropped notes ===&lt;br /&gt;
This is an another issue with flaaffy. If a &amp;quot;Note On&amp;quot; also occurs at the same time a &amp;quot;Note Off&amp;quot; of the same pitch does, or multiple &amp;quot;Note On&amp;quot;s occur at the exact same millisecond, flaaffy&#039;s BMS won&#039;t render those notes. You might run into this often when instruments try to play chords.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The simple fix for flaaffy is to make sure notes of the same pitch do not touch each other (put a tiny bit of empty space between them), and to slightly skew/slant each note in chords.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial4.png|Make sure the notes in a chord don&#039;t occur at the same time.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, JAIMaker does not run into this issue for its BMS conversions. If you decide to use it instead, you will need to be more precise about importing the data from the BMS files into the Base BMS.&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_Interactive_BMS_Files&amp;diff=4658</id>
		<title>Creating Interactive BMS Files</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_Interactive_BMS_Files&amp;diff=4658"/>
		<updated>2024-04-18T12:21:20Z</updated>

		<summary type="html">&lt;p&gt;Waffles: Slight fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide will function as a walkthrough for creating interactive music for Pikmin 2&#039;s main areas.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be exporting each track of your MIDI separately as its own BMS file, and importing them one at a time.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
Most of the editing will be done in hexadecimal. Creating [[Creating cave music|cave music]] is very similar.&lt;br /&gt;
&lt;br /&gt;
== Preparing and exporting MIDIs ==&lt;br /&gt;
You will be exporting each track of your song as its own separate MIDI file, and then convert each MIDI into a mini BMS file of its own.&amp;lt;br&amp;gt;&lt;br /&gt;
If your song has 14 instruments, then you&#039;ll export 14 MIDIs. Make sure each track is the same length so that looping will work properly.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some reason, imported BMS files play exactly 4 times as slow in interactive music. So if you import the tracks as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export them, you need to modify them to run 4 times as fast. Do not address this by changing the BPM in your DAW, you need to shorten the actual regions instead. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Logic Pro can easily speed up MIDI regions with MIDI Transform. You want to use the &amp;quot;Double Speed&amp;quot; transformation twice on each entire track.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial5.png|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
(Note: While you *can* technically just multiply the BPM value by 4 in the BMS later on, Louie&#039;s variant is dependent on the BPM being something normal, so the swing will not be applied properly if you do that.)&lt;br /&gt;
&lt;br /&gt;
== Base BMS file ==&lt;br /&gt;
Starting from scratch, here is a base for you to work off of. In a hex editor, copy and paste this into a completely new, blank BMS file:&lt;br /&gt;
&amp;lt;pre&amp;gt;E74000A0 0003AC04 0104AA20 050400B1 C1400005 AC04010A AA200504 00B1C140 0105AC04 0110AA20 050400B1 C1400205 AC040116 AA200504 00B1C140 0305AC04 011CAA20 050400B1 C1400405 AC040122 AA200504 00B1C140 0505AC04 0128AA20 050400B1 C1400605 AC04012E AA200504 00B1C140 0705AC04 0134AA20 050400B1 C1400805 AC04013A AA200504 00B1C140 0905AC04 0140AA20 050400B1 C1400A05 AC040146 AA200504 00B1C140 0B05AC04 014CAA20 050400B1 C1400C05 AC040152 AA200504 00B1C140 0D05AC04 0158AA20 050400B1 C1400E05 AC04015E AA200504 00B1C140 0F05FE00 78FD0066 C8000001 9F884B00 C8000000 E9884B00 C8000000 F98001FF 0002AA00 071E0002 E600075A 00032200 07960003 5E0007D2 00039A00 080E0003 D600084A 00041200 08860004 4E0008C2 00048A00 08FE0004 C600093A 00050200 09760005 3E0009B2 00057A00 09EE0005 B6000A2A 0005F200 0A660006 2E000AA2 C600E70E 00DF0700 018AE72E 00CF03C8 0000016E E70E00DF 0700018A E72E00CF 03C80000 0180E71E 00E3E700 00E70F00 DF070001 9BC600E7 1F00E3E7 0E00DF07 0001B9E7 4001C805 000000E7 2E00CF03 C8000001 A7E71E00 E74001C8 050001C5 E3E1C800 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 44617920 76657273 696F6E3A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000042 00004900 00560000 50000000 00000000 00000000 5365713A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000294C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0002D0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00030CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000348C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000384C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0003C0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0003FCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000438C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000474C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0004B0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0004ECC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000528C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000564C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0005A0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0005DCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000618C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 53756E73 65742076 65722E3A 00000020 20202000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000042 00004900 00560000 50000000 00000000 00000000 5365713A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000708C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000744C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000780C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0007BCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0007F8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000834C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000870C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008ACC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008E8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000924C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000960C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00099CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0009D8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000A14C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000A50C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00058CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 FF000000 3C2D2028 4E756C6C 20747261 636B2061 74203078 30623034 2C20666F 7220616E 7920656D 70747920 74726163 6B732900 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 76767620 50617374 6520796F 75722073 65717565 6E636573 20686572 65212076 76760000 00000000 00000000 00000000 00000000 00000000 00000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file is setup with all the important information already filled out for you. You should resize the window so that you can see all 16 Day tracks and all 16 Sunset tracks evenly spaced on each line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial1.png|You can use this image as a guide for the &amp;quot;mixer&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section is sort of like a mixer; you can set the volume and stereo panning of each track. More importantly, you also choose the bank and program here.&amp;lt;br&amp;gt;Most importantly, at the end of each track, you select what sequence the track uses. You just type in the offset of the sequence there.&lt;br /&gt;
&lt;br /&gt;
== Importing sequences ==&lt;br /&gt;
=== Converting ===&lt;br /&gt;
Convert all your MIDIs into BMS files with [[Pikmin 2 custom music|flaaffy]]. You can use the following commands in the command line (make sure to include the &amp;quot;-loop&amp;quot; argument in the first command, so it knows to loop the sequence):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mareep.exe mareep -errand jolt -input exampletrack02.midi -output exampletrack02.txt -loop&lt;br /&gt;
mareep.exe mareep -errand cotton -input exampletrack02.txt -output exampletrack02.bms&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Flaaffy turns the MIDI into a text file before it is converted into a BMS. The text file is &amp;quot;cotton&amp;quot;, flaaffy&#039;s assembly language. Viewing the cotton file can be useful for double checking there&#039;s in fact only one track in each of your MIDIs. You will open each BMS file you make with flaaffy, and copy paste the hex data of each into the bottom of the Base BMS. &lt;br /&gt;
&lt;br /&gt;
=== Copying and pasting ===&lt;br /&gt;
In your exported BMS, look for the instance of &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; (if there are multiple, use the last occurrence of it). This A420 is what sets the bank of the sequence, and it will be followed by either a 00, 01, 02, 03, 04, or 05 after it.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to use bank 0, change it to &amp;lt;code&amp;gt;A42000&amp;lt;/code&amp;gt;, if you want to use bank 4, change it to &amp;lt;code&amp;gt;A42004&amp;lt;/code&amp;gt;, and so on.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; and the entire remainder of the file, and paste everything into your Base BMS, anywhere at the bottom of it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=160px heights=160px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial2.png|This is what you should copy. If your track has a lot of notes in it, this can be much longer.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=220px heights=220px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial3.png|This is how you should paste in the sequences.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should paste each converted BMS on a new line, separated by an empty line of zeros so its easy to tell where each sequence begins.&lt;br /&gt;
&lt;br /&gt;
=== Looping ===&lt;br /&gt;
Notice the &amp;lt;code&amp;gt;C80000XXXX&amp;lt;/code&amp;gt; at the very end of the sequence you pasted in (the C80000 will be the same, but the numbers at the end will be different). The &amp;quot;XXXX&amp;quot; tells the sequence where the song loops and should restart at. Change XXXX to be where the sequence starts in the base BMS file. (Ex: do &amp;lt;code&amp;gt;C8000011D4&amp;lt;/code&amp;gt; if the sequence starts at 0x11D4).&lt;br /&gt;
&lt;br /&gt;
== Finishing touches ==&lt;br /&gt;
=== Fill in the mixer ===&lt;br /&gt;
After you have imported all the sequences, have made sure all the &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt;&#039;s have the right bank, and looped them, go back to the Base BMS mixer and fill in the appropriate information. (Bank, program, volume, panning, sequence location.) The &amp;quot;sequence location&amp;quot; will be the offset where each &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; is.&lt;br /&gt;
&lt;br /&gt;
(Note: You do not have to import the same sequence over and over again if there are any identical sequences; you are free to reference the same one sequence and just give them different instruments. This is useful for sunset versions or treasure mix instruments.)&lt;br /&gt;
&lt;br /&gt;
=== Null track ===&lt;br /&gt;
If you don&#039;t want a track to play anything, have it go to the &amp;quot;null track&amp;quot; located at &amp;lt;code&amp;gt;0B04&amp;lt;/code&amp;gt;. (If you look, it&#039;s just a single &amp;quot;FF&amp;quot;, which is a sequence that ends immediately.) This is what each track is set to by default in the provided Base BMS.&lt;br /&gt;
&lt;br /&gt;
=== Tempo ===&lt;br /&gt;
You don&#039;t have to touch anything in the header at the top of the Base BMS, except for changing the BPM. The BPM for your song is located at 0xEA and takes up two bytes. (Ex: &amp;quot;&amp;lt;code&amp;gt;0066&amp;lt;/code&amp;gt;&amp;quot; for 102 BPM).&lt;br /&gt;
&lt;br /&gt;
=== Padding ===&lt;br /&gt;
Add in an extra line of zeros or two at the end of your finished Base BMS, because it sometimes crashes if extra padding is not there.&lt;br /&gt;
&lt;br /&gt;
=== trackMap ===&lt;br /&gt;
Make sure the tracks in the Base BMS mixer go in order: Main -&amp;gt; Task -&amp;gt; Treasure -&amp;gt; Enemy near -&amp;gt; Battle -&amp;gt; Spiderwort. Same for the sunset version.&amp;lt;br&amp;gt;&lt;br /&gt;
Open the sequence trackMap in &amp;lt;code&amp;gt;/user/Wakai/&amp;lt;/code&amp;gt;, find the song you are replacing (forest.bms, last.bms...), and [[Trackmap parameters|edit the values in the trackMap]] to reflect how many instruments will be in each mix. The main and sunset version will use the same mapping. You can make unnecessary tracks silent in the Base BMS&#039;s mixer if your sunset version has less instruments.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Tracks not looping correctly ===&lt;br /&gt;
Make sure each track is exactly the same length. You can export your entire song as one MIDI, convert it to BMS, and import it into the game as an un-interactive BMS file just to check. Flaaffy is finicky with looping occasionally; you may need to add a note at the end or start of a track so flaaffy knows thats the definitive start/end point of that track. (Make the note very quiet, low-pitch, and or short so its practically inaudible.)&lt;br /&gt;
&lt;br /&gt;
=== Tracks not looping at all ===&lt;br /&gt;
Double-check you added the -loop argument in flaaffy. Test with an un-interactive BMS file. Make sure there isn&#039;t any stray information somewhere in your MIDI.&lt;br /&gt;
&lt;br /&gt;
=== Volume/panning/program settings not working ===&lt;br /&gt;
It is possible there is volume automation, panning automation, or program changes somewhere in your MIDI/BMS you have imported. This is something you can add intentionally if you really want to (like changing the program for a track in the middle of the song), but it will override the values you put in the Base BMS mixer.&lt;br /&gt;
&lt;br /&gt;
=== Track not playing at all===&lt;br /&gt;
The most common cause of this is accidentally setting the wrong bank.&lt;br /&gt;
&lt;br /&gt;
=== Missing/dropped notes ===&lt;br /&gt;
This is an another issue with flaaffy. If a &amp;quot;Note On&amp;quot; also occurs at the same time a &amp;quot;Note Off&amp;quot; does, or multiple &amp;quot;Note On&amp;quot;s occur at the exact same millisecond, flaaffy&#039;s BMS won&#039;t render those notes. You might run into this often when instruments try to play chords.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The simple fix for flaaffy is to make sure notes of the same pitch do not touch each other (put a tiny bit of empty space between them), and to slightly skew/slant each note in chords.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial4.png|Make sure the notes in a chord don&#039;t occur at the same time.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, JAIMaker does not run into this issue for its BMS conversions. If you decide to use it instead, you will need to be more precise about importing the data from the BMS files into the Base BMS.&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4657</id>
		<title>Creating cave music</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4657"/>
		<updated>2024-04-18T09:12:12Z</updated>

		<summary type="html">&lt;p&gt;Waffles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Randomly generating cave music in Pikmin 2 needs to have two files: a .bms (sequence) file, and a .cnd (conductor) file.&lt;br /&gt;
&lt;br /&gt;
The BMS file type is a sequenced music format used in many games. For the cave music in Pikmin 2 however, it is specially-formatted. It mainly contains many short snippets of musical information to be randomized.&lt;br /&gt;
&lt;br /&gt;
The CND files are the actual &amp;quot;songs&amp;quot;; they take specific groups of snippets from a BMS file, and endlessly puzzle-piece them together to form a coherent piece of music.&lt;br /&gt;
&lt;br /&gt;
This guide will function as a walkthrough for creating your own randomly sequencing cave song. All of the editing will be done in hexadecimal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be generating a lot of tiny BMS files, to turn them into &amp;quot;gestures&amp;quot;.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
Basic understanding of how [https://youtube.com/watch?v=QPFWzSlg-78 cave music works] and the [[Creating Interactive BMS Files|standard interactive music]] is recommended before starting.&amp;lt;br&amp;gt;Additionally, studying the existing cave songs on your own and how those exploit the conductor system in interesting ways can greatly help you come up with ideas for your own custom music.&lt;br /&gt;
&lt;br /&gt;
== Overview of file functions ==&lt;br /&gt;
Here are some infographics that you can reference at any time. These show all the functions of a CND file, and all the contents of a BMS file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
File:BMS_functions.png|How information is stored in a BMS file.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up your BMS file ==&lt;br /&gt;
Before you begin, set your byte grouping to &amp;quot;3&amp;quot;, so every 3 bytes is visually separated by a space. This will make it easier to see stuff.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Starting with a completely blank BMS file, begin by pasting the following:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Every cave music BMS begins with this same information, and will go mostly untouched.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set list ==&lt;br /&gt;
Exactly right after &amp;lt;code&amp;gt;34C600&amp;lt;/code&amp;gt; will be a list of every gesture set&#039;s location in the BMS. Each entry is the gesture set&#039;s hexadecimal location (offset), and each entry in the sequence begins with &amp;quot;&amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;&amp;quot;. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0001B0 0001BF 0001CE 0001D4 0001DA 0001E9 0001F8 0001FE 000204 00020A FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Gesture set &amp;quot;0&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1B0&amp;lt;/code&amp;gt;, gesture set &amp;quot;1&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1BF&amp;lt;/code&amp;gt;, gesture set &amp;quot;2&amp;quot; will be at &amp;lt;code&amp;gt;0x1CE&amp;lt;/code&amp;gt;, and so on. There are a total of 10 gesture sets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Until we create our gesture sets, let&#039;s use &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt; as placeholders so we can easily find and get back to this section later on. You can have as many gesture sets as you like; we&#039;ll create 16 entries for this tutorial. You may insert this into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our BMS should now currently look like this:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
You can also add an entire row of padding/zeros after this. You can do this for each section, to better visually separate them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing ruleset list ==&lt;br /&gt;
This is another sequence of offsets. These just point to the location of a &amp;quot;[[#Inserting_timetables|timetable]]&amp;quot;, which will be located at the end of our BMS file. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0005AB 0005AB 0005AF 0005C1 0005AB 0005AB 0005C1 0005C1 0005C1 0005C1 FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Timing ruleset &amp;quot;0&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;1&amp;quot; will also use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;2&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AF&amp;lt;/code&amp;gt;, and so on. There are a total of 10 timing rulesets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Let&#039;s use &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt; as placeholders again, and create 16 of them. Insert this anywhere into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set contents ==&lt;br /&gt;
A &#039;&#039;gesture set&#039;&#039; is a group of many gestures.&amp;lt;br&amp;gt;&lt;br /&gt;
Here, we list each gesture set&#039;s contents (which will be... the locations of the gestures!). Each gesture set begins before with &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt; and ends with &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how the gesture set list should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;000210 00022A 000258 000281 FFFFFF 0002B4 0002D9 000303 000331 FFFFFF 000355 FFFFFF 000361 FFFFFF 0003A8 0003C2 0003F0 000419 FFFFFF 00044C 000471 00049B 0004C9 FFFFFF 0004ED FFFFFF 000543 FFFFFF 000580 FFFFFF 00059E FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
There are 10 gesture sets listed above. The first gesture set has 4 gestures, located at &amp;lt;code&amp;gt;0x210&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x22A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x258&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;0x281&amp;lt;/code&amp;gt;. You can have any amount of gestures in a gesture set; even 1 is fine.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You can paste the following placeholder information for now:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It might be a good idea to leave a decent amount of zeros after this list; this one will expand a lot as gestures and gesture sets are added to it.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How is your BMS looking? ==&lt;br /&gt;
If you have been copy-pasting everything correctly, your BMS will look something like this:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=300px heights=300px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_1.png|Orange is &amp;quot;gesture set list&amp;quot;, yellow is &amp;quot;timing ruleset list&amp;quot;, and blue is &amp;quot;gesture set contents&amp;quot;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Once again, you can add as much padding between each section as you want, it will work fine.&lt;br /&gt;
&lt;br /&gt;
== Creating gestures ==&lt;br /&gt;
First, you should sketch out your song idea in your DAW, and then cut your song into tiny blocks. These blocks will be your song&#039;s individual gestures. You should also consider dragging these blocks around in various arrangements to make sure they sound good in any order.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once you are ready, have them nicely organized and ready to be exported into individual MIDI files:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_Pro_gestures.png|A Logic Pro project with a bunch of short blocks of music. Each block will be a &amp;quot;gesture&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
For some reason, imported BMS files play 4 times as slow in cave songs. So if you import these gestures as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export your gestures, you need to modify your gestures to run &#039;&#039;4 times as fast&#039;&#039;. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Logic Pro can easily speed up MIDI regions with MIDI Transform. You want to use the &amp;quot;Double Speed&amp;quot; transformation twice on each block.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_pro_double_speed.gif|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting gestures ==&lt;br /&gt;
Gestures use same the note/music information as standard BMS songs.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should have converted all your MIDIs into BMS files. Open up one of your converted BMS files, and look for the first note/pitch value. If you used [[Pikmin 2 custom music|flaaffy]], this will most likely be somewhere after &amp;lt;code&amp;gt;0x1B&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;0x1D&amp;lt;/code&amp;gt;. The note&#039;s pitch value will often be followed by a &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;, then the velocity value. Copy this note, all the way to the end of the sequence, which should be &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=600px&amp;gt;&lt;br /&gt;
File:Copy_pasting_BMS_info.png|The value &amp;quot;2D&amp;quot; here is the hex value of a certain pitch, and the very first note of the sequence. Copy this, all the way to &amp;quot;FF&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
To add your gesture, start it with &amp;lt;code&amp;gt;C40000015D&amp;lt;/code&amp;gt;, then paste in what you copied. Each gesture should end with that &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;. Add as many gestures as you please!&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_2.png|The purple lines indicate where a gesture starts.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting timetables ==&lt;br /&gt;
So, how do we choose how often gestures will play? Will a gesture play every beat? Every 1/2 a beat? You will need to add a timetable for that!&lt;br /&gt;
A timetable is a sequence that dictates when gestures should play. A timetable ends with &amp;lt;code&amp;gt;FFFF&amp;lt;/code&amp;gt;. You can make a timetable as complex as you like.&amp;lt;br&amp;gt; Some examples of timetables you can use are:&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0780FFFF&amp;lt;/code&amp;gt; Play a gesture every 16 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C0FFFF&amp;lt;/code&amp;gt; Play a gesture every 8 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;01E0FFFF&amp;lt;/code&amp;gt; Play a gesture every 4 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C003C003C001E001E001E001E003C0FFFF&amp;lt;/code&amp;gt; This sequence will play a gesture every 8 beats (3x), play a gesture every 4 beats (4x), then play a gesture for 8 beats (1x), in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/2 note (every 2 beats).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0078FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/4 note (every beat).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003CFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/8th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;001EFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/16th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003C0078001EFFFF&amp;lt;/code&amp;gt; This sequence will play a gesture for an 1/8th note, play a gesture for a 1/4 note, then play a gesture for a 1/16th note, in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
Considering that &amp;lt;code&amp;gt;001E&amp;lt;/code&amp;gt; (30 in decimal) is a 1/16th note, you can create any specific timing you want. Just add another 30 to the value for each additional sixteenth note in length.&amp;lt;br&amp;gt;&lt;br /&gt;
For example, Soil 1&#039;s enemy mix piano plays very rapidly; its timetable uses a value of 90, which looks like &amp;lt;code&amp;gt;005AFFFF&amp;lt;/code&amp;gt;. The gestures last for three sixteenth notes.&amp;lt;br&amp;gt;&lt;br /&gt;
You can insert your timetables anywhere at the end of your BMS.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_3.png|Each timetable has a pink box around it.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in info ==&lt;br /&gt;
Once you have your gestures and timetables inserted, go back and fill in those &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00CCCC&amp;lt;/code&amp;gt; placeholders with the locations of your gesture sets, timetables, and gestures you want to use. Remember that gesture sets begin with the &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Also in the very beginning of your BMS, make sure the value at &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; has the location of where your gesture set list begins (this one will probably be fine), and the value at &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; has the location of where your timing ruleset list begins.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_4.png|Put the location of where the &amp;quot;timing ruleset list&amp;quot; begins here.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in the conductor file ==&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
In your song&#039;s associated conductor file, try to stretch out the window so that the instrument names are all in the same column if you can, like in the image above.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Each line represents one track. You give each track a instrument (program), and what gesture set and timing ruleset to use.&amp;lt;br&amp;gt;&lt;br /&gt;
The CND infographic above does a good job explaining all the functions, but they&#039;ll be explained again down here.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the top left corner are three important values:&lt;br /&gt;
* The first value is the swing time. &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt; is 1/16th swing, while &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; is 1/8th swing. If your song is below 100bpm, you might want to use &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt;. If its faster, try &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
* The second value is the tempo, in hex.&lt;br /&gt;
* The third value is how many tracks there will be, in hex.&lt;br /&gt;
&lt;br /&gt;
Each column explained:&lt;br /&gt;
* A: Initial delay. How many beats until this track starts running. In the vanilla game, you can notice how some song&#039;s melodies do not immediately begin playing upon the start of level. This is useful for that; ease the listener into the music.&lt;br /&gt;
* B/Q: If set to 1, all gestures will be delayed by an 1/8th note..&lt;br /&gt;
* C: Text string. You can make this say whatever you like. Useful for keeping track of what you want each track to be, like &amp;quot;Lead&amp;quot;, &amp;quot;Trumpet&amp;quot;, &amp;quot;MelodyA&amp;quot;/&amp;quot;MelodyB&amp;quot;, &amp;quot;Bass&amp;quot;, or &amp;quot;Drums&amp;quot;&lt;br /&gt;
* D: Track copy. Select a previous track # to copy the gestures from. If the track its copying plays &amp;quot;gesture 3&amp;quot; from its gesture set, this track will also play its &amp;quot;gesture 3&amp;quot;. Often used for treasure mix instruments. You can have them use different gesture sets if you like.&lt;br /&gt;
* E: Echo strength.&lt;br /&gt;
* F: If set to 1, the values in this track&#039;s timetable will always be played in order, in a loop. If set to 0, it will randomly select values from its timetable, thus, allowing you to randomize when gestures play.&lt;br /&gt;
* G: Bank number.&lt;br /&gt;
* H: Program number. For a list of all programs in the default game and the wScenes that support them, view [[Pikmin 2 custom_music/available instruments|this page]].&lt;br /&gt;
* I: Gesture set, select the set # you want to use from the BMS. &lt;br /&gt;
* J: Timing ruleset, select the set # you want to use from the BMS.&lt;br /&gt;
* K: How many gestures this track will play, before playing &amp;quot;silent gestures&amp;quot;. Linked to below. These function as a sort of on/off cycle.&lt;br /&gt;
* L: How many &amp;quot;silent gestures&amp;quot; this track will play, before playing normal gestures. Linked to above. These function as a sort of on/off cycle.&lt;br /&gt;
* M: If notes are being transposed down (see below), this is set to FF. But this column doesn&#039;t actually do anything, so you don&#039;t need to edit this.&lt;br /&gt;
* N: Transpose all notes played by this track. To transpose up, use values 1-127. To transpose down, use the sign 2 compliment (values 128-255).&lt;br /&gt;
* O: Volume.&lt;br /&gt;
* P: Stereo panning.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas/considerations:&lt;br /&gt;
* You can use the on/off cycle feature (column K and L) to make your melodic instrument &amp;quot;take a break&amp;quot; every once in a while. You can have it play 4 gestures, but then be silent for 2.&lt;br /&gt;
* If your timing ruleset is strict (as in, the timings for when gestures occur is always consistent), something fun to try is to have the melody be a back-and-forth between two different instruments. Set the initial delay for the second instrument to be longer than the first one, and then cleverly use the on/off cycle to have the instruments take turns sounding a gesture. This is done for the melody in the Bulblax Kingdom and Frontier Cavern for example.&lt;br /&gt;
* If you are using the &amp;quot;track copy&amp;quot; feature (column D), you can have the primary instrument play a melody, and have this instrument always play chords that perfectly match that melody.&lt;br /&gt;
&lt;br /&gt;
== Mapping the tracks ==&lt;br /&gt;
With all that done, don&#039;t forget to edit the song&#039;s [[Trackmap parameters|trackMap]]! Edit your song in the trackMap files in either &amp;lt;code&amp;gt;/user/Totaka&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/user/Wakai&amp;lt;/code&amp;gt;, and set how many instruments will be in each mix. It goes in order from: Main Mix, Task (event), Treasure (otakara), Enemy near (kehai), Combat mix, and Spiderwort mix (ground). Although you cannot find Spiderworts underground, you will have to sacrifice at least one track for that mix. You cannot set any of the mixes to have 0 instruments in them.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Filenames for brand new CND files ==&lt;br /&gt;
If you are adding a brand new CND file instead of replacing an existing one, the prefix will determine which BMS is loaded, and which wScene. Try not to add special characters to filenames, aside from underscores.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to load the correct BMS file, the CND must start with the name of the BMS file.&lt;br /&gt;
* &amp;quot;caveconc.cnd&amp;quot;, &amp;quot;caveconc_458435.cnd&amp;quot;, &amp;quot;caveconc_Waffles.cnd&amp;quot;, and &amp;quot;caveconc_Waffles_Song_2.cnd&amp;quot; will all load caveconc.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;caverelax.cnd&amp;quot;, &amp;quot;caverelax_Gmajor.cnd&amp;quot;, and &amp;quot;caverelax_mamuta_dinner.cnd&amp;quot; will all load caverelax.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;new_09_4.cnd&amp;quot;, &amp;quot;new_09_4000.cnd&amp;quot;, and &amp;quot;new_09_portal_PotaTOS.cnd&amp;quot; will load new_09.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For cavesoil, caveconc, and cavemetal only, the game also checks for an additional &amp;quot;_00&amp;quot;, &amp;quot;_05&amp;quot;, and &amp;quot;_10&amp;quot; right after the prefix, for the purpose of loading one of three different wScenes. You must include it if you want the correct wScene to load. For example, caveconc_05 loads wScene 31, so if you want your custom song to also load wScene 31, acceptable names include &amp;quot;caveconc_05_WAFFLES.cnd&amp;quot;, &amp;quot;caveconc_05_52_46356.cnd&amp;quot;, or &amp;quot;caveconc_05_super_boss.cnd&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After adding your new CND file, be sure to add it to its respective trackMap file.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding new content to a vanilla BMS file ==&lt;br /&gt;
Adding new hex data in the middle of a file will shift all the offsets that come after it, causing your BMS to jump to the wrong locations, and likely cause a crash if vanilla songs are loaded.&amp;lt;br&amp;gt;&lt;br /&gt;
In order to add new content in addition to what&#039;s already in the BMS:&lt;br /&gt;
* Find and copy the gesture set list and the timing ruleset list, and paste them at the end of the file. (Separate them with lots of zeros so you have lots more space to add content to these lists)&lt;br /&gt;
* Change &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; to point to your new gesture set list and timing ruleset list. These two values tell the game where the lists are.&lt;br /&gt;
The game should now use these brand new lists, instead of the original instances that occur earlier in the file. Since they still contain all the locations of the vanilla gesture sets/timetables from above in the same order, the existing CND songs won&#039;t be affected and will continue to function, but now you can expand upon these lists with brand new entries now that you&#039;ve made the space for them. All new gestures, gesture sets and timetables can be added further down the file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Editing_vanilla_BMS_file.png|The new gesture set list and timing ruleset list we want to use will be at the bottom.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding gesture cutoffs in timetables ==&lt;br /&gt;
An intentional compositional choice in some songs is to cutoff gestures while they&#039;re in the middle of playing. The most common way this is done is to quickly trigger another gesture; if the last gesture has not finished playing, it will stop playing that gesture and begin playing the new one. It&#039;s also possible to add &amp;quot;empty&amp;quot; gestures to gesture sets (like &amp;lt;code&amp;gt;C40000015DFF&amp;lt;/code&amp;gt;, a gesture which ends immediately and plays nothing), so you can randomly interrupt gestures in your song with silence, or have there be a chance to play nothing.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
However, if you wish to interrupt gestures in your song at specified times without the randomness, there is a special function in timetables for doing this. In the vanilla game, this is used for the trumpet in [https://www.youtube.com/watch?v=qOhmS1YLpF8 Fire]. The trumpet plays two interrupted gestures, then plays a third gesture in full. Below is the timetable for this trumpet:&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;0078 8168 81E0 00F0 80F0 81E0 0780 FFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The trumpet will:&lt;br /&gt;
* &amp;lt;code&amp;gt;0078&amp;lt;/code&amp;gt; play a gesture for 1 beat&lt;br /&gt;
* &amp;lt;code&amp;gt;8168&amp;lt;/code&amp;gt; cutoff after this 1 beat&lt;br /&gt;
* &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; extend the silence for another 4 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0&amp;lt;/code&amp;gt; play a gesture for 2 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;80F0&amp;lt;/code&amp;gt; cutoff after these 2 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; extend the silence for another 4 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;0780&amp;lt;/code&amp;gt; play a gesture for 16 beats.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In order to put a &amp;quot;cutoff&amp;quot; in your timetable:&lt;br /&gt;
* Start with how long you want your &amp;quot;playing&amp;quot; gesture to play for, before it gets cutoff. I want the the first gesture to last for one beat (four 1/16th notes), so I&#039;ll put &amp;lt;code&amp;gt;0078&amp;lt;/code&amp;gt;. Remember that every &amp;quot;30&amp;quot; in decimal is equivalent to a sixteenth note.&lt;br /&gt;
* Immediately next in the sequence will be a value that indicates when the cutoff begins. Calculate the difference between &amp;quot;81E0&amp;quot; and the previous value you had just inserted. 81E0 - 0078 = 8168 (in decimal, 33248 - 120 = 33128). I will put &amp;lt;code&amp;gt;8168&amp;lt;/code&amp;gt; next in my sequence.&lt;br /&gt;
My sequence is now &amp;lt;code&amp;gt;0078 8168 FFFF&amp;lt;/code&amp;gt;; this will play a gesture normally for 1 beat, but then immediately cut it off after that 1 beat.&amp;lt;br&amp;gt;&lt;br /&gt;
Putting an additional &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; in the sequence right after will extend the silence for another 4 beats if you so desire. You can keep putting &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; right after several times in a row if you want silence to last extra long until the next gesture plays.&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_Interactive_BMS_Files&amp;diff=4656</id>
		<title>Creating Interactive BMS Files</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_Interactive_BMS_Files&amp;diff=4656"/>
		<updated>2024-04-18T09:02:28Z</updated>

		<summary type="html">&lt;p&gt;Waffles: /* Missing/dropped notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide will function as a walkthrough for creating interactive music for Pikmin 2&#039;s main areas.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be exporting each track of your MIDI separately as its own BMS file, and importing them one at a time.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
Most of the editing will be done in hexadecimal. Creating [[Creating cave music|cave music]] is very similar.&lt;br /&gt;
&lt;br /&gt;
== Preparing and exporting MIDIs ==&lt;br /&gt;
You will be exporting each track of your song as its own separate MIDI file, and then convert each MIDI into a mini BMS file of its own.&amp;lt;br&amp;gt;&lt;br /&gt;
If your song has 14 instruments, then you&#039;ll export 14 MIDIs. Make sure each track is the same length so that looping will work properly.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some reason, imported BMS files play exactly 4 times as slow in interactive music. So if you import the tracks as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export them, you need to modify them to run 4 times as fast. Do not address this by changing the BPM in your DAW, you need to shorten the actual regions instead. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Logic Pro can easily speed up MIDI regions with MIDI Transform. You want to use the &amp;quot;Double Speed&amp;quot; transformation twice on each entire track.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial5.png|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
(Note: While you *can* technically just multiply the BPM value by 4 in the BMS later on, Louie&#039;s variant is dependent on the BPM being something normal, so the swing will not be applied properly if you do that.)&lt;br /&gt;
&lt;br /&gt;
== Base BMS file ==&lt;br /&gt;
Starting from scratch, here is a base for you to work off of. In a hex editor, copy and paste this into a completely new, blank BMS file:&lt;br /&gt;
&amp;lt;pre&amp;gt;E74000A0 0003AC04 0104AA20 050400B1 C1400005 AC04010A AA200504 00B1C140 0105AC04 0110AA20 050400B1 C1400205 AC040116 AA200504 00B1C140 0305AC04 011CAA20 050400B1 C1400405 AC040122 AA200504 00B1C140 0505AC04 0128AA20 050400B1 C1400605 AC04012E AA200504 00B1C140 0705AC04 0134AA20 050400B1 C1400805 AC04013A AA200504 00B1C140 0905AC04 0140AA20 050400B1 C1400A05 AC040146 AA200504 00B1C140 0B05AC04 014CAA20 050400B1 C1400C05 AC040152 AA200504 00B1C140 0D05AC04 0158AA20 050400B1 C1400E05 AC04015E AA200504 00B1C140 0F05FE00 78FD0066 C8000001 9F884B00 C8000000 E9884B00 C8000000 F98001FF 0002AA00 071E0002 E600075A 00032200 07960003 5E0007D2 00039A00 080E0003 D600084A 00041200 08860004 4E0008C2 00048A00 08F30004 C600093A 00050200 09760005 3E0009B2 00057A00 09EE0005 B6000A2A 0005F200 0A660006 2E000AA2 C600E70E 00DF0700 018AE72E 00CF03C8 0000016E E70E00DF 0700018A E72E00CF 03C80000 0180E71E 00E3E700 00E70F00 DF070001 9BC600E7 1F00E3E7 0E00DF07 0001B9E7 4001C805 000000E7 2E00CF03 C8000001 A7E71E00 E74001C8 050001C5 E3E1C800 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 44617920 76657273 696F6E3A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000042 00004900 00560000 50000000 00000000 00000000 5365713A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000294C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0002D0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00030CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000348C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000384C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0003C0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0003FCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000438C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000474C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0004B0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0004ECC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000528C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000564C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0005A0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0005DCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000618C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 53756E73 65742076 65722E3A 00000020 20202000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000042 00004900 00560000 50000000 00000000 00000000 5365713A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000708C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000744C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000780C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0007BCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008F8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000834C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000870C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008ACC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008E8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000924C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000960C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00099CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0009D8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000A14C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000A50C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00058CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 FF000000 3C2D2028 4E756C6C 20747261 636B2061 74203078 30623034 2C20666F 7220616E 7920656D 70747920 74726163 6B732900 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 76767620 50617374 6520796F 75722073 65717565 6E636573 20686572 65212076 76760000 00000000 00000000 00000000 00000000 00000000 00000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file is setup with all the important information already filled out for you. You should resize the window so that you can see all 16 Day tracks and all 16 Sunset tracks evenly spaced on each line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial1.png|You can use this image as a guide for the &amp;quot;mixer&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section is sort of like a mixer; you can set the volume and stereo panning of each track. More importantly, you also choose the bank and program here.&amp;lt;br&amp;gt;Most importantly, at the end of each track, you select what sequence the track uses. You just type in the offset of the sequence there.&lt;br /&gt;
&lt;br /&gt;
== Importing sequences ==&lt;br /&gt;
=== Converting ===&lt;br /&gt;
Convert all your MIDIs into BMS files with [[Pikmin 2 custom music|flaaffy]]. You can use the following commands in the command line (make sure to include the &amp;quot;-loop&amp;quot; argument in the first command, so it knows to loop the sequence):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mareep.exe mareep -errand jolt -input exampletrack02.midi -output exampletrack02.txt -loop&lt;br /&gt;
mareep.exe mareep -errand cotton -input exampletrack02.txt -output exampletrack02.bms&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Flaaffy turns the MIDI into a text file before it is converted into a BMS. The text file is &amp;quot;cotton&amp;quot;, flaaffy&#039;s assembly language. Viewing the cotton file can be useful for double checking there&#039;s in fact only one track in each of your MIDIs. You will open each BMS file you make with flaaffy, and copy paste the hex data of each into the bottom of the Base BMS. &lt;br /&gt;
&lt;br /&gt;
=== Copying and pasting ===&lt;br /&gt;
In your exported BMS, look for the instance of &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; (if there are multiple, use the last occurrence of it). This A420 is what sets the bank of the sequence, and it will be followed by either a 00, 01, 02, 03, 04, or 05 after it.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to use bank 0, change it to &amp;lt;code&amp;gt;A42000&amp;lt;/code&amp;gt;, if you want to use bank 4, change it to &amp;lt;code&amp;gt;A42004&amp;lt;/code&amp;gt;, and so on.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; and the entire remainder of the file, and paste everything into your Base BMS, anywhere at the bottom of it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=160px heights=160px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial2.png|This is what you should copy. If your track has a lot of notes in it, this can be much longer.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=220px heights=220px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial3.png|This is how you should paste in the sequences.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should paste each converted BMS on a new line, separated by an empty line of zeros so its easy to tell where each sequence begins.&lt;br /&gt;
&lt;br /&gt;
=== Looping ===&lt;br /&gt;
Notice the &amp;lt;code&amp;gt;C80000XXXX&amp;lt;/code&amp;gt; at the very end of the sequence you pasted in (the C80000 will be the same, but the numbers at the end will be different). The &amp;quot;XXXX&amp;quot; tells the sequence where the song loops and should restart at. Change XXXX to be where the sequence starts in the base BMS file. (Ex: do &amp;lt;code&amp;gt;C8000011D4&amp;lt;/code&amp;gt; if the sequence starts at 0x11D4).&lt;br /&gt;
&lt;br /&gt;
== Finishing touches ==&lt;br /&gt;
=== Fill in the mixer ===&lt;br /&gt;
After you have imported all the sequences, have made sure all the &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt;&#039;s have the right bank, and looped them, go back to the Base BMS mixer and fill in the appropriate information. (Bank, program, volume, panning, sequence location.) The &amp;quot;sequence location&amp;quot; will be the offset where each &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; is.&lt;br /&gt;
&lt;br /&gt;
(Note: You do not have to import the same sequence over and over again if there are any identical sequences; you are free to reference the same one sequence and just give them different instruments. This is useful for sunset versions or treasure mix instruments.)&lt;br /&gt;
&lt;br /&gt;
=== Null track ===&lt;br /&gt;
If you don&#039;t want a track to play anything, have it go to the &amp;quot;null track&amp;quot; located at &amp;lt;code&amp;gt;0B04&amp;lt;/code&amp;gt;. (If you look, it&#039;s just a single &amp;quot;FF&amp;quot;, which is a sequence that ends immediately.) This is what each track is set to by default in the provided Base BMS.&lt;br /&gt;
&lt;br /&gt;
=== Tempo ===&lt;br /&gt;
You don&#039;t have to touch anything in the header at the top of the Base BMS, except for changing the BPM. The BPM for your song is located at 0xEA and takes up two bytes. (Ex: &amp;quot;&amp;lt;code&amp;gt;0066&amp;lt;/code&amp;gt;&amp;quot; for 102 BPM).&lt;br /&gt;
&lt;br /&gt;
=== Padding ===&lt;br /&gt;
Add in an extra line of zeros or two at the end of your finished Base BMS, because it sometimes crashes if extra padding is not there.&lt;br /&gt;
&lt;br /&gt;
=== trackMap ===&lt;br /&gt;
Make sure the tracks in the Base BMS mixer go in order: Main -&amp;gt; Task -&amp;gt; Treasure -&amp;gt; Enemy near -&amp;gt; Battle -&amp;gt; Spiderwort. Same for the sunset version.&amp;lt;br&amp;gt;&lt;br /&gt;
Open the sequence trackMap in &amp;lt;code&amp;gt;/user/Wakai/&amp;lt;/code&amp;gt;, find the song you are replacing (forest.bms, last.bms...), and [[Trackmap parameters|edit the values in the trackMap]] to reflect how many instruments will be in each mix. The main and sunset version will use the same mapping. You can make unnecessary tracks silent in the Base BMS&#039;s mixer if your sunset version has less instruments.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Tracks not looping correctly ===&lt;br /&gt;
Make sure each track is exactly the same length. You can export your entire song as one MIDI, convert it to BMS, and import it into the game as an un-interactive BMS file just to check. Flaaffy is finicky with looping occasionally; you may need to add a note at the end or start of a track so flaaffy knows thats the definitive start/end point of that track. (Make the note very quiet, low-pitch, and or short so its practically inaudible.)&lt;br /&gt;
&lt;br /&gt;
=== Tracks not looping at all ===&lt;br /&gt;
Double-check you added the -loop argument in flaaffy. Test with an un-interactive BMS file. Make sure there isn&#039;t any stray information somewhere in your MIDI.&lt;br /&gt;
&lt;br /&gt;
=== Volume/panning/program settings not working ===&lt;br /&gt;
It is possible there is volume automation, panning automation, or program changes somewhere in your MIDI/BMS you have imported. This is something you can add intentionally if you really want to (like changing the program for a track in the middle of the song), but it will override the values you put in the Base BMS mixer.&lt;br /&gt;
&lt;br /&gt;
=== Missing/dropped notes ===&lt;br /&gt;
This is an another issue with flaaffy. If a &amp;quot;Note On&amp;quot; also occurs at the same time a &amp;quot;Note Off&amp;quot; does, or multiple &amp;quot;Note On&amp;quot;s occur at the exact same millisecond, flaaffy&#039;s BMS won&#039;t render those notes. You might run into this often when instruments try to play chords.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The simple fix for flaaffy is to make sure notes of the same pitch do not touch each other (put a tiny bit of empty space between them), and to slightly skew/slant each note in chords.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial4.png|Make sure the notes in a chord don&#039;t occur at the same time.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, JAIMaker does not run into this issue for its BMS conversions. If you decide to use it instead, you will need to be more precise about importing the data from the BMS files into the Base BMS.&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_Interactive_BMS_Files&amp;diff=4655</id>
		<title>Creating Interactive BMS Files</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_Interactive_BMS_Files&amp;diff=4655"/>
		<updated>2024-04-18T09:00:01Z</updated>

		<summary type="html">&lt;p&gt;Waffles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide will function as a walkthrough for creating interactive music for Pikmin 2&#039;s main areas.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be exporting each track of your MIDI separately as its own BMS file, and importing them one at a time.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
Most of the editing will be done in hexadecimal. Creating [[Creating cave music|cave music]] is very similar.&lt;br /&gt;
&lt;br /&gt;
== Preparing and exporting MIDIs ==&lt;br /&gt;
You will be exporting each track of your song as its own separate MIDI file, and then convert each MIDI into a mini BMS file of its own.&amp;lt;br&amp;gt;&lt;br /&gt;
If your song has 14 instruments, then you&#039;ll export 14 MIDIs. Make sure each track is the same length so that looping will work properly.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some reason, imported BMS files play exactly 4 times as slow in interactive music. So if you import the tracks as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export them, you need to modify them to run 4 times as fast. Do not address this by changing the BPM in your DAW, you need to shorten the actual regions instead. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Logic Pro can easily speed up MIDI regions with MIDI Transform. You want to use the &amp;quot;Double Speed&amp;quot; transformation twice on each entire track.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial5.png|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
(Note: While you *can* technically just multiply the BPM value by 4 in the BMS later on, Louie&#039;s variant is dependent on the BPM being something normal, so the swing will not be applied properly if you do that.)&lt;br /&gt;
&lt;br /&gt;
== Base BMS file ==&lt;br /&gt;
Starting from scratch, here is a base for you to work off of. In a hex editor, copy and paste this into a completely new, blank BMS file:&lt;br /&gt;
&amp;lt;pre&amp;gt;E74000A0 0003AC04 0104AA20 050400B1 C1400005 AC04010A AA200504 00B1C140 0105AC04 0110AA20 050400B1 C1400205 AC040116 AA200504 00B1C140 0305AC04 011CAA20 050400B1 C1400405 AC040122 AA200504 00B1C140 0505AC04 0128AA20 050400B1 C1400605 AC04012E AA200504 00B1C140 0705AC04 0134AA20 050400B1 C1400805 AC04013A AA200504 00B1C140 0905AC04 0140AA20 050400B1 C1400A05 AC040146 AA200504 00B1C140 0B05AC04 014CAA20 050400B1 C1400C05 AC040152 AA200504 00B1C140 0D05AC04 0158AA20 050400B1 C1400E05 AC04015E AA200504 00B1C140 0F05FE00 78FD0066 C8000001 9F884B00 C8000000 E9884B00 C8000000 F98001FF 0002AA00 071E0002 E600075A 00032200 07960003 5E0007D2 00039A00 080E0003 D600084A 00041200 08860004 4E0008C2 00048A00 08F30004 C600093A 00050200 09760005 3E0009B2 00057A00 09EE0005 B6000A2A 0005F200 0A660006 2E000AA2 C600E70E 00DF0700 018AE72E 00CF03C8 0000016E E70E00DF 0700018A E72E00CF 03C80000 0180E71E 00E3E700 00E70F00 DF070001 9BC600E7 1F00E3E7 0E00DF07 0001B9E7 4001C805 000000E7 2E00CF03 C8000001 A7E71E00 E74001C8 050001C5 E3E1C800 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 44617920 76657273 696F6E3A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000042 00004900 00560000 50000000 00000000 00000000 5365713A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000294C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0002D0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00030CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000348C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000384C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0003C0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0003FCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000438C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000474C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0004B0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0004ECC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000528C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000564C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0005A0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0005DCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000618C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 53756E73 65742076 65722E3A 00000020 20202000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000042 00004900 00560000 50000000 00000000 00000000 5365713A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000708C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000744C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000780C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0007BCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008F8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000834C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000870C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008ACC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008E8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000924C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000960C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00099CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0009D8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000A14C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000A50C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00058CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 FF000000 3C2D2028 4E756C6C 20747261 636B2061 74203078 30623034 2C20666F 7220616E 7920656D 70747920 74726163 6B732900 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 76767620 50617374 6520796F 75722073 65717565 6E636573 20686572 65212076 76760000 00000000 00000000 00000000 00000000 00000000 00000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file is setup with all the important information already filled out for you. You should resize the window so that you can see all 16 Day tracks and all 16 Sunset tracks evenly spaced on each line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial1.png|You can use this image as a guide for the &amp;quot;mixer&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section is sort of like a mixer; you can set the volume and stereo panning of each track. More importantly, you also choose the bank and program here.&amp;lt;br&amp;gt;Most importantly, at the end of each track, you select what sequence the track uses. You just type in the offset of the sequence there.&lt;br /&gt;
&lt;br /&gt;
== Importing sequences ==&lt;br /&gt;
=== Converting ===&lt;br /&gt;
Convert all your MIDIs into BMS files with [[Pikmin 2 custom music|flaaffy]]. You can use the following commands in the command line (make sure to include the &amp;quot;-loop&amp;quot; argument in the first command, so it knows to loop the sequence):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mareep.exe mareep -errand jolt -input exampletrack02.midi -output exampletrack02.txt -loop&lt;br /&gt;
mareep.exe mareep -errand cotton -input exampletrack02.txt -output exampletrack02.bms&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Flaaffy turns the MIDI into a text file before it is converted into a BMS. The text file is &amp;quot;cotton&amp;quot;, flaaffy&#039;s assembly language. Viewing the cotton file can be useful for double checking there&#039;s in fact only one track in each of your MIDIs. You will open each BMS file you make with flaaffy, and copy paste the hex data of each into the bottom of the Base BMS. &lt;br /&gt;
&lt;br /&gt;
=== Copying and pasting ===&lt;br /&gt;
In your exported BMS, look for the instance of &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; (if there are multiple, use the last occurrence of it). This A420 is what sets the bank of the sequence, and it will be followed by either a 00, 01, 02, 03, 04, or 05 after it.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to use bank 0, change it to &amp;lt;code&amp;gt;A42000&amp;lt;/code&amp;gt;, if you want to use bank 4, change it to &amp;lt;code&amp;gt;A42004&amp;lt;/code&amp;gt;, and so on.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; and the entire remainder of the file, and paste everything into your Base BMS, anywhere at the bottom of it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=160px heights=160px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial2.png|This is what you should copy. If your track has a lot of notes in it, this can be much longer.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=220px heights=220px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial3.png|This is how you should paste in the sequences.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should paste each converted BMS on a new line, separated by an empty line of zeros so its easy to tell where each sequence begins.&lt;br /&gt;
&lt;br /&gt;
=== Looping ===&lt;br /&gt;
Notice the &amp;lt;code&amp;gt;C80000XXXX&amp;lt;/code&amp;gt; at the very end of the sequence you pasted in (the C80000 will be the same, but the numbers at the end will be different). The &amp;quot;XXXX&amp;quot; tells the sequence where the song loops and should restart at. Change XXXX to be where the sequence starts in the base BMS file. (Ex: do &amp;lt;code&amp;gt;C8000011D4&amp;lt;/code&amp;gt; if the sequence starts at 0x11D4).&lt;br /&gt;
&lt;br /&gt;
== Finishing touches ==&lt;br /&gt;
=== Fill in the mixer ===&lt;br /&gt;
After you have imported all the sequences, have made sure all the &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt;&#039;s have the right bank, and looped them, go back to the Base BMS mixer and fill in the appropriate information. (Bank, program, volume, panning, sequence location.) The &amp;quot;sequence location&amp;quot; will be the offset where each &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; is.&lt;br /&gt;
&lt;br /&gt;
(Note: You do not have to import the same sequence over and over again if there are any identical sequences; you are free to reference the same one sequence and just give them different instruments. This is useful for sunset versions or treasure mix instruments.)&lt;br /&gt;
&lt;br /&gt;
=== Null track ===&lt;br /&gt;
If you don&#039;t want a track to play anything, have it go to the &amp;quot;null track&amp;quot; located at &amp;lt;code&amp;gt;0B04&amp;lt;/code&amp;gt;. (If you look, it&#039;s just a single &amp;quot;FF&amp;quot;, which is a sequence that ends immediately.) This is what each track is set to by default in the provided Base BMS.&lt;br /&gt;
&lt;br /&gt;
=== Tempo ===&lt;br /&gt;
You don&#039;t have to touch anything in the header at the top of the Base BMS, except for changing the BPM. The BPM for your song is located at 0xEA and takes up two bytes. (Ex: &amp;quot;&amp;lt;code&amp;gt;0066&amp;lt;/code&amp;gt;&amp;quot; for 102 BPM).&lt;br /&gt;
&lt;br /&gt;
=== Padding ===&lt;br /&gt;
Add in an extra line of zeros or two at the end of your finished Base BMS, because it sometimes crashes if extra padding is not there.&lt;br /&gt;
&lt;br /&gt;
=== trackMap ===&lt;br /&gt;
Make sure the tracks in the Base BMS mixer go in order: Main -&amp;gt; Task -&amp;gt; Treasure -&amp;gt; Enemy near -&amp;gt; Battle -&amp;gt; Spiderwort. Same for the sunset version.&amp;lt;br&amp;gt;&lt;br /&gt;
Open the sequence trackMap in &amp;lt;code&amp;gt;/user/Wakai/&amp;lt;/code&amp;gt;, find the song you are replacing (forest.bms, last.bms...), and [[Trackmap parameters|edit the values in the trackMap]] to reflect how many instruments will be in each mix. The main and sunset version will use the same mapping. You can make unnecessary tracks silent in the Base BMS&#039;s mixer if your sunset version has less instruments.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Tracks not looping correctly ===&lt;br /&gt;
Make sure each track is exactly the same length. You can export your entire song as one MIDI, convert it to BMS, and import it into the game as an un-interactive BMS file just to check. Flaaffy is finicky with looping occasionally; you may need to add a note at the end or start of a track so flaaffy knows thats the definitive start/end point of that track. (Make the note very quiet, low-pitch, and or short so its practically inaudible.)&lt;br /&gt;
&lt;br /&gt;
=== Tracks not looping at all ===&lt;br /&gt;
Double-check you added the -loop argument in flaaffy. Test with an un-interactive BMS file. Make sure there isn&#039;t any stray information somewhere in your MIDI.&lt;br /&gt;
&lt;br /&gt;
=== Volume/panning/program settings not working ===&lt;br /&gt;
It is possible there is volume automation, panning automation, or program changes somewhere in your MIDI/BMS you have imported. This is something you can add intentionally if you really want to (like changing the program for a track in the middle of the song), but it will override the values you put in the Base BMS mixer.&lt;br /&gt;
&lt;br /&gt;
=== Missing/dropped notes ===&lt;br /&gt;
This is an another issue with flaaffy. If a &amp;quot;Note Off&amp;quot; also occurs at the same time a &amp;quot;Note On&amp;quot; does, or multiple &amp;quot;Note On&amp;quot;s occur at the exact same millisecond, flaaffy won&#039;t render these correctly. You might run into this often when instruments try to play chords.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The simple fix for flaaffy is to make sure notes of the same pitch do not touch each other, and to slightly skew or slant the notes of chords.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial4.png|Make sure the notes in a chord don&#039;t occur at the same time.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, JAIMaker does not run into this issue for its BMS conversions. If you decide to use it instead, you will need to be more precise about importing the data from the BMS files into the Base BMS.&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=File:InteractiveBMStutorial5.png.png&amp;diff=4654</id>
		<title>File:InteractiveBMStutorial5.png.png</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=File:InteractiveBMStutorial5.png.png&amp;diff=4654"/>
		<updated>2024-04-18T08:57:18Z</updated>

		<summary type="html">&lt;p&gt;Waffles: Waffles moved page File:InteractiveBMStutorial5.png.png to File:InteractiveBMStutorial5.png: extention mistake&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[File:InteractiveBMStutorial5.png]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=File:InteractiveBMStutorial5.png&amp;diff=4653</id>
		<title>File:InteractiveBMStutorial5.png</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=File:InteractiveBMStutorial5.png&amp;diff=4653"/>
		<updated>2024-04-18T08:57:18Z</updated>

		<summary type="html">&lt;p&gt;Waffles: Waffles moved page File:InteractiveBMStutorial5.png.png to File:InteractiveBMStutorial5.png: extention mistake&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Tutorial for creating interactive BMS.&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=File:InteractiveBMStutorial5.png&amp;diff=4652</id>
		<title>File:InteractiveBMStutorial5.png</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=File:InteractiveBMStutorial5.png&amp;diff=4652"/>
		<updated>2024-04-18T08:56:08Z</updated>

		<summary type="html">&lt;p&gt;Waffles: Tutorial for creating interactive BMS.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Tutorial for creating interactive BMS.&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_Interactive_BMS_Files&amp;diff=4651</id>
		<title>Creating Interactive BMS Files</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_Interactive_BMS_Files&amp;diff=4651"/>
		<updated>2024-04-18T08:43:58Z</updated>

		<summary type="html">&lt;p&gt;Waffles: /* Preparing and exporting MIDIs */ Ah oops&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide will function as a walkthrough for creating interactive music for Pikmin 2&#039;s main areas.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be exporting each track of your MIDI separately as its own BMS file, and importing them one at a time.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
Most of the editing will be done in hexadecimal. Creating [[Creating cave music|cave music]] is very similar.&lt;br /&gt;
&lt;br /&gt;
== Preparing and exporting MIDIs ==&lt;br /&gt;
You will be exporting each track of your song as its own separate MIDI file, and then convert each MIDI into a mini BMS file of its own.&amp;lt;br&amp;gt;&lt;br /&gt;
If your song has 14 instruments, then you&#039;ll export 14 MIDIs. Make sure each track is the same length so that looping will work properly.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some reason, imported BMS files play exactly 4 times as slow in interactive music. So if you import the tracks as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export them, you need to modify them to run 4 times as fast. Do not address this by changing the BPM in your DAW, you need to shorten the actual regions instead. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Logic Pro can easily speed up MIDI regions with MIDI Transform. You want to use the &amp;quot;Double Speed&amp;quot; transformation twice on each entire track.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_pro_double_speed.gif|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
(Note: While you *can* technically just multiply the BPM value by 4 in the BMS later on, Louie&#039;s variant is dependent on the BPM being something normal, so the swing will not be applied properly if you do that.)&lt;br /&gt;
&lt;br /&gt;
== Base BMS file ==&lt;br /&gt;
Starting from scratch, here is a base for you to work off of. In a hex editor, copy and paste this into a completely new, blank BMS file:&lt;br /&gt;
&amp;lt;pre&amp;gt;E74000A0 0003AC04 0104AA20 050400B1 C1400005 AC04010A AA200504 00B1C140 0105AC04 0110AA20 050400B1 C1400205 AC040116 AA200504 00B1C140 0305AC04 011CAA20 050400B1 C1400405 AC040122 AA200504 00B1C140 0505AC04 0128AA20 050400B1 C1400605 AC04012E AA200504 00B1C140 0705AC04 0134AA20 050400B1 C1400805 AC04013A AA200504 00B1C140 0905AC04 0140AA20 050400B1 C1400A05 AC040146 AA200504 00B1C140 0B05AC04 014CAA20 050400B1 C1400C05 AC040152 AA200504 00B1C140 0D05AC04 0158AA20 050400B1 C1400E05 AC04015E AA200504 00B1C140 0F05FE00 78FD0066 C8000001 9F884B00 C8000000 E9884B00 C8000000 F98001FF 0002AA00 071E0002 E600075A 00032200 07960003 5E0007D2 00039A00 080E0003 D600084A 00041200 08860004 4E0008C2 00048A00 08F30004 C600093A 00050200 09760005 3E0009B2 00057A00 09EE0005 B6000A2A 0005F200 0A660006 2E000AA2 C600E70E 00DF0700 018AE72E 00CF03C8 0000016E E70E00DF 0700018A E72E00CF 03C80000 0180E71E 00E3E700 00E70F00 DF070001 9BC600E7 1F00E3E7 0E00DF07 0001B9E7 4001C805 000000E7 2E00CF03 C8000001 A7E71E00 E74001C8 050001C5 E3E1C800 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 44617920 76657273 696F6E3A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000042 00004900 00560000 50000000 00000000 00000000 5365713A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000294C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0002D0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00030CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000348C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000384C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0003C0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0003FCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000438C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000474C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0004B0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0004ECC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000528C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000564C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0005A0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0005DCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000618C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 53756E73 65742076 65722E3A 00000020 20202000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000042 00004900 00560000 50000000 00000000 00000000 5365713A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000708C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000744C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000780C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0007BCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008F8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000834C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000870C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008ACC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008E8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000924C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000960C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00099CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0009D8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000A14C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000A50C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00058CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 FF000000 3C2D2028 4E756C6C 20747261 636B2061 74203078 30623034 2C20666F 7220616E 7920656D 70747920 74726163 6B732900 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 76767620 50617374 6520796F 75722073 65717565 6E636573 20686572 65212076 76760000 00000000 00000000 00000000 00000000 00000000 00000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file is setup with all the important information already filled out for you. You should resize the window so that you can see all 16 Day tracks and all 16 Sunset tracks evenly spaced on each line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial1.png|You can use this image as a guide for the &amp;quot;mixer&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section is sort of like a mixer; you can set the volume and stereo panning of each track. More importantly, you also choose the bank and program here. Most importantly, at the end of each track, you select what sequence the track uses. You just type in the offset of the sequence there.&lt;br /&gt;
&lt;br /&gt;
== Importing sequences ==&lt;br /&gt;
=== Converting ===&lt;br /&gt;
Convert all your MIDIs into BMS files with [[Pikmin 2 custom music|flaaffy]]. You can use the following commands in the command line (make sure to include the &amp;quot;-loop&amp;quot; argument in the first command, so it knows to loop the sequence):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mareep.exe mareep -errand jolt -input exampletrack02.midi -output exampletrack02.txt -loop&lt;br /&gt;
mareep.exe mareep -errand cotton -input exampletrack02.txt -output exampletrack02.bms&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Flaaffy turns the MIDI into a text file before it is converted into a BMS. The text file is &amp;quot;cotton&amp;quot;, flaaffy&#039;s assembly language. Viewing the cotton file can be useful for double checking there&#039;s in fact only one track in each of your MIDIs. You will open each BMS file you make with flaaffy, and copy paste the hex data of each into the bottom of the Base BMS. &lt;br /&gt;
&lt;br /&gt;
=== Copying and pasting ===&lt;br /&gt;
In your exported BMS, look for the instance of &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; (if there are multiple, use the last occurrence of it). This A420 is what sets the bank of the sequence, and it will be followed by either a 00, 01, 02, 03, 04, or 05 after it.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to use bank 0, change it to &amp;lt;code&amp;gt;A42000&amp;lt;/code&amp;gt;, if you want to use bank 4, change it to &amp;lt;code&amp;gt;A42004&amp;lt;/code&amp;gt;, and so on.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; and the entire remainder of the file, and paste everything into your Base BMS, anywhere at the bottom of it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=160px heights=160px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial2.png|This is what you should copy. If your track has a lot of notes in it, this can be much longer.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=220px heights=220px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial3.png|This is how you should paste in the sequences.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should paste each converted BMS on a new line, separated by an empty line of zeros so its easy to tell where each sequence begins.&lt;br /&gt;
&lt;br /&gt;
=== Looping ===&lt;br /&gt;
Notice the &amp;lt;code&amp;gt;C80000XXXX&amp;lt;/code&amp;gt; at the very end of the sequence you pasted in (the C80000 will be the same, but the numbers at the end will be different). The &amp;quot;XXXX&amp;quot; tells the sequence where the song loops and should restart at. Change XXXX to be where the sequence starts in the base BMS file. (Ex: do &amp;lt;code&amp;gt;C8000011D4&amp;lt;/code&amp;gt; if the sequence starts at 0x11D4).&lt;br /&gt;
&lt;br /&gt;
== Finishing touches ==&lt;br /&gt;
=== Fill in the mixer ===&lt;br /&gt;
After you have imported all the sequences, have made sure all the &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt;&#039;s have the right bank, and looped them, go back to the mixer and fill in the appropriate information. (Bank, program, volume, panning, sequence location.) The &amp;quot;sequence location&amp;quot; will be the offset where each &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; is.&lt;br /&gt;
&lt;br /&gt;
(Note: You do not have to import the same sequence over and over again if there are any identical sequences; you are free to reference the same one sequence and just give them different instruments. This is useful for sunset versions or treasure mix instruments.)&lt;br /&gt;
&lt;br /&gt;
=== Null track ===&lt;br /&gt;
If you don&#039;t want a track to play anything, have it go to the &amp;quot;null track&amp;quot; located at &amp;lt;code&amp;gt;0B04&amp;lt;/code&amp;gt;. (If you look, it&#039;s just a single &amp;quot;FF&amp;quot;, which is a sequence that ends immediately.) This is what each track is set to by default in the provided Base BMS.&lt;br /&gt;
&lt;br /&gt;
=== Tempo ===&lt;br /&gt;
You don&#039;t have to touch anything in the header at the top of the Base BMS, except for changing the BPM. The BPM for your song is located at 0xEA and takes up two bytes. (Ex: &amp;quot;&amp;lt;code&amp;gt;0066&amp;lt;/code&amp;gt;&amp;quot; for 102 BPM).&lt;br /&gt;
&lt;br /&gt;
=== Padding ===&lt;br /&gt;
Add in an extra line of zeros or two at the end of your finished Base BMS, because it sometimes crashes if extra padding is not there.&lt;br /&gt;
&lt;br /&gt;
=== trackMap ===&lt;br /&gt;
Make sure the tracks in the mixer go in order: Main -&amp;gt; Task -&amp;gt; Treasure -&amp;gt; Enemy near -&amp;gt; Battle -&amp;gt; Spiderwort. Same for the sunset version.&amp;lt;br&amp;gt;&lt;br /&gt;
Open the sequence trackMap in &amp;lt;code&amp;gt;/user/Wakai/&amp;lt;/code&amp;gt;, find the song you are replacing (forest.bms, last.bms...), and [[Trackmap parameters|edit the values in the trackMap]] to reflect how many instruments will be in each mix. The main and sunset version will use the same mapping. You can make unnecessary tracks silent in the Base BMS&#039;s mixer if your sunset version has less instruments.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Tracks not looping correctly ===&lt;br /&gt;
Make sure each track is exactly the same length. You can export your entire song as one MIDI, convert it to BMS, and import it into the game as an un-interactive BMS file just to check. Flaaffy is finicky with looping occasionally; you may need to add a note at the end or start of a track so flaaffy knows thats the definitive start/end point of that track. (Make the note very quiet, low-pitch, and or short so its practically inaudible.)&lt;br /&gt;
&lt;br /&gt;
=== Tracks not looping at all ===&lt;br /&gt;
Double-check you added the -loop argument in flaaffy. Test with an un-interactive BMS file. Make sure there isn&#039;t any stray information somewhere in your MIDI.&lt;br /&gt;
&lt;br /&gt;
=== Volume/panning/program settings not working ===&lt;br /&gt;
It is possible there is volume automation, panning automation, or program changes somewhere in your MIDI/BMS you have imported. This is something you can add intentionally if you really want to (like changing the program for a track in the middle of the song), but it will override the values you put in the mixer.&lt;br /&gt;
&lt;br /&gt;
=== Missing/dropped notes ===&lt;br /&gt;
This is an another issue with flaaffy. If a &amp;quot;Note Off&amp;quot; also occurs at the same time a &amp;quot;Note On&amp;quot; does, or multiple &amp;quot;Note On&amp;quot;s occur at the exact same millisecond, flaaffy won&#039;t render these correctly. You might run into this often when instruments try to play chords.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The simple fix for flaaffy is to make sure notes of the same pitch do not touch each other, and to slightly skew or slant the notes of chords.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial4.png|Make sure the notes in a chord don&#039;t occur at the same time.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, JAIMaker does not run into this issue for its BMS conversions. If you decide to use it instead, you will need to be more precise about importing the data from the BMS files into the Base BMS.&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_Interactive_BMS_Files&amp;diff=4650</id>
		<title>Creating Interactive BMS Files</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_Interactive_BMS_Files&amp;diff=4650"/>
		<updated>2024-04-18T08:43:19Z</updated>

		<summary type="html">&lt;p&gt;Waffles: /* Preparing and exporting MIDIs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide will function as a walkthrough for creating interactive music for Pikmin 2&#039;s main areas.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be exporting each track of your MIDI separately as its own BMS file, and importing them one at a time.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
Most of the editing will be done in hexadecimal. Creating [[Creating cave music|cave music]] is very similar.&lt;br /&gt;
&lt;br /&gt;
== Preparing and exporting MIDIs ==&lt;br /&gt;
You will be exporting each track of your song as its own separate MIDI file, and then convert each MIDI into a mini BMS file of its own.&amp;lt;br&amp;gt;&lt;br /&gt;
If your song has 14 instruments, then you&#039;ll export 14 MIDIs. Make sure each track is the same length so that looping will work properly.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some reason, imported BMS files play exactly 4 times as slow in interactive music. So if you import the tracks as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export them, you need to modify them to run 4 times as fast. Do not address this by changing the BPM in your DAW, you need to shorten the actual regions instead. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Logic Pro can easily speed up MIDI regions with MIDI Transform. You want to use the &amp;quot;Double Speed&amp;quot; transformation twice on each block.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_pro_double_speed.gif|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
(Note: While you *can* technically just multiply the BPM value by 4 in the BMS later on, Louie&#039;s variant is dependent on the BPM being something normal, so the swing will not be applied properly if you do that.)&lt;br /&gt;
&lt;br /&gt;
== Base BMS file ==&lt;br /&gt;
Starting from scratch, here is a base for you to work off of. In a hex editor, copy and paste this into a completely new, blank BMS file:&lt;br /&gt;
&amp;lt;pre&amp;gt;E74000A0 0003AC04 0104AA20 050400B1 C1400005 AC04010A AA200504 00B1C140 0105AC04 0110AA20 050400B1 C1400205 AC040116 AA200504 00B1C140 0305AC04 011CAA20 050400B1 C1400405 AC040122 AA200504 00B1C140 0505AC04 0128AA20 050400B1 C1400605 AC04012E AA200504 00B1C140 0705AC04 0134AA20 050400B1 C1400805 AC04013A AA200504 00B1C140 0905AC04 0140AA20 050400B1 C1400A05 AC040146 AA200504 00B1C140 0B05AC04 014CAA20 050400B1 C1400C05 AC040152 AA200504 00B1C140 0D05AC04 0158AA20 050400B1 C1400E05 AC04015E AA200504 00B1C140 0F05FE00 78FD0066 C8000001 9F884B00 C8000000 E9884B00 C8000000 F98001FF 0002AA00 071E0002 E600075A 00032200 07960003 5E0007D2 00039A00 080E0003 D600084A 00041200 08860004 4E0008C2 00048A00 08F30004 C600093A 00050200 09760005 3E0009B2 00057A00 09EE0005 B6000A2A 0005F200 0A660006 2E000AA2 C600E70E 00DF0700 018AE72E 00CF03C8 0000016E E70E00DF 0700018A E72E00CF 03C80000 0180E71E 00E3E700 00E70F00 DF070001 9BC600E7 1F00E3E7 0E00DF07 0001B9E7 4001C805 000000E7 2E00CF03 C8000001 A7E71E00 E74001C8 050001C5 E3E1C800 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 44617920 76657273 696F6E3A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000042 00004900 00560000 50000000 00000000 00000000 5365713A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000294C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0002D0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00030CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000348C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000384C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0003C0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0003FCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000438C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000474C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0004B0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0004ECC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000528C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000564C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0005A0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0005DCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000618C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 53756E73 65742076 65722E3A 00000020 20202000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000042 00004900 00560000 50000000 00000000 00000000 5365713A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000708C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000744C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000780C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0007BCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008F8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000834C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000870C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008ACC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008E8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000924C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000960C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00099CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0009D8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000A14C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000A50C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00058CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 FF000000 3C2D2028 4E756C6C 20747261 636B2061 74203078 30623034 2C20666F 7220616E 7920656D 70747920 74726163 6B732900 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 76767620 50617374 6520796F 75722073 65717565 6E636573 20686572 65212076 76760000 00000000 00000000 00000000 00000000 00000000 00000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file is setup with all the important information already filled out for you. You should resize the window so that you can see all 16 Day tracks and all 16 Sunset tracks evenly spaced on each line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial1.png|You can use this image as a guide for the &amp;quot;mixer&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section is sort of like a mixer; you can set the volume and stereo panning of each track. More importantly, you also choose the bank and program here. Most importantly, at the end of each track, you select what sequence the track uses. You just type in the offset of the sequence there.&lt;br /&gt;
&lt;br /&gt;
== Importing sequences ==&lt;br /&gt;
=== Converting ===&lt;br /&gt;
Convert all your MIDIs into BMS files with [[Pikmin 2 custom music|flaaffy]]. You can use the following commands in the command line (make sure to include the &amp;quot;-loop&amp;quot; argument in the first command, so it knows to loop the sequence):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mareep.exe mareep -errand jolt -input exampletrack02.midi -output exampletrack02.txt -loop&lt;br /&gt;
mareep.exe mareep -errand cotton -input exampletrack02.txt -output exampletrack02.bms&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Flaaffy turns the MIDI into a text file before it is converted into a BMS. The text file is &amp;quot;cotton&amp;quot;, flaaffy&#039;s assembly language. Viewing the cotton file can be useful for double checking there&#039;s in fact only one track in each of your MIDIs. You will open each BMS file you make with flaaffy, and copy paste the hex data of each into the bottom of the Base BMS. &lt;br /&gt;
&lt;br /&gt;
=== Copying and pasting ===&lt;br /&gt;
In your exported BMS, look for the instance of &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; (if there are multiple, use the last occurrence of it). This A420 is what sets the bank of the sequence, and it will be followed by either a 00, 01, 02, 03, 04, or 05 after it.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to use bank 0, change it to &amp;lt;code&amp;gt;A42000&amp;lt;/code&amp;gt;, if you want to use bank 4, change it to &amp;lt;code&amp;gt;A42004&amp;lt;/code&amp;gt;, and so on.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; and the entire remainder of the file, and paste everything into your Base BMS, anywhere at the bottom of it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=160px heights=160px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial2.png|This is what you should copy. If your track has a lot of notes in it, this can be much longer.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=220px heights=220px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial3.png|This is how you should paste in the sequences.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should paste each converted BMS on a new line, separated by an empty line of zeros so its easy to tell where each sequence begins.&lt;br /&gt;
&lt;br /&gt;
=== Looping ===&lt;br /&gt;
Notice the &amp;lt;code&amp;gt;C80000XXXX&amp;lt;/code&amp;gt; at the very end of the sequence you pasted in (the C80000 will be the same, but the numbers at the end will be different). The &amp;quot;XXXX&amp;quot; tells the sequence where the song loops and should restart at. Change XXXX to be where the sequence starts in the base BMS file. (Ex: do &amp;lt;code&amp;gt;C8000011D4&amp;lt;/code&amp;gt; if the sequence starts at 0x11D4).&lt;br /&gt;
&lt;br /&gt;
== Finishing touches ==&lt;br /&gt;
=== Fill in the mixer ===&lt;br /&gt;
After you have imported all the sequences, have made sure all the &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt;&#039;s have the right bank, and looped them, go back to the mixer and fill in the appropriate information. (Bank, program, volume, panning, sequence location.) The &amp;quot;sequence location&amp;quot; will be the offset where each &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; is.&lt;br /&gt;
&lt;br /&gt;
(Note: You do not have to import the same sequence over and over again if there are any identical sequences; you are free to reference the same one sequence and just give them different instruments. This is useful for sunset versions or treasure mix instruments.)&lt;br /&gt;
&lt;br /&gt;
=== Null track ===&lt;br /&gt;
If you don&#039;t want a track to play anything, have it go to the &amp;quot;null track&amp;quot; located at &amp;lt;code&amp;gt;0B04&amp;lt;/code&amp;gt;. (If you look, it&#039;s just a single &amp;quot;FF&amp;quot;, which is a sequence that ends immediately.) This is what each track is set to by default in the provided Base BMS.&lt;br /&gt;
&lt;br /&gt;
=== Tempo ===&lt;br /&gt;
You don&#039;t have to touch anything in the header at the top of the Base BMS, except for changing the BPM. The BPM for your song is located at 0xEA and takes up two bytes. (Ex: &amp;quot;&amp;lt;code&amp;gt;0066&amp;lt;/code&amp;gt;&amp;quot; for 102 BPM).&lt;br /&gt;
&lt;br /&gt;
=== Padding ===&lt;br /&gt;
Add in an extra line of zeros or two at the end of your finished Base BMS, because it sometimes crashes if extra padding is not there.&lt;br /&gt;
&lt;br /&gt;
=== trackMap ===&lt;br /&gt;
Make sure the tracks in the mixer go in order: Main -&amp;gt; Task -&amp;gt; Treasure -&amp;gt; Enemy near -&amp;gt; Battle -&amp;gt; Spiderwort. Same for the sunset version.&amp;lt;br&amp;gt;&lt;br /&gt;
Open the sequence trackMap in &amp;lt;code&amp;gt;/user/Wakai/&amp;lt;/code&amp;gt;, find the song you are replacing (forest.bms, last.bms...), and [[Trackmap parameters|edit the values in the trackMap]] to reflect how many instruments will be in each mix. The main and sunset version will use the same mapping. You can make unnecessary tracks silent in the Base BMS&#039;s mixer if your sunset version has less instruments.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Tracks not looping correctly ===&lt;br /&gt;
Make sure each track is exactly the same length. You can export your entire song as one MIDI, convert it to BMS, and import it into the game as an un-interactive BMS file just to check. Flaaffy is finicky with looping occasionally; you may need to add a note at the end or start of a track so flaaffy knows thats the definitive start/end point of that track. (Make the note very quiet, low-pitch, and or short so its practically inaudible.)&lt;br /&gt;
&lt;br /&gt;
=== Tracks not looping at all ===&lt;br /&gt;
Double-check you added the -loop argument in flaaffy. Test with an un-interactive BMS file. Make sure there isn&#039;t any stray information somewhere in your MIDI.&lt;br /&gt;
&lt;br /&gt;
=== Volume/panning/program settings not working ===&lt;br /&gt;
It is possible there is volume automation, panning automation, or program changes somewhere in your MIDI/BMS you have imported. This is something you can add intentionally if you really want to (like changing the program for a track in the middle of the song), but it will override the values you put in the mixer.&lt;br /&gt;
&lt;br /&gt;
=== Missing/dropped notes ===&lt;br /&gt;
This is an another issue with flaaffy. If a &amp;quot;Note Off&amp;quot; also occurs at the same time a &amp;quot;Note On&amp;quot; does, or multiple &amp;quot;Note On&amp;quot;s occur at the exact same millisecond, flaaffy won&#039;t render these correctly. You might run into this often when instruments try to play chords.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The simple fix for flaaffy is to make sure notes of the same pitch do not touch each other, and to slightly skew or slant the notes of chords.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial4.png|Make sure the notes in a chord don&#039;t occur at the same time.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, JAIMaker does not run into this issue for its BMS conversions. If you decide to use it instead, you will need to be more precise about importing the data from the BMS files into the Base BMS.&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_Interactive_BMS_Files&amp;diff=4649</id>
		<title>Creating Interactive BMS Files</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_Interactive_BMS_Files&amp;diff=4649"/>
		<updated>2024-04-18T08:42:12Z</updated>

		<summary type="html">&lt;p&gt;Waffles: /* Preparing and exporting MIDIs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide will function as a walkthrough for creating interactive music for Pikmin 2&#039;s main areas.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be exporting each track of your MIDI separately as its own BMS file, and importing them one at a time.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
Most of the editing will be done in hexadecimal. Creating [[Creating cave music|cave music]] is very similar.&lt;br /&gt;
&lt;br /&gt;
== Preparing and exporting MIDIs ==&lt;br /&gt;
You will be exporting each track of your song as its own separate MIDI file, and then convert each MIDI into a mini BMS file of its own.&amp;lt;br&amp;gt;&lt;br /&gt;
If your song has 14 instruments, then you&#039;ll export 14 MIDIs. Make sure each track is the same length so that looping will work properly.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some reason, imported BMS files play exactly 4 times as slow in interactive music. So if you import the tracks as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export them, you need to modify them to run 4 times as fast. Do not address this by changing the BPM in your DAW, you need to shorten the actual regions instead. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_pro_double_speed.gif|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
(Note: While you *can* technically just multiply the BPM value by 4 in the BMS later on, Louie&#039;s variant is dependent on the BPM being something normal, so the swing will not be applied properly if you do that.)&lt;br /&gt;
&lt;br /&gt;
== Base BMS file ==&lt;br /&gt;
Starting from scratch, here is a base for you to work off of. In a hex editor, copy and paste this into a completely new, blank BMS file:&lt;br /&gt;
&amp;lt;pre&amp;gt;E74000A0 0003AC04 0104AA20 050400B1 C1400005 AC04010A AA200504 00B1C140 0105AC04 0110AA20 050400B1 C1400205 AC040116 AA200504 00B1C140 0305AC04 011CAA20 050400B1 C1400405 AC040122 AA200504 00B1C140 0505AC04 0128AA20 050400B1 C1400605 AC04012E AA200504 00B1C140 0705AC04 0134AA20 050400B1 C1400805 AC04013A AA200504 00B1C140 0905AC04 0140AA20 050400B1 C1400A05 AC040146 AA200504 00B1C140 0B05AC04 014CAA20 050400B1 C1400C05 AC040152 AA200504 00B1C140 0D05AC04 0158AA20 050400B1 C1400E05 AC04015E AA200504 00B1C140 0F05FE00 78FD0066 C8000001 9F884B00 C8000000 E9884B00 C8000000 F98001FF 0002AA00 071E0002 E600075A 00032200 07960003 5E0007D2 00039A00 080E0003 D600084A 00041200 08860004 4E0008C2 00048A00 08F30004 C600093A 00050200 09760005 3E0009B2 00057A00 09EE0005 B6000A2A 0005F200 0A660006 2E000AA2 C600E70E 00DF0700 018AE72E 00CF03C8 0000016E E70E00DF 0700018A E72E00CF 03C80000 0180E71E 00E3E700 00E70F00 DF070001 9BC600E7 1F00E3E7 0E00DF07 0001B9E7 4001C805 000000E7 2E00CF03 C8000001 A7E71E00 E74001C8 050001C5 E3E1C800 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 44617920 76657273 696F6E3A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000042 00004900 00560000 50000000 00000000 00000000 5365713A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000294C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0002D0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00030CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000348C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000384C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0003C0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0003FCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000438C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000474C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0004B0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0004ECC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000528C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000564C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0005A0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0005DCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000618C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 53756E73 65742076 65722E3A 00000020 20202000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000042 00004900 00560000 50000000 00000000 00000000 5365713A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000708C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000744C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000780C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0007BCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008F8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000834C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000870C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008ACC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008E8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000924C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000960C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00099CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0009D8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000A14C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000A50C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00058CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 FF000000 3C2D2028 4E756C6C 20747261 636B2061 74203078 30623034 2C20666F 7220616E 7920656D 70747920 74726163 6B732900 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 76767620 50617374 6520796F 75722073 65717565 6E636573 20686572 65212076 76760000 00000000 00000000 00000000 00000000 00000000 00000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file is setup with all the important information already filled out for you. You should resize the window so that you can see all 16 Day tracks and all 16 Sunset tracks evenly spaced on each line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial1.png|You can use this image as a guide for the &amp;quot;mixer&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section is sort of like a mixer; you can set the volume and stereo panning of each track. More importantly, you also choose the bank and program here. Most importantly, at the end of each track, you select what sequence the track uses. You just type in the offset of the sequence there.&lt;br /&gt;
&lt;br /&gt;
== Importing sequences ==&lt;br /&gt;
=== Converting ===&lt;br /&gt;
Convert all your MIDIs into BMS files with [[Pikmin 2 custom music|flaaffy]]. You can use the following commands in the command line (make sure to include the &amp;quot;-loop&amp;quot; argument in the first command, so it knows to loop the sequence):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mareep.exe mareep -errand jolt -input exampletrack02.midi -output exampletrack02.txt -loop&lt;br /&gt;
mareep.exe mareep -errand cotton -input exampletrack02.txt -output exampletrack02.bms&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Flaaffy turns the MIDI into a text file before it is converted into a BMS. The text file is &amp;quot;cotton&amp;quot;, flaaffy&#039;s assembly language. Viewing the cotton file can be useful for double checking there&#039;s in fact only one track in each of your MIDIs. You will open each BMS file you make with flaaffy, and copy paste the hex data of each into the bottom of the Base BMS. &lt;br /&gt;
&lt;br /&gt;
=== Copying and pasting ===&lt;br /&gt;
In your exported BMS, look for the instance of &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; (if there are multiple, use the last occurrence of it). This A420 is what sets the bank of the sequence, and it will be followed by either a 00, 01, 02, 03, 04, or 05 after it.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to use bank 0, change it to &amp;lt;code&amp;gt;A42000&amp;lt;/code&amp;gt;, if you want to use bank 4, change it to &amp;lt;code&amp;gt;A42004&amp;lt;/code&amp;gt;, and so on.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; and the entire remainder of the file, and paste everything into your Base BMS, anywhere at the bottom of it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=160px heights=160px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial2.png|This is what you should copy. If your track has a lot of notes in it, this can be much longer.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=220px heights=220px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial3.png|This is how you should paste in the sequences.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should paste each converted BMS on a new line, separated by an empty line of zeros so its easy to tell where each sequence begins.&lt;br /&gt;
&lt;br /&gt;
=== Looping ===&lt;br /&gt;
Notice the &amp;lt;code&amp;gt;C80000XXXX&amp;lt;/code&amp;gt; at the very end of the sequence you pasted in (the C80000 will be the same, but the numbers at the end will be different). The &amp;quot;XXXX&amp;quot; tells the sequence where the song loops and should restart at. Change XXXX to be where the sequence starts in the base BMS file. (Ex: do &amp;lt;code&amp;gt;C8000011D4&amp;lt;/code&amp;gt; if the sequence starts at 0x11D4).&lt;br /&gt;
&lt;br /&gt;
== Finishing touches ==&lt;br /&gt;
=== Fill in the mixer ===&lt;br /&gt;
After you have imported all the sequences, have made sure all the &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt;&#039;s have the right bank, and looped them, go back to the mixer and fill in the appropriate information. (Bank, program, volume, panning, sequence location.) The &amp;quot;sequence location&amp;quot; will be the offset where each &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; is.&lt;br /&gt;
&lt;br /&gt;
(Note: You do not have to import the same sequence over and over again if there are any identical sequences; you are free to reference the same one sequence and just give them different instruments. This is useful for sunset versions or treasure mix instruments.)&lt;br /&gt;
&lt;br /&gt;
=== Null track ===&lt;br /&gt;
If you don&#039;t want a track to play anything, have it go to the &amp;quot;null track&amp;quot; located at &amp;lt;code&amp;gt;0B04&amp;lt;/code&amp;gt;. (If you look, it&#039;s just a single &amp;quot;FF&amp;quot;, which is a sequence that ends immediately.) This is what each track is set to by default in the provided Base BMS.&lt;br /&gt;
&lt;br /&gt;
=== Tempo ===&lt;br /&gt;
You don&#039;t have to touch anything in the header at the top of the Base BMS, except for changing the BPM. The BPM for your song is located at 0xEA and takes up two bytes. (Ex: &amp;quot;&amp;lt;code&amp;gt;0066&amp;lt;/code&amp;gt;&amp;quot; for 102 BPM).&lt;br /&gt;
&lt;br /&gt;
=== Padding ===&lt;br /&gt;
Add in an extra line of zeros or two at the end of your finished Base BMS, because it sometimes crashes if extra padding is not there.&lt;br /&gt;
&lt;br /&gt;
=== trackMap ===&lt;br /&gt;
Make sure the tracks in the mixer go in order: Main -&amp;gt; Task -&amp;gt; Treasure -&amp;gt; Enemy near -&amp;gt; Battle -&amp;gt; Spiderwort. Same for the sunset version.&amp;lt;br&amp;gt;&lt;br /&gt;
Open the sequence trackMap in &amp;lt;code&amp;gt;/user/Wakai/&amp;lt;/code&amp;gt;, find the song you are replacing (forest.bms, last.bms...), and [[Trackmap parameters|edit the values in the trackMap]] to reflect how many instruments will be in each mix. The main and sunset version will use the same mapping. You can make unnecessary tracks silent in the Base BMS&#039;s mixer if your sunset version has less instruments.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Tracks not looping correctly ===&lt;br /&gt;
Make sure each track is exactly the same length. You can export your entire song as one MIDI, convert it to BMS, and import it into the game as an un-interactive BMS file just to check. Flaaffy is finicky with looping occasionally; you may need to add a note at the end or start of a track so flaaffy knows thats the definitive start/end point of that track. (Make the note very quiet, low-pitch, and or short so its practically inaudible.)&lt;br /&gt;
&lt;br /&gt;
=== Tracks not looping at all ===&lt;br /&gt;
Double-check you added the -loop argument in flaaffy. Test with an un-interactive BMS file. Make sure there isn&#039;t any stray information somewhere in your MIDI.&lt;br /&gt;
&lt;br /&gt;
=== Volume/panning/program settings not working ===&lt;br /&gt;
It is possible there is volume automation, panning automation, or program changes somewhere in your MIDI/BMS you have imported. This is something you can add intentionally if you really want to (like changing the program for a track in the middle of the song), but it will override the values you put in the mixer.&lt;br /&gt;
&lt;br /&gt;
=== Missing/dropped notes ===&lt;br /&gt;
This is an another issue with flaaffy. If a &amp;quot;Note Off&amp;quot; also occurs at the same time a &amp;quot;Note On&amp;quot; does, or multiple &amp;quot;Note On&amp;quot;s occur at the exact same millisecond, flaaffy won&#039;t render these correctly. You might run into this often when instruments try to play chords.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The simple fix for flaaffy is to make sure notes of the same pitch do not touch each other, and to slightly skew or slant the notes of chords.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial4.png|Make sure the notes in a chord don&#039;t occur at the same time.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, JAIMaker does not run into this issue for its BMS conversions. If you decide to use it instead, you will need to be more precise about importing the data from the BMS files into the Base BMS.&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Main_Page&amp;diff=4648</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Main_Page&amp;diff=4648"/>
		<updated>2024-04-18T08:39:24Z</updated>

		<summary type="html">&lt;p&gt;Waffles: BMS file links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MainTemplate&lt;br /&gt;
| welcome = Welcome to the &#039;&#039;&#039;&#039;&#039;Pikmin&#039;&#039; Technical Knowledge Base&#039;&#039;&#039;!&lt;br /&gt;
| blurb = A wiki dedicated to the internal files in &#039;&#039;Pikmin&#039;&#039; games.&lt;br /&gt;
| about_title = About&lt;br /&gt;
| about_content =&lt;br /&gt;
Throughout the years, &#039;&#039;Pikmin&#039;&#039; fans have tinkered with the files inside the games in order to better learn how they work, and to create custom content. Since there are a lot of nuances in every little thing, and since newcomers to the concept of file editing show up all the time, this wiki was created with the purpose of serving as a knowledge base for all that the fans know!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Partners&#039;&#039;&#039;:&lt;br /&gt;
* [https://pikminwiki.com Pikipedia] - the &#039;&#039;Pikmin&#039;&#039; wiki&lt;br /&gt;
* [https://discord.gg/msMKc3G Pikcord] - the &#039;&#039;Pikmin&#039;&#039; community Discord server&lt;br /&gt;
* [https://discord.gg/G7Pgkdh Hocotate Hacker] - the &#039;&#039;Pikmin&#039;&#039; hacking community Discord server&lt;br /&gt;
| other_title = What this wiki is &#039;&#039;not&#039;&#039;&lt;br /&gt;
| other_content =&lt;br /&gt;
* It&#039;s not a wiki about pirating &#039;&#039;Pikmin&#039;&#039; games.&lt;br /&gt;
* It&#039;s not a file-sharing service.&lt;br /&gt;
* It&#039;s not a wiki where you document...&lt;br /&gt;
** Canon content. Try [https://pikminwiki.com/ Pikipedia] instead.&lt;br /&gt;
** Fan-made content. Try [https://pikminfanon.com/ Pikmin Fanon] instead.&lt;br /&gt;
** Unused content or regional differences. Try [https://tcrf.net TCRF] instead.&lt;br /&gt;
* It&#039;s not an official source of info. The information here is mostly obtained via experimenting, and is subject to change as new discoveries are made.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Global information ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto; width: 75%;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;Global info&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
* [[General instructions]]&lt;br /&gt;
* [[Glossary]]&lt;br /&gt;
* [[Save files]]&lt;br /&gt;
* [[:Category:Tools|Tools]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Game-specific information ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto; width: 75%;&amp;quot;&lt;br /&gt;
! width=&amp;quot;20%;&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;&#039;&#039;Pikmin&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size: 90%;&amp;quot;&amp;gt;(and &#039;&#039;New Play Control! Pikmin&#039;&#039;)&amp;lt;/span&amp;gt;&lt;br /&gt;
! width=&amp;quot;20%;&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;&#039;&#039;Pikmin 2&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size: 90%;&amp;quot;&amp;gt;(and &#039;&#039;New Play Control! Pikmin 2&#039;&#039;)&amp;lt;/span&amp;gt;&lt;br /&gt;
! width=&amp;quot;20%;&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;&#039;&#039;Pikmin 3&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size: 90%;&amp;quot;&amp;gt;(and &#039;&#039;Pikmin 3 Deluxe&#039;&#039;)&amp;lt;/span&amp;gt;&lt;br /&gt;
! width=&amp;quot;20%;&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;&#039;&#039;Hey! Pikmin&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
! width=&amp;quot;20%;&amp;quot; | &amp;lt;span style=&amp;quot;font-size: 150%;&amp;quot;&amp;gt;&#039;&#039;Pikmin 4&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GENERAL&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | General&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin|Main information]]&lt;br /&gt;
* [[Pikmin instructions|Instructions]]&lt;br /&gt;
* [[Pikmin cheat codes|Useful cheat codes]]&lt;br /&gt;
* [[Pikmin memory addresses|Memory addresses]]&lt;br /&gt;
* [[Pikmin glossary|Glossary]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 2|Main information]]&lt;br /&gt;
* [[Pikmin 2 instructions|Instructions]]&lt;br /&gt;
* [[Pikmin 2 cheat codes|Useful cheat codes]]&lt;br /&gt;
* [[Pikmin 2 memory addresses|Memory addresses]]&lt;br /&gt;
* [[Pikmin 2 troubleshooting|Troubleshooting]]&lt;br /&gt;
* [[Pikmin 2 glossary|Glossary]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 3|Main information]]&lt;br /&gt;
* [[Pikmin 3 instructions|Instructions]]&lt;br /&gt;
* [[Pikmin 3 troubleshooting|Troubleshooting]]&lt;br /&gt;
* [[Pikmin 3 glossary|Glossary]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Hey! Pikmin|Main information]]&lt;br /&gt;
* [[Hey! Pikmin instructions|Instructions]]&lt;br /&gt;
* [[Hey! Pikmin troubleshooting|Troubleshooting]]&lt;br /&gt;
* [[Hey! Pikmin glossary|Glossary]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 4|Main information]]&lt;br /&gt;
* [[Pikmin 4 instructions|Instructions]]&lt;br /&gt;
* [[Pikmin 4 troubleshooting|Troubleshooting]]&lt;br /&gt;
* [[Pikmin 4 glossary|Glossary]]&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FILE LISTS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | File lists&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin directory tree|Directory tree]]&lt;br /&gt;
* [[JAM file list|JAM file list (Pikiseq.arc)]]&lt;br /&gt;
* [[STX file list|STX file list]]&lt;br /&gt;
* [[CIN file list|CIN file list]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 2 directory tree|Directory tree]]&lt;br /&gt;
* [[AST file list|AST (streamed music)]]&lt;br /&gt;
* [[Pikmin 2 BMS file list|BMS (sequenced music)]]&lt;br /&gt;
* [[Pikmin 2 CND file list|CND (sequenced music for caves)]]&lt;br /&gt;
* [[Guide_To_Sound_File_Names|List of sound effect files in the first bank]]&lt;br /&gt;
* [[Pikmin 2 cave units information|List of information of each cave unit]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 3 directory tree|&#039;&#039;Pikmin 3&#039;&#039; directory tree]]&lt;br /&gt;
* [[Pikmin 3 Deluxe directory tree|&#039;&#039;Pikmin 3 Deluxe&#039;&#039; directory tree]]&lt;br /&gt;
* [[BFSTM file list|BFSTM (streamed music)]]&lt;br /&gt;
* [[MSBT file list|MSBT (text string)]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Hey! Pikmin directory tree|Directory tree]]&lt;br /&gt;
* [[BCSTM file list|BCSTM (music)]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 4 directory tree|directory tree]]&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CONSTANTS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Constants&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin identifiers|Identifiers]]&lt;br /&gt;
* [[Olimar&#039;s voyage log table]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 2 identifiers|Identifiers]]&lt;br /&gt;
* [[Pikmin 2 Pikmin states|Pikmin states]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 3 identifiers|Identifiers]]&lt;br /&gt;
* [[Pikmin 3 progress value|Progress value]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Hey! Pikmin identifiers|Identifiers]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 4 identifiers|Identifiers]]&lt;br /&gt;
* [[Pikmin 4 text identifiers|Text Identifiers]]&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PARTICLES&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Particle effects&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[PCR particles]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[JPC particles]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[PTCL particles (Pikmin 3)]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[PTCL particles (Hey Pikmin)]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FILE FORMATS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Stage generation&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin binary GEN format|Binary GEN format]]&lt;br /&gt;
* [[Pikmin route|Routes]]&lt;br /&gt;
&lt;br /&gt;
* Outdated pages&lt;br /&gt;
** [[Pikmin area generator file|Generator]]&lt;br /&gt;
** [[Pikmin gen codes|Gen codes]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* Overworld&lt;br /&gt;
** [[Pikmin 2 area generator file|Overworld generation parameters]]&lt;br /&gt;
** [[Pikmin 2 map lighting files|Lighting]]&lt;br /&gt;
** [[Pikmin 2 waterboxes|Waterbox]]&lt;br /&gt;
** [[Pikmin 2 collision format|Collision]]&lt;br /&gt;
* Caves&lt;br /&gt;
** [[Cave generation parameters|Cave generation parameters]]&lt;br /&gt;
** [[Pikmin 2 Challenge Mode settings|Challenge Mode]]&lt;br /&gt;
** [[Pikmin 2 cave lighting files|Lighting]]&lt;br /&gt;
* Units (cave rooms)&lt;br /&gt;
** [[Cave unit generation|Cave unit generation]]&lt;br /&gt;
** [[Cave unit definition file|Cave unit definition]]&lt;br /&gt;
** [[Cave fixed layout|Cave fixed layout]]&lt;br /&gt;
* [[Pikmin 2 route|Routes]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* Teki Units&lt;br /&gt;
** [[NoraSpawner]]&lt;br /&gt;
* [[Save Files]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FILE FORMATS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | File formats&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* Archive Formats&lt;br /&gt;
** [[Paired ARC+DIR file]]&lt;br /&gt;
** [[BUN file]] (also ANM)&lt;br /&gt;
* Binary formats&lt;br /&gt;
** [[MOD file]] (3D Model)&lt;br /&gt;
** [[TXE file]] (Texture)&lt;br /&gt;
** [[BTI file]] (Texture)&lt;br /&gt;
** [[BLO file]] (2D screen data)&lt;br /&gt;
** [[PCR file]] (Particle effect parameters)&lt;br /&gt;
** [[DC? files]] (Identifier for either DCA or DCK)&lt;br /&gt;
*** [[DCA file]] (Animation)&lt;br /&gt;
*** [[DCK file]] (Animation)&lt;br /&gt;
** [[H4M file]] (Pre-rendered video)&lt;br /&gt;
** [[JAM file]] (Sequenced music)&lt;br /&gt;
** [[STX file]] (Streamed music)&lt;br /&gt;
** [[AW file]] (Sound Bank)&lt;br /&gt;
** [[Pikmin parameter files|Parameter Files]]&lt;br /&gt;
* Plaintext Formats&lt;br /&gt;
** [[CIN file]] (Cutscene resource manager)&lt;br /&gt;
** [[DSK file]] (Cutscene data)&lt;br /&gt;
** [[DMD file]] (Intermediary 3D model)&lt;br /&gt;
** [[CNV file]] (Intermediary conversion file)&lt;br /&gt;
* Unknown Formats&lt;br /&gt;
** [[GST file]]&lt;br /&gt;
** [[ACT file]]&lt;br /&gt;
** [[CARD file]]&lt;br /&gt;
* Missing Formats&lt;br /&gt;
** [[DVW file]] (Material file?) &lt;br /&gt;
** [[JMP file]] (Intermediary plaintext 3D model file?)&lt;br /&gt;
** [[MD3 file]] (3D Model)&lt;br /&gt;
** [[BSP flle]] (3D Model)&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* Archive Formats&lt;br /&gt;
** [[SZS file]]&lt;br /&gt;
** [[RARC file]]&lt;br /&gt;
* [[BMD file]] (J3D model)&lt;br /&gt;
* [[BTI file]] (Texture)&lt;br /&gt;
* [[BTK file]] (Animated texture)&lt;br /&gt;
* [[JPC file]] (Particle effect container)&lt;br /&gt;
** [[JPA file]] (Particle effect)&lt;br /&gt;
* [[BCA file]] (Animation)&lt;br /&gt;
* [[BCK file]] (Animation)&lt;br /&gt;
* [[BMS file]] (Sequenced music)&lt;br /&gt;
* [[AST file]] (Streamed music)&lt;br /&gt;
* [[AW file]] (Soundfont)&lt;br /&gt;
* [[THP file]] (Pre-rendered video)&lt;br /&gt;
* [[BLO file]] (2D screen data)&lt;br /&gt;
* [[STB file]] (Cutscene data)&lt;br /&gt;
* [[BMG file]] (Text)&lt;br /&gt;
* [[BPK file]]&lt;br /&gt;
* [[BRK file]]&lt;br /&gt;
* [[BMC file]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Misc.&lt;br /&gt;
** [[DWN file]] (e-Reader minigames?)&lt;br /&gt;
** [[DMD file]] (Intermediary 3D model)&lt;br /&gt;
** [[Pikmin 2 title screen|Title screen]]&lt;br /&gt;
** [[Pikmin 2 save file|Saved game data]]&lt;br /&gt;
** [[2-Player Battle stage parameters]]&lt;br /&gt;
** [[Mail]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
* [[Pikmin 3 radar files|Radar]]&lt;br /&gt;
* [[BFSTM file|BFSTM (streamed music)]]&lt;br /&gt;
* [[MSBT file (Pikmin 3)|MSBT (text string)]]&lt;br /&gt;
* [[FSKB file]] (Unknown)&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
* [[Hey! Pikmin save file|Saved game data]]&lt;br /&gt;
* [[ARC file (Hey! Pikmin)|ARC (archive)]]&lt;br /&gt;
* [[BCH file|BCH (animation)]]&lt;br /&gt;
* [[BFLIM file|BFLIM (image)]]&lt;br /&gt;
* [[MSBT file (Hey! Pikmin)|MSBT (text string)]]&lt;br /&gt;
* [[Z file|Z (archive)]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[WEBM file|WEBM (video)]]&lt;br /&gt;
* [[BNVIB file|BNVIB]]&lt;br /&gt;
* [[UTOC/UCAS file|UTOC/UCAS (Archive for UASSET Files)]]&lt;br /&gt;
* [[UASSET file|UASSET File (Unreal Engine Asset File)]]&lt;br /&gt;
* [[UFONT file|UFONT]]&lt;br /&gt;
* [[LOCRES file|LOCRES]]&lt;br /&gt;
* [[WEM file|WEM]]&lt;br /&gt;
* [[BNK file|BNK]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PARAMETERS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Parameters&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin labeled parameter file|Labeled]]&lt;br /&gt;
** [[Pikmin AI constants|AI constants]]&lt;br /&gt;
** [[Pikmin cunit parameters|Cuint]]&lt;br /&gt;
** [[Pikmin demo parameters|Demo]]&lt;br /&gt;
** [[Pikmin game parameters|Game parameters]]&lt;br /&gt;
** [[Pikmin navi parameters|NaviMgr]]&lt;br /&gt;
** [[Pikmin piki parameters|PikiMgr]]&lt;br /&gt;
** [[Pikmin sound parameters|Sound]]&lt;br /&gt;
** [[Pikmin wave parameters|Wave]]&lt;br /&gt;
** [[Pikmin prefs parameters|Prefs]]&lt;br /&gt;
** [[Pikmin boss parameters|Boss]]&lt;br /&gt;
* [[Pikmin unlabeled parameter file|Unlabeled]]&lt;br /&gt;
** [[Pikmin camera parameters|Camera]]&lt;br /&gt;
** [[Pikmin key parameters|Key]]&lt;br /&gt;
** [[Pikmin enemy parameter file format|Enemy]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[naviParms|Leader]]&lt;br /&gt;
* [[pikiParms|Pikmin]]&lt;br /&gt;
* [[CameraParms|Camera]]&lt;br /&gt;
* [[Pikmin 2 enemy parameters|Entity]]&lt;br /&gt;
* [[Titan Dweevil parameters]]&lt;br /&gt;
* [[Trackmap parameters|trackMap parameters]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[carryParam|Carry]]&lt;br /&gt;
* [[fruitsParam|Fruit]]&lt;br /&gt;
* [[pikminParam|Pikmin]]&lt;br /&gt;
* [[itemprogressParam|Item progress]]&lt;br /&gt;
* [[Mission settings]]&lt;br /&gt;
* [[GameobjectParam|Object]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
* [[ActorSerializeParameter and AI]]&lt;br /&gt;
* [[Data Table/Actor Parameters]]&lt;br /&gt;
* [[Enemy Parameters]]&lt;br /&gt;
* [[ActorGeneratorList]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MANAGERS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Managers&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[BX file]] (Soundfont index)&lt;br /&gt;
* [[Pikmin pellet manager|Pellets]]&lt;br /&gt;
* [[Pikmin anim manager|Animations]]&lt;br /&gt;
* [[Pikmin teki manager|Tekis (DOL)]]&lt;br /&gt;
* [[Pikmin stage manager|Stage manager]]&lt;br /&gt;
* [[Pikmin stage information|Stage information / lighting]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[AAF file]] (Soundfont index)&lt;br /&gt;
* Pellet List&lt;br /&gt;
** [[Pikmin 2 otakara_config.txt|Treasure Config]]&lt;br /&gt;
** [[Pikmin 2 item_config.txt|Item Config]]&lt;br /&gt;
** [[Pikmin 2 otakara_config.txt|Otakara Config]]&lt;br /&gt;
** [[Pikmin 2 carcass_config.txt|Carcass Config]]&lt;br /&gt;
** [[Pikmin 2 numberpellet_config.txt|Number Pellet Config]]&lt;br /&gt;
* [[Pikmin 2 animmgr.txt|Animation Manager]]&lt;br /&gt;
* [[Pikmin 2 collinfo.txt|Collision Info]]&lt;br /&gt;
&lt;br /&gt;
* [[Mail Table]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
EXPLANATIONS AND NOTES&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Explanations and Notes&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin unread files|Unread files]]&lt;br /&gt;
* [[Pikmin disable archives trick|Disable loading from archives]]&lt;br /&gt;
* [[Pikmin Emperor crash|Emperor crash]]&lt;br /&gt;
* [[Minty Ramblings]]&lt;br /&gt;
* [[Custom sequenced Pikmin music|Custom sequenced music]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Cave spawning]]&lt;br /&gt;
* [[Custom models]]&lt;br /&gt;
* [[Submerged Castle oddities|Special cave properties]]&lt;br /&gt;
* [[How Pikmin 2 loads text|How &#039;&#039;Pikmin 2&#039;&#039; loads text]]&lt;br /&gt;
* [[Sound Replacement Tutorial|Sound Replacement Tutorial]]&lt;br /&gt;
* [[Enemy Memory Usage]]&lt;br /&gt;
* [[Disassembly instructions]]&lt;br /&gt;
* [[Jsystem]]&lt;br /&gt;
* [[Pikmin 2 gEnemyInfo|gEnemyInfo]]&lt;br /&gt;
* [[Epoch Notes]]&lt;br /&gt;
* [[Cubes Yap Notes]]&lt;br /&gt;
* [[User:Captain Salty/Blo Editing Notes|Blo Editing Notes]]&lt;br /&gt;
* [[Cutscene Notes]]&lt;br /&gt;
* [[Creating Interactive BMS Files|Creating interactive area music]]&lt;br /&gt;
* [[Creating cave music|Creating interactive cave music]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Pikmin 3 oddities|Oddities]]&lt;br /&gt;
* [[Story mode maps in other modes]]&lt;br /&gt;
* [[Pikmin 3 Bingo Battle|Bingo Battle]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Hey! Pikmin unread files|Unread files]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* Documentation&lt;br /&gt;
** [[Lilith&#039;s P4 Notes]]&lt;br /&gt;
** [[Pikmin 4 Demo Research]]&lt;br /&gt;
* Tutorials&lt;br /&gt;
** [[Model Importing Tutorial]]&lt;br /&gt;
** [[WEM Audio Modding Tutorial]]&lt;br /&gt;
** [[Enemy Duplication Tutorial (WIP)]]&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TOOLS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; | Tools&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[PikBinGen]]&lt;br /&gt;
* [[Archive Toolkit]]&lt;br /&gt;
* [[OpenGL / Dolphin System|OpenGL / Dolphin System]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Cave Creator]]&lt;br /&gt;
* [[Pikmin 2 Routes Editor &amp;amp; Gen Editor]]&lt;br /&gt;
* [[obj2grid]]&lt;br /&gt;
* [[DOL-Ckit]]&lt;br /&gt;
* [[Drought Enders Cave Creator]]&lt;br /&gt;
* [[SuperBMD]]&lt;br /&gt;
* [[pikminBMGtool]]&lt;br /&gt;
* [[btk-conv]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Gen Editor]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[Hey! Pikmin stage viewer]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
* [[P4UassetEditor]]&lt;br /&gt;
* [[Modified FModel]]&lt;br /&gt;
* [[UCas/UToc Packer]]&lt;br /&gt;
* [[Dandori DB]]&lt;br /&gt;
* [[Dandori Desktop]]&lt;br /&gt;
* [[UE4LocalizationsTool]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
* [[:Category:Pages with things to do|Things to do]]&lt;br /&gt;
* [[:Category:Pages with unsure information|Unsure info that needs to be confirmed]]&lt;br /&gt;
&lt;br /&gt;
[[Category:PikminTKB]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_Interactive_BMS_Files&amp;diff=4647</id>
		<title>Creating Interactive BMS Files</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_Interactive_BMS_Files&amp;diff=4647"/>
		<updated>2024-04-18T08:36:36Z</updated>

		<summary type="html">&lt;p&gt;Waffles: extra troubleshooting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide will function as a walkthrough for creating interactive music for Pikmin 2&#039;s main areas.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be exporting each track of your MIDI separately as its own BMS file, and importing them one at a time.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
Most of the editing will be done in hexadecimal. Creating [[Creating cave music|cave music]] is very similar.&lt;br /&gt;
&lt;br /&gt;
== Preparing and exporting MIDIs ==&lt;br /&gt;
You will be exporting each track of your song as its own separate MIDI file, and then convert each MIDI into a mini BMS file of its own.&amp;lt;br&amp;gt;&lt;br /&gt;
If your song has 14 instruments, then you&#039;ll export 14 MIDIs. Make sure each track is the same length so that looping will work properly.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some reason, imported BMS files play exactly 4 times as slow in interactive music. So if you import the tracks as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export them, you need to modify them to run 4 times as fast. Do not address this by changing the BPM in your DAW, you need to shorten the actual notes instead. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_pro_double_speed.gif|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
(Note: While you *can* technically just multiply the BPM value by 4 in the BMS later on, Louie&#039;s variant is dependent on the BPM being something normal, so the swing will not be applied properly if you do that.)&lt;br /&gt;
&lt;br /&gt;
== Base BMS file ==&lt;br /&gt;
Starting from scratch, here is a base for you to work off of. In a hex editor, copy and paste this into a completely new, blank BMS file:&lt;br /&gt;
&amp;lt;pre&amp;gt;E74000A0 0003AC04 0104AA20 050400B1 C1400005 AC04010A AA200504 00B1C140 0105AC04 0110AA20 050400B1 C1400205 AC040116 AA200504 00B1C140 0305AC04 011CAA20 050400B1 C1400405 AC040122 AA200504 00B1C140 0505AC04 0128AA20 050400B1 C1400605 AC04012E AA200504 00B1C140 0705AC04 0134AA20 050400B1 C1400805 AC04013A AA200504 00B1C140 0905AC04 0140AA20 050400B1 C1400A05 AC040146 AA200504 00B1C140 0B05AC04 014CAA20 050400B1 C1400C05 AC040152 AA200504 00B1C140 0D05AC04 0158AA20 050400B1 C1400E05 AC04015E AA200504 00B1C140 0F05FE00 78FD0066 C8000001 9F884B00 C8000000 E9884B00 C8000000 F98001FF 0002AA00 071E0002 E600075A 00032200 07960003 5E0007D2 00039A00 080E0003 D600084A 00041200 08860004 4E0008C2 00048A00 08F30004 C600093A 00050200 09760005 3E0009B2 00057A00 09EE0005 B6000A2A 0005F200 0A660006 2E000AA2 C600E70E 00DF0700 018AE72E 00CF03C8 0000016E E70E00DF 0700018A E72E00CF 03C80000 0180E71E 00E3E700 00E70F00 DF070001 9BC600E7 1F00E3E7 0E00DF07 0001B9E7 4001C805 000000E7 2E00CF03 C8000001 A7E71E00 E74001C8 050001C5 E3E1C800 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 44617920 76657273 696F6E3A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000042 00004900 00560000 50000000 00000000 00000000 5365713A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000294C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0002D0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00030CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000348C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000384C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0003C0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0003FCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000438C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000474C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0004B0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0004ECC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000528C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000564C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0005A0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0005DCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000618C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 53756E73 65742076 65722E3A 00000020 20202000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000042 00004900 00560000 50000000 00000000 00000000 5365713A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000708C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000744C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000780C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0007BCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008F8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000834C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000870C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008ACC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008E8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000924C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000960C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00099CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0009D8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000A14C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000A50C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00058CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 FF000000 3C2D2028 4E756C6C 20747261 636B2061 74203078 30623034 2C20666F 7220616E 7920656D 70747920 74726163 6B732900 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 76767620 50617374 6520796F 75722073 65717565 6E636573 20686572 65212076 76760000 00000000 00000000 00000000 00000000 00000000 00000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file is setup with all the important information already filled out for you. You should resize the window so that you can see all 16 Day tracks and all 16 Sunset tracks evenly spaced on each line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial1.png|You can use this image as a guide for the &amp;quot;mixer&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section is sort of like a mixer; you can set the volume and stereo panning of each track. More importantly, you also choose the bank and program here. Most importantly, at the end of each track, you select what sequence the track uses. You just type in the offset of the sequence there.&lt;br /&gt;
&lt;br /&gt;
== Importing sequences ==&lt;br /&gt;
=== Converting ===&lt;br /&gt;
Convert all your MIDIs into BMS files with [[Pikmin 2 custom music|flaaffy]]. You can use the following commands in the command line (make sure to include the &amp;quot;-loop&amp;quot; argument in the first command, so it knows to loop the sequence):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mareep.exe mareep -errand jolt -input exampletrack02.midi -output exampletrack02.txt -loop&lt;br /&gt;
mareep.exe mareep -errand cotton -input exampletrack02.txt -output exampletrack02.bms&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Flaaffy turns the MIDI into a text file before it is converted into a BMS. The text file is &amp;quot;cotton&amp;quot;, flaaffy&#039;s assembly language. Viewing the cotton file can be useful for double checking there&#039;s in fact only one track in each of your MIDIs. You will open each BMS file you make with flaaffy, and copy paste the hex data of each into the bottom of the Base BMS. &lt;br /&gt;
&lt;br /&gt;
=== Copying and pasting ===&lt;br /&gt;
In your exported BMS, look for the instance of &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; (if there are multiple, use the last occurrence of it). This A420 is what sets the bank of the sequence, and it will be followed by either a 00, 01, 02, 03, 04, or 05 after it.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to use bank 0, change it to &amp;lt;code&amp;gt;A42000&amp;lt;/code&amp;gt;, if you want to use bank 4, change it to &amp;lt;code&amp;gt;A42004&amp;lt;/code&amp;gt;, and so on.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; and the entire remainder of the file, and paste everything into your Base BMS, anywhere at the bottom of it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=160px heights=160px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial2.png|This is what you should copy. If your track has a lot of notes in it, this can be much longer.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=220px heights=220px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial3.png|This is how you should paste in the sequences.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should paste each converted BMS on a new line, separated by an empty line of zeros so its easy to tell where each sequence begins.&lt;br /&gt;
&lt;br /&gt;
=== Looping ===&lt;br /&gt;
Notice the &amp;lt;code&amp;gt;C80000XXXX&amp;lt;/code&amp;gt; at the very end of the sequence you pasted in (the C80000 will be the same, but the numbers at the end will be different). The &amp;quot;XXXX&amp;quot; tells the sequence where the song loops and should restart at. Change XXXX to be where the sequence starts in the base BMS file. (Ex: do &amp;lt;code&amp;gt;C8000011D4&amp;lt;/code&amp;gt; if the sequence starts at 0x11D4).&lt;br /&gt;
&lt;br /&gt;
== Finishing touches ==&lt;br /&gt;
=== Fill in the mixer ===&lt;br /&gt;
After you have imported all the sequences, have made sure all the &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt;&#039;s have the right bank, and looped them, go back to the mixer and fill in the appropriate information. (Bank, program, volume, panning, sequence location.) The &amp;quot;sequence location&amp;quot; will be the offset where each &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; is.&lt;br /&gt;
&lt;br /&gt;
(Note: You do not have to import the same sequence over and over again if there are any identical sequences; you are free to reference the same one sequence and just give them different instruments. This is useful for sunset versions or treasure mix instruments.)&lt;br /&gt;
&lt;br /&gt;
=== Null track ===&lt;br /&gt;
If you don&#039;t want a track to play anything, have it go to the &amp;quot;null track&amp;quot; located at &amp;lt;code&amp;gt;0B04&amp;lt;/code&amp;gt;. (If you look, it&#039;s just a single &amp;quot;FF&amp;quot;, which is a sequence that ends immediately.) This is what each track is set to by default in the provided Base BMS.&lt;br /&gt;
&lt;br /&gt;
=== Tempo ===&lt;br /&gt;
You don&#039;t have to touch anything in the header at the top of the Base BMS, except for changing the BPM. The BPM for your song is located at 0xEA and takes up two bytes. (Ex: &amp;quot;&amp;lt;code&amp;gt;0066&amp;lt;/code&amp;gt;&amp;quot; for 102 BPM).&lt;br /&gt;
&lt;br /&gt;
=== Padding ===&lt;br /&gt;
Add in an extra line of zeros or two at the end of your finished Base BMS, because it sometimes crashes if extra padding is not there.&lt;br /&gt;
&lt;br /&gt;
=== trackMap ===&lt;br /&gt;
Make sure the tracks in the mixer go in order: Main -&amp;gt; Task -&amp;gt; Treasure -&amp;gt; Enemy near -&amp;gt; Battle -&amp;gt; Spiderwort. Same for the sunset version.&amp;lt;br&amp;gt;&lt;br /&gt;
Open the sequence trackMap in &amp;lt;code&amp;gt;/user/Wakai/&amp;lt;/code&amp;gt;, find the song you are replacing (forest.bms, last.bms...), and [[Trackmap parameters|edit the values in the trackMap]] to reflect how many instruments will be in each mix. The main and sunset version will use the same mapping. You can make unnecessary tracks silent in the Base BMS&#039;s mixer if your sunset version has less instruments.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Tracks not looping correctly ===&lt;br /&gt;
Make sure each track is exactly the same length. You can export your entire song as one MIDI, convert it to BMS, and import it into the game as an un-interactive BMS file just to check. Flaaffy is finicky with looping occasionally; you may need to add a note at the end or start of a track so flaaffy knows thats the definitive start/end point of that track. (Make the note very quiet, low-pitch, and or short so its practically inaudible.)&lt;br /&gt;
&lt;br /&gt;
=== Tracks not looping at all ===&lt;br /&gt;
Double-check you added the -loop argument in flaaffy. Test with an un-interactive BMS file. Make sure there isn&#039;t any stray information somewhere in your MIDI.&lt;br /&gt;
&lt;br /&gt;
=== Volume/panning/program settings not working ===&lt;br /&gt;
It is possible there is volume automation, panning automation, or program changes somewhere in your MIDI/BMS you have imported. This is something you can add intentionally if you really want to (like changing the program for a track in the middle of the song), but it will override the values you put in the mixer.&lt;br /&gt;
&lt;br /&gt;
=== Missing/dropped notes ===&lt;br /&gt;
This is an another issue with flaaffy. If a &amp;quot;Note Off&amp;quot; also occurs at the same time a &amp;quot;Note On&amp;quot; does, or multiple &amp;quot;Note On&amp;quot;s occur at the exact same millisecond, flaaffy won&#039;t render these correctly. You might run into this often when instruments try to play chords.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The simple fix for flaaffy is to make sure notes of the same pitch do not touch each other, and to slightly skew or slant the notes of chords.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial4.png|Make sure the notes in a chord don&#039;t occur at the same time.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, JAIMaker does not run into this issue for its BMS conversions. If you decide to use it instead, you will need to be more precise about importing the data from the BMS files into the Base BMS.&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=File:InteractiveBMStutorial4.png&amp;diff=4646</id>
		<title>File:InteractiveBMStutorial4.png</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=File:InteractiveBMStutorial4.png&amp;diff=4646"/>
		<updated>2024-04-18T08:28:54Z</updated>

		<summary type="html">&lt;p&gt;Waffles: Image of flaaffy being kinda silly.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Image of flaaffy being kinda silly.&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_Interactive_BMS_Files&amp;diff=4645</id>
		<title>Creating Interactive BMS Files</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_Interactive_BMS_Files&amp;diff=4645"/>
		<updated>2024-04-18T08:16:04Z</updated>

		<summary type="html">&lt;p&gt;Waffles: Troubleshooting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide will function as a walkthrough for creating interactive music for Pikmin 2&#039;s main areas.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be exporting each track of your MIDI separately as its own BMS file, and importing them one at a time.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
Most of the editing will be done in hexadecimal. Creating [[Creating cave music|cave music]] is very similar.&lt;br /&gt;
&lt;br /&gt;
== Preparing and exporting MIDIs ==&lt;br /&gt;
You will be exporting each track of your song as its own separate MIDI file, and then convert each MIDI into a mini BMS file of its own.&amp;lt;br&amp;gt;&lt;br /&gt;
If your song has 14 instruments, then you&#039;ll export 14 MIDIs. Make sure each track is the same length so that looping will work properly.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some reason, imported BMS files play exactly 4 times as slow in interactive music. So if you import the tracks as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export them, you need to modify them to run 4 times as fast. Do not address this by changing the BPM in your DAW, you need to shorten the actual notes instead. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_pro_double_speed.gif|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
(Note: While you *can* technically just multiply the BPM value by 4 in the BMS later on, Louie&#039;s variant is dependent on the BPM being something normal, so the swing will not be applied properly if you do that.)&lt;br /&gt;
&lt;br /&gt;
== Base BMS file ==&lt;br /&gt;
Starting from scratch, here is a base for you to work off of. In a hex editor, copy and paste this into a completely new, blank BMS file:&lt;br /&gt;
&amp;lt;pre&amp;gt;E74000A0 0003AC04 0104AA20 050400B1 C1400005 AC04010A AA200504 00B1C140 0105AC04 0110AA20 050400B1 C1400205 AC040116 AA200504 00B1C140 0305AC04 011CAA20 050400B1 C1400405 AC040122 AA200504 00B1C140 0505AC04 0128AA20 050400B1 C1400605 AC04012E AA200504 00B1C140 0705AC04 0134AA20 050400B1 C1400805 AC04013A AA200504 00B1C140 0905AC04 0140AA20 050400B1 C1400A05 AC040146 AA200504 00B1C140 0B05AC04 014CAA20 050400B1 C1400C05 AC040152 AA200504 00B1C140 0D05AC04 0158AA20 050400B1 C1400E05 AC04015E AA200504 00B1C140 0F05FE00 78FD0066 C8000001 9F884B00 C8000000 E9884B00 C8000000 F98001FF 0002AA00 071E0002 E600075A 00032200 07960003 5E0007D2 00039A00 080E0003 D600084A 00041200 08860004 4E0008C2 00048A00 08F30004 C600093A 00050200 09760005 3E0009B2 00057A00 09EE0005 B6000A2A 0005F200 0A660006 2E000AA2 C600E70E 00DF0700 018AE72E 00CF03C8 0000016E E70E00DF 0700018A E72E00CF 03C80000 0180E71E 00E3E700 00E70F00 DF070001 9BC600E7 1F00E3E7 0E00DF07 0001B9E7 4001C805 000000E7 2E00CF03 C8000001 A7E71E00 E74001C8 050001C5 E3E1C800 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 44617920 76657273 696F6E3A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000042 00004900 00560000 50000000 00000000 00000000 5365713A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000294C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0002D0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00030CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000348C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000384C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0003C0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0003FCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000438C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000474C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0004B0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0004ECC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000528C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000564C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0005A0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0005DCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000618C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 53756E73 65742076 65722E3A 00000020 20202000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000042 00004900 00560000 50000000 00000000 00000000 5365713A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000708C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000744C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000780C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0007BCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008F8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000834C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000870C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008ACC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008E8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000924C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000960C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00099CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0009D8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000A14C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000A50C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00058CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 FF000000 3C2D2028 4E756C6C 20747261 636B2061 74203078 30623034 2C20666F 7220616E 7920656D 70747920 74726163 6B732900 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 76767620 50617374 6520796F 75722073 65717565 6E636573 20686572 65212076 76760000 00000000 00000000 00000000 00000000 00000000 00000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file is setup with all the important information already filled out for you. You should resize the window so that you can see all 16 Day tracks and all 16 Sunset tracks evenly spaced on each line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial1.png|You can use this image as a guide for the &amp;quot;mixer&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section is sort of like a mixer; you can set the volume and stereo panning of each track. More importantly, you also choose the bank and program here. Most importantly, at the end of each track, you select what sequence the track uses. You just type in the offset of the sequence there.&lt;br /&gt;
&lt;br /&gt;
== Importing sequences ==&lt;br /&gt;
=== Converting ===&lt;br /&gt;
Convert all your MIDIs into BMS files with [[Pikmin 2 custom music|flaaffy]]. You can use the following commands in the command line (make sure to include the &amp;quot;-loop&amp;quot; argument in the first command, so it knows to loop the sequence):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mareep.exe mareep -errand jolt -input exampletrack02.midi -output exampletrack02.txt -loop&lt;br /&gt;
mareep.exe mareep -errand cotton -input exampletrack02.txt -output exampletrack02.bms&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Flaaffy turns the MIDI into a text file before it is converted into a BMS. The text file is &amp;quot;cotton&amp;quot;, flaaffy&#039;s assembly language. Viewing the cotton file can be useful for double checking there&#039;s in fact only one track in each of your MIDIs. You will open each BMS file you make with flaaffy, and copy paste the hex data of each into the bottom of the Base BMS. &lt;br /&gt;
&lt;br /&gt;
=== Copying and pasting ===&lt;br /&gt;
In your exported BMS, look for the instance of &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; (if there are multiple, use the last occurrence of it). This A420 is what sets the bank of the sequence, and it will be followed by either a 00, 01, 02, 03, 04, or 05 after it.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to use bank 0, change it to &amp;lt;code&amp;gt;A42000&amp;lt;/code&amp;gt;, if you want to use bank 4, change it to &amp;lt;code&amp;gt;A42004&amp;lt;/code&amp;gt;, and so on.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; and the entire remainder of the file, and paste everything into your Base BMS, anywhere at the bottom of it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=160px heights=160px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial2.png|This is what you should copy. If your track has a lot of notes in it, this can be much longer.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=220px heights=220px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial3.png|This is how you should paste in the sequences.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should paste each converted BMS on a new line, separated by an empty line of zeros so its easy to tell where each sequence begins.&lt;br /&gt;
&lt;br /&gt;
=== Looping ===&lt;br /&gt;
Notice the &amp;lt;code&amp;gt;C80000XXXX&amp;lt;/code&amp;gt; at the very end of the sequence you pasted in (the C80000 will be the same, but the numbers at the end will be different). The &amp;quot;XXXX&amp;quot; tells the sequence where the song loops and should restart at. Change XXXX to be where the sequence starts in the base BMS file. (Ex: do &amp;lt;code&amp;gt;C8000011D4&amp;lt;/code&amp;gt; if the sequence starts at 0x11D4).&lt;br /&gt;
&lt;br /&gt;
== Finishing touches ==&lt;br /&gt;
=== Fill in the mixer ===&lt;br /&gt;
After you have imported all the sequences, have made sure all the &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt;&#039;s have the right bank, and looped them, go back to the mixer and fill in the appropriate information. (Bank, program, volume, panning, sequence location.) The &amp;quot;sequence location&amp;quot; will be the offset where each &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; is.&lt;br /&gt;
&lt;br /&gt;
(Note: You do not have to import the same sequence over and over again if there are any identical sequences; you are free to reference the same one sequence and just give them different instruments. This is useful for sunset versions or treasure mix instruments.)&lt;br /&gt;
&lt;br /&gt;
=== Null track ===&lt;br /&gt;
If you don&#039;t want a track to play anything, have it go to the &amp;quot;null track&amp;quot; located at &amp;lt;code&amp;gt;0B04&amp;lt;/code&amp;gt;. (If you look, it&#039;s just a single &amp;quot;FF&amp;quot;, which is a sequence that ends immediately.) This is what each track is set to by default in the provided Base BMS.&lt;br /&gt;
&lt;br /&gt;
=== Tempo ===&lt;br /&gt;
You don&#039;t have to touch anything in the header at the top of the Base BMS, except for changing the BPM. The BPM for your song is located at 0xEA and takes up two bytes. (Ex: &amp;quot;&amp;lt;code&amp;gt;0066&amp;lt;/code&amp;gt;&amp;quot; for 102 BPM).&lt;br /&gt;
&lt;br /&gt;
=== Padding ===&lt;br /&gt;
Add in an extra line of zeros or two at the end of your finished Base BMS, because it sometimes crashes if extra padding is not there.&lt;br /&gt;
&lt;br /&gt;
=== trackMap ===&lt;br /&gt;
Make sure the tracks in the mixer go in order: Main -&amp;gt; Task -&amp;gt; Treasure -&amp;gt; Enemy near -&amp;gt; Battle -&amp;gt; Spiderwort. Same for the sunset version.&amp;lt;br&amp;gt;&lt;br /&gt;
Open the sequence trackMap in &amp;lt;code&amp;gt;/user/Wakai/&amp;lt;/code&amp;gt;, find the song you are replacing (forest.bms, last.bms...), and [[Trackmap parameters|edit the values in the trackMap]] to reflect how many instruments will be in each mix. The main and sunset version will use the same mapping. You can make unnecessary tracks silent in your mixer if your sunset version has less instruments.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Tracks not looping correctly ===&lt;br /&gt;
Make sure each track is exactly the same length. You can export your entire song as one MIDI, convert it to BMS, and import it into the game as an un-interactive BMS file just to check. Flaaffy is finicky with looping occasionally; you may need to add a note at the end or start of a track so flaaffy knows thats the definitive start/end of that track. (Make the note very quiet, low-pitch, and or short so its practically inaudible.)&lt;br /&gt;
&lt;br /&gt;
=== Tracks not looping at all ===&lt;br /&gt;
Double-check you added the -loop argument in flaaffy. Test with an un-interactive BMS file. Make sure there isn&#039;t any stray information somewhere in your MIDI.&lt;br /&gt;
&lt;br /&gt;
=== Volume/panning/program settings not working ===&lt;br /&gt;
It is possible there is volume automation, panning automation, or program changes somewhere in your MIDI/BMS you have imported. This is something you can do intentionally if you really want to (like changing the program for a track in the middle of the song), but it will override the values you put in the mixer.&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_Interactive_BMS_Files&amp;diff=4644</id>
		<title>Creating Interactive BMS Files</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_Interactive_BMS_Files&amp;diff=4644"/>
		<updated>2024-04-18T08:05:06Z</updated>

		<summary type="html">&lt;p&gt;Waffles: Major overhaul&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide will function as a walkthrough for creating interactive music for Pikmin 2&#039;s main areas.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be exporting each track of your MIDI separately as its own BMS file, and importing them one at a time.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
Most of the editing will be done in hexadecimal. Creating [[Creating cave music|cave music]] is very similar.&lt;br /&gt;
&lt;br /&gt;
== Preparing and exporting MIDIs ==&lt;br /&gt;
You will be exporting each track of your song as its own separate MIDI file, and then convert each MIDI into a mini BMS file of its own.&amp;lt;br&amp;gt;&lt;br /&gt;
If your song has 14 instruments, then you&#039;ll export 14 MIDIs. Make sure each track is the same length so that looping will work properly.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For some reason, imported BMS files play exactly 4 times as slow in interactive music. So if you import the tracks as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export them, you need to modify them to run 4 times as fast. Do not address this by changing the BPM in your DAW, you need to shorten the actual notes instead. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_pro_double_speed.gif|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
(Note: While you *can* technically just multiply the BPM value by 4 in the BMS later on, Louie&#039;s variant is dependent on the BPM being something normal, so the swing will not be applied properly if you do that.)&lt;br /&gt;
&lt;br /&gt;
== Base BMS file ==&lt;br /&gt;
Starting from scratch, here is a base for you to work off of. In a hex editor, copy and paste this into a completely new, blank BMS file:&lt;br /&gt;
&amp;lt;pre&amp;gt;E74000A0 0003AC04 0104AA20 050400B1 C1400005 AC04010A AA200504 00B1C140 0105AC04 0110AA20 050400B1 C1400205 AC040116 AA200504 00B1C140 0305AC04 011CAA20 050400B1 C1400405 AC040122 AA200504 00B1C140 0505AC04 0128AA20 050400B1 C1400605 AC04012E AA200504 00B1C140 0705AC04 0134AA20 050400B1 C1400805 AC04013A AA200504 00B1C140 0905AC04 0140AA20 050400B1 C1400A05 AC040146 AA200504 00B1C140 0B05AC04 014CAA20 050400B1 C1400C05 AC040152 AA200504 00B1C140 0D05AC04 0158AA20 050400B1 C1400E05 AC04015E AA200504 00B1C140 0F05FE00 78FD0066 C8000001 9F884B00 C8000000 E9884B00 C8000000 F98001FF 0002AA00 071E0002 E600075A 00032200 07960003 5E0007D2 00039A00 080E0003 D600084A 00041200 08860004 4E0008C2 00048A00 08F30004 C600093A 00050200 09760005 3E0009B2 00057A00 09EE0005 B6000A2A 0005F200 0A660006 2E000AA2 C600E70E 00DF0700 018AE72E 00CF03C8 0000016E E70E00DF 0700018A E72E00CF 03C80000 0180E71E 00E3E700 00E70F00 DF070001 9BC600E7 1F00E3E7 0E00DF07 0001B9E7 4001C805 000000E7 2E00CF03 C8000001 A7E71E00 E74001C8 050001C5 E3E1C800 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 44617920 76657273 696F6E3A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000042 00004900 00560000 50000000 00000000 00000000 5365713A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000294C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0002D0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00030CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000348C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000384C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0003C0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0003FCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000438C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000474C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0004B0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0004ECC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000528C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000564C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0005A0C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0005DCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000618C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 53756E73 65742076 65722E3A 00000020 20202000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000042 00004900 00560000 50000000 00000000 00000000 5365713A 00000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000708C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000744C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000780C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0007BCC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008F8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000834C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000870C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008ACC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0008E8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000924C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000960C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00099CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 0009D8C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000A14C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 000A50C8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 C4000001 8EA42004 A4212C98 007F9A03 400AC600 0000C400 00058CC8 00000B04 FF000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 FF000000 3C2D2028 4E756C6C 20747261 636B2061 74203078 30623034 2C20666F 7220616E 7920656D 70747920 74726163 6B732900 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 76767620 50617374 6520796F 75722073 65717565 6E636573 20686572 65212076 76760000 00000000 00000000 00000000 00000000 00000000 00000000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file is setup with all the important information already filled out for you. You should resize the window so that you can see all 16 Day tracks and all 16 Sunset tracks evenly spaced on each line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial1.png|You can use this image as a guide for the &amp;quot;mixer&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section is sort of like a mixer; you can set the volume and stereo panning of each track. More importantly, you also choose the bank and program here. Most importantly, at the end of each track, you select what sequence the track uses. You just type in the offset of the sequence there.&lt;br /&gt;
&lt;br /&gt;
== Importing sequences ==&lt;br /&gt;
=== Converting ===&lt;br /&gt;
Convert all your MIDIs into BMS files with [[Pikmin 2 custom music|flaaffy]]. You can use the following commands in the command line (make sure to include the &amp;quot;-loop&amp;quot; argument in the first command, so it knows to loop the sequence):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mareep.exe mareep -errand jolt -input exampletrack02.midi -output exampletrack02.txt -loop&lt;br /&gt;
mareep.exe mareep -errand cotton -input exampletrack02.txt -output exampletrack02.bms&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Flaaffy turns the MIDI into a text file before it is converted into a BMS. The text file is &amp;quot;cotton&amp;quot;, flaaffy&#039;s assembly language. Viewing the cotton file can be useful for double checking there&#039;s in fact only one track in each of your MIDIs. You will open each BMS file you make with flaaffy, and copy paste the hex data of each into the bottom of the Base BMS. &lt;br /&gt;
&lt;br /&gt;
=== Copying and pasting ===&lt;br /&gt;
In your exported BMS, look for the instance of &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; (if there are multiple, use the last occurrence of it). This A420 is what sets the bank of the sequence, and it will be followed by either a 00, 01, 02, 03, 04, or 05 after it.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to use bank 0, change it to &amp;lt;code&amp;gt;A42000&amp;lt;/code&amp;gt;, if you want to use bank 4, change it to &amp;lt;code&amp;gt;A42004&amp;lt;/code&amp;gt;, and so on.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; and the entire remainder of the file, and paste everything into your Base BMS, anywhere at the bottom of it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=160px heights=160px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial2.png|This is what you should copy. If your track has a lot of notes in it, this can be much longer.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=220px heights=220px&amp;gt;&lt;br /&gt;
File:InteractiveBMStutorial3.png|This is how you should paste in the sequences.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should paste each converted BMS on a new line, separated by an empty line of zeros so its easy to tell where each sequence begins.&lt;br /&gt;
&lt;br /&gt;
=== Looping ===&lt;br /&gt;
Notice the &amp;lt;code&amp;gt;C80000XXXX&amp;lt;/code&amp;gt; at the very end of the sequence you pasted in (the C80000 will be the same, but the numbers at the end will be different). The &amp;quot;XXXX&amp;quot; tells the sequence where the song loops and should restart at. Change XXXX to be where the sequence starts in the base BMS file. (Ex: do &amp;lt;code&amp;gt;C8000011D4&amp;lt;/code&amp;gt; if the sequence starts at 0x11D4).&lt;br /&gt;
&lt;br /&gt;
== Finishing touches ==&lt;br /&gt;
=== Fill in the mixer ===&lt;br /&gt;
After you have imported all the sequences, have made sure all the &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt;&#039;s have the right bank, and looped them, go back to the mixer and fill in the appropriate information. (Bank, program, volume, panning, sequence location.) The &amp;quot;sequence location&amp;quot; will be the offset where each &amp;lt;code&amp;gt;A420&amp;lt;/code&amp;gt; is.&lt;br /&gt;
&lt;br /&gt;
(Note: You do not have to import the same sequence over and over again if there are any identical sequences; you are free to reference the same one sequence and just give them different instruments. This is useful for sunset versions or treasure mix instruments.)&lt;br /&gt;
&lt;br /&gt;
=== Null track ===&lt;br /&gt;
If you don&#039;t want a track to play anything, have it go to the &amp;quot;null track&amp;quot; located at &amp;lt;code&amp;gt;0B04&amp;lt;/code&amp;gt;. (If you look, it&#039;s just a single &amp;quot;FF&amp;quot;, which is a sequence that ends immediately.) This is what each track is set to by default in the Base BMS.&lt;br /&gt;
&lt;br /&gt;
=== Tempo ===&lt;br /&gt;
You don&#039;t have to touch anything in the header at the top of the Base BMS, except for changing the BPM. The BPM for your song is located at 0xEA and takes up two bytes. (Ex: &amp;quot;&amp;lt;code&amp;gt;0066&amp;lt;/code&amp;gt;&amp;quot; for 102 BPM).&lt;br /&gt;
&lt;br /&gt;
=== Padding ===&lt;br /&gt;
Add in an extra line of zeros or two at the end of your finished Base BMS, because it sometimes crashes if extra padding is not there.&lt;br /&gt;
&lt;br /&gt;
=== trackMap ===&lt;br /&gt;
Make sure the tracks in the mixer go in order: Main -&amp;gt; Task -&amp;gt; Treasure -&amp;gt; Enemy near -&amp;gt; Battle -&amp;gt; Spiderwort. Same for the sunset version.&amp;lt;br&amp;gt;&lt;br /&gt;
Open the sequence trackMap in &amp;lt;code&amp;gt;/user/Wakai/&amp;lt;/code&amp;gt;, find the song you are replacing (forest.bms, last.bms...), and [[Trackmap parameters|edit the values in the trackMap]] to reflect how many instruments will be in each mix. The main and sunset version will use the same mapping. You can make unnecessary tracks silent in your mixer if your sunset version has less instruments.&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=File:InteractiveBMStutorial3.png&amp;diff=4643</id>
		<title>File:InteractiveBMStutorial3.png</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=File:InteractiveBMStutorial3.png&amp;diff=4643"/>
		<updated>2024-04-18T07:57:48Z</updated>

		<summary type="html">&lt;p&gt;Waffles: Waffles uploaded a new version of File:InteractiveBMStutorial3.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Tutorial for interactive BMS files.&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=File:InteractiveBMStutorial3.png&amp;diff=4642</id>
		<title>File:InteractiveBMStutorial3.png</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=File:InteractiveBMStutorial3.png&amp;diff=4642"/>
		<updated>2024-04-18T07:41:52Z</updated>

		<summary type="html">&lt;p&gt;Waffles: Tutorial for interactive BMS files.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Tutorial for interactive BMS files.&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=File:InteractiveBMStutorial2.png&amp;diff=4641</id>
		<title>File:InteractiveBMStutorial2.png</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=File:InteractiveBMStutorial2.png&amp;diff=4641"/>
		<updated>2024-04-18T07:41:37Z</updated>

		<summary type="html">&lt;p&gt;Waffles: Tutorial for interactive BMS files.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Tutorial for interactive BMS files.&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=File:InteractiveBMStutorial1.png&amp;diff=4640</id>
		<title>File:InteractiveBMStutorial1.png</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=File:InteractiveBMStutorial1.png&amp;diff=4640"/>
		<updated>2024-04-18T07:31:10Z</updated>

		<summary type="html">&lt;p&gt;Waffles: Tutorial image for the Interactive BMS guide.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Tutorial image for the Interactive BMS guide.&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4639</id>
		<title>Creating cave music</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4639"/>
		<updated>2024-04-16T13:47:01Z</updated>

		<summary type="html">&lt;p&gt;Waffles: /* Bonus: Adding gesture cutoffs in timetables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Randomly generating cave music in Pikmin 2 needs to have two files: a .bms (sequence) file, and a .cnd (conductor) file.&lt;br /&gt;
&lt;br /&gt;
The BMS file type is a sequenced music format used in many games. For the cave music in Pikmin 2 however, it is specially-formatted. It mainly contains many short snippets of musical information to be randomized.&lt;br /&gt;
&lt;br /&gt;
The CND files are the actual &amp;quot;songs&amp;quot;; they take specific groups of snippets from a BMS file, and endlessly puzzle-piece them together to form a coherent piece of music.&lt;br /&gt;
&lt;br /&gt;
This guide will function as a walkthrough for creating your own randomly sequencing cave song. All of the editing will be done in hexadecimal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be generating a lot of tiny BMS files, to turn them into &amp;quot;gestures&amp;quot;.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
== Overview of file functions ==&lt;br /&gt;
Here are some infographics that you can reference at any time. These show all the functions of a CND file, and all the contents of a BMS file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
File:BMS_functions.png|How information is stored in a BMS file.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up your BMS file ==&lt;br /&gt;
Before you begin, set your byte grouping to &amp;quot;3&amp;quot;, so every 3 bytes is visually separated by a space. This will make it easier to see stuff.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Starting with a completely blank BMS file, begin by pasting the following:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Every cave music BMS begins with this same information, and will go mostly untouched.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set list ==&lt;br /&gt;
Exactly right after &amp;lt;code&amp;gt;34C600&amp;lt;/code&amp;gt; will be a list of every gesture set&#039;s location in the BMS. Each entry is the gesture set&#039;s hexadecimal location (offset), and each entry in the sequence begins with &amp;quot;&amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;&amp;quot;. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0001B0 0001BF 0001CE 0001D4 0001DA 0001E9 0001F8 0001FE 000204 00020A FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Gesture set &amp;quot;0&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1B0&amp;lt;/code&amp;gt;, gesture set &amp;quot;1&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1BF&amp;lt;/code&amp;gt;, gesture set &amp;quot;2&amp;quot; will be at &amp;lt;code&amp;gt;0x1CE&amp;lt;/code&amp;gt;, and so on. There are a total of 10 gesture sets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Until we create our gesture sets, let&#039;s use &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt; as placeholders so we can easily find and get back to this section later on. You can have as many gesture sets as you like; we&#039;ll create 16 entries for this tutorial. You may insert this into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our BMS should now currently look like this:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
You can also add an entire row of padding/zeros after this. You can do this for each section, to better visually separate them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing ruleset list ==&lt;br /&gt;
This is another sequence of offsets. These just point to the location of a &amp;quot;[[#Inserting_timetables|timetable]]&amp;quot;, which will be located at the end of our BMS file. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0005AB 0005AB 0005AF 0005C1 0005AB 0005AB 0005C1 0005C1 0005C1 0005C1 FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Timing ruleset &amp;quot;0&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;1&amp;quot; will also use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;2&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AF&amp;lt;/code&amp;gt;, and so on. There are a total of 10 timing rulesets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Let&#039;s use &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt; as placeholders again, and create 16 of them. Insert this anywhere into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set contents ==&lt;br /&gt;
A &#039;&#039;gesture set&#039;&#039; is a group of many gestures.&amp;lt;br&amp;gt;&lt;br /&gt;
Here, we list each gesture set&#039;s contents (which will be... the locations of the gestures!). Each gesture set begins before with &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt; and ends with &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how the gesture set list should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;000210 00022A 000258 000281 FFFFFF 0002B4 0002D9 000303 000331 FFFFFF 000355 FFFFFF 000361 FFFFFF 0003A8 0003C2 0003F0 000419 FFFFFF 00044C 000471 00049B 0004C9 FFFFFF 0004ED FFFFFF 000543 FFFFFF 000580 FFFFFF 00059E FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
There are 10 gesture sets listed above. The first gesture set has 4 gestures, located at &amp;lt;code&amp;gt;0x210&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x22A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x258&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;0x281&amp;lt;/code&amp;gt;. You can have any amount of gestures in a gesture set; even 1 is fine.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You can paste the following placeholder information for now:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It might be a good idea to leave a decent amount of zeros after this list; this one will expand a lot as gestures and gesture sets are added to it.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How is your BMS looking? ==&lt;br /&gt;
If you have been copy-pasting everything correctly, your BMS will look something like this:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=300px heights=300px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_1.png|Orange is &amp;quot;gesture set list&amp;quot;, yellow is &amp;quot;timing ruleset list&amp;quot;, and blue is &amp;quot;gesture set contents&amp;quot;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Once again, you can add as much padding between each section as you want, it will work fine.&lt;br /&gt;
&lt;br /&gt;
== Creating gestures ==&lt;br /&gt;
First, you should sketch out your song idea in your DAW, and then cut your song into tiny blocks. These blocks will be your song&#039;s individual gestures. You should also consider dragging these blocks around in various arrangements to make sure they sound good in any order.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once you are ready, have them nicely organized and ready to be exported into individual MIDI files:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_Pro_gestures.png|A Logic Pro project with a bunch of short blocks of music. Each block will be a &amp;quot;gesture&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
For some reason, imported BMS files play 4 times as slow in cave songs. So if you import these gestures as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export your gestures, you need to modify your gestures to run &#039;&#039;4 times as fast&#039;&#039;. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Logic Pro can easily speed up MIDI regions with MIDI Transform. You want to use the &amp;quot;Double Speed&amp;quot; transformation twice on each block.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_pro_double_speed.gif|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting gestures ==&lt;br /&gt;
Gestures use same the note/music information as standard BMS songs.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should have converted all your MIDIs into BMS files. Open up one of your converted BMS files, and look for the first note/pitch value. If you used [[Pikmin 2 custom music|flaaffy]], this will most likely be somewhere after &amp;lt;code&amp;gt;0x1B&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;0x1D&amp;lt;/code&amp;gt;. The note&#039;s pitch value will often be followed by a &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;, then the velocity value. Copy this note, all the way to the end of the sequence, which should be &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=600px&amp;gt;&lt;br /&gt;
File:Copy_pasting_BMS_info.png|The value &amp;quot;2D&amp;quot; here is the hex value of a certain pitch, and the very first note of the sequence. Copy this, all the way to &amp;quot;FF&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
To add your gesture, start it with &amp;lt;code&amp;gt;C40000015D&amp;lt;/code&amp;gt;, then paste in what you copied. Each gesture should end with that &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;. Add as many gestures as you please!&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_2.png|The purple lines indicate where a gesture starts.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting timetables ==&lt;br /&gt;
So, how do we choose how often gestures will play? Will a gesture play every beat? Every 1/2 a beat? You will need to add a timetable for that!&lt;br /&gt;
A timetable is a sequence that dictates when gestures should play. A timetable ends with &amp;lt;code&amp;gt;FFFF&amp;lt;/code&amp;gt;. You can make a timetable as complex as you like.&amp;lt;br&amp;gt; Some examples of timetables you can use are:&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0780FFFF&amp;lt;/code&amp;gt; Play a gesture every 16 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C0FFFF&amp;lt;/code&amp;gt; Play a gesture every 8 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;01E0FFFF&amp;lt;/code&amp;gt; Play a gesture every 4 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C003C003C001E001E001E001E003C0FFFF&amp;lt;/code&amp;gt; This sequence will play a gesture every 8 beats (3x), play a gesture every 4 beats (4x), then play a gesture for 8 beats (1x), in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/2 note (every 2 beats).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0078FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/4 note (every beat).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003CFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/8th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;001EFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/16th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003C0078001EFFFF&amp;lt;/code&amp;gt; This sequence will play a gesture for an 1/8th note, play a gesture for a 1/4 note, then play a gesture for a 1/16th note, in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
Considering that &amp;lt;code&amp;gt;001E&amp;lt;/code&amp;gt; (30 in decimal) is a 1/16th note, you can create any specific timing you want. Just add another 30 to the value for each additional sixteenth note in length.&amp;lt;br&amp;gt;&lt;br /&gt;
For example, Soil 1&#039;s enemy mix piano plays very rapidly; its timetable uses a value of 90, which looks like &amp;lt;code&amp;gt;005AFFFF&amp;lt;/code&amp;gt;. The gestures last for three sixteenth notes.&amp;lt;br&amp;gt;&lt;br /&gt;
You can insert your timetables anywhere at the end of your BMS.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_3.png|Each timetable has a pink box around it.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in info ==&lt;br /&gt;
Once you have your gestures and timetables inserted, go back and fill in those &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00CCCC&amp;lt;/code&amp;gt; placeholders with the locations of your gesture sets, timetables, and gestures you want to use. Remember that gesture sets begin with the &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Also in the very beginning of your BMS, make sure the value at &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; has the location of where your gesture set list begins (this one will probably be fine), and the value at &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; has the location of where your timing ruleset list begins.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_4.png|Put the location of where the &amp;quot;timing ruleset list&amp;quot; begins here.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in the conductor file ==&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
In your song&#039;s associated conductor file, try to stretch out the window so that the instrument names are all in the same column if you can, like in the image above.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Each line represents one track. You give each track a instrument (program), and what gesture set and timing ruleset to use.&amp;lt;br&amp;gt;&lt;br /&gt;
The CND infographic above does a good job explaining all the functions, but they&#039;ll be explained again down here.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the top left corner are three important values:&lt;br /&gt;
* The first value is the swing time. &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt; is 1/16th swing, while &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; is 1/8th swing. If your song is below 100bpm, you might want to use &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt;. If its faster, try &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
* The second value is the tempo, in hex.&lt;br /&gt;
* The third value is how many tracks there will be, in hex.&lt;br /&gt;
&lt;br /&gt;
Each column explained:&lt;br /&gt;
* A: Initial delay. How many beats until this track starts running. In the vanilla game, you can notice how some song&#039;s melodies do not immediately begin playing upon the start of level. This is useful for that; ease the listener into the music.&lt;br /&gt;
* B/Q: If set to 1, all gestures will be delayed by an 1/8th note..&lt;br /&gt;
* C: Text string. You can make this say whatever you like. Useful for keeping track of what you want each track to be, like &amp;quot;Lead&amp;quot;, &amp;quot;Trumpet&amp;quot;, &amp;quot;MelodyA&amp;quot;/&amp;quot;MelodyB&amp;quot;, &amp;quot;Bass&amp;quot;, or &amp;quot;Drums&amp;quot;&lt;br /&gt;
* D: Track copy. Select a previous track # to copy the gestures from. If the track its copying plays &amp;quot;gesture 3&amp;quot; from its gesture set, this track will also play its &amp;quot;gesture 3&amp;quot;. Often used for treasure mix instruments. You can have them use different gesture sets if you like.&lt;br /&gt;
* E: Echo strength.&lt;br /&gt;
* F: If set to 1, the values in this track&#039;s timetable will always be played in order, in a loop. If set to 0, it will randomly select values from its timetable, thus, allowing you to randomize when gestures play.&lt;br /&gt;
* G: Bank number.&lt;br /&gt;
* H: Program number. For a list of all programs in the default game and the wScenes that support them, view [[Pikmin 2 custom_music/available instruments|this page]].&lt;br /&gt;
* I: Gesture set, select the set # you want to use from the BMS. &lt;br /&gt;
* J: Timing ruleset, select the set # you want to use from the BMS.&lt;br /&gt;
* K: How many gestures this track will play, before playing &amp;quot;silent gestures&amp;quot;. Linked to below. These function as a sort of on/off cycle.&lt;br /&gt;
* L: How many &amp;quot;silent gestures&amp;quot; this track will play, before playing normal gestures. Linked to above. These function as a sort of on/off cycle.&lt;br /&gt;
* M: If notes are being transposed down (see below), this is set to FF. But this column doesn&#039;t actually do anything, so you don&#039;t need to edit this.&lt;br /&gt;
* N: Transpose all notes played by this track. To transpose up, use values 1-127. To transpose down, use the sign 2 compliment (values 128-255).&lt;br /&gt;
* O: Volume.&lt;br /&gt;
* P: Stereo panning.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas/considerations:&lt;br /&gt;
* You can use the on/off cycle feature (column K and L) to make your melodic instrument &amp;quot;take a break&amp;quot; every once in a while. You can have it play 4 gestures, but then be silent for 2.&lt;br /&gt;
* If your timing ruleset is strict (as in, the timings for when gestures occur is always consistent), something fun to try is to have the melody be a back-and-forth between two different instruments. Set the initial delay for the second instrument to be longer than the first one, and then cleverly use the on/off cycle to have the instruments take turns sounding a gesture. This is done for the melody in the Bulblax Kingdom and Frontier Cavern for example.&lt;br /&gt;
* If you are using the &amp;quot;track copy&amp;quot; feature (column D), you can have the primary instrument play a melody, and have this instrument always play chords that perfectly match that melody.&lt;br /&gt;
&lt;br /&gt;
== Mapping the tracks ==&lt;br /&gt;
With all that done, don&#039;t forget to edit the song&#039;s [[Trackmap parameters|trackMap]]! Edit your song in the trackMap files in either &amp;lt;code&amp;gt;/user/Totaka&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/user/Wakai&amp;lt;/code&amp;gt;, and set how many instruments will be in each mix. It goes in order from: Main Mix, Task (event), Treasure (otakara), Enemy near (kehai), Combat mix, and Spiderwort mix (ground). Although you cannot find Spiderworts underground, you will have to sacrifice at least one track for that mix. You cannot set any of the mixes to have 0 instruments in them.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Filenames for brand new CND files ==&lt;br /&gt;
If you are adding a brand new CND file instead of replacing an existing one, the prefix will determine which BMS is loaded, and which wScene. Try not to add special characters to filenames, aside from underscores.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to load the correct BMS file, the CND must start with the name of the BMS file.&lt;br /&gt;
* &amp;quot;caveconc.cnd&amp;quot;, &amp;quot;caveconc_458435.cnd&amp;quot;, &amp;quot;caveconc_Waffles.cnd&amp;quot;, and &amp;quot;caveconc_Waffles_Song_2.cnd&amp;quot; will all load caveconc.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;caverelax.cnd&amp;quot;, &amp;quot;caverelax_Gmajor.cnd&amp;quot;, and &amp;quot;caverelax_mamuta_dinner.cnd&amp;quot; will all load caverelax.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;new_09_4.cnd&amp;quot;, &amp;quot;new_09_4000.cnd&amp;quot;, and &amp;quot;new_09_portal_PotaTOS.cnd&amp;quot; will load new_09.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For cavesoil, caveconc, and cavemetal only, the game also checks for an additional &amp;quot;_00&amp;quot;, &amp;quot;_05&amp;quot;, and &amp;quot;_10&amp;quot; right after the prefix, for the purpose of loading one of three different wScenes. You must include it if you want the correct wScene to load. For example, caveconc_05 loads wScene 31, so if you want your custom song to also load wScene 31, acceptable names include &amp;quot;caveconc_05_WAFFLES.cnd&amp;quot;, &amp;quot;caveconc_05_52_46356.cnd&amp;quot;, or &amp;quot;caveconc_05_super_boss.cnd&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After adding your new CND file, be sure to add it to its respective trackMap file.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding new content to a vanilla BMS file ==&lt;br /&gt;
Adding new hex data in the middle of a file will shift all the offsets that come after it, causing your BMS to jump to the wrong locations, and likely cause a crash if vanilla songs are loaded.&amp;lt;br&amp;gt;&lt;br /&gt;
In order to add new content in addition to what&#039;s already in the BMS:&lt;br /&gt;
* Find and copy the gesture set list and the timing ruleset list, and paste them at the end of the file. (Separate them with lots of zeros so you have lots more space to add content to these lists)&lt;br /&gt;
* Change &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; to point to your new gesture set list and timing ruleset list. These two values tell the game where the lists are.&lt;br /&gt;
The game should now use these brand new lists, instead of the original instances that occur earlier in the file. Since they still contain all the locations of the vanilla gesture sets/timetables from above in the same order, the existing CND songs won&#039;t be affected and will continue to function, but now you can expand upon these lists with brand new entries now that you&#039;ve made the space for them. All new gestures, gesture sets and timetables can be added further down the file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Editing_vanilla_BMS_file.png|The new gesture set list and timing ruleset list we want to use will be at the bottom.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding gesture cutoffs in timetables ==&lt;br /&gt;
An intentional compositional choice in some songs is to cutoff gestures while they&#039;re in the middle of playing. The most common way this is done is to quickly trigger another gesture; if the last gesture has not finished playing, it will stop playing that gesture and begin playing the new one. It&#039;s also possible to add &amp;quot;empty&amp;quot; gestures to gesture sets (like &amp;lt;code&amp;gt;C40000015DFF&amp;lt;/code&amp;gt;, a gesture which ends immediately and plays nothing), so you can randomly interrupt gestures in your song with silence, or have there be a chance to play nothing.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
However, if you wish to interrupt gestures in your song at specified times without the randomness, there is a special function in timetables for doing this. In the vanilla game, this is used for the trumpet in [https://www.youtube.com/watch?v=qOhmS1YLpF8 Fire]. The trumpet plays two interrupted gestures, then plays a third gesture in full. Below is the timetable for this trumpet:&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;0078 8168 81E0 00F0 80F0 81E0 0780 FFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The trumpet will:&lt;br /&gt;
* &amp;lt;code&amp;gt;0078&amp;lt;/code&amp;gt; play a gesture for 1 beat&lt;br /&gt;
* &amp;lt;code&amp;gt;8168&amp;lt;/code&amp;gt; cutoff after this 1 beat&lt;br /&gt;
* &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; extend the silence for another 4 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0&amp;lt;/code&amp;gt; play a gesture for 2 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;80F0&amp;lt;/code&amp;gt; cutoff after these 2 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; extend the silence for another 4 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;0780&amp;lt;/code&amp;gt; play a gesture for 16 beats.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In order to put a &amp;quot;cutoff&amp;quot; in your timetable:&lt;br /&gt;
* Start with how long you want your &amp;quot;playing&amp;quot; gesture to play for, before it gets cutoff. I want the the first gesture to last for one beat (four 1/16th notes), so I&#039;ll put &amp;lt;code&amp;gt;0078&amp;lt;/code&amp;gt;. Remember that every &amp;quot;30&amp;quot; in decimal is equivalent to a sixteenth note.&lt;br /&gt;
* Immediately next in the sequence will be a value that indicates when the cutoff begins. Calculate the difference between &amp;quot;81E0&amp;quot; and the previous value you had just inserted. 81E0 - 0078 = 8168 (in decimal, 33248 - 120 = 33128). I will put &amp;lt;code&amp;gt;8168&amp;lt;/code&amp;gt; next in my sequence.&lt;br /&gt;
My sequence is now &amp;lt;code&amp;gt;0078 8168 FFFF&amp;lt;/code&amp;gt;; this will play a gesture normally for 1 beat, but then immediately cut it off after that 1 beat.&amp;lt;br&amp;gt;&lt;br /&gt;
Putting an additional &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; in the sequence right after will extend the silence for another 4 beats if you so desire. You can keep putting &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; right after several times in a row if you want silence to last extra long until the next gesture plays.&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4638</id>
		<title>Creating cave music</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4638"/>
		<updated>2024-04-16T13:37:21Z</updated>

		<summary type="html">&lt;p&gt;Waffles: /* Inserting gestures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Randomly generating cave music in Pikmin 2 needs to have two files: a .bms (sequence) file, and a .cnd (conductor) file.&lt;br /&gt;
&lt;br /&gt;
The BMS file type is a sequenced music format used in many games. For the cave music in Pikmin 2 however, it is specially-formatted. It mainly contains many short snippets of musical information to be randomized.&lt;br /&gt;
&lt;br /&gt;
The CND files are the actual &amp;quot;songs&amp;quot;; they take specific groups of snippets from a BMS file, and endlessly puzzle-piece them together to form a coherent piece of music.&lt;br /&gt;
&lt;br /&gt;
This guide will function as a walkthrough for creating your own randomly sequencing cave song. All of the editing will be done in hexadecimal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be generating a lot of tiny BMS files, to turn them into &amp;quot;gestures&amp;quot;.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
== Overview of file functions ==&lt;br /&gt;
Here are some infographics that you can reference at any time. These show all the functions of a CND file, and all the contents of a BMS file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
File:BMS_functions.png|How information is stored in a BMS file.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up your BMS file ==&lt;br /&gt;
Before you begin, set your byte grouping to &amp;quot;3&amp;quot;, so every 3 bytes is visually separated by a space. This will make it easier to see stuff.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Starting with a completely blank BMS file, begin by pasting the following:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Every cave music BMS begins with this same information, and will go mostly untouched.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set list ==&lt;br /&gt;
Exactly right after &amp;lt;code&amp;gt;34C600&amp;lt;/code&amp;gt; will be a list of every gesture set&#039;s location in the BMS. Each entry is the gesture set&#039;s hexadecimal location (offset), and each entry in the sequence begins with &amp;quot;&amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;&amp;quot;. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0001B0 0001BF 0001CE 0001D4 0001DA 0001E9 0001F8 0001FE 000204 00020A FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Gesture set &amp;quot;0&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1B0&amp;lt;/code&amp;gt;, gesture set &amp;quot;1&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1BF&amp;lt;/code&amp;gt;, gesture set &amp;quot;2&amp;quot; will be at &amp;lt;code&amp;gt;0x1CE&amp;lt;/code&amp;gt;, and so on. There are a total of 10 gesture sets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Until we create our gesture sets, let&#039;s use &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt; as placeholders so we can easily find and get back to this section later on. You can have as many gesture sets as you like; we&#039;ll create 16 entries for this tutorial. You may insert this into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our BMS should now currently look like this:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
You can also add an entire row of padding/zeros after this. You can do this for each section, to better visually separate them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing ruleset list ==&lt;br /&gt;
This is another sequence of offsets. These just point to the location of a &amp;quot;[[#Inserting_timetables|timetable]]&amp;quot;, which will be located at the end of our BMS file. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0005AB 0005AB 0005AF 0005C1 0005AB 0005AB 0005C1 0005C1 0005C1 0005C1 FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Timing ruleset &amp;quot;0&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;1&amp;quot; will also use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;2&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AF&amp;lt;/code&amp;gt;, and so on. There are a total of 10 timing rulesets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Let&#039;s use &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt; as placeholders again, and create 16 of them. Insert this anywhere into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set contents ==&lt;br /&gt;
A &#039;&#039;gesture set&#039;&#039; is a group of many gestures.&amp;lt;br&amp;gt;&lt;br /&gt;
Here, we list each gesture set&#039;s contents (which will be... the locations of the gestures!). Each gesture set begins before with &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt; and ends with &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how the gesture set list should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;000210 00022A 000258 000281 FFFFFF 0002B4 0002D9 000303 000331 FFFFFF 000355 FFFFFF 000361 FFFFFF 0003A8 0003C2 0003F0 000419 FFFFFF 00044C 000471 00049B 0004C9 FFFFFF 0004ED FFFFFF 000543 FFFFFF 000580 FFFFFF 00059E FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
There are 10 gesture sets listed above. The first gesture set has 4 gestures, located at &amp;lt;code&amp;gt;0x210&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x22A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x258&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;0x281&amp;lt;/code&amp;gt;. You can have any amount of gestures in a gesture set; even 1 is fine.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You can paste the following placeholder information for now:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It might be a good idea to leave a decent amount of zeros after this list; this one will expand a lot as gestures and gesture sets are added to it.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How is your BMS looking? ==&lt;br /&gt;
If you have been copy-pasting everything correctly, your BMS will look something like this:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=300px heights=300px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_1.png|Orange is &amp;quot;gesture set list&amp;quot;, yellow is &amp;quot;timing ruleset list&amp;quot;, and blue is &amp;quot;gesture set contents&amp;quot;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Once again, you can add as much padding between each section as you want, it will work fine.&lt;br /&gt;
&lt;br /&gt;
== Creating gestures ==&lt;br /&gt;
First, you should sketch out your song idea in your DAW, and then cut your song into tiny blocks. These blocks will be your song&#039;s individual gestures. You should also consider dragging these blocks around in various arrangements to make sure they sound good in any order.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once you are ready, have them nicely organized and ready to be exported into individual MIDI files:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_Pro_gestures.png|A Logic Pro project with a bunch of short blocks of music. Each block will be a &amp;quot;gesture&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
For some reason, imported BMS files play 4 times as slow in cave songs. So if you import these gestures as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export your gestures, you need to modify your gestures to run &#039;&#039;4 times as fast&#039;&#039;. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Logic Pro can easily speed up MIDI regions with MIDI Transform. You want to use the &amp;quot;Double Speed&amp;quot; transformation twice on each block.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_pro_double_speed.gif|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting gestures ==&lt;br /&gt;
Gestures use same the note/music information as standard BMS songs.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should have converted all your MIDIs into BMS files. Open up one of your converted BMS files, and look for the first note/pitch value. If you used [[Pikmin 2 custom music|flaaffy]], this will most likely be somewhere after &amp;lt;code&amp;gt;0x1B&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;0x1D&amp;lt;/code&amp;gt;. The note&#039;s pitch value will often be followed by a &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;, then the velocity value. Copy this note, all the way to the end of the sequence, which should be &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=600px&amp;gt;&lt;br /&gt;
File:Copy_pasting_BMS_info.png|The value &amp;quot;2D&amp;quot; here is the hex value of a certain pitch, and the very first note of the sequence. Copy this, all the way to &amp;quot;FF&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
To add your gesture, start it with &amp;lt;code&amp;gt;C40000015D&amp;lt;/code&amp;gt;, then paste in what you copied. Each gesture should end with that &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;. Add as many gestures as you please!&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_2.png|The purple lines indicate where a gesture starts.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting timetables ==&lt;br /&gt;
So, how do we choose how often gestures will play? Will a gesture play every beat? Every 1/2 a beat? You will need to add a timetable for that!&lt;br /&gt;
A timetable is a sequence that dictates when gestures should play. A timetable ends with &amp;lt;code&amp;gt;FFFF&amp;lt;/code&amp;gt;. You can make a timetable as complex as you like.&amp;lt;br&amp;gt; Some examples of timetables you can use are:&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0780FFFF&amp;lt;/code&amp;gt; Play a gesture every 16 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C0FFFF&amp;lt;/code&amp;gt; Play a gesture every 8 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;01E0FFFF&amp;lt;/code&amp;gt; Play a gesture every 4 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C003C003C001E001E001E001E003C0FFFF&amp;lt;/code&amp;gt; This sequence will play a gesture every 8 beats (3x), play a gesture every 4 beats (4x), then play a gesture for 8 beats (1x), in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/2 note (every 2 beats).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0078FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/4 note (every beat).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003CFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/8th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;001EFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/16th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003C0078001EFFFF&amp;lt;/code&amp;gt; This sequence will play a gesture for an 1/8th note, play a gesture for a 1/4 note, then play a gesture for a 1/16th note, in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
Considering that &amp;lt;code&amp;gt;001E&amp;lt;/code&amp;gt; (30 in decimal) is a 1/16th note, you can create any specific timing you want. Just add another 30 to the value for each additional sixteenth note in length.&amp;lt;br&amp;gt;&lt;br /&gt;
For example, Soil 1&#039;s enemy mix piano plays very rapidly; its timetable uses a value of 90, which looks like &amp;lt;code&amp;gt;005AFFFF&amp;lt;/code&amp;gt;. The gestures last for three sixteenth notes.&amp;lt;br&amp;gt;&lt;br /&gt;
You can insert your timetables anywhere at the end of your BMS.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_3.png|Each timetable has a pink box around it.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in info ==&lt;br /&gt;
Once you have your gestures and timetables inserted, go back and fill in those &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00CCCC&amp;lt;/code&amp;gt; placeholders with the locations of your gesture sets, timetables, and gestures you want to use. Remember that gesture sets begin with the &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Also in the very beginning of your BMS, make sure the value at &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; has the location of where your gesture set list begins (this one will probably be fine), and the value at &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; has the location of where your timing ruleset list begins.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_4.png|Put the location of where the &amp;quot;timing ruleset list&amp;quot; begins here.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in the conductor file ==&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
In your song&#039;s associated conductor file, try to stretch out the window so that the instrument names are all in the same column if you can, like in the image above.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Each line represents one track. You give each track a instrument (program), and what gesture set and timing ruleset to use.&amp;lt;br&amp;gt;&lt;br /&gt;
The CND infographic above does a good job explaining all the functions, but they&#039;ll be explained again down here.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the top left corner are three important values:&lt;br /&gt;
* The first value is the swing time. &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt; is 1/16th swing, while &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; is 1/8th swing. If your song is below 100bpm, you might want to use &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt;. If its faster, try &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
* The second value is the tempo, in hex.&lt;br /&gt;
* The third value is how many tracks there will be, in hex.&lt;br /&gt;
&lt;br /&gt;
Each column explained:&lt;br /&gt;
* A: Initial delay. How many beats until this track starts running. In the vanilla game, you can notice how some song&#039;s melodies do not immediately begin playing upon the start of level. This is useful for that; ease the listener into the music.&lt;br /&gt;
* B/Q: If set to 1, all gestures will be delayed by an 1/8th note..&lt;br /&gt;
* C: Text string. You can make this say whatever you like. Useful for keeping track of what you want each track to be, like &amp;quot;Lead&amp;quot;, &amp;quot;Trumpet&amp;quot;, &amp;quot;MelodyA&amp;quot;/&amp;quot;MelodyB&amp;quot;, &amp;quot;Bass&amp;quot;, or &amp;quot;Drums&amp;quot;&lt;br /&gt;
* D: Track copy. Select a previous track # to copy the gestures from. If the track its copying plays &amp;quot;gesture 3&amp;quot; from its gesture set, this track will also play its &amp;quot;gesture 3&amp;quot;. Often used for treasure mix instruments. You can have them use different gesture sets if you like.&lt;br /&gt;
* E: Echo strength.&lt;br /&gt;
* F: If set to 1, the values in this track&#039;s timetable will always be played in order, in a loop. If set to 0, it will randomly select values from its timetable, thus, allowing you to randomize when gestures play.&lt;br /&gt;
* G: Bank number.&lt;br /&gt;
* H: Program number. For a list of all programs in the default game and the wScenes that support them, view [[Pikmin 2 custom_music/available instruments|this page]].&lt;br /&gt;
* I: Gesture set, select the set # you want to use from the BMS. &lt;br /&gt;
* J: Timing ruleset, select the set # you want to use from the BMS.&lt;br /&gt;
* K: How many gestures this track will play, before playing &amp;quot;silent gestures&amp;quot;. Linked to below. These function as a sort of on/off cycle.&lt;br /&gt;
* L: How many &amp;quot;silent gestures&amp;quot; this track will play, before playing normal gestures. Linked to above. These function as a sort of on/off cycle.&lt;br /&gt;
* M: If notes are being transposed down (see below), this is set to FF. But this column doesn&#039;t actually do anything, so you don&#039;t need to edit this.&lt;br /&gt;
* N: Transpose all notes played by this track. To transpose up, use values 1-127. To transpose down, use the sign 2 compliment (values 128-255).&lt;br /&gt;
* O: Volume.&lt;br /&gt;
* P: Stereo panning.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas/considerations:&lt;br /&gt;
* You can use the on/off cycle feature (column K and L) to make your melodic instrument &amp;quot;take a break&amp;quot; every once in a while. You can have it play 4 gestures, but then be silent for 2.&lt;br /&gt;
* If your timing ruleset is strict (as in, the timings for when gestures occur is always consistent), something fun to try is to have the melody be a back-and-forth between two different instruments. Set the initial delay for the second instrument to be longer than the first one, and then cleverly use the on/off cycle to have the instruments take turns sounding a gesture. This is done for the melody in the Bulblax Kingdom and Frontier Cavern for example.&lt;br /&gt;
* If you are using the &amp;quot;track copy&amp;quot; feature (column D), you can have the primary instrument play a melody, and have this instrument always play chords that perfectly match that melody.&lt;br /&gt;
&lt;br /&gt;
== Mapping the tracks ==&lt;br /&gt;
With all that done, don&#039;t forget to edit the song&#039;s [[Trackmap parameters|trackMap]]! Edit your song in the trackMap files in either &amp;lt;code&amp;gt;/user/Totaka&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/user/Wakai&amp;lt;/code&amp;gt;, and set how many instruments will be in each mix. It goes in order from: Main Mix, Task (event), Treasure (otakara), Enemy near (kehai), Combat mix, and Spiderwort mix (ground). Although you cannot find Spiderworts underground, you will have to sacrifice at least one track for that mix. You cannot set any of the mixes to have 0 instruments in them.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Filenames for brand new CND files ==&lt;br /&gt;
If you are adding a brand new CND file instead of replacing an existing one, the prefix will determine which BMS is loaded, and which wScene. Try not to add special characters to filenames, aside from underscores.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to load the correct BMS file, the CND must start with the name of the BMS file.&lt;br /&gt;
* &amp;quot;caveconc.cnd&amp;quot;, &amp;quot;caveconc_458435.cnd&amp;quot;, &amp;quot;caveconc_Waffles.cnd&amp;quot;, and &amp;quot;caveconc_Waffles_Song_2.cnd&amp;quot; will all load caveconc.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;caverelax.cnd&amp;quot;, &amp;quot;caverelax_Gmajor.cnd&amp;quot;, and &amp;quot;caverelax_mamuta_dinner.cnd&amp;quot; will all load caverelax.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;new_09_4.cnd&amp;quot;, &amp;quot;new_09_4000.cnd&amp;quot;, and &amp;quot;new_09_portal_PotaTOS.cnd&amp;quot; will load new_09.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For cavesoil, caveconc, and cavemetal only, the game also checks for an additional &amp;quot;_00&amp;quot;, &amp;quot;_05&amp;quot;, and &amp;quot;_10&amp;quot; right after the prefix, for the purpose of loading one of three different wScenes. You must include it if you want the correct wScene to load. For example, caveconc_05 loads wScene 31, so if you want your custom song to also load wScene 31, acceptable names include &amp;quot;caveconc_05_WAFFLES.cnd&amp;quot;, &amp;quot;caveconc_05_52_46356.cnd&amp;quot;, or &amp;quot;caveconc_05_super_boss.cnd&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After adding your new CND file, be sure to add it to its respective trackMap file.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding new content to a vanilla BMS file ==&lt;br /&gt;
Adding new hex data in the middle of a file will shift all the offsets that come after it, causing your BMS to jump to the wrong locations, and likely cause a crash if vanilla songs are loaded.&amp;lt;br&amp;gt;&lt;br /&gt;
In order to add new content in addition to what&#039;s already in the BMS:&lt;br /&gt;
* Find and copy the gesture set list and the timing ruleset list, and paste them at the end of the file. (Separate them with lots of zeros so you have lots more space to add content to these lists)&lt;br /&gt;
* Change &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; to point to your new gesture set list and timing ruleset list. These two values tell the game where the lists are.&lt;br /&gt;
The game should now use these brand new lists, instead of the original instances that occur earlier in the file. Since they still contain all the locations of the vanilla gesture sets/timetables from above in the same order, the existing CND songs won&#039;t be affected and will continue to function, but now you can expand upon these lists with brand new entries now that you&#039;ve made the space for them. All new gestures, gesture sets and timetables can be added further down the file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Editing_vanilla_BMS_file.png|The new gesture set list and timing ruleset list we want to use will be at the bottom.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding gesture cutoffs in timetables ==&lt;br /&gt;
An intentional compositional choice in some songs is to cutoff gestures while they&#039;re in the middle of playing. The most common way this is done is to quickly trigger another gesture; if the last gesture has not finished playing, it will stop playing that gesture and begin playing the new one. It&#039;s also possible to add &amp;quot;empty&amp;quot; gestures to gesture sets (like &amp;lt;code&amp;gt;C40000015DFF&amp;lt;/code&amp;gt;, a gesture which ends immediately and plays nothing), so you can randomly interrupt gestures in your song with silence, or have there be a chance to play nothing.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
However, if you wish to interrupt gestures in your song at specified times without the randomness, there is a special function in timetables for doing this. In the vanilla game, this is used for the trumpet in [https://www.youtube.com/watch?v=qOhmS1YLpF8 Fire]. The trumpet plays two interrupted gestures, then plays a third gesture in full. Below is the timetable for this trumpet:&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;0078 8168 81E0 00F0 80F0 81E0 0780 FFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The trumpet will:&lt;br /&gt;
* &amp;lt;code&amp;gt;0078&amp;lt;/code&amp;gt; play a gesture for 1 beat&lt;br /&gt;
* &amp;lt;code&amp;gt;8168&amp;lt;/code&amp;gt; cutoff after this 1 beat&lt;br /&gt;
* &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; extend the silence for another 4 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0&amp;lt;/code&amp;gt; play a gesture for 2 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;80F0&amp;lt;/code&amp;gt; cutoff after these 2 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; extend the silence for another 4 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;0780&amp;lt;/code&amp;gt; play a gesture for 16 beats.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In order to put a &amp;quot;cutoff&amp;quot; in your timetable:&lt;br /&gt;
* Start with how long you want your &amp;quot;playing&amp;quot; gesture to play for, before it gets cutoff. I want the the first gesture to last for one beat (four 1/16th notes), so I&#039;ll put &amp;lt;code&amp;gt;0078&amp;lt;/code&amp;gt;. Remember that every &amp;quot;30&amp;quot; in decimal is equivalent to a sixteenth note.&lt;br /&gt;
* Immediately next in the sequence will be a value that indicates when the cutoff begins. Calculate the difference between &amp;quot;81E0&amp;quot; and the previous value you had just inserted. 81E0 - 0078 = 8168 (in decimal, 33248 - 120 = 33128). I will put &amp;lt;code&amp;gt;8168&amp;lt;/code&amp;gt; next in my sequence.&lt;br /&gt;
My sequence is now &amp;lt;code&amp;gt;0078 8168 FFFF&amp;lt;/code&amp;gt;; this will play a gesture normally for 1 beat, but then immediately cut it off after that 1 beat.&amp;lt;br&amp;gt;&lt;br /&gt;
Putting an additional &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; in the sequence right after will the silence for another 4 beats. You can keep putting &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; right after several times in a row if you want depending on how long you want the silence to last, until the next gesture.&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4637</id>
		<title>Creating cave music</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4637"/>
		<updated>2024-04-16T13:35:51Z</updated>

		<summary type="html">&lt;p&gt;Waffles: /* Gesture set contents */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Randomly generating cave music in Pikmin 2 needs to have two files: a .bms (sequence) file, and a .cnd (conductor) file.&lt;br /&gt;
&lt;br /&gt;
The BMS file type is a sequenced music format used in many games. For the cave music in Pikmin 2 however, it is specially-formatted. It mainly contains many short snippets of musical information to be randomized.&lt;br /&gt;
&lt;br /&gt;
The CND files are the actual &amp;quot;songs&amp;quot;; they take specific groups of snippets from a BMS file, and endlessly puzzle-piece them together to form a coherent piece of music.&lt;br /&gt;
&lt;br /&gt;
This guide will function as a walkthrough for creating your own randomly sequencing cave song. All of the editing will be done in hexadecimal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be generating a lot of tiny BMS files, to turn them into &amp;quot;gestures&amp;quot;.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
== Overview of file functions ==&lt;br /&gt;
Here are some infographics that you can reference at any time. These show all the functions of a CND file, and all the contents of a BMS file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
File:BMS_functions.png|How information is stored in a BMS file.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up your BMS file ==&lt;br /&gt;
Before you begin, set your byte grouping to &amp;quot;3&amp;quot;, so every 3 bytes is visually separated by a space. This will make it easier to see stuff.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Starting with a completely blank BMS file, begin by pasting the following:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Every cave music BMS begins with this same information, and will go mostly untouched.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set list ==&lt;br /&gt;
Exactly right after &amp;lt;code&amp;gt;34C600&amp;lt;/code&amp;gt; will be a list of every gesture set&#039;s location in the BMS. Each entry is the gesture set&#039;s hexadecimal location (offset), and each entry in the sequence begins with &amp;quot;&amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;&amp;quot;. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0001B0 0001BF 0001CE 0001D4 0001DA 0001E9 0001F8 0001FE 000204 00020A FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Gesture set &amp;quot;0&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1B0&amp;lt;/code&amp;gt;, gesture set &amp;quot;1&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1BF&amp;lt;/code&amp;gt;, gesture set &amp;quot;2&amp;quot; will be at &amp;lt;code&amp;gt;0x1CE&amp;lt;/code&amp;gt;, and so on. There are a total of 10 gesture sets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Until we create our gesture sets, let&#039;s use &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt; as placeholders so we can easily find and get back to this section later on. You can have as many gesture sets as you like; we&#039;ll create 16 entries for this tutorial. You may insert this into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our BMS should now currently look like this:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
You can also add an entire row of padding/zeros after this. You can do this for each section, to better visually separate them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing ruleset list ==&lt;br /&gt;
This is another sequence of offsets. These just point to the location of a &amp;quot;[[#Inserting_timetables|timetable]]&amp;quot;, which will be located at the end of our BMS file. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0005AB 0005AB 0005AF 0005C1 0005AB 0005AB 0005C1 0005C1 0005C1 0005C1 FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Timing ruleset &amp;quot;0&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;1&amp;quot; will also use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;2&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AF&amp;lt;/code&amp;gt;, and so on. There are a total of 10 timing rulesets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Let&#039;s use &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt; as placeholders again, and create 16 of them. Insert this anywhere into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set contents ==&lt;br /&gt;
A &#039;&#039;gesture set&#039;&#039; is a group of many gestures.&amp;lt;br&amp;gt;&lt;br /&gt;
Here, we list each gesture set&#039;s contents (which will be... the locations of the gestures!). Each gesture set begins before with &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt; and ends with &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how the gesture set list should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;000210 00022A 000258 000281 FFFFFF 0002B4 0002D9 000303 000331 FFFFFF 000355 FFFFFF 000361 FFFFFF 0003A8 0003C2 0003F0 000419 FFFFFF 00044C 000471 00049B 0004C9 FFFFFF 0004ED FFFFFF 000543 FFFFFF 000580 FFFFFF 00059E FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
There are 10 gesture sets listed above. The first gesture set has 4 gestures, located at &amp;lt;code&amp;gt;0x210&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x22A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x258&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;0x281&amp;lt;/code&amp;gt;. You can have any amount of gestures in a gesture set; even 1 is fine.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You can paste the following placeholder information for now:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It might be a good idea to leave a decent amount of zeros after this list; this one will expand a lot as gestures and gesture sets are added to it.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How is your BMS looking? ==&lt;br /&gt;
If you have been copy-pasting everything correctly, your BMS will look something like this:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=300px heights=300px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_1.png|Orange is &amp;quot;gesture set list&amp;quot;, yellow is &amp;quot;timing ruleset list&amp;quot;, and blue is &amp;quot;gesture set contents&amp;quot;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Once again, you can add as much padding between each section as you want, it will work fine.&lt;br /&gt;
&lt;br /&gt;
== Creating gestures ==&lt;br /&gt;
First, you should sketch out your song idea in your DAW, and then cut your song into tiny blocks. These blocks will be your song&#039;s individual gestures. You should also consider dragging these blocks around in various arrangements to make sure they sound good in any order.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once you are ready, have them nicely organized and ready to be exported into individual MIDI files:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_Pro_gestures.png|A Logic Pro project with a bunch of short blocks of music. Each block will be a &amp;quot;gesture&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
For some reason, imported BMS files play 4 times as slow in cave songs. So if you import these gestures as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export your gestures, you need to modify your gestures to run &#039;&#039;4 times as fast&#039;&#039;. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Logic Pro can easily speed up MIDI regions with MIDI Transform. You want to use the &amp;quot;Double Speed&amp;quot; transformation twice on each block.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_pro_double_speed.gif|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting gestures ==&lt;br /&gt;
Gestures use same the note/music information as standard BMS songs.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should have converted all your MIDIs into BMS files. Open up one of your converted BMS files, and look for the first note/pitch value. If you used [[Pikmin 2 custom music|flaaffy]], this will most likely be somewhere after &amp;lt;code&amp;gt;0x1B&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;0x1D&amp;lt;/code&amp;gt;. The note&#039;s pitch value will be followed by a &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;. Copy this note, all the way to the end of the sequence, which should be &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=600px&amp;gt;&lt;br /&gt;
File:Copy_pasting_BMS_info.png|The value &amp;quot;2D&amp;quot; here is the hex value of a certain pitch, and the very first note of the sequence. Copy this, all the way to &amp;quot;FF&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
To add your gesture, start it with &amp;lt;code&amp;gt;C40000015D&amp;lt;/code&amp;gt;, then paste in what you copied. Each gesture should end with that &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;. Add as many gestures as you please!&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_2.png|The purple lines indicate where a gesture starts.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting timetables ==&lt;br /&gt;
So, how do we choose how often gestures will play? Will a gesture play every beat? Every 1/2 a beat? You will need to add a timetable for that!&lt;br /&gt;
A timetable is a sequence that dictates when gestures should play. A timetable ends with &amp;lt;code&amp;gt;FFFF&amp;lt;/code&amp;gt;. You can make a timetable as complex as you like.&amp;lt;br&amp;gt; Some examples of timetables you can use are:&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0780FFFF&amp;lt;/code&amp;gt; Play a gesture every 16 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C0FFFF&amp;lt;/code&amp;gt; Play a gesture every 8 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;01E0FFFF&amp;lt;/code&amp;gt; Play a gesture every 4 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C003C003C001E001E001E001E003C0FFFF&amp;lt;/code&amp;gt; This sequence will play a gesture every 8 beats (3x), play a gesture every 4 beats (4x), then play a gesture for 8 beats (1x), in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/2 note (every 2 beats).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0078FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/4 note (every beat).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003CFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/8th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;001EFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/16th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003C0078001EFFFF&amp;lt;/code&amp;gt; This sequence will play a gesture for an 1/8th note, play a gesture for a 1/4 note, then play a gesture for a 1/16th note, in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
Considering that &amp;lt;code&amp;gt;001E&amp;lt;/code&amp;gt; (30 in decimal) is a 1/16th note, you can create any specific timing you want. Just add another 30 to the value for each additional sixteenth note in length.&amp;lt;br&amp;gt;&lt;br /&gt;
For example, Soil 1&#039;s enemy mix piano plays very rapidly; its timetable uses a value of 90, which looks like &amp;lt;code&amp;gt;005AFFFF&amp;lt;/code&amp;gt;. The gestures last for three sixteenth notes.&amp;lt;br&amp;gt;&lt;br /&gt;
You can insert your timetables anywhere at the end of your BMS.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_3.png|Each timetable has a pink box around it.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in info ==&lt;br /&gt;
Once you have your gestures and timetables inserted, go back and fill in those &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00CCCC&amp;lt;/code&amp;gt; placeholders with the locations of your gesture sets, timetables, and gestures you want to use. Remember that gesture sets begin with the &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Also in the very beginning of your BMS, make sure the value at &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; has the location of where your gesture set list begins (this one will probably be fine), and the value at &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; has the location of where your timing ruleset list begins.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_4.png|Put the location of where the &amp;quot;timing ruleset list&amp;quot; begins here.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in the conductor file ==&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
In your song&#039;s associated conductor file, try to stretch out the window so that the instrument names are all in the same column if you can, like in the image above.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Each line represents one track. You give each track a instrument (program), and what gesture set and timing ruleset to use.&amp;lt;br&amp;gt;&lt;br /&gt;
The CND infographic above does a good job explaining all the functions, but they&#039;ll be explained again down here.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the top left corner are three important values:&lt;br /&gt;
* The first value is the swing time. &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt; is 1/16th swing, while &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; is 1/8th swing. If your song is below 100bpm, you might want to use &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt;. If its faster, try &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
* The second value is the tempo, in hex.&lt;br /&gt;
* The third value is how many tracks there will be, in hex.&lt;br /&gt;
&lt;br /&gt;
Each column explained:&lt;br /&gt;
* A: Initial delay. How many beats until this track starts running. In the vanilla game, you can notice how some song&#039;s melodies do not immediately begin playing upon the start of level. This is useful for that; ease the listener into the music.&lt;br /&gt;
* B/Q: If set to 1, all gestures will be delayed by an 1/8th note..&lt;br /&gt;
* C: Text string. You can make this say whatever you like. Useful for keeping track of what you want each track to be, like &amp;quot;Lead&amp;quot;, &amp;quot;Trumpet&amp;quot;, &amp;quot;MelodyA&amp;quot;/&amp;quot;MelodyB&amp;quot;, &amp;quot;Bass&amp;quot;, or &amp;quot;Drums&amp;quot;&lt;br /&gt;
* D: Track copy. Select a previous track # to copy the gestures from. If the track its copying plays &amp;quot;gesture 3&amp;quot; from its gesture set, this track will also play its &amp;quot;gesture 3&amp;quot;. Often used for treasure mix instruments. You can have them use different gesture sets if you like.&lt;br /&gt;
* E: Echo strength.&lt;br /&gt;
* F: If set to 1, the values in this track&#039;s timetable will always be played in order, in a loop. If set to 0, it will randomly select values from its timetable, thus, allowing you to randomize when gestures play.&lt;br /&gt;
* G: Bank number.&lt;br /&gt;
* H: Program number. For a list of all programs in the default game and the wScenes that support them, view [[Pikmin 2 custom_music/available instruments|this page]].&lt;br /&gt;
* I: Gesture set, select the set # you want to use from the BMS. &lt;br /&gt;
* J: Timing ruleset, select the set # you want to use from the BMS.&lt;br /&gt;
* K: How many gestures this track will play, before playing &amp;quot;silent gestures&amp;quot;. Linked to below. These function as a sort of on/off cycle.&lt;br /&gt;
* L: How many &amp;quot;silent gestures&amp;quot; this track will play, before playing normal gestures. Linked to above. These function as a sort of on/off cycle.&lt;br /&gt;
* M: If notes are being transposed down (see below), this is set to FF. But this column doesn&#039;t actually do anything, so you don&#039;t need to edit this.&lt;br /&gt;
* N: Transpose all notes played by this track. To transpose up, use values 1-127. To transpose down, use the sign 2 compliment (values 128-255).&lt;br /&gt;
* O: Volume.&lt;br /&gt;
* P: Stereo panning.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas/considerations:&lt;br /&gt;
* You can use the on/off cycle feature (column K and L) to make your melodic instrument &amp;quot;take a break&amp;quot; every once in a while. You can have it play 4 gestures, but then be silent for 2.&lt;br /&gt;
* If your timing ruleset is strict (as in, the timings for when gestures occur is always consistent), something fun to try is to have the melody be a back-and-forth between two different instruments. Set the initial delay for the second instrument to be longer than the first one, and then cleverly use the on/off cycle to have the instruments take turns sounding a gesture. This is done for the melody in the Bulblax Kingdom and Frontier Cavern for example.&lt;br /&gt;
* If you are using the &amp;quot;track copy&amp;quot; feature (column D), you can have the primary instrument play a melody, and have this instrument always play chords that perfectly match that melody.&lt;br /&gt;
&lt;br /&gt;
== Mapping the tracks ==&lt;br /&gt;
With all that done, don&#039;t forget to edit the song&#039;s [[Trackmap parameters|trackMap]]! Edit your song in the trackMap files in either &amp;lt;code&amp;gt;/user/Totaka&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/user/Wakai&amp;lt;/code&amp;gt;, and set how many instruments will be in each mix. It goes in order from: Main Mix, Task (event), Treasure (otakara), Enemy near (kehai), Combat mix, and Spiderwort mix (ground). Although you cannot find Spiderworts underground, you will have to sacrifice at least one track for that mix. You cannot set any of the mixes to have 0 instruments in them.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Filenames for brand new CND files ==&lt;br /&gt;
If you are adding a brand new CND file instead of replacing an existing one, the prefix will determine which BMS is loaded, and which wScene. Try not to add special characters to filenames, aside from underscores.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to load the correct BMS file, the CND must start with the name of the BMS file.&lt;br /&gt;
* &amp;quot;caveconc.cnd&amp;quot;, &amp;quot;caveconc_458435.cnd&amp;quot;, &amp;quot;caveconc_Waffles.cnd&amp;quot;, and &amp;quot;caveconc_Waffles_Song_2.cnd&amp;quot; will all load caveconc.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;caverelax.cnd&amp;quot;, &amp;quot;caverelax_Gmajor.cnd&amp;quot;, and &amp;quot;caverelax_mamuta_dinner.cnd&amp;quot; will all load caverelax.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;new_09_4.cnd&amp;quot;, &amp;quot;new_09_4000.cnd&amp;quot;, and &amp;quot;new_09_portal_PotaTOS.cnd&amp;quot; will load new_09.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For cavesoil, caveconc, and cavemetal only, the game also checks for an additional &amp;quot;_00&amp;quot;, &amp;quot;_05&amp;quot;, and &amp;quot;_10&amp;quot; right after the prefix, for the purpose of loading one of three different wScenes. You must include it if you want the correct wScene to load. For example, caveconc_05 loads wScene 31, so if you want your custom song to also load wScene 31, acceptable names include &amp;quot;caveconc_05_WAFFLES.cnd&amp;quot;, &amp;quot;caveconc_05_52_46356.cnd&amp;quot;, or &amp;quot;caveconc_05_super_boss.cnd&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After adding your new CND file, be sure to add it to its respective trackMap file.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding new content to a vanilla BMS file ==&lt;br /&gt;
Adding new hex data in the middle of a file will shift all the offsets that come after it, causing your BMS to jump to the wrong locations, and likely cause a crash if vanilla songs are loaded.&amp;lt;br&amp;gt;&lt;br /&gt;
In order to add new content in addition to what&#039;s already in the BMS:&lt;br /&gt;
* Find and copy the gesture set list and the timing ruleset list, and paste them at the end of the file. (Separate them with lots of zeros so you have lots more space to add content to these lists)&lt;br /&gt;
* Change &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; to point to your new gesture set list and timing ruleset list. These two values tell the game where the lists are.&lt;br /&gt;
The game should now use these brand new lists, instead of the original instances that occur earlier in the file. Since they still contain all the locations of the vanilla gesture sets/timetables from above in the same order, the existing CND songs won&#039;t be affected and will continue to function, but now you can expand upon these lists with brand new entries now that you&#039;ve made the space for them. All new gestures, gesture sets and timetables can be added further down the file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Editing_vanilla_BMS_file.png|The new gesture set list and timing ruleset list we want to use will be at the bottom.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding gesture cutoffs in timetables ==&lt;br /&gt;
An intentional compositional choice in some songs is to cutoff gestures while they&#039;re in the middle of playing. The most common way this is done is to quickly trigger another gesture; if the last gesture has not finished playing, it will stop playing that gesture and begin playing the new one. It&#039;s also possible to add &amp;quot;empty&amp;quot; gestures to gesture sets (like &amp;lt;code&amp;gt;C40000015DFF&amp;lt;/code&amp;gt;, a gesture which ends immediately and plays nothing), so you can randomly interrupt gestures in your song with silence, or have there be a chance to play nothing.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
However, if you wish to interrupt gestures in your song at specified times without the randomness, there is a special function in timetables for doing this. In the vanilla game, this is used for the trumpet in [https://www.youtube.com/watch?v=qOhmS1YLpF8 Fire]. The trumpet plays two interrupted gestures, then plays a third gesture in full. Below is the timetable for this trumpet:&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;0078 8168 81E0 00F0 80F0 81E0 0780 FFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The trumpet will:&lt;br /&gt;
* &amp;lt;code&amp;gt;0078&amp;lt;/code&amp;gt; play a gesture for 1 beat&lt;br /&gt;
* &amp;lt;code&amp;gt;8168&amp;lt;/code&amp;gt; cutoff after this 1 beat&lt;br /&gt;
* &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; extend the silence for another 4 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0&amp;lt;/code&amp;gt; play a gesture for 2 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;80F0&amp;lt;/code&amp;gt; cutoff after these 2 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; extend the silence for another 4 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;0780&amp;lt;/code&amp;gt; play a gesture for 16 beats.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In order to put a &amp;quot;cutoff&amp;quot; in your timetable:&lt;br /&gt;
* Start with how long you want your &amp;quot;playing&amp;quot; gesture to play for, before it gets cutoff. I want the the first gesture to last for one beat (four 1/16th notes), so I&#039;ll put &amp;lt;code&amp;gt;0078&amp;lt;/code&amp;gt;. Remember that every &amp;quot;30&amp;quot; in decimal is equivalent to a sixteenth note.&lt;br /&gt;
* Immediately next in the sequence will be a value that indicates when the cutoff begins. Calculate the difference between &amp;quot;81E0&amp;quot; and the previous value you had just inserted. 81E0 - 0078 = 8168 (in decimal, 33248 - 120 = 33128). I will put &amp;lt;code&amp;gt;8168&amp;lt;/code&amp;gt; next in my sequence.&lt;br /&gt;
My sequence is now &amp;lt;code&amp;gt;0078 8168 FFFF&amp;lt;/code&amp;gt;; this will play a gesture normally for 1 beat, but then immediately cut it off after that 1 beat.&amp;lt;br&amp;gt;&lt;br /&gt;
Putting an additional &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; in the sequence right after will the silence for another 4 beats. You can keep putting &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; right after several times in a row if you want depending on how long you want the silence to last, until the next gesture.&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4636</id>
		<title>Creating cave music</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4636"/>
		<updated>2024-04-16T13:30:17Z</updated>

		<summary type="html">&lt;p&gt;Waffles: /* Setting up your BMS file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Randomly generating cave music in Pikmin 2 needs to have two files: a .bms (sequence) file, and a .cnd (conductor) file.&lt;br /&gt;
&lt;br /&gt;
The BMS file type is a sequenced music format used in many games. For the cave music in Pikmin 2 however, it is specially-formatted. It mainly contains many short snippets of musical information to be randomized.&lt;br /&gt;
&lt;br /&gt;
The CND files are the actual &amp;quot;songs&amp;quot;; they take specific groups of snippets from a BMS file, and endlessly puzzle-piece them together to form a coherent piece of music.&lt;br /&gt;
&lt;br /&gt;
This guide will function as a walkthrough for creating your own randomly sequencing cave song. All of the editing will be done in hexadecimal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be generating a lot of tiny BMS files, to turn them into &amp;quot;gestures&amp;quot;.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
== Overview of file functions ==&lt;br /&gt;
Here are some infographics that you can reference at any time. These show all the functions of a CND file, and all the contents of a BMS file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
File:BMS_functions.png|How information is stored in a BMS file.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up your BMS file ==&lt;br /&gt;
Before you begin, set your byte grouping to &amp;quot;3&amp;quot;, so every 3 bytes is visually separated by a space. This will make it easier to see stuff.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Starting with a completely blank BMS file, begin by pasting the following:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Every cave music BMS begins with this same information, and will go mostly untouched.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set list ==&lt;br /&gt;
Exactly right after &amp;lt;code&amp;gt;34C600&amp;lt;/code&amp;gt; will be a list of every gesture set&#039;s location in the BMS. Each entry is the gesture set&#039;s hexadecimal location (offset), and each entry in the sequence begins with &amp;quot;&amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;&amp;quot;. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0001B0 0001BF 0001CE 0001D4 0001DA 0001E9 0001F8 0001FE 000204 00020A FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Gesture set &amp;quot;0&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1B0&amp;lt;/code&amp;gt;, gesture set &amp;quot;1&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1BF&amp;lt;/code&amp;gt;, gesture set &amp;quot;2&amp;quot; will be at &amp;lt;code&amp;gt;0x1CE&amp;lt;/code&amp;gt;, and so on. There are a total of 10 gesture sets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Until we create our gesture sets, let&#039;s use &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt; as placeholders so we can easily find and get back to this section later on. You can have as many gesture sets as you like; we&#039;ll create 16 entries for this tutorial. You may insert this into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our BMS should now currently look like this:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
You can also add an entire row of padding/zeros after this. You can do this for each section, to better visually separate them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing ruleset list ==&lt;br /&gt;
This is another sequence of offsets. These just point to the location of a &amp;quot;[[#Inserting_timetables|timetable]]&amp;quot;, which will be located at the end of our BMS file. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0005AB 0005AB 0005AF 0005C1 0005AB 0005AB 0005C1 0005C1 0005C1 0005C1 FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Timing ruleset &amp;quot;0&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;1&amp;quot; will also use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;2&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AF&amp;lt;/code&amp;gt;, and so on. There are a total of 10 timing rulesets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Let&#039;s use &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt; as placeholders again, and create 16 of them. Insert this anywhere into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set contents ==&lt;br /&gt;
A &#039;&#039;gesture set&#039;&#039; is a group of many gestures.&amp;lt;br&amp;gt;&lt;br /&gt;
Here, we list each gesture set&#039;s contents (which are... the locations of gestures!). Each gesture set begins before with &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt; and ends with &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how the gesture set list should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;000210 00022A 000258 000281 FFFFFF 0002B4 0002D9 000303 000331 FFFFFF 000355 FFFFFF 000361 FFFFFF 0003A8 0003C2 0003F0 000419 FFFFFF 00044C 000471 00049B 0004C9 FFFFFF 0004ED FFFFFF 000543 FFFFFF 000580 FFFFFF 00059E FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
There are 10 gesture sets listed above. The first gesture set has 4 gestures, located at &amp;lt;code&amp;gt;0x210&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x22A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x258&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;0x281&amp;lt;/code&amp;gt;. You can have any amount of gestures in a gesture set; even 1 is fine.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You can paste the following placeholder information for now:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It might be a good idea to leave a decent amount of zeros after this list; this one will expand a lot as gestures and gesture sets are added to it.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How is your BMS looking? ==&lt;br /&gt;
If you have been copy-pasting everything correctly, your BMS will look something like this:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=300px heights=300px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_1.png|Orange is &amp;quot;gesture set list&amp;quot;, yellow is &amp;quot;timing ruleset list&amp;quot;, and blue is &amp;quot;gesture set contents&amp;quot;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Once again, you can add as much padding between each section as you want, it will work fine.&lt;br /&gt;
&lt;br /&gt;
== Creating gestures ==&lt;br /&gt;
First, you should sketch out your song idea in your DAW, and then cut your song into tiny blocks. These blocks will be your song&#039;s individual gestures. You should also consider dragging these blocks around in various arrangements to make sure they sound good in any order.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once you are ready, have them nicely organized and ready to be exported into individual MIDI files:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_Pro_gestures.png|A Logic Pro project with a bunch of short blocks of music. Each block will be a &amp;quot;gesture&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
For some reason, imported BMS files play 4 times as slow in cave songs. So if you import these gestures as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export your gestures, you need to modify your gestures to run &#039;&#039;4 times as fast&#039;&#039;. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Logic Pro can easily speed up MIDI regions with MIDI Transform. You want to use the &amp;quot;Double Speed&amp;quot; transformation twice on each block.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_pro_double_speed.gif|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting gestures ==&lt;br /&gt;
Gestures use same the note/music information as standard BMS songs.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should have converted all your MIDIs into BMS files. Open up one of your converted BMS files, and look for the first note/pitch value. If you used [[Pikmin 2 custom music|flaaffy]], this will most likely be somewhere after &amp;lt;code&amp;gt;0x1B&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;0x1D&amp;lt;/code&amp;gt;. The note&#039;s pitch value will be followed by a &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;. Copy this note, all the way to the end of the sequence, which should be &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=600px&amp;gt;&lt;br /&gt;
File:Copy_pasting_BMS_info.png|The value &amp;quot;2D&amp;quot; here is the hex value of a certain pitch, and the very first note of the sequence. Copy this, all the way to &amp;quot;FF&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
To add your gesture, start it with &amp;lt;code&amp;gt;C40000015D&amp;lt;/code&amp;gt;, then paste in what you copied. Each gesture should end with that &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;. Add as many gestures as you please!&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_2.png|The purple lines indicate where a gesture starts.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting timetables ==&lt;br /&gt;
So, how do we choose how often gestures will play? Will a gesture play every beat? Every 1/2 a beat? You will need to add a timetable for that!&lt;br /&gt;
A timetable is a sequence that dictates when gestures should play. A timetable ends with &amp;lt;code&amp;gt;FFFF&amp;lt;/code&amp;gt;. You can make a timetable as complex as you like.&amp;lt;br&amp;gt; Some examples of timetables you can use are:&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0780FFFF&amp;lt;/code&amp;gt; Play a gesture every 16 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C0FFFF&amp;lt;/code&amp;gt; Play a gesture every 8 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;01E0FFFF&amp;lt;/code&amp;gt; Play a gesture every 4 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C003C003C001E001E001E001E003C0FFFF&amp;lt;/code&amp;gt; This sequence will play a gesture every 8 beats (3x), play a gesture every 4 beats (4x), then play a gesture for 8 beats (1x), in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/2 note (every 2 beats).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0078FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/4 note (every beat).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003CFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/8th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;001EFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/16th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003C0078001EFFFF&amp;lt;/code&amp;gt; This sequence will play a gesture for an 1/8th note, play a gesture for a 1/4 note, then play a gesture for a 1/16th note, in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
Considering that &amp;lt;code&amp;gt;001E&amp;lt;/code&amp;gt; (30 in decimal) is a 1/16th note, you can create any specific timing you want. Just add another 30 to the value for each additional sixteenth note in length.&amp;lt;br&amp;gt;&lt;br /&gt;
For example, Soil 1&#039;s enemy mix piano plays very rapidly; its timetable uses a value of 90, which looks like &amp;lt;code&amp;gt;005AFFFF&amp;lt;/code&amp;gt;. The gestures last for three sixteenth notes.&amp;lt;br&amp;gt;&lt;br /&gt;
You can insert your timetables anywhere at the end of your BMS.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_3.png|Each timetable has a pink box around it.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in info ==&lt;br /&gt;
Once you have your gestures and timetables inserted, go back and fill in those &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00CCCC&amp;lt;/code&amp;gt; placeholders with the locations of your gesture sets, timetables, and gestures you want to use. Remember that gesture sets begin with the &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Also in the very beginning of your BMS, make sure the value at &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; has the location of where your gesture set list begins (this one will probably be fine), and the value at &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; has the location of where your timing ruleset list begins.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_4.png|Put the location of where the &amp;quot;timing ruleset list&amp;quot; begins here.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in the conductor file ==&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
In your song&#039;s associated conductor file, try to stretch out the window so that the instrument names are all in the same column if you can, like in the image above.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Each line represents one track. You give each track a instrument (program), and what gesture set and timing ruleset to use.&amp;lt;br&amp;gt;&lt;br /&gt;
The CND infographic above does a good job explaining all the functions, but they&#039;ll be explained again down here.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the top left corner are three important values:&lt;br /&gt;
* The first value is the swing time. &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt; is 1/16th swing, while &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; is 1/8th swing. If your song is below 100bpm, you might want to use &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt;. If its faster, try &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
* The second value is the tempo, in hex.&lt;br /&gt;
* The third value is how many tracks there will be, in hex.&lt;br /&gt;
&lt;br /&gt;
Each column explained:&lt;br /&gt;
* A: Initial delay. How many beats until this track starts running. In the vanilla game, you can notice how some song&#039;s melodies do not immediately begin playing upon the start of level. This is useful for that; ease the listener into the music.&lt;br /&gt;
* B/Q: If set to 1, all gestures will be delayed by an 1/8th note..&lt;br /&gt;
* C: Text string. You can make this say whatever you like. Useful for keeping track of what you want each track to be, like &amp;quot;Lead&amp;quot;, &amp;quot;Trumpet&amp;quot;, &amp;quot;MelodyA&amp;quot;/&amp;quot;MelodyB&amp;quot;, &amp;quot;Bass&amp;quot;, or &amp;quot;Drums&amp;quot;&lt;br /&gt;
* D: Track copy. Select a previous track # to copy the gestures from. If the track its copying plays &amp;quot;gesture 3&amp;quot; from its gesture set, this track will also play its &amp;quot;gesture 3&amp;quot;. Often used for treasure mix instruments. You can have them use different gesture sets if you like.&lt;br /&gt;
* E: Echo strength.&lt;br /&gt;
* F: If set to 1, the values in this track&#039;s timetable will always be played in order, in a loop. If set to 0, it will randomly select values from its timetable, thus, allowing you to randomize when gestures play.&lt;br /&gt;
* G: Bank number.&lt;br /&gt;
* H: Program number. For a list of all programs in the default game and the wScenes that support them, view [[Pikmin 2 custom_music/available instruments|this page]].&lt;br /&gt;
* I: Gesture set, select the set # you want to use from the BMS. &lt;br /&gt;
* J: Timing ruleset, select the set # you want to use from the BMS.&lt;br /&gt;
* K: How many gestures this track will play, before playing &amp;quot;silent gestures&amp;quot;. Linked to below. These function as a sort of on/off cycle.&lt;br /&gt;
* L: How many &amp;quot;silent gestures&amp;quot; this track will play, before playing normal gestures. Linked to above. These function as a sort of on/off cycle.&lt;br /&gt;
* M: If notes are being transposed down (see below), this is set to FF. But this column doesn&#039;t actually do anything, so you don&#039;t need to edit this.&lt;br /&gt;
* N: Transpose all notes played by this track. To transpose up, use values 1-127. To transpose down, use the sign 2 compliment (values 128-255).&lt;br /&gt;
* O: Volume.&lt;br /&gt;
* P: Stereo panning.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas/considerations:&lt;br /&gt;
* You can use the on/off cycle feature (column K and L) to make your melodic instrument &amp;quot;take a break&amp;quot; every once in a while. You can have it play 4 gestures, but then be silent for 2.&lt;br /&gt;
* If your timing ruleset is strict (as in, the timings for when gestures occur is always consistent), something fun to try is to have the melody be a back-and-forth between two different instruments. Set the initial delay for the second instrument to be longer than the first one, and then cleverly use the on/off cycle to have the instruments take turns sounding a gesture. This is done for the melody in the Bulblax Kingdom and Frontier Cavern for example.&lt;br /&gt;
* If you are using the &amp;quot;track copy&amp;quot; feature (column D), you can have the primary instrument play a melody, and have this instrument always play chords that perfectly match that melody.&lt;br /&gt;
&lt;br /&gt;
== Mapping the tracks ==&lt;br /&gt;
With all that done, don&#039;t forget to edit the song&#039;s [[Trackmap parameters|trackMap]]! Edit your song in the trackMap files in either &amp;lt;code&amp;gt;/user/Totaka&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/user/Wakai&amp;lt;/code&amp;gt;, and set how many instruments will be in each mix. It goes in order from: Main Mix, Task (event), Treasure (otakara), Enemy near (kehai), Combat mix, and Spiderwort mix (ground). Although you cannot find Spiderworts underground, you will have to sacrifice at least one track for that mix. You cannot set any of the mixes to have 0 instruments in them.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Filenames for brand new CND files ==&lt;br /&gt;
If you are adding a brand new CND file instead of replacing an existing one, the prefix will determine which BMS is loaded, and which wScene. Try not to add special characters to filenames, aside from underscores.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to load the correct BMS file, the CND must start with the name of the BMS file.&lt;br /&gt;
* &amp;quot;caveconc.cnd&amp;quot;, &amp;quot;caveconc_458435.cnd&amp;quot;, &amp;quot;caveconc_Waffles.cnd&amp;quot;, and &amp;quot;caveconc_Waffles_Song_2.cnd&amp;quot; will all load caveconc.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;caverelax.cnd&amp;quot;, &amp;quot;caverelax_Gmajor.cnd&amp;quot;, and &amp;quot;caverelax_mamuta_dinner.cnd&amp;quot; will all load caverelax.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;new_09_4.cnd&amp;quot;, &amp;quot;new_09_4000.cnd&amp;quot;, and &amp;quot;new_09_portal_PotaTOS.cnd&amp;quot; will load new_09.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For cavesoil, caveconc, and cavemetal only, the game also checks for an additional &amp;quot;_00&amp;quot;, &amp;quot;_05&amp;quot;, and &amp;quot;_10&amp;quot; right after the prefix, for the purpose of loading one of three different wScenes. You must include it if you want the correct wScene to load. For example, caveconc_05 loads wScene 31, so if you want your custom song to also load wScene 31, acceptable names include &amp;quot;caveconc_05_WAFFLES.cnd&amp;quot;, &amp;quot;caveconc_05_52_46356.cnd&amp;quot;, or &amp;quot;caveconc_05_super_boss.cnd&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After adding your new CND file, be sure to add it to its respective trackMap file.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding new content to a vanilla BMS file ==&lt;br /&gt;
Adding new hex data in the middle of a file will shift all the offsets that come after it, causing your BMS to jump to the wrong locations, and likely cause a crash if vanilla songs are loaded.&amp;lt;br&amp;gt;&lt;br /&gt;
In order to add new content in addition to what&#039;s already in the BMS:&lt;br /&gt;
* Find and copy the gesture set list and the timing ruleset list, and paste them at the end of the file. (Separate them with lots of zeros so you have lots more space to add content to these lists)&lt;br /&gt;
* Change &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; to point to your new gesture set list and timing ruleset list. These two values tell the game where the lists are.&lt;br /&gt;
The game should now use these brand new lists, instead of the original instances that occur earlier in the file. Since they still contain all the locations of the vanilla gesture sets/timetables from above in the same order, the existing CND songs won&#039;t be affected and will continue to function, but now you can expand upon these lists with brand new entries now that you&#039;ve made the space for them. All new gestures, gesture sets and timetables can be added further down the file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Editing_vanilla_BMS_file.png|The new gesture set list and timing ruleset list we want to use will be at the bottom.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding gesture cutoffs in timetables ==&lt;br /&gt;
An intentional compositional choice in some songs is to cutoff gestures while they&#039;re in the middle of playing. The most common way this is done is to quickly trigger another gesture; if the last gesture has not finished playing, it will stop playing that gesture and begin playing the new one. It&#039;s also possible to add &amp;quot;empty&amp;quot; gestures to gesture sets (like &amp;lt;code&amp;gt;C40000015DFF&amp;lt;/code&amp;gt;, a gesture which ends immediately and plays nothing), so you can randomly interrupt gestures in your song with silence, or have there be a chance to play nothing.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
However, if you wish to interrupt gestures in your song at specified times without the randomness, there is a special function in timetables for doing this. In the vanilla game, this is used for the trumpet in [https://www.youtube.com/watch?v=qOhmS1YLpF8 Fire]. The trumpet plays two interrupted gestures, then plays a third gesture in full. Below is the timetable for this trumpet:&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;0078 8168 81E0 00F0 80F0 81E0 0780 FFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The trumpet will:&lt;br /&gt;
* &amp;lt;code&amp;gt;0078&amp;lt;/code&amp;gt; play a gesture for 1 beat&lt;br /&gt;
* &amp;lt;code&amp;gt;8168&amp;lt;/code&amp;gt; cutoff after this 1 beat&lt;br /&gt;
* &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; extend the silence for another 4 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0&amp;lt;/code&amp;gt; play a gesture for 2 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;80F0&amp;lt;/code&amp;gt; cutoff after these 2 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; extend the silence for another 4 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;0780&amp;lt;/code&amp;gt; play a gesture for 16 beats.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In order to put a &amp;quot;cutoff&amp;quot; in your timetable:&lt;br /&gt;
* Start with how long you want your &amp;quot;playing&amp;quot; gesture to play for, before it gets cutoff. I want the the first gesture to last for one beat (four 1/16th notes), so I&#039;ll put &amp;lt;code&amp;gt;0078&amp;lt;/code&amp;gt;. Remember that every &amp;quot;30&amp;quot; in decimal is equivalent to a sixteenth note.&lt;br /&gt;
* Immediately next in the sequence will be a value that indicates when the cutoff begins. Calculate the difference between &amp;quot;81E0&amp;quot; and the previous value you had just inserted. 81E0 - 0078 = 8168 (in decimal, 33248 - 120 = 33128). I will put &amp;lt;code&amp;gt;8168&amp;lt;/code&amp;gt; next in my sequence.&lt;br /&gt;
My sequence is now &amp;lt;code&amp;gt;0078 8168 FFFF&amp;lt;/code&amp;gt;; this will play a gesture normally for 1 beat, but then immediately cut it off after that 1 beat.&amp;lt;br&amp;gt;&lt;br /&gt;
Putting an additional &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; in the sequence right after will the silence for another 4 beats. You can keep putting &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; right after several times in a row if you want depending on how long you want the silence to last, until the next gesture.&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Trackmap_parameters&amp;diff=4633</id>
		<title>Trackmap parameters</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Trackmap_parameters&amp;diff=4633"/>
		<updated>2024-04-09T23:07:53Z</updated>

		<summary type="html">&lt;p&gt;Waffles: More info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In &#039;&#039;Pikmin 2&#039;&#039;, the trackMap files located in &amp;lt;code&amp;gt;/user/Totaka&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/user/Wakai&amp;lt;/code&amp;gt; respectively are responsible for mapping instruments into certain mixes. They also set which instruments will skip notes when a Pikmin has died and the player has less than 10 Pikmin. There can be a maximum of 32 entries in each trackMap file; the game will fail to read a 33rd entry.&lt;br /&gt;
&lt;br /&gt;
Format:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
cavesong_XX_Y.cnd&lt;br /&gt;
{&lt;br /&gt;
	4 	# basic (Main mix)&lt;br /&gt;
	2 	# event (Task mix)&lt;br /&gt;
	2 	# otakara event (Treasure mix)&lt;br /&gt;
	1 	# kehai (Enemy mix)&lt;br /&gt;
	2 	# battle (Combat mix)&lt;br /&gt;
	2 	# ground (Spiderwort mix)&lt;br /&gt;
	&lt;br /&gt;
	# pikmin数演出トラック定義 &lt;br /&gt;
	{&lt;br /&gt;
	  	1 1 1 1	# 0~3&lt;br /&gt;
		0 0 0 0	# 4~7&lt;br /&gt;
		0 0 0 0	# 8~11&lt;br /&gt;
		0 0 0 0	# 12~15&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	# マスクするnote on ID&lt;br /&gt;
	{&lt;br /&gt;
		0 0 0 1 	#0~3&lt;br /&gt;
		1 1 1 1 	#4~7&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* The first part is how many instruments will be in each mix. They must be grouped sequentially; in this example, the first 4 instruments in the song will be in the main mix, the next 2 instruments will be in the task mix, and so on.&amp;lt;br&amp;gt;&#039;&#039;Each mix must contain at least 1 track, as a mix with 0 tracks will not work. Additionally, the sum of all the tracks must not be greater than 16, which is the maximum number of tracks a song can have.&#039;&#039;&lt;br /&gt;
* The 16 values below is which of the 16 tracks will skip notes. Tracks set to &amp;quot;1&amp;quot; will skip notes when a Pikmin has died and the Pikmin count is below 10.&amp;lt;br&amp;gt;&#039;&#039;There must be at least one track set to 1, or the game will crash.&#039;&#039;&lt;br /&gt;
* The 8 values at the bottom is a table for when notes will be skipped in the theme. This was left the same for every song in the vanilla game.&amp;lt;br&amp;gt;&#039;&#039;Setting all 8 values to 0 will make it so there is no difference when the player loses a lot of Pikmin; if they are all set to 1, the instrument will practically disappear completely.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4632</id>
		<title>Creating cave music</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4632"/>
		<updated>2024-04-03T23:01:22Z</updated>

		<summary type="html">&lt;p&gt;Waffles: /* Bonus: Adding gesture cutoffs in timetables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Randomly generating cave music in Pikmin 2 needs to have two files: a .bms (sequence) file, and a .cnd (conductor) file.&lt;br /&gt;
&lt;br /&gt;
The BMS file type is a sequenced music format used in many games. For the cave music in Pikmin 2 however, it is specially-formatted. It mainly contains many short snippets of musical information to be randomized.&lt;br /&gt;
&lt;br /&gt;
The CND files are the actual &amp;quot;songs&amp;quot;; they take specific groups of snippets from a BMS file, and endlessly puzzle-piece them together to form a coherent piece of music.&lt;br /&gt;
&lt;br /&gt;
This guide will function as a walkthrough for creating your own randomly sequencing cave song. All of the editing will be done in hexadecimal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be generating a lot of tiny BMS files, to turn them into &amp;quot;gestures&amp;quot;.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
== Overview of file functions ==&lt;br /&gt;
Here are some infographics that you can reference at any time. These show all the functions of a CND file, and all the contents of a BMS file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
File:BMS_functions.png|How information is stored in a BMS file.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up your BMS file ==&lt;br /&gt;
Before you begin, set your byte grouping to &amp;quot;3&amp;quot;, so every 3 bytes is visually separated by a space. This will make it easier to see stuff.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Starting with a completely blank BMS file, begin by pasting the following:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Every cave music BMS begins with this same information.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Gesture set list ==&lt;br /&gt;
Exactly right after &amp;lt;code&amp;gt;34C600&amp;lt;/code&amp;gt; will be a list of every gesture set&#039;s location in the BMS. Each entry is the gesture set&#039;s hexadecimal location (offset), and each entry in the sequence begins with &amp;quot;&amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;&amp;quot;. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0001B0 0001BF 0001CE 0001D4 0001DA 0001E9 0001F8 0001FE 000204 00020A FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Gesture set &amp;quot;0&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1B0&amp;lt;/code&amp;gt;, gesture set &amp;quot;1&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1BF&amp;lt;/code&amp;gt;, gesture set &amp;quot;2&amp;quot; will be at &amp;lt;code&amp;gt;0x1CE&amp;lt;/code&amp;gt;, and so on. There are a total of 10 gesture sets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Until we create our gesture sets, let&#039;s use &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt; as placeholders so we can easily find and get back to this section later on. You can have as many gesture sets as you like; we&#039;ll create 16 entries for this tutorial. You may insert this into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our BMS should now currently look like this:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
You can also add an entire row of padding/zeros after this. You can do this for each section, to better visually separate them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing ruleset list ==&lt;br /&gt;
This is another sequence of offsets. These just point to the location of a &amp;quot;[[#Inserting_timetables|timetable]]&amp;quot;, which will be located at the end of our BMS file. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0005AB 0005AB 0005AF 0005C1 0005AB 0005AB 0005C1 0005C1 0005C1 0005C1 FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Timing ruleset &amp;quot;0&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;1&amp;quot; will also use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;2&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AF&amp;lt;/code&amp;gt;, and so on. There are a total of 10 timing rulesets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Let&#039;s use &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt; as placeholders again, and create 16 of them. Insert this anywhere into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set contents ==&lt;br /&gt;
A &#039;&#039;gesture set&#039;&#039; is a group of many gestures.&amp;lt;br&amp;gt;&lt;br /&gt;
Here, we list each gesture set&#039;s contents (which are... the locations of gestures!). Each gesture set begins before with &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt; and ends with &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how the gesture set list should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;000210 00022A 000258 000281 FFFFFF 0002B4 0002D9 000303 000331 FFFFFF 000355 FFFFFF 000361 FFFFFF 0003A8 0003C2 0003F0 000419 FFFFFF 00044C 000471 00049B 0004C9 FFFFFF 0004ED FFFFFF 000543 FFFFFF 000580 FFFFFF 00059E FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
There are 10 gesture sets listed above. The first gesture set has 4 gestures, located at &amp;lt;code&amp;gt;0x210&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x22A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x258&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;0x281&amp;lt;/code&amp;gt;. You can have any amount of gestures in a gesture set; even 1 is fine.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You can paste the following placeholder information for now:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It might be a good idea to leave a decent amount of zeros after this list; this one will expand a lot as gestures and gesture sets are added to it.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How is your BMS looking? ==&lt;br /&gt;
If you have been copy-pasting everything correctly, your BMS will look something like this:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=300px heights=300px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_1.png|Orange is &amp;quot;gesture set list&amp;quot;, yellow is &amp;quot;timing ruleset list&amp;quot;, and blue is &amp;quot;gesture set contents&amp;quot;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Once again, you can add as much padding between each section as you want, it will work fine.&lt;br /&gt;
&lt;br /&gt;
== Creating gestures ==&lt;br /&gt;
First, you should sketch out your song idea in your DAW, and then cut your song into tiny blocks. These blocks will be your song&#039;s individual gestures. You should also consider dragging these blocks around in various arrangements to make sure they sound good in any order.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once you are ready, have them nicely organized and ready to be exported into individual MIDI files:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_Pro_gestures.png|A Logic Pro project with a bunch of short blocks of music. Each block will be a &amp;quot;gesture&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
For some reason, imported BMS files play 4 times as slow in cave songs. So if you import these gestures as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export your gestures, you need to modify your gestures to run &#039;&#039;4 times as fast&#039;&#039;. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Logic Pro can easily speed up MIDI regions with MIDI Transform. You want to use the &amp;quot;Double Speed&amp;quot; transformation twice on each block.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_pro_double_speed.gif|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting gestures ==&lt;br /&gt;
Gestures use same the note/music information as standard BMS songs.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should have converted all your MIDIs into BMS files. Open up one of your converted BMS files, and look for the first note/pitch value. If you used [[Pikmin 2 custom music|flaaffy]], this will most likely be somewhere after &amp;lt;code&amp;gt;0x1B&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;0x1D&amp;lt;/code&amp;gt;. The note&#039;s pitch value will be followed by a &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;. Copy this note, all the way to the end of the sequence, which should be &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=600px&amp;gt;&lt;br /&gt;
File:Copy_pasting_BMS_info.png|The value &amp;quot;2D&amp;quot; here is the hex value of a certain pitch, and the very first note of the sequence. Copy this, all the way to &amp;quot;FF&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
To add your gesture, start it with &amp;lt;code&amp;gt;C40000015D&amp;lt;/code&amp;gt;, then paste in what you copied. Each gesture should end with that &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;. Add as many gestures as you please!&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_2.png|The purple lines indicate where a gesture starts.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting timetables ==&lt;br /&gt;
So, how do we choose how often gestures will play? Will a gesture play every beat? Every 1/2 a beat? You will need to add a timetable for that!&lt;br /&gt;
A timetable is a sequence that dictates when gestures should play. A timetable ends with &amp;lt;code&amp;gt;FFFF&amp;lt;/code&amp;gt;. You can make a timetable as complex as you like.&amp;lt;br&amp;gt; Some examples of timetables you can use are:&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0780FFFF&amp;lt;/code&amp;gt; Play a gesture every 16 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C0FFFF&amp;lt;/code&amp;gt; Play a gesture every 8 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;01E0FFFF&amp;lt;/code&amp;gt; Play a gesture every 4 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C003C003C001E001E001E001E003C0FFFF&amp;lt;/code&amp;gt; This sequence will play a gesture every 8 beats (3x), play a gesture every 4 beats (4x), then play a gesture for 8 beats (1x), in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/2 note (every 2 beats).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0078FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/4 note (every beat).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003CFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/8th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;001EFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/16th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003C0078001EFFFF&amp;lt;/code&amp;gt; This sequence will play a gesture for an 1/8th note, play a gesture for a 1/4 note, then play a gesture for a 1/16th note, in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
Considering that &amp;lt;code&amp;gt;001E&amp;lt;/code&amp;gt; (30 in decimal) is a 1/16th note, you can create any specific timing you want. Just add another 30 to the value for each additional sixteenth note in length.&amp;lt;br&amp;gt;&lt;br /&gt;
For example, Soil 1&#039;s enemy mix piano plays very rapidly; its timetable uses a value of 90, which looks like &amp;lt;code&amp;gt;005AFFFF&amp;lt;/code&amp;gt;. The gestures last for three sixteenth notes.&amp;lt;br&amp;gt;&lt;br /&gt;
You can insert your timetables anywhere at the end of your BMS.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_3.png|Each timetable has a pink box around it.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in info ==&lt;br /&gt;
Once you have your gestures and timetables inserted, go back and fill in those &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00CCCC&amp;lt;/code&amp;gt; placeholders with the locations of your gesture sets, timetables, and gestures you want to use. Remember that gesture sets begin with the &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Also in the very beginning of your BMS, make sure the value at &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; has the location of where your gesture set list begins (this one will probably be fine), and the value at &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; has the location of where your timing ruleset list begins.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_4.png|Put the location of where the &amp;quot;timing ruleset list&amp;quot; begins here.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in the conductor file ==&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
In your song&#039;s associated conductor file, try to stretch out the window so that the instrument names are all in the same column if you can, like in the image above.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Each line represents one track. You give each track a instrument (program), and what gesture set and timing ruleset to use.&amp;lt;br&amp;gt;&lt;br /&gt;
The CND infographic above does a good job explaining all the functions, but they&#039;ll be explained again down here.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the top left corner are three important values:&lt;br /&gt;
* The first value is the swing time. &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt; is 1/16th swing, while &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; is 1/8th swing. If your song is below 100bpm, you might want to use &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt;. If its faster, try &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
* The second value is the tempo, in hex.&lt;br /&gt;
* The third value is how many tracks there will be, in hex.&lt;br /&gt;
&lt;br /&gt;
Each column explained:&lt;br /&gt;
* A: Initial delay. How many beats until this track starts running. In the vanilla game, you can notice how some song&#039;s melodies do not immediately begin playing upon the start of level. This is useful for that; ease the listener into the music.&lt;br /&gt;
* B/Q: If set to 1, all gestures will be delayed by an 1/8th note..&lt;br /&gt;
* C: Text string. You can make this say whatever you like. Useful for keeping track of what you want each track to be, like &amp;quot;Lead&amp;quot;, &amp;quot;Trumpet&amp;quot;, &amp;quot;MelodyA&amp;quot;/&amp;quot;MelodyB&amp;quot;, &amp;quot;Bass&amp;quot;, or &amp;quot;Drums&amp;quot;&lt;br /&gt;
* D: Track copy. Select a previous track # to copy the gestures from. If the track its copying plays &amp;quot;gesture 3&amp;quot; from its gesture set, this track will also play its &amp;quot;gesture 3&amp;quot;. Often used for treasure mix instruments. You can have them use different gesture sets if you like.&lt;br /&gt;
* E: Echo strength.&lt;br /&gt;
* F: If set to 1, the values in this track&#039;s timetable will always be played in order, in a loop. If set to 0, it will randomly select values from its timetable, thus, allowing you to randomize when gestures play.&lt;br /&gt;
* G: Bank number.&lt;br /&gt;
* H: Program number. For a list of all programs in the default game and the wScenes that support them, view [[Pikmin 2 custom_music/available instruments|this page]].&lt;br /&gt;
* I: Gesture set, select the set # you want to use from the BMS. &lt;br /&gt;
* J: Timing ruleset, select the set # you want to use from the BMS.&lt;br /&gt;
* K: How many gestures this track will play, before playing &amp;quot;silent gestures&amp;quot;. Linked to below. These function as a sort of on/off cycle.&lt;br /&gt;
* L: How many &amp;quot;silent gestures&amp;quot; this track will play, before playing normal gestures. Linked to above. These function as a sort of on/off cycle.&lt;br /&gt;
* M: If notes are being transposed down (see below), this is set to FF. But this column doesn&#039;t actually do anything, so you don&#039;t need to edit this.&lt;br /&gt;
* N: Transpose all notes played by this track. To transpose up, use values 1-127. To transpose down, use the sign 2 compliment (values 128-255).&lt;br /&gt;
* O: Volume.&lt;br /&gt;
* P: Stereo panning.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas/considerations:&lt;br /&gt;
* You can use the on/off cycle feature (column K and L) to make your melodic instrument &amp;quot;take a break&amp;quot; every once in a while. You can have it play 4 gestures, but then be silent for 2.&lt;br /&gt;
* If your timing ruleset is strict (as in, the timings for when gestures occur is always consistent), something fun to try is to have the melody be a back-and-forth between two different instruments. Set the initial delay for the second instrument to be longer than the first one, and then cleverly use the on/off cycle to have the instruments take turns sounding a gesture. This is done for the melody in the Bulblax Kingdom and Frontier Cavern for example.&lt;br /&gt;
* If you are using the &amp;quot;track copy&amp;quot; feature (column D), you can have the primary instrument play a melody, and have this instrument always play chords that perfectly match that melody.&lt;br /&gt;
&lt;br /&gt;
== Mapping the tracks ==&lt;br /&gt;
With all that done, don&#039;t forget to edit the song&#039;s [[Trackmap parameters|trackMap]]! Edit your song in the trackMap files in either &amp;lt;code&amp;gt;/user/Totaka&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/user/Wakai&amp;lt;/code&amp;gt;, and set how many instruments will be in each mix. It goes in order from: Main Mix, Task (event), Treasure (otakara), Enemy near (kehai), Combat mix, and Spiderwort mix (ground). Although you cannot find Spiderworts underground, you will have to sacrifice at least one track for that mix. You cannot set any of the mixes to have 0 instruments in them.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Filenames for brand new CND files ==&lt;br /&gt;
If you are adding a brand new CND file instead of replacing an existing one, the prefix will determine which BMS is loaded, and which wScene. Try not to add special characters to filenames, aside from underscores.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to load the correct BMS file, the CND must start with the name of the BMS file.&lt;br /&gt;
* &amp;quot;caveconc.cnd&amp;quot;, &amp;quot;caveconc_458435.cnd&amp;quot;, &amp;quot;caveconc_Waffles.cnd&amp;quot;, and &amp;quot;caveconc_Waffles_Song_2.cnd&amp;quot; will all load caveconc.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;caverelax.cnd&amp;quot;, &amp;quot;caverelax_Gmajor.cnd&amp;quot;, and &amp;quot;caverelax_mamuta_dinner.cnd&amp;quot; will all load caverelax.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;new_09_4.cnd&amp;quot;, &amp;quot;new_09_4000.cnd&amp;quot;, and &amp;quot;new_09_portal_PotaTOS.cnd&amp;quot; will load new_09.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For cavesoil, caveconc, and cavemetal only, the game also checks for an additional &amp;quot;_00&amp;quot;, &amp;quot;_05&amp;quot;, and &amp;quot;_10&amp;quot; right after the prefix, for the purpose of loading one of three different wScenes. You must include it if you want the correct wScene to load. For example, caveconc_05 loads wScene 31, so if you want your custom song to also load wScene 31, acceptable names include &amp;quot;caveconc_05_WAFFLES.cnd&amp;quot;, &amp;quot;caveconc_05_52_46356.cnd&amp;quot;, or &amp;quot;caveconc_05_super_boss.cnd&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After adding your new CND file, be sure to add it to its respective trackMap file.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding new content to a vanilla BMS file ==&lt;br /&gt;
Adding new hex data in the middle of a file will shift all the offsets that come after it, causing your BMS to jump to the wrong locations, and likely cause a crash if vanilla songs are loaded.&amp;lt;br&amp;gt;&lt;br /&gt;
In order to add new content in addition to what&#039;s already in the BMS:&lt;br /&gt;
* Find and copy the gesture set list and the timing ruleset list, and paste them at the end of the file. (Separate them with lots of zeros so you have lots more space to add content to these lists)&lt;br /&gt;
* Change &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; to point to your new gesture set list and timing ruleset list. These two values tell the game where the lists are.&lt;br /&gt;
The game should now use these brand new lists, instead of the original instances that occur earlier in the file. Since they still contain all the locations of the vanilla gesture sets/timetables from above in the same order, the existing CND songs won&#039;t be affected and will continue to function, but now you can expand upon these lists with brand new entries now that you&#039;ve made the space for them. All new gestures, gesture sets and timetables can be added further down the file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Editing_vanilla_BMS_file.png|The new gesture set list and timing ruleset list we want to use will be at the bottom.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding gesture cutoffs in timetables ==&lt;br /&gt;
An intentional compositional choice in some songs is to cutoff gestures while they&#039;re in the middle of playing. The most common way this is done is to quickly trigger another gesture; if the last gesture has not finished playing, it will stop playing that gesture and begin playing the new one. It&#039;s also possible to add &amp;quot;empty&amp;quot; gestures to gesture sets (like &amp;lt;code&amp;gt;C40000015DFF&amp;lt;/code&amp;gt;, a gesture which ends immediately and plays nothing), so you can randomly interrupt gestures in your song with silence, or have there be a chance to play nothing.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
However, if you wish to interrupt gestures in your song at specified times without the randomness, there is a special function in timetables for doing this. In the vanilla game, this is used for the trumpet in [https://www.youtube.com/watch?v=qOhmS1YLpF8 Fire]. The trumpet plays two interrupted gestures, then plays a third gesture in full. Below is the timetable for this trumpet:&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;0078 8168 81E0 00F0 80F0 81E0 0780 FFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The trumpet will:&lt;br /&gt;
* &amp;lt;code&amp;gt;0078&amp;lt;/code&amp;gt; play a gesture for 1 beat&lt;br /&gt;
* &amp;lt;code&amp;gt;8168&amp;lt;/code&amp;gt; cutoff after this 1 beat&lt;br /&gt;
* &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; extend the silence for another 4 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0&amp;lt;/code&amp;gt; play a gesture for 2 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;80F0&amp;lt;/code&amp;gt; cutoff after these 2 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; extend the silence for another 4 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;0780&amp;lt;/code&amp;gt; play a gesture for 16 beats.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In order to put a &amp;quot;cutoff&amp;quot; in your timetable:&lt;br /&gt;
* Start with how long you want your &amp;quot;playing&amp;quot; gesture to play for, before it gets cutoff. I want the the first gesture to last for one beat (four 1/16th notes), so I&#039;ll put &amp;lt;code&amp;gt;0078&amp;lt;/code&amp;gt;. Remember that every &amp;quot;30&amp;quot; in decimal is equivalent to a sixteenth note.&lt;br /&gt;
* Immediately next in the sequence will be a value that indicates when the cutoff begins. Calculate the difference between &amp;quot;81E0&amp;quot; and the previous value you had just inserted. 81E0 - 0078 = 8168 (in decimal, 33248 - 120 = 33128). I will put &amp;lt;code&amp;gt;8168&amp;lt;/code&amp;gt; next in my sequence.&lt;br /&gt;
My sequence is now &amp;lt;code&amp;gt;0078 8168 FFFF&amp;lt;/code&amp;gt;; this will play a gesture normally for 1 beat, but then immediately cut it off after that 1 beat.&amp;lt;br&amp;gt;&lt;br /&gt;
Putting an additional &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; in the sequence right after will the silence for another 4 beats. You can keep putting &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; right after several times in a row if you want depending on how long you want the silence to last, until the next gesture.&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4628</id>
		<title>Creating cave music</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4628"/>
		<updated>2024-03-26T15:45:44Z</updated>

		<summary type="html">&lt;p&gt;Waffles: /* Bonus: Adding gesture cutoffs in timetables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Randomly generating cave music in Pikmin 2 needs to have two files: a .bms (sequence) file, and a .cnd (conductor) file.&lt;br /&gt;
&lt;br /&gt;
The BMS file type is a sequenced music format used in many games. For the cave music in Pikmin 2 however, it is specially-formatted. It mainly contains many short snippets of musical information to be randomized.&lt;br /&gt;
&lt;br /&gt;
The CND files are the actual &amp;quot;songs&amp;quot;; they take specific groups of snippets from a BMS file, and endlessly puzzle-piece them together to form a coherent piece of music.&lt;br /&gt;
&lt;br /&gt;
This guide will function as a walkthrough for creating your own randomly sequencing cave song. All of the editing will be done in hexadecimal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be generating a lot of tiny BMS files, to turn them into &amp;quot;gestures&amp;quot;.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
== Overview of file functions ==&lt;br /&gt;
Here are some infographics that you can reference at any time. These show all the functions of a CND file, and all the contents of a BMS file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
File:BMS_functions.png|How information is stored in a BMS file.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up your BMS file ==&lt;br /&gt;
Before you begin, set your byte grouping to &amp;quot;3&amp;quot;, so every 3 bytes is visually separated by a space. This will make it easier to see stuff.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Starting with a completely blank BMS file, begin by pasting the following:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Every cave music BMS begins with this same information.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Gesture set list ==&lt;br /&gt;
Exactly right after &amp;lt;code&amp;gt;34C600&amp;lt;/code&amp;gt; will be a list of every gesture set&#039;s location in the BMS. Each entry is the gesture set&#039;s hexadecimal location (offset), and each entry in the sequence begins with &amp;quot;&amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;&amp;quot;. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0001B0 0001BF 0001CE 0001D4 0001DA 0001E9 0001F8 0001FE 000204 00020A FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Gesture set &amp;quot;0&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1B0&amp;lt;/code&amp;gt;, gesture set &amp;quot;1&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1BF&amp;lt;/code&amp;gt;, gesture set &amp;quot;2&amp;quot; will be at &amp;lt;code&amp;gt;0x1CE&amp;lt;/code&amp;gt;, and so on. There are a total of 10 gesture sets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Until we create our gesture sets, let&#039;s use &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt; as placeholders so we can easily find and get back to this section later on. You can have as many gesture sets as you like; we&#039;ll create 16 entries for this tutorial. You may insert this into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our BMS should now currently look like this:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
You can also add an entire row of padding/zeros after this. You can do this for each section, to better visually separate them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing ruleset list ==&lt;br /&gt;
This is another sequence of offsets. These just point to the location of a &amp;quot;[[#Inserting_timetables|timetable]]&amp;quot;, which will be located at the end of our BMS file. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0005AB 0005AB 0005AF 0005C1 0005AB 0005AB 0005C1 0005C1 0005C1 0005C1 FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Timing ruleset &amp;quot;0&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;1&amp;quot; will also use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;2&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AF&amp;lt;/code&amp;gt;, and so on. There are a total of 10 timing rulesets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Let&#039;s use &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt; as placeholders again, and create 16 of them. Insert this anywhere into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set contents ==&lt;br /&gt;
A &#039;&#039;gesture set&#039;&#039; is a group of many gestures.&amp;lt;br&amp;gt;&lt;br /&gt;
Here, we list each gesture set&#039;s contents (which are... the locations of gestures!). Each gesture set begins before with &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt; and ends with &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how the gesture set list should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;000210 00022A 000258 000281 FFFFFF 0002B4 0002D9 000303 000331 FFFFFF 000355 FFFFFF 000361 FFFFFF 0003A8 0003C2 0003F0 000419 FFFFFF 00044C 000471 00049B 0004C9 FFFFFF 0004ED FFFFFF 000543 FFFFFF 000580 FFFFFF 00059E FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
There are 10 gesture sets listed above. The first gesture set has 4 gestures, located at &amp;lt;code&amp;gt;0x210&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x22A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x258&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;0x281&amp;lt;/code&amp;gt;. You can have any amount of gestures in a gesture set; even 1 is fine.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You can paste the following placeholder information for now:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It might be a good idea to leave a decent amount of zeros after this list; this one will expand a lot as gestures and gesture sets are added to it.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How is your BMS looking? ==&lt;br /&gt;
If you have been copy-pasting everything correctly, your BMS will look something like this:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=300px heights=300px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_1.png|Orange is &amp;quot;gesture set list&amp;quot;, yellow is &amp;quot;timing ruleset list&amp;quot;, and blue is &amp;quot;gesture set contents&amp;quot;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Once again, you can add as much padding between each section as you want, it will work fine.&lt;br /&gt;
&lt;br /&gt;
== Creating gestures ==&lt;br /&gt;
First, you should sketch out your song idea in your DAW, and then cut your song into tiny blocks. These blocks will be your song&#039;s individual gestures. You should also consider dragging these blocks around in various arrangements to make sure they sound good in any order.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once you are ready, have them nicely organized and ready to be exported into individual MIDI files:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_Pro_gestures.png|A Logic Pro project with a bunch of short blocks of music. Each block will be a &amp;quot;gesture&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
For some reason, imported BMS files play 4 times as slow in cave songs. So if you import these gestures as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export your gestures, you need to modify your gestures to run &#039;&#039;4 times as fast&#039;&#039;. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Logic Pro can easily speed up MIDI regions with MIDI Transform. You want to use the &amp;quot;Double Speed&amp;quot; transformation twice on each block.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_pro_double_speed.gif|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting gestures ==&lt;br /&gt;
Gestures use same the note/music information as standard BMS songs.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should have converted all your MIDIs into BMS files. Open up one of your converted BMS files, and look for the first note/pitch value. If you used [[Pikmin 2 custom music|flaaffy]], this will most likely be somewhere after &amp;lt;code&amp;gt;0x1B&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;0x1D&amp;lt;/code&amp;gt;. The note&#039;s pitch value will be followed by a &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;. Copy this note, all the way to the end of the sequence, which should be &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=600px&amp;gt;&lt;br /&gt;
File:Copy_pasting_BMS_info.png|The value &amp;quot;2D&amp;quot; here is the hex value of a certain pitch, and the very first note of the sequence. Copy this, all the way to &amp;quot;FF&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
To add your gesture, start it with &amp;lt;code&amp;gt;C40000015D&amp;lt;/code&amp;gt;, then paste in what you copied. Each gesture should end with that &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;. Add as many gestures as you please!&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_2.png|The purple lines indicate where a gesture starts.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting timetables ==&lt;br /&gt;
So, how do we choose how often gestures will play? Will a gesture play every beat? Every 1/2 a beat? You will need to add a timetable for that!&lt;br /&gt;
A timetable is a sequence that dictates when gestures should play. A timetable ends with &amp;lt;code&amp;gt;FFFF&amp;lt;/code&amp;gt;. You can make a timetable as complex as you like.&amp;lt;br&amp;gt; Some examples of timetables you can use are:&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0780FFFF&amp;lt;/code&amp;gt; Play a gesture every 16 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C0FFFF&amp;lt;/code&amp;gt; Play a gesture every 8 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;01E0FFFF&amp;lt;/code&amp;gt; Play a gesture every 4 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C003C003C001E001E001E001E003C0FFFF&amp;lt;/code&amp;gt; This sequence will play a gesture every 8 beats (3x), play a gesture every 4 beats (4x), then play a gesture for 8 beats (1x), in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/2 note (every 2 beats).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0078FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/4 note (every beat).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003CFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/8th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;001EFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/16th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003C0078001EFFFF&amp;lt;/code&amp;gt; This sequence will play a gesture for an 1/8th note, play a gesture for a 1/4 note, then play a gesture for a 1/16th note, in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
Considering that &amp;lt;code&amp;gt;001E&amp;lt;/code&amp;gt; (30 in decimal) is a 1/16th note, you can create any specific timing you want. Just add another 30 to the value for each additional sixteenth note in length.&amp;lt;br&amp;gt;&lt;br /&gt;
For example, Soil 1&#039;s enemy mix piano plays very rapidly; its timetable uses a value of 90, which looks like &amp;lt;code&amp;gt;005AFFFF&amp;lt;/code&amp;gt;. The gestures last for three sixteenth notes.&amp;lt;br&amp;gt;&lt;br /&gt;
You can insert your timetables anywhere at the end of your BMS.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_3.png|Each timetable has a pink box around it.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in info ==&lt;br /&gt;
Once you have your gestures and timetables inserted, go back and fill in those &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00CCCC&amp;lt;/code&amp;gt; placeholders with the locations of your gesture sets, timetables, and gestures you want to use. Remember that gesture sets begin with the &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Also in the very beginning of your BMS, make sure the value at &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; has the location of where your gesture set list begins (this one will probably be fine), and the value at &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; has the location of where your timing ruleset list begins.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_4.png|Put the location of where the &amp;quot;timing ruleset list&amp;quot; begins here.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in the conductor file ==&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
In your song&#039;s associated conductor file, try to stretch out the window so that the instrument names are all in the same column if you can, like in the image above.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Each line represents one track. You give each track a instrument (program), and what gesture set and timing ruleset to use.&amp;lt;br&amp;gt;&lt;br /&gt;
The CND infographic above does a good job explaining all the functions, but they&#039;ll be explained again down here.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the top left corner are three important values:&lt;br /&gt;
* The first value is the swing time. &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt; is 1/16th swing, while &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; is 1/8th swing. If your song is below 100bpm, you might want to use &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt;. If its faster, try &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
* The second value is the tempo, in hex.&lt;br /&gt;
* The third value is how many tracks there will be, in hex.&lt;br /&gt;
&lt;br /&gt;
Each column explained:&lt;br /&gt;
* A: Initial delay. How many beats until this track starts running. In the vanilla game, you can notice how some song&#039;s melodies do not immediately begin playing upon the start of level. This is useful for that; ease the listener into the music.&lt;br /&gt;
* B/Q: If set to 1, all gestures will be delayed by an 1/8th note..&lt;br /&gt;
* C: Text string. You can make this say whatever you like. Useful for keeping track of what you want each track to be, like &amp;quot;Lead&amp;quot;, &amp;quot;Trumpet&amp;quot;, &amp;quot;MelodyA&amp;quot;/&amp;quot;MelodyB&amp;quot;, &amp;quot;Bass&amp;quot;, or &amp;quot;Drums&amp;quot;&lt;br /&gt;
* D: Track copy. Select a previous track # to copy the gestures from. If the track its copying plays &amp;quot;gesture 3&amp;quot; from its gesture set, this track will also play its &amp;quot;gesture 3&amp;quot;. Often used for treasure mix instruments. You can have them use different gesture sets if you like.&lt;br /&gt;
* E: Echo strength.&lt;br /&gt;
* F: If set to 1, the values in this track&#039;s timetable will always be played in order, in a loop. If set to 0, it will randomly select values from its timetable, thus, allowing you to randomize when gestures play.&lt;br /&gt;
* G: Bank number.&lt;br /&gt;
* H: Program number. For a list of all programs in the default game and the wScenes that support them, view [[Pikmin 2 custom_music/available instruments|this page]].&lt;br /&gt;
* I: Gesture set, select the set # you want to use from the BMS. &lt;br /&gt;
* J: Timing ruleset, select the set # you want to use from the BMS.&lt;br /&gt;
* K: How many gestures this track will play, before playing &amp;quot;silent gestures&amp;quot;. Linked to below. These function as a sort of on/off cycle.&lt;br /&gt;
* L: How many &amp;quot;silent gestures&amp;quot; this track will play, before playing normal gestures. Linked to above. These function as a sort of on/off cycle.&lt;br /&gt;
* M: If notes are being transposed down (see below), this is set to FF. But this column doesn&#039;t actually do anything, so you don&#039;t need to edit this.&lt;br /&gt;
* N: Transpose all notes played by this track. To transpose up, use values 1-127. To transpose down, use the sign 2 compliment (values 128-255).&lt;br /&gt;
* O: Volume.&lt;br /&gt;
* P: Stereo panning.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas/considerations:&lt;br /&gt;
* You can use the on/off cycle feature (column K and L) to make your melodic instrument &amp;quot;take a break&amp;quot; every once in a while. You can have it play 4 gestures, but then be silent for 2.&lt;br /&gt;
* If your timing ruleset is strict (as in, the timings for when gestures occur is always consistent), something fun to try is to have the melody be a back-and-forth between two different instruments. Set the initial delay for the second instrument to be longer than the first one, and then cleverly use the on/off cycle to have the instruments take turns sounding a gesture. This is done for the melody in the Bulblax Kingdom and Frontier Cavern for example.&lt;br /&gt;
* If you are using the &amp;quot;track copy&amp;quot; feature (column D), you can have the primary instrument play a melody, and have this instrument always play chords that perfectly match that melody.&lt;br /&gt;
&lt;br /&gt;
== Mapping the tracks ==&lt;br /&gt;
With all that done, don&#039;t forget to edit the song&#039;s [[Trackmap parameters|trackMap]]! Edit your song in the trackMap files in either &amp;lt;code&amp;gt;/user/Totaka&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/user/Wakai&amp;lt;/code&amp;gt;, and set how many instruments will be in each mix. It goes in order from: Main Mix, Task (event), Treasure (otakara), Enemy near (kehai), Combat mix, and Spiderwort mix (ground). Although you cannot find Spiderworts underground, you will have to sacrifice at least one track for that mix. You cannot set any of the mixes to have 0 instruments in them.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Filenames for brand new CND files ==&lt;br /&gt;
If you are adding a brand new CND file instead of replacing an existing one, the prefix will determine which BMS is loaded, and which wScene. Try not to add special characters to filenames, aside from underscores.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to load the correct BMS file, the CND must start with the name of the BMS file.&lt;br /&gt;
* &amp;quot;caveconc.cnd&amp;quot;, &amp;quot;caveconc_458435.cnd&amp;quot;, &amp;quot;caveconc_Waffles.cnd&amp;quot;, and &amp;quot;caveconc_Waffles_Song_2.cnd&amp;quot; will all load caveconc.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;caverelax.cnd&amp;quot;, &amp;quot;caverelax_Gmajor.cnd&amp;quot;, and &amp;quot;caverelax_mamuta_dinner.cnd&amp;quot; will all load caverelax.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;new_09_4.cnd&amp;quot;, &amp;quot;new_09_4000.cnd&amp;quot;, and &amp;quot;new_09_portal_PotaTOS.cnd&amp;quot; will load new_09.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For cavesoil, caveconc, and cavemetal only, the game also checks for an additional &amp;quot;_00&amp;quot;, &amp;quot;_05&amp;quot;, and &amp;quot;_10&amp;quot; right after the prefix, for the purpose of loading one of three different wScenes. You must include it if you want the correct wScene to load. For example, caveconc_05 loads wScene 31, so if you want your custom song to also load wScene 31, acceptable names include &amp;quot;caveconc_05_WAFFLES.cnd&amp;quot;, &amp;quot;caveconc_05_52_46356.cnd&amp;quot;, or &amp;quot;caveconc_05_super_boss.cnd&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After adding your new CND file, be sure to add it to its respective trackMap file.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding new content to a vanilla BMS file ==&lt;br /&gt;
Adding new hex data in the middle of a file will shift all the offsets that come after it, causing your BMS to jump to the wrong locations, and likely cause a crash if vanilla songs are loaded.&amp;lt;br&amp;gt;&lt;br /&gt;
In order to add new content in addition to what&#039;s already in the BMS:&lt;br /&gt;
* Find and copy the gesture set list and the timing ruleset list, and paste them at the end of the file. (Separate them with lots of zeros so you have lots more space to add content to these lists)&lt;br /&gt;
* Change &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; to point to your new gesture set list and timing ruleset list. These two values tell the game where the lists are.&lt;br /&gt;
The game should now use these brand new lists, instead of the original instances that occur earlier in the file. Since they still contain all the locations of the vanilla gesture sets/timetables from above in the same order, the existing CND songs won&#039;t be affected and will continue to function, but now you can expand upon these lists with brand new entries now that you&#039;ve made the space for them. All new gestures, gesture sets and timetables can be added further down the file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Editing_vanilla_BMS_file.png|The new gesture set list and timing ruleset list we want to use will be at the bottom.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding gesture cutoffs in timetables ==&lt;br /&gt;
An intentional compositional choice in some songs is to cutoff gestures while they&#039;re in the middle of playing. The most common way this is done is to quickly trigger another gesture; if the last gesture has not finished playing, it will stop playing that gesture and begin playing the new one. It&#039;s also possible to add &amp;quot;empty&amp;quot; gestures to gesture sets (like &amp;lt;code&amp;gt;C40000015DFF&amp;lt;/code&amp;gt;, a gesture which ends immediately and plays nothing), so you can randomly interrupt gestures in your song with silence, or have there be a chance to play nothing.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
However, if you wish to interrupt gestures in your song at specified times without the randomness, there is a special function in timetables for doing this. In the vanilla game, this is used for the trumpet in [https://www.youtube.com/watch?v=qOhmS1YLpF8 Fire]. The trumpet plays two interrupted gestures, then plays a third gesture in full. Below is the timetable for this trumpet:&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;0078 8168 81E0 00F0 80F0 81E0 0780 FFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The trumpet will:&lt;br /&gt;
* &amp;lt;code&amp;gt;0078&amp;lt;/code&amp;gt; play a gesture for 1 beat&lt;br /&gt;
* &amp;lt;code&amp;gt;8168&amp;lt;/code&amp;gt; cutoff after this 1 beat&lt;br /&gt;
* &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; extend cutoff for another 4 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0&amp;lt;/code&amp;gt; play a gesture for 2 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;80F0&amp;lt;/code&amp;gt; cutoff after these 2 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; extend cutoff for another 4 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;0780&amp;lt;/code&amp;gt; play a gesture for 16 beats.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In order to put a &amp;quot;cutoff&amp;quot; in your timetable:&lt;br /&gt;
* Start with how long you want your &amp;quot;playing&amp;quot; gesture to play for, before it gets cutoff. I want the the first gesture to last for one beat (four 1/16th notes), so I&#039;ll put &amp;lt;code&amp;gt;0078&amp;lt;/code&amp;gt;. Remember that every &amp;quot;30&amp;quot; in decimal is equivalent to a sixteenth note.&lt;br /&gt;
* Immediately next in the sequence will be a value that indicates when the cutoff begins. Calculate the difference between &amp;quot;81E0&amp;quot; and the previous value you had just inserted. 81E0 - 0078 = 8168 (in decimal, 33248 - 120 = 33128). I will put &amp;lt;code&amp;gt;8168&amp;lt;/code&amp;gt; next in my sequence.&lt;br /&gt;
My sequence is now &amp;lt;code&amp;gt;0078 8168 FFFF&amp;lt;/code&amp;gt;; this will play a gesture normally for 1 beat, but then immediately cut it off after that 1 beat.&amp;lt;br&amp;gt;&lt;br /&gt;
Putting an additional &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; in the sequence right after will extend the cutoff time for another 4 beats. You can keep putting &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; right after several times in a row if you want the cutoff to last for longer periods.&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4627</id>
		<title>Creating cave music</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4627"/>
		<updated>2024-03-26T15:44:11Z</updated>

		<summary type="html">&lt;p&gt;Waffles: /* Bonus: Adding gesture cutoffs in timetables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Randomly generating cave music in Pikmin 2 needs to have two files: a .bms (sequence) file, and a .cnd (conductor) file.&lt;br /&gt;
&lt;br /&gt;
The BMS file type is a sequenced music format used in many games. For the cave music in Pikmin 2 however, it is specially-formatted. It mainly contains many short snippets of musical information to be randomized.&lt;br /&gt;
&lt;br /&gt;
The CND files are the actual &amp;quot;songs&amp;quot;; they take specific groups of snippets from a BMS file, and endlessly puzzle-piece them together to form a coherent piece of music.&lt;br /&gt;
&lt;br /&gt;
This guide will function as a walkthrough for creating your own randomly sequencing cave song. All of the editing will be done in hexadecimal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be generating a lot of tiny BMS files, to turn them into &amp;quot;gestures&amp;quot;.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
== Overview of file functions ==&lt;br /&gt;
Here are some infographics that you can reference at any time. These show all the functions of a CND file, and all the contents of a BMS file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
File:BMS_functions.png|How information is stored in a BMS file.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up your BMS file ==&lt;br /&gt;
Before you begin, set your byte grouping to &amp;quot;3&amp;quot;, so every 3 bytes is visually separated by a space. This will make it easier to see stuff.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Starting with a completely blank BMS file, begin by pasting the following:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Every cave music BMS begins with this same information.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Gesture set list ==&lt;br /&gt;
Exactly right after &amp;lt;code&amp;gt;34C600&amp;lt;/code&amp;gt; will be a list of every gesture set&#039;s location in the BMS. Each entry is the gesture set&#039;s hexadecimal location (offset), and each entry in the sequence begins with &amp;quot;&amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;&amp;quot;. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0001B0 0001BF 0001CE 0001D4 0001DA 0001E9 0001F8 0001FE 000204 00020A FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Gesture set &amp;quot;0&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1B0&amp;lt;/code&amp;gt;, gesture set &amp;quot;1&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1BF&amp;lt;/code&amp;gt;, gesture set &amp;quot;2&amp;quot; will be at &amp;lt;code&amp;gt;0x1CE&amp;lt;/code&amp;gt;, and so on. There are a total of 10 gesture sets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Until we create our gesture sets, let&#039;s use &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt; as placeholders so we can easily find and get back to this section later on. You can have as many gesture sets as you like; we&#039;ll create 16 entries for this tutorial. You may insert this into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our BMS should now currently look like this:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
You can also add an entire row of padding/zeros after this. You can do this for each section, to better visually separate them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing ruleset list ==&lt;br /&gt;
This is another sequence of offsets. These just point to the location of a &amp;quot;[[#Inserting_timetables|timetable]]&amp;quot;, which will be located at the end of our BMS file. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0005AB 0005AB 0005AF 0005C1 0005AB 0005AB 0005C1 0005C1 0005C1 0005C1 FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Timing ruleset &amp;quot;0&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;1&amp;quot; will also use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;2&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AF&amp;lt;/code&amp;gt;, and so on. There are a total of 10 timing rulesets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Let&#039;s use &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt; as placeholders again, and create 16 of them. Insert this anywhere into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set contents ==&lt;br /&gt;
A &#039;&#039;gesture set&#039;&#039; is a group of many gestures.&amp;lt;br&amp;gt;&lt;br /&gt;
Here, we list each gesture set&#039;s contents (which are... the locations of gestures!). Each gesture set begins before with &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt; and ends with &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how the gesture set list should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;000210 00022A 000258 000281 FFFFFF 0002B4 0002D9 000303 000331 FFFFFF 000355 FFFFFF 000361 FFFFFF 0003A8 0003C2 0003F0 000419 FFFFFF 00044C 000471 00049B 0004C9 FFFFFF 0004ED FFFFFF 000543 FFFFFF 000580 FFFFFF 00059E FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
There are 10 gesture sets listed above. The first gesture set has 4 gestures, located at &amp;lt;code&amp;gt;0x210&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x22A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x258&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;0x281&amp;lt;/code&amp;gt;. You can have any amount of gestures in a gesture set; even 1 is fine.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You can paste the following placeholder information for now:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It might be a good idea to leave a decent amount of zeros after this list; this one will expand a lot as gestures and gesture sets are added to it.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How is your BMS looking? ==&lt;br /&gt;
If you have been copy-pasting everything correctly, your BMS will look something like this:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=300px heights=300px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_1.png|Orange is &amp;quot;gesture set list&amp;quot;, yellow is &amp;quot;timing ruleset list&amp;quot;, and blue is &amp;quot;gesture set contents&amp;quot;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Once again, you can add as much padding between each section as you want, it will work fine.&lt;br /&gt;
&lt;br /&gt;
== Creating gestures ==&lt;br /&gt;
First, you should sketch out your song idea in your DAW, and then cut your song into tiny blocks. These blocks will be your song&#039;s individual gestures. You should also consider dragging these blocks around in various arrangements to make sure they sound good in any order.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once you are ready, have them nicely organized and ready to be exported into individual MIDI files:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_Pro_gestures.png|A Logic Pro project with a bunch of short blocks of music. Each block will be a &amp;quot;gesture&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
For some reason, imported BMS files play 4 times as slow in cave songs. So if you import these gestures as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export your gestures, you need to modify your gestures to run &#039;&#039;4 times as fast&#039;&#039;. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Logic Pro can easily speed up MIDI regions with MIDI Transform. You want to use the &amp;quot;Double Speed&amp;quot; transformation twice on each block.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_pro_double_speed.gif|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting gestures ==&lt;br /&gt;
Gestures use same the note/music information as standard BMS songs.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should have converted all your MIDIs into BMS files. Open up one of your converted BMS files, and look for the first note/pitch value. If you used [[Pikmin 2 custom music|flaaffy]], this will most likely be somewhere after &amp;lt;code&amp;gt;0x1B&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;0x1D&amp;lt;/code&amp;gt;. The note&#039;s pitch value will be followed by a &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;. Copy this note, all the way to the end of the sequence, which should be &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=600px&amp;gt;&lt;br /&gt;
File:Copy_pasting_BMS_info.png|The value &amp;quot;2D&amp;quot; here is the hex value of a certain pitch, and the very first note of the sequence. Copy this, all the way to &amp;quot;FF&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
To add your gesture, start it with &amp;lt;code&amp;gt;C40000015D&amp;lt;/code&amp;gt;, then paste in what you copied. Each gesture should end with that &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;. Add as many gestures as you please!&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_2.png|The purple lines indicate where a gesture starts.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting timetables ==&lt;br /&gt;
So, how do we choose how often gestures will play? Will a gesture play every beat? Every 1/2 a beat? You will need to add a timetable for that!&lt;br /&gt;
A timetable is a sequence that dictates when gestures should play. A timetable ends with &amp;lt;code&amp;gt;FFFF&amp;lt;/code&amp;gt;. You can make a timetable as complex as you like.&amp;lt;br&amp;gt; Some examples of timetables you can use are:&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0780FFFF&amp;lt;/code&amp;gt; Play a gesture every 16 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C0FFFF&amp;lt;/code&amp;gt; Play a gesture every 8 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;01E0FFFF&amp;lt;/code&amp;gt; Play a gesture every 4 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C003C003C001E001E001E001E003C0FFFF&amp;lt;/code&amp;gt; This sequence will play a gesture every 8 beats (3x), play a gesture every 4 beats (4x), then play a gesture for 8 beats (1x), in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/2 note (every 2 beats).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0078FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/4 note (every beat).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003CFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/8th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;001EFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/16th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003C0078001EFFFF&amp;lt;/code&amp;gt; This sequence will play a gesture for an 1/8th note, play a gesture for a 1/4 note, then play a gesture for a 1/16th note, in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
Considering that &amp;lt;code&amp;gt;001E&amp;lt;/code&amp;gt; (30 in decimal) is a 1/16th note, you can create any specific timing you want. Just add another 30 to the value for each additional sixteenth note in length.&amp;lt;br&amp;gt;&lt;br /&gt;
For example, Soil 1&#039;s enemy mix piano plays very rapidly; its timetable uses a value of 90, which looks like &amp;lt;code&amp;gt;005AFFFF&amp;lt;/code&amp;gt;. The gestures last for three sixteenth notes.&amp;lt;br&amp;gt;&lt;br /&gt;
You can insert your timetables anywhere at the end of your BMS.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_3.png|Each timetable has a pink box around it.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in info ==&lt;br /&gt;
Once you have your gestures and timetables inserted, go back and fill in those &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00CCCC&amp;lt;/code&amp;gt; placeholders with the locations of your gesture sets, timetables, and gestures you want to use. Remember that gesture sets begin with the &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Also in the very beginning of your BMS, make sure the value at &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; has the location of where your gesture set list begins (this one will probably be fine), and the value at &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; has the location of where your timing ruleset list begins.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_4.png|Put the location of where the &amp;quot;timing ruleset list&amp;quot; begins here.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in the conductor file ==&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
In your song&#039;s associated conductor file, try to stretch out the window so that the instrument names are all in the same column if you can, like in the image above.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Each line represents one track. You give each track a instrument (program), and what gesture set and timing ruleset to use.&amp;lt;br&amp;gt;&lt;br /&gt;
The CND infographic above does a good job explaining all the functions, but they&#039;ll be explained again down here.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the top left corner are three important values:&lt;br /&gt;
* The first value is the swing time. &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt; is 1/16th swing, while &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; is 1/8th swing. If your song is below 100bpm, you might want to use &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt;. If its faster, try &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
* The second value is the tempo, in hex.&lt;br /&gt;
* The third value is how many tracks there will be, in hex.&lt;br /&gt;
&lt;br /&gt;
Each column explained:&lt;br /&gt;
* A: Initial delay. How many beats until this track starts running. In the vanilla game, you can notice how some song&#039;s melodies do not immediately begin playing upon the start of level. This is useful for that; ease the listener into the music.&lt;br /&gt;
* B/Q: If set to 1, all gestures will be delayed by an 1/8th note..&lt;br /&gt;
* C: Text string. You can make this say whatever you like. Useful for keeping track of what you want each track to be, like &amp;quot;Lead&amp;quot;, &amp;quot;Trumpet&amp;quot;, &amp;quot;MelodyA&amp;quot;/&amp;quot;MelodyB&amp;quot;, &amp;quot;Bass&amp;quot;, or &amp;quot;Drums&amp;quot;&lt;br /&gt;
* D: Track copy. Select a previous track # to copy the gestures from. If the track its copying plays &amp;quot;gesture 3&amp;quot; from its gesture set, this track will also play its &amp;quot;gesture 3&amp;quot;. Often used for treasure mix instruments. You can have them use different gesture sets if you like.&lt;br /&gt;
* E: Echo strength.&lt;br /&gt;
* F: If set to 1, the values in this track&#039;s timetable will always be played in order, in a loop. If set to 0, it will randomly select values from its timetable, thus, allowing you to randomize when gestures play.&lt;br /&gt;
* G: Bank number.&lt;br /&gt;
* H: Program number. For a list of all programs in the default game and the wScenes that support them, view [[Pikmin 2 custom_music/available instruments|this page]].&lt;br /&gt;
* I: Gesture set, select the set # you want to use from the BMS. &lt;br /&gt;
* J: Timing ruleset, select the set # you want to use from the BMS.&lt;br /&gt;
* K: How many gestures this track will play, before playing &amp;quot;silent gestures&amp;quot;. Linked to below. These function as a sort of on/off cycle.&lt;br /&gt;
* L: How many &amp;quot;silent gestures&amp;quot; this track will play, before playing normal gestures. Linked to above. These function as a sort of on/off cycle.&lt;br /&gt;
* M: If notes are being transposed down (see below), this is set to FF. But this column doesn&#039;t actually do anything, so you don&#039;t need to edit this.&lt;br /&gt;
* N: Transpose all notes played by this track. To transpose up, use values 1-127. To transpose down, use the sign 2 compliment (values 128-255).&lt;br /&gt;
* O: Volume.&lt;br /&gt;
* P: Stereo panning.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas/considerations:&lt;br /&gt;
* You can use the on/off cycle feature (column K and L) to make your melodic instrument &amp;quot;take a break&amp;quot; every once in a while. You can have it play 4 gestures, but then be silent for 2.&lt;br /&gt;
* If your timing ruleset is strict (as in, the timings for when gestures occur is always consistent), something fun to try is to have the melody be a back-and-forth between two different instruments. Set the initial delay for the second instrument to be longer than the first one, and then cleverly use the on/off cycle to have the instruments take turns sounding a gesture. This is done for the melody in the Bulblax Kingdom and Frontier Cavern for example.&lt;br /&gt;
* If you are using the &amp;quot;track copy&amp;quot; feature (column D), you can have the primary instrument play a melody, and have this instrument always play chords that perfectly match that melody.&lt;br /&gt;
&lt;br /&gt;
== Mapping the tracks ==&lt;br /&gt;
With all that done, don&#039;t forget to edit the song&#039;s [[Trackmap parameters|trackMap]]! Edit your song in the trackMap files in either &amp;lt;code&amp;gt;/user/Totaka&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/user/Wakai&amp;lt;/code&amp;gt;, and set how many instruments will be in each mix. It goes in order from: Main Mix, Task (event), Treasure (otakara), Enemy near (kehai), Combat mix, and Spiderwort mix (ground). Although you cannot find Spiderworts underground, you will have to sacrifice at least one track for that mix. You cannot set any of the mixes to have 0 instruments in them.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Filenames for brand new CND files ==&lt;br /&gt;
If you are adding a brand new CND file instead of replacing an existing one, the prefix will determine which BMS is loaded, and which wScene. Try not to add special characters to filenames, aside from underscores.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to load the correct BMS file, the CND must start with the name of the BMS file.&lt;br /&gt;
* &amp;quot;caveconc.cnd&amp;quot;, &amp;quot;caveconc_458435.cnd&amp;quot;, &amp;quot;caveconc_Waffles.cnd&amp;quot;, and &amp;quot;caveconc_Waffles_Song_2.cnd&amp;quot; will all load caveconc.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;caverelax.cnd&amp;quot;, &amp;quot;caverelax_Gmajor.cnd&amp;quot;, and &amp;quot;caverelax_mamuta_dinner.cnd&amp;quot; will all load caverelax.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;new_09_4.cnd&amp;quot;, &amp;quot;new_09_4000.cnd&amp;quot;, and &amp;quot;new_09_portal_PotaTOS.cnd&amp;quot; will load new_09.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For cavesoil, caveconc, and cavemetal only, the game also checks for an additional &amp;quot;_00&amp;quot;, &amp;quot;_05&amp;quot;, and &amp;quot;_10&amp;quot; right after the prefix, for the purpose of loading one of three different wScenes. You must include it if you want the correct wScene to load. For example, caveconc_05 loads wScene 31, so if you want your custom song to also load wScene 31, acceptable names include &amp;quot;caveconc_05_WAFFLES.cnd&amp;quot;, &amp;quot;caveconc_05_52_46356.cnd&amp;quot;, or &amp;quot;caveconc_05_super_boss.cnd&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After adding your new CND file, be sure to add it to its respective trackMap file.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding new content to a vanilla BMS file ==&lt;br /&gt;
Adding new hex data in the middle of a file will shift all the offsets that come after it, causing your BMS to jump to the wrong locations, and likely cause a crash if vanilla songs are loaded.&amp;lt;br&amp;gt;&lt;br /&gt;
In order to add new content in addition to what&#039;s already in the BMS:&lt;br /&gt;
* Find and copy the gesture set list and the timing ruleset list, and paste them at the end of the file. (Separate them with lots of zeros so you have lots more space to add content to these lists)&lt;br /&gt;
* Change &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; to point to your new gesture set list and timing ruleset list. These two values tell the game where the lists are.&lt;br /&gt;
The game should now use these brand new lists, instead of the original instances that occur earlier in the file. Since they still contain all the locations of the vanilla gesture sets/timetables from above in the same order, the existing CND songs won&#039;t be affected and will continue to function, but now you can expand upon these lists with brand new entries now that you&#039;ve made the space for them. All new gestures, gesture sets and timetables can be added further down the file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Editing_vanilla_BMS_file.png|The new gesture set list and timing ruleset list we want to use will be at the bottom.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding gesture cutoffs in timetables ==&lt;br /&gt;
An intentional compositional choice in some songs is to cutoff gestures while they&#039;re in the middle of playing. The most common way this is done is to quickly trigger another gesture; if the last gesture has not finished playing, it will stop playing that gesture and begin playing the new one. It&#039;s also possible to add &amp;quot;empty&amp;quot; gestures to gesture sets (like &amp;lt;code&amp;gt;C40000015DFF&amp;lt;/code&amp;gt;, a gesture which ends immediately and plays nothing), so you can randomly interrupt gestures in your song with silence, or have there be a chance to play nothing.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
However, if you wish to interrupt gestures in your song at specified times without the randomness, there is a special function in timetables for doing this. In the vanilla game, this is used for the trumpet in [https://www.youtube.com/watch?v=qOhmS1YLpF8 Fire]. The trumpet plays two interrupted gestures, then plays a third gesture in full. Below is the timetable for this trumpet:&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;0078 8168 81E0 00F0 80F0 81E0 0780 FFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The trumpet will:&lt;br /&gt;
* &amp;lt;code&amp;gt;0078&amp;lt;/code&amp;gt; play a gesture for 1 beat&lt;br /&gt;
* &amp;lt;code&amp;gt;8168&amp;lt;/code&amp;gt; cutoff after this 1 beat&lt;br /&gt;
* &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; extend cutoff for another 4 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0&amp;lt;/code&amp;gt; play a gesture for 2 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;80F0&amp;lt;/code&amp;gt; cutoff after these 2 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; extend cutoff for another 4 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;0780&amp;lt;/code&amp;gt; play a gesture for 16 beats.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In order to put a &amp;quot;cutoff&amp;quot; in your timetable:&lt;br /&gt;
* Start with how long you want your &amp;quot;playing&amp;quot; gesture to play for, before it gets cutoff. I want the the first gesture to last for one beat (four 1/16th notes), so I&#039;ll put &amp;lt;code&amp;gt;0078&amp;lt;/code&amp;gt;. Remember that every &amp;quot;30&amp;quot; in decimal is equivalent to a sixteenth note.&lt;br /&gt;
* Immediately next in the sequence will be a value that indicates when the cutoff begins. Calculate the difference between &amp;quot;81E0&amp;quot; and the previous value you had just inserted. 81E0 - 0078 = 8168 (in decimal, 33248 - 120 = 33128). I will put &amp;lt;code&amp;gt;8168&amp;lt;/code&amp;gt; next in my sequence.&lt;br /&gt;
My sequence is now &amp;lt;code&amp;gt;0078 8168 FFFF&amp;lt;/code&amp;gt;; this will play a gesture normally for 1 beat, but then immediately cut it off after that 1 beat.&amp;lt;br&amp;gt;&lt;br /&gt;
Putting an additional &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; in the sequence right after will extend the cutoff time for another 4 beats. You can repeat &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; several times in a row if you want the cutoff to last for long periods.&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4626</id>
		<title>Creating cave music</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4626"/>
		<updated>2024-03-26T15:42:42Z</updated>

		<summary type="html">&lt;p&gt;Waffles: /* Bonus: Adding gesture cutoffs in timetables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Randomly generating cave music in Pikmin 2 needs to have two files: a .bms (sequence) file, and a .cnd (conductor) file.&lt;br /&gt;
&lt;br /&gt;
The BMS file type is a sequenced music format used in many games. For the cave music in Pikmin 2 however, it is specially-formatted. It mainly contains many short snippets of musical information to be randomized.&lt;br /&gt;
&lt;br /&gt;
The CND files are the actual &amp;quot;songs&amp;quot;; they take specific groups of snippets from a BMS file, and endlessly puzzle-piece them together to form a coherent piece of music.&lt;br /&gt;
&lt;br /&gt;
This guide will function as a walkthrough for creating your own randomly sequencing cave song. All of the editing will be done in hexadecimal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be generating a lot of tiny BMS files, to turn them into &amp;quot;gestures&amp;quot;.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
== Overview of file functions ==&lt;br /&gt;
Here are some infographics that you can reference at any time. These show all the functions of a CND file, and all the contents of a BMS file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
File:BMS_functions.png|How information is stored in a BMS file.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up your BMS file ==&lt;br /&gt;
Before you begin, set your byte grouping to &amp;quot;3&amp;quot;, so every 3 bytes is visually separated by a space. This will make it easier to see stuff.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Starting with a completely blank BMS file, begin by pasting the following:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Every cave music BMS begins with this same information.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Gesture set list ==&lt;br /&gt;
Exactly right after &amp;lt;code&amp;gt;34C600&amp;lt;/code&amp;gt; will be a list of every gesture set&#039;s location in the BMS. Each entry is the gesture set&#039;s hexadecimal location (offset), and each entry in the sequence begins with &amp;quot;&amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;&amp;quot;. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0001B0 0001BF 0001CE 0001D4 0001DA 0001E9 0001F8 0001FE 000204 00020A FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Gesture set &amp;quot;0&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1B0&amp;lt;/code&amp;gt;, gesture set &amp;quot;1&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1BF&amp;lt;/code&amp;gt;, gesture set &amp;quot;2&amp;quot; will be at &amp;lt;code&amp;gt;0x1CE&amp;lt;/code&amp;gt;, and so on. There are a total of 10 gesture sets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Until we create our gesture sets, let&#039;s use &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt; as placeholders so we can easily find and get back to this section later on. You can have as many gesture sets as you like; we&#039;ll create 16 entries for this tutorial. You may insert this into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our BMS should now currently look like this:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
You can also add an entire row of padding/zeros after this. You can do this for each section, to better visually separate them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing ruleset list ==&lt;br /&gt;
This is another sequence of offsets. These just point to the location of a &amp;quot;[[#Inserting_timetables|timetable]]&amp;quot;, which will be located at the end of our BMS file. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0005AB 0005AB 0005AF 0005C1 0005AB 0005AB 0005C1 0005C1 0005C1 0005C1 FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Timing ruleset &amp;quot;0&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;1&amp;quot; will also use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;2&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AF&amp;lt;/code&amp;gt;, and so on. There are a total of 10 timing rulesets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Let&#039;s use &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt; as placeholders again, and create 16 of them. Insert this anywhere into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set contents ==&lt;br /&gt;
A &#039;&#039;gesture set&#039;&#039; is a group of many gestures.&amp;lt;br&amp;gt;&lt;br /&gt;
Here, we list each gesture set&#039;s contents (which are... the locations of gestures!). Each gesture set begins before with &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt; and ends with &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how the gesture set list should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;000210 00022A 000258 000281 FFFFFF 0002B4 0002D9 000303 000331 FFFFFF 000355 FFFFFF 000361 FFFFFF 0003A8 0003C2 0003F0 000419 FFFFFF 00044C 000471 00049B 0004C9 FFFFFF 0004ED FFFFFF 000543 FFFFFF 000580 FFFFFF 00059E FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
There are 10 gesture sets listed above. The first gesture set has 4 gestures, located at &amp;lt;code&amp;gt;0x210&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x22A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x258&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;0x281&amp;lt;/code&amp;gt;. You can have any amount of gestures in a gesture set; even 1 is fine.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You can paste the following placeholder information for now:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It might be a good idea to leave a decent amount of zeros after this list; this one will expand a lot as gestures and gesture sets are added to it.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How is your BMS looking? ==&lt;br /&gt;
If you have been copy-pasting everything correctly, your BMS will look something like this:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=300px heights=300px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_1.png|Orange is &amp;quot;gesture set list&amp;quot;, yellow is &amp;quot;timing ruleset list&amp;quot;, and blue is &amp;quot;gesture set contents&amp;quot;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Once again, you can add as much padding between each section as you want, it will work fine.&lt;br /&gt;
&lt;br /&gt;
== Creating gestures ==&lt;br /&gt;
First, you should sketch out your song idea in your DAW, and then cut your song into tiny blocks. These blocks will be your song&#039;s individual gestures. You should also consider dragging these blocks around in various arrangements to make sure they sound good in any order.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once you are ready, have them nicely organized and ready to be exported into individual MIDI files:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_Pro_gestures.png|A Logic Pro project with a bunch of short blocks of music. Each block will be a &amp;quot;gesture&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
For some reason, imported BMS files play 4 times as slow in cave songs. So if you import these gestures as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export your gestures, you need to modify your gestures to run &#039;&#039;4 times as fast&#039;&#039;. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Logic Pro can easily speed up MIDI regions with MIDI Transform. You want to use the &amp;quot;Double Speed&amp;quot; transformation twice on each block.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_pro_double_speed.gif|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting gestures ==&lt;br /&gt;
Gestures use same the note/music information as standard BMS songs.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should have converted all your MIDIs into BMS files. Open up one of your converted BMS files, and look for the first note/pitch value. If you used [[Pikmin 2 custom music|flaaffy]], this will most likely be somewhere after &amp;lt;code&amp;gt;0x1B&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;0x1D&amp;lt;/code&amp;gt;. The note&#039;s pitch value will be followed by a &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;. Copy this note, all the way to the end of the sequence, which should be &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=600px&amp;gt;&lt;br /&gt;
File:Copy_pasting_BMS_info.png|The value &amp;quot;2D&amp;quot; here is the hex value of a certain pitch, and the very first note of the sequence. Copy this, all the way to &amp;quot;FF&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
To add your gesture, start it with &amp;lt;code&amp;gt;C40000015D&amp;lt;/code&amp;gt;, then paste in what you copied. Each gesture should end with that &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;. Add as many gestures as you please!&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_2.png|The purple lines indicate where a gesture starts.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting timetables ==&lt;br /&gt;
So, how do we choose how often gestures will play? Will a gesture play every beat? Every 1/2 a beat? You will need to add a timetable for that!&lt;br /&gt;
A timetable is a sequence that dictates when gestures should play. A timetable ends with &amp;lt;code&amp;gt;FFFF&amp;lt;/code&amp;gt;. You can make a timetable as complex as you like.&amp;lt;br&amp;gt; Some examples of timetables you can use are:&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0780FFFF&amp;lt;/code&amp;gt; Play a gesture every 16 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C0FFFF&amp;lt;/code&amp;gt; Play a gesture every 8 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;01E0FFFF&amp;lt;/code&amp;gt; Play a gesture every 4 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C003C003C001E001E001E001E003C0FFFF&amp;lt;/code&amp;gt; This sequence will play a gesture every 8 beats (3x), play a gesture every 4 beats (4x), then play a gesture for 8 beats (1x), in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/2 note (every 2 beats).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0078FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/4 note (every beat).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003CFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/8th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;001EFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/16th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003C0078001EFFFF&amp;lt;/code&amp;gt; This sequence will play a gesture for an 1/8th note, play a gesture for a 1/4 note, then play a gesture for a 1/16th note, in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
Considering that &amp;lt;code&amp;gt;001E&amp;lt;/code&amp;gt; (30 in decimal) is a 1/16th note, you can create any specific timing you want. Just add another 30 to the value for each additional sixteenth note in length.&amp;lt;br&amp;gt;&lt;br /&gt;
For example, Soil 1&#039;s enemy mix piano plays very rapidly; its timetable uses a value of 90, which looks like &amp;lt;code&amp;gt;005AFFFF&amp;lt;/code&amp;gt;. The gestures last for three sixteenth notes.&amp;lt;br&amp;gt;&lt;br /&gt;
You can insert your timetables anywhere at the end of your BMS.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_3.png|Each timetable has a pink box around it.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in info ==&lt;br /&gt;
Once you have your gestures and timetables inserted, go back and fill in those &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00CCCC&amp;lt;/code&amp;gt; placeholders with the locations of your gesture sets, timetables, and gestures you want to use. Remember that gesture sets begin with the &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Also in the very beginning of your BMS, make sure the value at &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; has the location of where your gesture set list begins (this one will probably be fine), and the value at &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; has the location of where your timing ruleset list begins.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_4.png|Put the location of where the &amp;quot;timing ruleset list&amp;quot; begins here.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in the conductor file ==&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
In your song&#039;s associated conductor file, try to stretch out the window so that the instrument names are all in the same column if you can, like in the image above.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Each line represents one track. You give each track a instrument (program), and what gesture set and timing ruleset to use.&amp;lt;br&amp;gt;&lt;br /&gt;
The CND infographic above does a good job explaining all the functions, but they&#039;ll be explained again down here.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the top left corner are three important values:&lt;br /&gt;
* The first value is the swing time. &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt; is 1/16th swing, while &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; is 1/8th swing. If your song is below 100bpm, you might want to use &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt;. If its faster, try &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
* The second value is the tempo, in hex.&lt;br /&gt;
* The third value is how many tracks there will be, in hex.&lt;br /&gt;
&lt;br /&gt;
Each column explained:&lt;br /&gt;
* A: Initial delay. How many beats until this track starts running. In the vanilla game, you can notice how some song&#039;s melodies do not immediately begin playing upon the start of level. This is useful for that; ease the listener into the music.&lt;br /&gt;
* B/Q: If set to 1, all gestures will be delayed by an 1/8th note..&lt;br /&gt;
* C: Text string. You can make this say whatever you like. Useful for keeping track of what you want each track to be, like &amp;quot;Lead&amp;quot;, &amp;quot;Trumpet&amp;quot;, &amp;quot;MelodyA&amp;quot;/&amp;quot;MelodyB&amp;quot;, &amp;quot;Bass&amp;quot;, or &amp;quot;Drums&amp;quot;&lt;br /&gt;
* D: Track copy. Select a previous track # to copy the gestures from. If the track its copying plays &amp;quot;gesture 3&amp;quot; from its gesture set, this track will also play its &amp;quot;gesture 3&amp;quot;. Often used for treasure mix instruments. You can have them use different gesture sets if you like.&lt;br /&gt;
* E: Echo strength.&lt;br /&gt;
* F: If set to 1, the values in this track&#039;s timetable will always be played in order, in a loop. If set to 0, it will randomly select values from its timetable, thus, allowing you to randomize when gestures play.&lt;br /&gt;
* G: Bank number.&lt;br /&gt;
* H: Program number. For a list of all programs in the default game and the wScenes that support them, view [[Pikmin 2 custom_music/available instruments|this page]].&lt;br /&gt;
* I: Gesture set, select the set # you want to use from the BMS. &lt;br /&gt;
* J: Timing ruleset, select the set # you want to use from the BMS.&lt;br /&gt;
* K: How many gestures this track will play, before playing &amp;quot;silent gestures&amp;quot;. Linked to below. These function as a sort of on/off cycle.&lt;br /&gt;
* L: How many &amp;quot;silent gestures&amp;quot; this track will play, before playing normal gestures. Linked to above. These function as a sort of on/off cycle.&lt;br /&gt;
* M: If notes are being transposed down (see below), this is set to FF. But this column doesn&#039;t actually do anything, so you don&#039;t need to edit this.&lt;br /&gt;
* N: Transpose all notes played by this track. To transpose up, use values 1-127. To transpose down, use the sign 2 compliment (values 128-255).&lt;br /&gt;
* O: Volume.&lt;br /&gt;
* P: Stereo panning.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas/considerations:&lt;br /&gt;
* You can use the on/off cycle feature (column K and L) to make your melodic instrument &amp;quot;take a break&amp;quot; every once in a while. You can have it play 4 gestures, but then be silent for 2.&lt;br /&gt;
* If your timing ruleset is strict (as in, the timings for when gestures occur is always consistent), something fun to try is to have the melody be a back-and-forth between two different instruments. Set the initial delay for the second instrument to be longer than the first one, and then cleverly use the on/off cycle to have the instruments take turns sounding a gesture. This is done for the melody in the Bulblax Kingdom and Frontier Cavern for example.&lt;br /&gt;
* If you are using the &amp;quot;track copy&amp;quot; feature (column D), you can have the primary instrument play a melody, and have this instrument always play chords that perfectly match that melody.&lt;br /&gt;
&lt;br /&gt;
== Mapping the tracks ==&lt;br /&gt;
With all that done, don&#039;t forget to edit the song&#039;s [[Trackmap parameters|trackMap]]! Edit your song in the trackMap files in either &amp;lt;code&amp;gt;/user/Totaka&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/user/Wakai&amp;lt;/code&amp;gt;, and set how many instruments will be in each mix. It goes in order from: Main Mix, Task (event), Treasure (otakara), Enemy near (kehai), Combat mix, and Spiderwort mix (ground). Although you cannot find Spiderworts underground, you will have to sacrifice at least one track for that mix. You cannot set any of the mixes to have 0 instruments in them.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Filenames for brand new CND files ==&lt;br /&gt;
If you are adding a brand new CND file instead of replacing an existing one, the prefix will determine which BMS is loaded, and which wScene. Try not to add special characters to filenames, aside from underscores.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to load the correct BMS file, the CND must start with the name of the BMS file.&lt;br /&gt;
* &amp;quot;caveconc.cnd&amp;quot;, &amp;quot;caveconc_458435.cnd&amp;quot;, &amp;quot;caveconc_Waffles.cnd&amp;quot;, and &amp;quot;caveconc_Waffles_Song_2.cnd&amp;quot; will all load caveconc.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;caverelax.cnd&amp;quot;, &amp;quot;caverelax_Gmajor.cnd&amp;quot;, and &amp;quot;caverelax_mamuta_dinner.cnd&amp;quot; will all load caverelax.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;new_09_4.cnd&amp;quot;, &amp;quot;new_09_4000.cnd&amp;quot;, and &amp;quot;new_09_portal_PotaTOS.cnd&amp;quot; will load new_09.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For cavesoil, caveconc, and cavemetal only, the game also checks for an additional &amp;quot;_00&amp;quot;, &amp;quot;_05&amp;quot;, and &amp;quot;_10&amp;quot; right after the prefix, for the purpose of loading one of three different wScenes. You must include it if you want the correct wScene to load. For example, caveconc_05 loads wScene 31, so if you want your custom song to also load wScene 31, acceptable names include &amp;quot;caveconc_05_WAFFLES.cnd&amp;quot;, &amp;quot;caveconc_05_52_46356.cnd&amp;quot;, or &amp;quot;caveconc_05_super_boss.cnd&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After adding your new CND file, be sure to add it to its respective trackMap file.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding new content to a vanilla BMS file ==&lt;br /&gt;
Adding new hex data in the middle of a file will shift all the offsets that come after it, causing your BMS to jump to the wrong locations, and likely cause a crash if vanilla songs are loaded.&amp;lt;br&amp;gt;&lt;br /&gt;
In order to add new content in addition to what&#039;s already in the BMS:&lt;br /&gt;
* Find and copy the gesture set list and the timing ruleset list, and paste them at the end of the file. (Separate them with lots of zeros so you have lots more space to add content to these lists)&lt;br /&gt;
* Change &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; to point to your new gesture set list and timing ruleset list. These two values tell the game where the lists are.&lt;br /&gt;
The game should now use these brand new lists, instead of the original instances that occur earlier in the file. Since they still contain all the locations of the vanilla gesture sets/timetables from above in the same order, the existing CND songs won&#039;t be affected and will continue to function, but now you can expand upon these lists with brand new entries now that you&#039;ve made the space for them. All new gestures, gesture sets and timetables can be added further down the file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Editing_vanilla_BMS_file.png|The new gesture set list and timing ruleset list we want to use will be at the bottom.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding gesture cutoffs in timetables ==&lt;br /&gt;
An intentional compositional choice in some songs is to cutoff gestures while they&#039;re in the middle of playing. The most common way this is done is to quickly trigger another gesture; if the last gesture has not finished playing, it will stop playing that gesture and begin playing the new one. It&#039;s also possible to add &amp;quot;empty&amp;quot; gestures to gesture sets (like &amp;lt;code&amp;gt;C40000015DFF&amp;lt;/code&amp;gt;, a gesture which ends immediately and plays nothing), so you can randomly interrupt gestures in your song with silence, or have there be a chance to play nothing.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
However, if you wish to interrupt gestures in your song at specified times without the randomness, there is a special function in timetables for doing this. In the vanilla game, this is used for the trumpet in [https://www.youtube.com/watch?v=qOhmS1YLpF8 Fire]. The trumpet plays two interrupted gestures, then plays a third gesture in full. Below is the timetable for this trumpet:&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;0078 8168 81E0 00F0 80F0 81E0 0780 FFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The trumpet will:&lt;br /&gt;
* &amp;lt;code&amp;gt;0078&amp;lt;/code&amp;gt; play a gesture for 1 beat&lt;br /&gt;
* &amp;lt;code&amp;gt;8168&amp;lt;/code&amp;gt; cutoff after this 1 beat&lt;br /&gt;
* &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; extend cutoff for another 4 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0&amp;lt;/code&amp;gt; play a gesture for 2 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;80F0&amp;lt;/code&amp;gt; cutoff after these 2 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; extend cutoff for another 4 beats&lt;br /&gt;
* &amp;lt;code&amp;gt;0780&amp;lt;/code&amp;gt; play a gesture for 16 beats.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In order to put a &amp;quot;cutoff&amp;quot; in your timetable:&lt;br /&gt;
* Start with how long you want your &amp;quot;playing&amp;quot; gesture to play for, before it gets cutoff. I want the the first gesture to last for one beat (four 1/16th notes), so I&#039;ll put &amp;lt;code&amp;gt;0078&amp;lt;/code&amp;gt;. Remember that every &amp;quot;30&amp;quot; in decimal is equivalent to a sixteenth note.&lt;br /&gt;
* Immediately next in the sequence will be a value that indicates when the cutoff begins. Calculate the difference between &amp;quot;81E0&amp;quot; and the previous value you had just inserted. 81E0 - 0078 = 8168 (in decimal, 33248 - 120 = 33128). I will put &amp;lt;code&amp;gt;8168&amp;lt;/code&amp;gt; next in my sequence.&lt;br /&gt;
My sequence is now &amp;lt;code&amp;gt;0078 8168 FFFF&amp;lt;/code&amp;gt;; this will play a gesture normally for 1 beat, but then immediately cut it off after that 1 beat.&amp;lt;br&amp;gt;&lt;br /&gt;
Putting an additional &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; in the sequence right after will extend the cutoff time for another 4 beats. You can repeat it several times in a row if you want the cutoff to last for long periods.&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4625</id>
		<title>Creating cave music</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4625"/>
		<updated>2024-03-26T15:36:17Z</updated>

		<summary type="html">&lt;p&gt;Waffles: Bonus: cutoff gestures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Randomly generating cave music in Pikmin 2 needs to have two files: a .bms (sequence) file, and a .cnd (conductor) file.&lt;br /&gt;
&lt;br /&gt;
The BMS file type is a sequenced music format used in many games. For the cave music in Pikmin 2 however, it is specially-formatted. It mainly contains many short snippets of musical information to be randomized.&lt;br /&gt;
&lt;br /&gt;
The CND files are the actual &amp;quot;songs&amp;quot;; they take specific groups of snippets from a BMS file, and endlessly puzzle-piece them together to form a coherent piece of music.&lt;br /&gt;
&lt;br /&gt;
This guide will function as a walkthrough for creating your own randomly sequencing cave song. All of the editing will be done in hexadecimal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be generating a lot of tiny BMS files, to turn them into &amp;quot;gestures&amp;quot;.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
== Overview of file functions ==&lt;br /&gt;
Here are some infographics that you can reference at any time. These show all the functions of a CND file, and all the contents of a BMS file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
File:BMS_functions.png|How information is stored in a BMS file.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up your BMS file ==&lt;br /&gt;
Before you begin, set your byte grouping to &amp;quot;3&amp;quot;, so every 3 bytes is visually separated by a space. This will make it easier to see stuff.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Starting with a completely blank BMS file, begin by pasting the following:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Every cave music BMS begins with this same information.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Gesture set list ==&lt;br /&gt;
Exactly right after &amp;lt;code&amp;gt;34C600&amp;lt;/code&amp;gt; will be a list of every gesture set&#039;s location in the BMS. Each entry is the gesture set&#039;s hexadecimal location (offset), and each entry in the sequence begins with &amp;quot;&amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;&amp;quot;. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0001B0 0001BF 0001CE 0001D4 0001DA 0001E9 0001F8 0001FE 000204 00020A FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Gesture set &amp;quot;0&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1B0&amp;lt;/code&amp;gt;, gesture set &amp;quot;1&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1BF&amp;lt;/code&amp;gt;, gesture set &amp;quot;2&amp;quot; will be at &amp;lt;code&amp;gt;0x1CE&amp;lt;/code&amp;gt;, and so on. There are a total of 10 gesture sets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Until we create our gesture sets, let&#039;s use &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt; as placeholders so we can easily find and get back to this section later on. You can have as many gesture sets as you like; we&#039;ll create 16 entries for this tutorial. You may insert this into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our BMS should now currently look like this:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
You can also add an entire row of padding/zeros after this. You can do this for each section, to better visually separate them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing ruleset list ==&lt;br /&gt;
This is another sequence of offsets. These just point to the location of a &amp;quot;[[#Inserting_timetables|timetable]]&amp;quot;, which will be located at the end of our BMS file. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0005AB 0005AB 0005AF 0005C1 0005AB 0005AB 0005C1 0005C1 0005C1 0005C1 FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Timing ruleset &amp;quot;0&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;1&amp;quot; will also use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;2&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AF&amp;lt;/code&amp;gt;, and so on. There are a total of 10 timing rulesets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Let&#039;s use &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt; as placeholders again, and create 16 of them. Insert this anywhere into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set contents ==&lt;br /&gt;
A &#039;&#039;gesture set&#039;&#039; is a group of many gestures.&amp;lt;br&amp;gt;&lt;br /&gt;
Here, we list each gesture set&#039;s contents (which are... the locations of gestures!). Each gesture set begins before with &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt; and ends with &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how the gesture set list should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;000210 00022A 000258 000281 FFFFFF 0002B4 0002D9 000303 000331 FFFFFF 000355 FFFFFF 000361 FFFFFF 0003A8 0003C2 0003F0 000419 FFFFFF 00044C 000471 00049B 0004C9 FFFFFF 0004ED FFFFFF 000543 FFFFFF 000580 FFFFFF 00059E FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
There are 10 gesture sets listed above. The first gesture set has 4 gestures, located at &amp;lt;code&amp;gt;0x210&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x22A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x258&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;0x281&amp;lt;/code&amp;gt;. You can have any amount of gestures in a gesture set; even 1 is fine.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You can paste the following placeholder information for now:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It might be a good idea to leave a decent amount of zeros after this list; this one will expand a lot as gestures and gesture sets are added to it.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How is your BMS looking? ==&lt;br /&gt;
If you have been copy-pasting everything correctly, your BMS will look something like this:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=300px heights=300px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_1.png|Orange is &amp;quot;gesture set list&amp;quot;, yellow is &amp;quot;timing ruleset list&amp;quot;, and blue is &amp;quot;gesture set contents&amp;quot;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Once again, you can add as much padding between each section as you want, it will work fine.&lt;br /&gt;
&lt;br /&gt;
== Creating gestures ==&lt;br /&gt;
First, you should sketch out your song idea in your DAW, and then cut your song into tiny blocks. These blocks will be your song&#039;s individual gestures. You should also consider dragging these blocks around in various arrangements to make sure they sound good in any order.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once you are ready, have them nicely organized and ready to be exported into individual MIDI files:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_Pro_gestures.png|A Logic Pro project with a bunch of short blocks of music. Each block will be a &amp;quot;gesture&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
For some reason, imported BMS files play 4 times as slow in cave songs. So if you import these gestures as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export your gestures, you need to modify your gestures to run &#039;&#039;4 times as fast&#039;&#039;. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Logic Pro can easily speed up MIDI regions with MIDI Transform. You want to use the &amp;quot;Double Speed&amp;quot; transformation twice on each block.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_pro_double_speed.gif|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting gestures ==&lt;br /&gt;
Gestures use same the note/music information as standard BMS songs.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should have converted all your MIDIs into BMS files. Open up one of your converted BMS files, and look for the first note/pitch value. If you used [[Pikmin 2 custom music|flaaffy]], this will most likely be somewhere after &amp;lt;code&amp;gt;0x1B&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;0x1D&amp;lt;/code&amp;gt;. The note&#039;s pitch value will be followed by a &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;. Copy this note, all the way to the end of the sequence, which should be &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=600px&amp;gt;&lt;br /&gt;
File:Copy_pasting_BMS_info.png|The value &amp;quot;2D&amp;quot; here is the hex value of a certain pitch, and the very first note of the sequence. Copy this, all the way to &amp;quot;FF&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
To add your gesture, start it with &amp;lt;code&amp;gt;C40000015D&amp;lt;/code&amp;gt;, then paste in what you copied. Each gesture should end with that &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;. Add as many gestures as you please!&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_2.png|The purple lines indicate where a gesture starts.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting timetables ==&lt;br /&gt;
So, how do we choose how often gestures will play? Will a gesture play every beat? Every 1/2 a beat? You will need to add a timetable for that!&lt;br /&gt;
A timetable is a sequence that dictates when gestures should play. A timetable ends with &amp;lt;code&amp;gt;FFFF&amp;lt;/code&amp;gt;. You can make a timetable as complex as you like.&amp;lt;br&amp;gt; Some examples of timetables you can use are:&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0780FFFF&amp;lt;/code&amp;gt; Play a gesture every 16 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C0FFFF&amp;lt;/code&amp;gt; Play a gesture every 8 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;01E0FFFF&amp;lt;/code&amp;gt; Play a gesture every 4 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C003C003C001E001E001E001E003C0FFFF&amp;lt;/code&amp;gt; This sequence will play a gesture every 8 beats (3x), play a gesture every 4 beats (4x), then play a gesture for 8 beats (1x), in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/2 note (every 2 beats).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0078FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/4 note (every beat).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003CFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/8th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;001EFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/16th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003C0078001EFFFF&amp;lt;/code&amp;gt; This sequence will play a gesture for an 1/8th note, play a gesture for a 1/4 note, then play a gesture for a 1/16th note, in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
Considering that &amp;lt;code&amp;gt;001E&amp;lt;/code&amp;gt; (30 in decimal) is a 1/16th note, you can create any specific timing you want. Just add another 30 to the value for each additional sixteenth note in length.&amp;lt;br&amp;gt;&lt;br /&gt;
For example, Soil 1&#039;s enemy mix piano plays very rapidly; its timetable uses a value of 90, which looks like &amp;lt;code&amp;gt;005AFFFF&amp;lt;/code&amp;gt;. The gestures last for three sixteenth notes.&amp;lt;br&amp;gt;&lt;br /&gt;
You can insert your timetables anywhere at the end of your BMS.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_3.png|Each timetable has a pink box around it.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in info ==&lt;br /&gt;
Once you have your gestures and timetables inserted, go back and fill in those &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00CCCC&amp;lt;/code&amp;gt; placeholders with the locations of your gesture sets, timetables, and gestures you want to use. Remember that gesture sets begin with the &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Also in the very beginning of your BMS, make sure the value at &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; has the location of where your gesture set list begins (this one will probably be fine), and the value at &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; has the location of where your timing ruleset list begins.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_4.png|Put the location of where the &amp;quot;timing ruleset list&amp;quot; begins here.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in the conductor file ==&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
In your song&#039;s associated conductor file, try to stretch out the window so that the instrument names are all in the same column if you can, like in the image above.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Each line represents one track. You give each track a instrument (program), and what gesture set and timing ruleset to use.&amp;lt;br&amp;gt;&lt;br /&gt;
The CND infographic above does a good job explaining all the functions, but they&#039;ll be explained again down here.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the top left corner are three important values:&lt;br /&gt;
* The first value is the swing time. &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt; is 1/16th swing, while &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; is 1/8th swing. If your song is below 100bpm, you might want to use &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt;. If its faster, try &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
* The second value is the tempo, in hex.&lt;br /&gt;
* The third value is how many tracks there will be, in hex.&lt;br /&gt;
&lt;br /&gt;
Each column explained:&lt;br /&gt;
* A: Initial delay. How many beats until this track starts running. In the vanilla game, you can notice how some song&#039;s melodies do not immediately begin playing upon the start of level. This is useful for that; ease the listener into the music.&lt;br /&gt;
* B/Q: If set to 1, all gestures will be delayed by an 1/8th note..&lt;br /&gt;
* C: Text string. You can make this say whatever you like. Useful for keeping track of what you want each track to be, like &amp;quot;Lead&amp;quot;, &amp;quot;Trumpet&amp;quot;, &amp;quot;MelodyA&amp;quot;/&amp;quot;MelodyB&amp;quot;, &amp;quot;Bass&amp;quot;, or &amp;quot;Drums&amp;quot;&lt;br /&gt;
* D: Track copy. Select a previous track # to copy the gestures from. If the track its copying plays &amp;quot;gesture 3&amp;quot; from its gesture set, this track will also play its &amp;quot;gesture 3&amp;quot;. Often used for treasure mix instruments. You can have them use different gesture sets if you like.&lt;br /&gt;
* E: Echo strength.&lt;br /&gt;
* F: If set to 1, the values in this track&#039;s timetable will always be played in order, in a loop. If set to 0, it will randomly select values from its timetable, thus, allowing you to randomize when gestures play.&lt;br /&gt;
* G: Bank number.&lt;br /&gt;
* H: Program number. For a list of all programs in the default game and the wScenes that support them, view [[Pikmin 2 custom_music/available instruments|this page]].&lt;br /&gt;
* I: Gesture set, select the set # you want to use from the BMS. &lt;br /&gt;
* J: Timing ruleset, select the set # you want to use from the BMS.&lt;br /&gt;
* K: How many gestures this track will play, before playing &amp;quot;silent gestures&amp;quot;. Linked to below. These function as a sort of on/off cycle.&lt;br /&gt;
* L: How many &amp;quot;silent gestures&amp;quot; this track will play, before playing normal gestures. Linked to above. These function as a sort of on/off cycle.&lt;br /&gt;
* M: If notes are being transposed down (see below), this is set to FF. But this column doesn&#039;t actually do anything, so you don&#039;t need to edit this.&lt;br /&gt;
* N: Transpose all notes played by this track. To transpose up, use values 1-127. To transpose down, use the sign 2 compliment (values 128-255).&lt;br /&gt;
* O: Volume.&lt;br /&gt;
* P: Stereo panning.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas/considerations:&lt;br /&gt;
* You can use the on/off cycle feature (column K and L) to make your melodic instrument &amp;quot;take a break&amp;quot; every once in a while. You can have it play 4 gestures, but then be silent for 2.&lt;br /&gt;
* If your timing ruleset is strict (as in, the timings for when gestures occur is always consistent), something fun to try is to have the melody be a back-and-forth between two different instruments. Set the initial delay for the second instrument to be longer than the first one, and then cleverly use the on/off cycle to have the instruments take turns sounding a gesture. This is done for the melody in the Bulblax Kingdom and Frontier Cavern for example.&lt;br /&gt;
* If you are using the &amp;quot;track copy&amp;quot; feature (column D), you can have the primary instrument play a melody, and have this instrument always play chords that perfectly match that melody.&lt;br /&gt;
&lt;br /&gt;
== Mapping the tracks ==&lt;br /&gt;
With all that done, don&#039;t forget to edit the song&#039;s [[Trackmap parameters|trackMap]]! Edit your song in the trackMap files in either &amp;lt;code&amp;gt;/user/Totaka&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/user/Wakai&amp;lt;/code&amp;gt;, and set how many instruments will be in each mix. It goes in order from: Main Mix, Task (event), Treasure (otakara), Enemy near (kehai), Combat mix, and Spiderwort mix (ground). Although you cannot find Spiderworts underground, you will have to sacrifice at least one track for that mix. You cannot set any of the mixes to have 0 instruments in them.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Filenames for brand new CND files ==&lt;br /&gt;
If you are adding a brand new CND file instead of replacing an existing one, the prefix will determine which BMS is loaded, and which wScene. Try not to add special characters to filenames, aside from underscores.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to load the correct BMS file, the CND must start with the name of the BMS file.&lt;br /&gt;
* &amp;quot;caveconc.cnd&amp;quot;, &amp;quot;caveconc_458435.cnd&amp;quot;, &amp;quot;caveconc_Waffles.cnd&amp;quot;, and &amp;quot;caveconc_Waffles_Song_2.cnd&amp;quot; will all load caveconc.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;caverelax.cnd&amp;quot;, &amp;quot;caverelax_Gmajor.cnd&amp;quot;, and &amp;quot;caverelax_mamuta_dinner.cnd&amp;quot; will all load caverelax.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;new_09_4.cnd&amp;quot;, &amp;quot;new_09_4000.cnd&amp;quot;, and &amp;quot;new_09_portal_PotaTOS.cnd&amp;quot; will load new_09.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For cavesoil, caveconc, and cavemetal only, the game also checks for an additional &amp;quot;_00&amp;quot;, &amp;quot;_05&amp;quot;, and &amp;quot;_10&amp;quot; right after the prefix, for the purpose of loading one of three different wScenes. You must include it if you want the correct wScene to load. For example, caveconc_05 loads wScene 31, so if you want your custom song to also load wScene 31, acceptable names include &amp;quot;caveconc_05_WAFFLES.cnd&amp;quot;, &amp;quot;caveconc_05_52_46356.cnd&amp;quot;, or &amp;quot;caveconc_05_super_boss.cnd&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After adding your new CND file, be sure to add it to its respective trackMap file.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding new content to a vanilla BMS file ==&lt;br /&gt;
Adding new hex data in the middle of a file will shift all the offsets that come after it, causing your BMS to jump to the wrong locations, and likely cause a crash if vanilla songs are loaded.&amp;lt;br&amp;gt;&lt;br /&gt;
In order to add new content in addition to what&#039;s already in the BMS:&lt;br /&gt;
* Find and copy the gesture set list and the timing ruleset list, and paste them at the end of the file. (Separate them with lots of zeros so you have lots more space to add content to these lists)&lt;br /&gt;
* Change &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; to point to your new gesture set list and timing ruleset list. These two values tell the game where the lists are.&lt;br /&gt;
The game should now use these brand new lists, instead of the original instances that occur earlier in the file. Since they still contain all the locations of the vanilla gesture sets/timetables from above in the same order, the existing CND songs won&#039;t be affected and will continue to function, but now you can expand upon these lists with brand new entries now that you&#039;ve made the space for them. All new gestures, gesture sets and timetables can be added further down the file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Editing_vanilla_BMS_file.png|The new gesture set list and timing ruleset list we want to use will be at the bottom.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding gesture cutoffs in timetables ==&lt;br /&gt;
An intentional compositional choice in some songs is to cutoff gestures while they&#039;re in the middle of playing. The most common way this is done is to quickly trigger another gesture; if the last gesture has not finished playing, it will stop playing that gesture and begin playing the new one. It&#039;s also possible to add &amp;quot;empty&amp;quot; gestures to gesture sets (like &amp;lt;code&amp;gt;C40000015DFF&amp;lt;/code&amp;gt;, a gesture which ends immediately and plays nothing), so you can randomly interrupt gestures in your song with silence, or have there be a chance to play nothing.&amp;lt;br&amp;gt; &lt;br /&gt;
However, if you wish to interrupt gestures in your song at specified times without the randomness, there is a special function in timetables for doing this. In the vanilla game, this is used for the trumpet in [https://www.youtube.com/watch?v=qOhmS1YLpF8 Fire]. The trumpet plays two interrupted gestures, then plays a third gesture in full. Below is the timetable for this trumpet:&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;0078 8168 81E0 00F0 80F0 81E0 0780 FFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The trumpet will: play a gesture for 1 beat, cutoff after this 1 beat, cutoff for 4 beats, play a gesture for 2 beats, cutoff after these 2 beats, cutoff for 4 beats, then play a gesture for 16 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
In order to put a &amp;quot;cutoff&amp;quot; in your timetable:&lt;br /&gt;
* Start with how long you want your &amp;quot;playing&amp;quot; gesture to play for, before it gets cutoff. I want the the first gesture to last for one beat (four 1/16th notes), so I&#039;ll put &amp;lt;code&amp;gt;0078&amp;lt;/code&amp;gt;. Remember that every &amp;quot;30&amp;quot; in decimal is equivalent to a sixteenth note.&lt;br /&gt;
* Immediately next in the sequence will be a value that indicates when the cutoff begins. Calculate the difference between &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; and the previous value you just put in your sequence. 81E0 - 0078 = 8168 (in decimal, 33248 - 120 = 33128). &lt;br /&gt;
My sequence is now &amp;lt;code&amp;gt;0078 8168&amp;lt;/code&amp;gt;; this will play a gesture normally for 1 beat, but then immediately cut it off after that 1 beat.&amp;lt;br&amp;gt;&lt;br /&gt;
Putting an additional &amp;lt;code&amp;gt;81E0&amp;lt;/code&amp;gt; in the sequence right after will extend the cutoff time for another 4 beats. You can repeat it several times in a row if you want the cutoff to last for long periods.&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=File:BMS_functions.png&amp;diff=4620</id>
		<title>File:BMS functions.png</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=File:BMS_functions.png&amp;diff=4620"/>
		<updated>2024-03-17T04:12:45Z</updated>

		<summary type="html">&lt;p&gt;Waffles: Waffles uploaded a new version of File:BMS functions.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Infographic showing cave music BMS file functions.&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4604</id>
		<title>Creating cave music</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4604"/>
		<updated>2024-03-11T18:17:37Z</updated>

		<summary type="html">&lt;p&gt;Waffles: /* Bonus: Adding new content to a vanilla BMS file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Randomly generating cave music in Pikmin 2 needs to have two files: a .bms (sequence) file, and a .cnd (conductor) file.&lt;br /&gt;
&lt;br /&gt;
The BMS file type is a sequenced music format used in many games. For the cave music in Pikmin 2 however, it is specially-formatted. It mainly contains many short snippets of musical information to be randomized.&lt;br /&gt;
&lt;br /&gt;
The CND files are the actual &amp;quot;songs&amp;quot;; they take specific groups of snippets from a BMS file, and endlessly puzzle-piece them together to form a coherent piece of music.&lt;br /&gt;
&lt;br /&gt;
This guide will function as a walkthrough for creating your own randomly sequencing cave song. All of the editing will be done in hexadecimal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be generating a lot of tiny BMS files, to turn them into &amp;quot;gestures&amp;quot;.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
== Overview of file functions ==&lt;br /&gt;
Here are some infographics that you can reference at any time. These show all the functions of a CND file, and all the contents of a BMS file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
File:BMS_functions.png|How information is stored in a BMS file.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up your BMS file ==&lt;br /&gt;
Before you begin, set your byte grouping to &amp;quot;3&amp;quot;, so every 3 bytes is visually separated by a space. This will make it easier to see stuff.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Starting with a completely blank BMS file, begin by pasting the following:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Every cave music BMS begins with this same information.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Gesture set list ==&lt;br /&gt;
Exactly right after &amp;lt;code&amp;gt;34C600&amp;lt;/code&amp;gt; will be a list of every gesture set&#039;s location in the BMS. Each entry is the gesture set&#039;s hexadecimal location (offset), and each entry in the sequence begins with &amp;quot;&amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;&amp;quot;. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0001B0 0001BF 0001CE 0001D4 0001DA 0001E9 0001F8 0001FE 000204 00020A FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Gesture set &amp;quot;0&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1B0&amp;lt;/code&amp;gt;, gesture set &amp;quot;1&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1BF&amp;lt;/code&amp;gt;, gesture set &amp;quot;2&amp;quot; will be at &amp;lt;code&amp;gt;0x1CE&amp;lt;/code&amp;gt;, and so on. There are a total of 10 gesture sets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Until we create our gesture sets, let&#039;s use &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt; as placeholders so we can easily find and get back to this section later on. You can have as many gesture sets as you like; we&#039;ll create 16 entries for this tutorial. You may insert this into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our BMS should now currently look like this:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
You can also add an entire row of padding/zeros after this. You can do this for each section, to better visually separate them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing ruleset list ==&lt;br /&gt;
This is another sequence of offsets. These just point to the location of a &amp;quot;[[#Inserting_timetables|timetable]]&amp;quot;, which will be located at the end of our BMS file. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0005AB 0005AB 0005AF 0005C1 0005AB 0005AB 0005C1 0005C1 0005C1 0005C1 FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Timing ruleset &amp;quot;0&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;1&amp;quot; will also use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;2&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AF&amp;lt;/code&amp;gt;, and so on. There are a total of 10 timing rulesets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Let&#039;s use &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt; as placeholders again, and create 16 of them. Insert this anywhere into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set contents ==&lt;br /&gt;
A &#039;&#039;gesture set&#039;&#039; is a group of many gestures.&amp;lt;br&amp;gt;&lt;br /&gt;
Here, we list each gesture set&#039;s contents (which are... the locations of gestures!). Each gesture set begins before the &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt; and ends with &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how the gesture set list should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;000210 00022A 000258 000281 FFFFFF 0002B4 0002D9 000303 000331 FFFFFF 000355 FFFFFF 000361 FFFFFF 0003A8 0003C2 0003F0 000419 FFFFFF 00044C 000471 00049B 0004C9 FFFFFF 0004ED FFFFFF 000543 FFFFFF 000580 FFFFFF 00059E FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
There are 10 gesture sets listed above. The first gesture set has 4 gestures, located at &amp;lt;code&amp;gt;0x210&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x22A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x258&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;0x281&amp;lt;/code&amp;gt;. You can have any amount of gestures in a gesture set; even 1 is fine.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You can paste the following placeholder information for now:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It might be a good idea to leave a decent amount of zeros after this list; this one will expand a lot as gestures and gesture sets are added to it.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How is your BMS looking? ==&lt;br /&gt;
If you have been copy-pasting everything correctly, your BMS will look something like this:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=300px heights=300px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_1.png|Orange is &amp;quot;gesture set list&amp;quot;, green is &amp;quot;timing ruleset list&amp;quot;, and blue is &amp;quot;gesture set contents&amp;quot;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Once again, you can add as much padding between each section as you want, it will work fine.&lt;br /&gt;
== Creating gestures ==&lt;br /&gt;
First, you should sketch out your song idea in your DAW, and then cut your song into tiny blocks. These blocks will be your song&#039;s individual gestures. You should also consider dragging these blocks around in various arrangements to make sure they sound good in any order.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once you are ready, have them nicely organized and ready to be exported into individual MIDI files:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_Pro_gestures.png|A Logic Pro project with a bunch of short blocks of music. Each block will be a &amp;quot;gesture&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
For some reason, imported BMS files play 4 times as slow in cave songs. So if you import these gestures as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export your gestures, you need to modify your gestures to run &#039;&#039;4 times as fast&#039;&#039;. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Logic Pro can easily speed up MIDI regions with MIDI Transform. You want to use the &amp;quot;Double Speed&amp;quot; transformation twice on each block.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_pro_double_speed.gif|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting gestures ==&lt;br /&gt;
Gestures use same the note/music information as standard BMS songs.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should have converted all your MIDIs into BMS files. Open up one of your converted BMS files, and look for the first note/pitch value. If you used [[Pikmin 2 custom music|flaaffy]], this will most likely be somewhere after &amp;lt;code&amp;gt;0x1B&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;0x1D&amp;lt;/code&amp;gt;. The note&#039;s pitch value will be followed by a &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;. Copy this note, all the way to the end of the sequence, which should be &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=600px&amp;gt;&lt;br /&gt;
File:Copy_pasting_BMS_info.png|The value &amp;quot;2D&amp;quot; here is the hex value of a certain pitch, and the very first note of the sequence. Copy this, all the way to &amp;quot;FF&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
To add your gesture, start it with &amp;lt;code&amp;gt;C40000015D&amp;lt;/code&amp;gt;, then paste in what you copied. Each gesture should end with that &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;. Add as many gestures as you please!&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_2.png|The purple lines indicate where a gesture starts.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting timetables ==&lt;br /&gt;
So, how do we choose how often gestures will play? Will a gesture play every beat? Every 1/2 a beat? You will need to add a timetable for that!&lt;br /&gt;
A timetable is a sequence that dictates when gestures should play. A timetable ends with &amp;lt;code&amp;gt;FFFF&amp;lt;/code&amp;gt;. You can make a timetable as complex as you like.&amp;lt;br&amp;gt; Some examples of timetables you can use are:&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0780FFFF&amp;lt;/code&amp;gt; Play a gesture every 16 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C0FFFF&amp;lt;/code&amp;gt; Play a gesture every 8 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;01E0FFFF&amp;lt;/code&amp;gt; Play a gesture every 4 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C003C003C001E001E001E001E003C0FFFF&amp;lt;/code&amp;gt; This sequence will play a gesture every 8 beats (3x), play a gesture every 4 beats (4x), then play a gesture for 8 beats (1x), in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/2 note (every 2 beats).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0078FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/4 note (every beat).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003CFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/8th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;001EFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/16th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003C0078001EFFFF&amp;lt;/code&amp;gt; This sequence will play a gesture for an 1/8th note, play a gesture for a 1/4 note, then play a gesture for a 1/16th note, in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
Considering that &amp;lt;code&amp;gt;001E&amp;lt;/code&amp;gt; (30 in decimal) is a 1/16th note, you can create any specific timing you want. Just add another 30 to the value for each additional sixteenth note in length.&amp;lt;br&amp;gt;&lt;br /&gt;
For example, Soil 1&#039;s enemy mix piano plays very rapidly; its timetable uses a value of 90, which looks like &amp;lt;code&amp;gt;005AFFFF&amp;lt;/code&amp;gt;. The gestures last for three sixteenth notes.&amp;lt;br&amp;gt;&lt;br /&gt;
You can insert your timetables anywhere at the end of your BMS.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_3.png|Each timetable has a pink box around it.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in info ==&lt;br /&gt;
Once you have your gestures and timetables inserted, go back and fill in those &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00CCCC&amp;lt;/code&amp;gt; placeholders with the locations of your gesture sets, timetables, and gestures you want to use. Remember that gesture sets begin with the &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Also in the very beginning of your BMS, make sure the value at &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; has the location of where your gesture set list begins (this one will probably be fine), and the value at &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; has the location of where your timing ruleset list begins.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_4.png|Put the location of where the &amp;quot;timing ruleset list&amp;quot; begins here.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in the conductor file ==&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
In your song&#039;s associated conductor file, try to stretch out the window so that the instrument names are all in the same column if you can, like in the image above.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Each line represents one track. You give each track a instrument (program), and what gesture set and timing ruleset to use.&amp;lt;br&amp;gt;&lt;br /&gt;
The CND infographic above does a good job explaining all the functions, but they&#039;ll be explained again down here.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the top left corner are three important values:&lt;br /&gt;
* The first value is the swing time. &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt; is 1/16th swing, while &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; is 1/8th swing. If your song is below 100bpm, you might want to use &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt;. If its faster, try &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
* The second value is the tempo, in hex.&lt;br /&gt;
* The third value is how many tracks there will be, in hex.&lt;br /&gt;
&lt;br /&gt;
Each column explained:&lt;br /&gt;
* A: Initial delay. How many beats until this track starts running. In the vanilla game, you can notice how some song&#039;s melodies do not immediately begin playing upon the start of level. This is useful for that; ease the listener into the music.&lt;br /&gt;
* B/Q: If set to 1, all gestures will be delayed by an 1/8th note..&lt;br /&gt;
* C: Text string. You can make this say whatever you like. Useful for keeping track of what you want each track to be, like &amp;quot;Lead&amp;quot;, &amp;quot;Trumpet&amp;quot;, &amp;quot;MelodyA&amp;quot;/&amp;quot;MelodyB&amp;quot;, &amp;quot;Bass&amp;quot;, or &amp;quot;Drums&amp;quot;&lt;br /&gt;
* D: Track copy. Select a previous track # to copy the gestures from. If the track its copying plays &amp;quot;gesture 3&amp;quot; from its gesture set, this track will also play its &amp;quot;gesture 3&amp;quot;. Often used for treasure mix instruments. You can have them use different gesture sets if you like.&lt;br /&gt;
* E: Echo strength.&lt;br /&gt;
* F: If set to 1, the values in this track&#039;s timetable will always be played in order, in a loop. If set to 0, it will randomly select values from its timetable, thus, allowing you to randomize when gestures play.&lt;br /&gt;
* G: Bank number.&lt;br /&gt;
* H: Program number. For a list of all programs in the default game and the wScenes that support them, view [[Pikmin 2 custom_music/available instruments|this page]].&lt;br /&gt;
* I: Gesture set, select the set # you want to use from the BMS. &lt;br /&gt;
* J: Timing ruleset, select the set # you want to use from the BMS.&lt;br /&gt;
* K: How many gestures this track will play, before playing &amp;quot;silent gestures&amp;quot;. Linked to below. These function as a sort of on/off cycle.&lt;br /&gt;
* L: How many &amp;quot;silent gestures&amp;quot; this track will play, before playing normal gestures. Linked to above. These function as a sort of on/off cycle.&lt;br /&gt;
* M: If notes are being transposed down (see below), this is set to FF. But this column doesn&#039;t actually do anything, so you don&#039;t need to edit this.&lt;br /&gt;
* N: Transpose all notes played by this track. To transpose up, use values 1-127. To transpose down, use the sign 2 compliment (values 128-255).&lt;br /&gt;
* O: Volume.&lt;br /&gt;
* P: Stereo panning.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some considerations:&lt;br /&gt;
* You can use the on/off cycle feature (column K and L) to make your melodic instrument &amp;quot;take a break&amp;quot; every once in a while. You can have it play 4 gestures, but then be silent for 2.&lt;br /&gt;
* If your timing ruleset is strict (as in, the timings for when gestures occur is always consistent), something fun to try is to have the melody be a back-and-forth between two different instruments. Set the initial delay for the second instrument to be longer than the first one, and then cleverly use the on/off cycle to have the instruments take turns sounding a gesture. This is done for the melody in the Bulblax Kingdom and Frontier Cavern for example.&lt;br /&gt;
* If you are using the &amp;quot;track copy&amp;quot; feature (column D), you can have the primary instrument play a melody, and have this instrument always play chords that perfectly match that melody.&lt;br /&gt;
* The 1/8th note delay achieved with column Q and the &amp;quot;track copy&amp;quot; feature can be used to create a stereo echo effect; make the copying track quieter and panned to a different speaker! It works better the faster your song is.&lt;br /&gt;
&lt;br /&gt;
== Mapping the tracks ==&lt;br /&gt;
With all that done, don&#039;t forget to edit the song&#039;s [[Trackmap parameters|trackMap]]! Edit your song in the trackMap files in either &amp;lt;code&amp;gt;/user/Totaka&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/user/Wakai&amp;lt;/code&amp;gt;, and set how many instruments will be in each mix. It goes in order from: Main Mix, Task (event), Treasure (otakara), Enemy near (kehai), Combat mix, and Spiderwort mix (ground). Although you cannot find Spiderworts underground, you will have to sacrifice at least one track for that mix. You cannot set any of the mixes to have 0 instruments in them.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Filenames for brand new CND files ==&lt;br /&gt;
If you are adding a brand new CND file instead of replacing an existing one, the prefix will determine which BMS is loaded, and which wScene. Try not to add special characters to filenames, aside from underscores.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to load the correct BMS file, the CND must start with the name of the BMS file.&lt;br /&gt;
* &amp;quot;caveconc.cnd&amp;quot;, &amp;quot;caveconc_458435.cnd&amp;quot;, &amp;quot;caveconc_Waffles.cnd&amp;quot;, and &amp;quot;caveconc_Waffles_Song_2.cnd&amp;quot; will all load caveconc.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;caverelax.cnd&amp;quot;, &amp;quot;caverelax_Gmajor.cnd&amp;quot;, and &amp;quot;caverelax_mamuta_dinner.cnd&amp;quot; will all load caverelax.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;new_09_4.cnd&amp;quot;, &amp;quot;new_09_4000.cnd&amp;quot;, and &amp;quot;new_09_portal_PotaTOS.cnd&amp;quot; will load new_09.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For cavesoil, caveconc, and cavemetal only, the game also checks for an additional &amp;quot;_00&amp;quot;, &amp;quot;_05&amp;quot;, and &amp;quot;_10&amp;quot; right after the prefix, for the purpose of loading one of three different wScenes. You must include it if you want the correct wScene to load. For example, caveconc_05 loads wScene 31, so if you want your custom song to also load wScene 31, acceptable names include &amp;quot;caveconc_05_WAFFLES.cnd&amp;quot;, &amp;quot;caveconc_05_52_46356.cnd&amp;quot;, or &amp;quot;caveconc_05_super_boss.cnd&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After adding your new CND file, be sure to add it to its respective trackMap file.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding new content to a vanilla BMS file ==&lt;br /&gt;
Adding new hex data in the middle of a file will shift all the offsets that come after it, causing your BMS to jump to the wrong locations, and likely cause a crash if vanilla songs are loaded.&amp;lt;br&amp;gt;&lt;br /&gt;
In order to add new content in addition to what&#039;s already in the BMS:&lt;br /&gt;
* Find and copy the gesture set list and the timing ruleset list, and paste them at the end of the file. (Separate them with lots of zeros so you have lots more space to add content to these lists)&lt;br /&gt;
* Change &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; to point to your new gesture set list and timing ruleset list. These two values tell the game where the lists are.&lt;br /&gt;
The game should now use these brand new lists, instead of the original instances that occur earlier in the file. Since they still contain all the locations of the vanilla gesture sets/timetables from above in the same order, the existing CND songs won&#039;t be affected and will continue to function, but now you can expand upon these lists with brand new entries now that you&#039;ve made the space for them. All new gestures, gesture sets and timetables can be added further down the file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Editing_vanilla_BMS_file.png|The new gesture set list and timing ruleset list we want to use will be at the bottom.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4603</id>
		<title>Creating cave music</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4603"/>
		<updated>2024-03-11T18:07:15Z</updated>

		<summary type="html">&lt;p&gt;Waffles: /* Bonus: Filenames for brand new CND files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Randomly generating cave music in Pikmin 2 needs to have two files: a .bms (sequence) file, and a .cnd (conductor) file.&lt;br /&gt;
&lt;br /&gt;
The BMS file type is a sequenced music format used in many games. For the cave music in Pikmin 2 however, it is specially-formatted. It mainly contains many short snippets of musical information to be randomized.&lt;br /&gt;
&lt;br /&gt;
The CND files are the actual &amp;quot;songs&amp;quot;; they take specific groups of snippets from a BMS file, and endlessly puzzle-piece them together to form a coherent piece of music.&lt;br /&gt;
&lt;br /&gt;
This guide will function as a walkthrough for creating your own randomly sequencing cave song. All of the editing will be done in hexadecimal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be generating a lot of tiny BMS files, to turn them into &amp;quot;gestures&amp;quot;.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
== Overview of file functions ==&lt;br /&gt;
Here are some infographics that you can reference at any time. These show all the functions of a CND file, and all the contents of a BMS file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
File:BMS_functions.png|How information is stored in a BMS file.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up your BMS file ==&lt;br /&gt;
Before you begin, set your byte grouping to &amp;quot;3&amp;quot;, so every 3 bytes is visually separated by a space. This will make it easier to see stuff.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Starting with a completely blank BMS file, begin by pasting the following:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Every cave music BMS begins with this same information.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Gesture set list ==&lt;br /&gt;
Exactly right after &amp;lt;code&amp;gt;34C600&amp;lt;/code&amp;gt; will be a list of every gesture set&#039;s location in the BMS. Each entry is the gesture set&#039;s hexadecimal location (offset), and each entry in the sequence begins with &amp;quot;&amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;&amp;quot;. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0001B0 0001BF 0001CE 0001D4 0001DA 0001E9 0001F8 0001FE 000204 00020A FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Gesture set &amp;quot;0&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1B0&amp;lt;/code&amp;gt;, gesture set &amp;quot;1&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1BF&amp;lt;/code&amp;gt;, gesture set &amp;quot;2&amp;quot; will be at &amp;lt;code&amp;gt;0x1CE&amp;lt;/code&amp;gt;, and so on. There are a total of 10 gesture sets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Until we create our gesture sets, let&#039;s use &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt; as placeholders so we can easily find and get back to this section later on. You can have as many gesture sets as you like; we&#039;ll create 16 entries for this tutorial. You may insert this into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our BMS should now currently look like this:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
You can also add an entire row of padding/zeros after this. You can do this for each section, to better visually separate them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing ruleset list ==&lt;br /&gt;
This is another sequence of offsets. These just point to the location of a &amp;quot;[[#Inserting_timetables|timetable]]&amp;quot;, which will be located at the end of our BMS file. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0005AB 0005AB 0005AF 0005C1 0005AB 0005AB 0005C1 0005C1 0005C1 0005C1 FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Timing ruleset &amp;quot;0&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;1&amp;quot; will also use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;2&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AF&amp;lt;/code&amp;gt;, and so on. There are a total of 10 timing rulesets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Let&#039;s use &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt; as placeholders again, and create 16 of them. Insert this anywhere into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set contents ==&lt;br /&gt;
A &#039;&#039;gesture set&#039;&#039; is a group of many gestures.&amp;lt;br&amp;gt;&lt;br /&gt;
Here, we list each gesture set&#039;s contents (which are... the locations of gestures!). Each gesture set begins before the &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt; and ends with &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how the gesture set list should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;000210 00022A 000258 000281 FFFFFF 0002B4 0002D9 000303 000331 FFFFFF 000355 FFFFFF 000361 FFFFFF 0003A8 0003C2 0003F0 000419 FFFFFF 00044C 000471 00049B 0004C9 FFFFFF 0004ED FFFFFF 000543 FFFFFF 000580 FFFFFF 00059E FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
There are 10 gesture sets listed above. The first gesture set has 4 gestures, located at &amp;lt;code&amp;gt;0x210&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x22A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x258&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;0x281&amp;lt;/code&amp;gt;. You can have any amount of gestures in a gesture set; even 1 is fine.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You can paste the following placeholder information for now:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It might be a good idea to leave a decent amount of zeros after this list; this one will expand a lot as gestures and gesture sets are added to it.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How is your BMS looking? ==&lt;br /&gt;
If you have been copy-pasting everything correctly, your BMS will look something like this:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=300px heights=300px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_1.png|Orange is &amp;quot;gesture set list&amp;quot;, green is &amp;quot;timing ruleset list&amp;quot;, and blue is &amp;quot;gesture set contents&amp;quot;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Once again, you can add as much padding between each section as you want, it will work fine.&lt;br /&gt;
== Creating gestures ==&lt;br /&gt;
First, you should sketch out your song idea in your DAW, and then cut your song into tiny blocks. These blocks will be your song&#039;s individual gestures. You should also consider dragging these blocks around in various arrangements to make sure they sound good in any order.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once you are ready, have them nicely organized and ready to be exported into individual MIDI files:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_Pro_gestures.png|A Logic Pro project with a bunch of short blocks of music. Each block will be a &amp;quot;gesture&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
For some reason, imported BMS files play 4 times as slow in cave songs. So if you import these gestures as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export your gestures, you need to modify your gestures to run &#039;&#039;4 times as fast&#039;&#039;. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Logic Pro can easily speed up MIDI regions with MIDI Transform. You want to use the &amp;quot;Double Speed&amp;quot; transformation twice on each block.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_pro_double_speed.gif|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting gestures ==&lt;br /&gt;
Gestures use same the note/music information as standard BMS songs.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should have converted all your MIDIs into BMS files. Open up one of your converted BMS files, and look for the first note/pitch value. If you used [[Pikmin 2 custom music|flaaffy]], this will most likely be somewhere after &amp;lt;code&amp;gt;0x1B&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;0x1D&amp;lt;/code&amp;gt;. The note&#039;s pitch value will be followed by a &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;. Copy this note, all the way to the end of the sequence, which should be &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=600px&amp;gt;&lt;br /&gt;
File:Copy_pasting_BMS_info.png|The value &amp;quot;2D&amp;quot; here is the hex value of a certain pitch, and the very first note of the sequence. Copy this, all the way to &amp;quot;FF&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
To add your gesture, start it with &amp;lt;code&amp;gt;C40000015D&amp;lt;/code&amp;gt;, then paste in what you copied. Each gesture should end with that &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;. Add as many gestures as you please!&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_2.png|The purple lines indicate where a gesture starts.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting timetables ==&lt;br /&gt;
So, how do we choose how often gestures will play? Will a gesture play every beat? Every 1/2 a beat? You will need to add a timetable for that!&lt;br /&gt;
A timetable is a sequence that dictates when gestures should play. A timetable ends with &amp;lt;code&amp;gt;FFFF&amp;lt;/code&amp;gt;. You can make a timetable as complex as you like.&amp;lt;br&amp;gt; Some examples of timetables you can use are:&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0780FFFF&amp;lt;/code&amp;gt; Play a gesture every 16 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C0FFFF&amp;lt;/code&amp;gt; Play a gesture every 8 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;01E0FFFF&amp;lt;/code&amp;gt; Play a gesture every 4 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C003C003C001E001E001E001E003C0FFFF&amp;lt;/code&amp;gt; This sequence will play a gesture every 8 beats (3x), play a gesture every 4 beats (4x), then play a gesture for 8 beats (1x), in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/2 note (every 2 beats).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0078FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/4 note (every beat).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003CFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/8th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;001EFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/16th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003C0078001EFFFF&amp;lt;/code&amp;gt; This sequence will play a gesture for an 1/8th note, play a gesture for a 1/4 note, then play a gesture for a 1/16th note, in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
Considering that &amp;lt;code&amp;gt;001E&amp;lt;/code&amp;gt; (30 in decimal) is a 1/16th note, you can create any specific timing you want. Just add another 30 to the value for each additional sixteenth note in length.&amp;lt;br&amp;gt;&lt;br /&gt;
For example, Soil 1&#039;s enemy mix piano plays very rapidly; its timetable uses a value of 90, which looks like &amp;lt;code&amp;gt;005AFFFF&amp;lt;/code&amp;gt;. The gestures last for three sixteenth notes.&amp;lt;br&amp;gt;&lt;br /&gt;
You can insert your timetables anywhere at the end of your BMS.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_3.png|Each timetable has a pink box around it.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in info ==&lt;br /&gt;
Once you have your gestures and timetables inserted, go back and fill in those &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00CCCC&amp;lt;/code&amp;gt; placeholders with the locations of your gesture sets, timetables, and gestures you want to use. Remember that gesture sets begin with the &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Also in the very beginning of your BMS, make sure the value at &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; has the location of where your gesture set list begins (this one will probably be fine), and the value at &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; has the location of where your timing ruleset list begins.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_4.png|Put the location of where the &amp;quot;timing ruleset list&amp;quot; begins here.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in the conductor file ==&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
In your song&#039;s associated conductor file, try to stretch out the window so that the instrument names are all in the same column if you can, like in the image above.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Each line represents one track. You give each track a instrument (program), and what gesture set and timing ruleset to use.&amp;lt;br&amp;gt;&lt;br /&gt;
The CND infographic above does a good job explaining all the functions, but they&#039;ll be explained again down here.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the top left corner are three important values:&lt;br /&gt;
* The first value is the swing time. &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt; is 1/16th swing, while &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; is 1/8th swing. If your song is below 100bpm, you might want to use &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt;. If its faster, try &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
* The second value is the tempo, in hex.&lt;br /&gt;
* The third value is how many tracks there will be, in hex.&lt;br /&gt;
&lt;br /&gt;
Each column explained:&lt;br /&gt;
* A: Initial delay. How many beats until this track starts running. In the vanilla game, you can notice how some song&#039;s melodies do not immediately begin playing upon the start of level. This is useful for that; ease the listener into the music.&lt;br /&gt;
* B/Q: If set to 1, all gestures will be delayed by an 1/8th note..&lt;br /&gt;
* C: Text string. You can make this say whatever you like. Useful for keeping track of what you want each track to be, like &amp;quot;Lead&amp;quot;, &amp;quot;Trumpet&amp;quot;, &amp;quot;MelodyA&amp;quot;/&amp;quot;MelodyB&amp;quot;, &amp;quot;Bass&amp;quot;, or &amp;quot;Drums&amp;quot;&lt;br /&gt;
* D: Track copy. Select a previous track # to copy the gestures from. If the track its copying plays &amp;quot;gesture 3&amp;quot; from its gesture set, this track will also play its &amp;quot;gesture 3&amp;quot;. Often used for treasure mix instruments. You can have them use different gesture sets if you like.&lt;br /&gt;
* E: Echo strength.&lt;br /&gt;
* F: If set to 1, the values in this track&#039;s timetable will always be played in order, in a loop. If set to 0, it will randomly select values from its timetable, thus, allowing you to randomize when gestures play.&lt;br /&gt;
* G: Bank number.&lt;br /&gt;
* H: Program number. For a list of all programs in the default game and the wScenes that support them, view [[Pikmin 2 custom_music/available instruments|this page]].&lt;br /&gt;
* I: Gesture set, select the set # you want to use from the BMS. &lt;br /&gt;
* J: Timing ruleset, select the set # you want to use from the BMS.&lt;br /&gt;
* K: How many gestures this track will play, before playing &amp;quot;silent gestures&amp;quot;. Linked to below. These function as a sort of on/off cycle.&lt;br /&gt;
* L: How many &amp;quot;silent gestures&amp;quot; this track will play, before playing normal gestures. Linked to above. These function as a sort of on/off cycle.&lt;br /&gt;
* M: If notes are being transposed down (see below), this is set to FF. But this column doesn&#039;t actually do anything, so you don&#039;t need to edit this.&lt;br /&gt;
* N: Transpose all notes played by this track. To transpose up, use values 1-127. To transpose down, use the sign 2 compliment (values 128-255).&lt;br /&gt;
* O: Volume.&lt;br /&gt;
* P: Stereo panning.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some considerations:&lt;br /&gt;
* You can use the on/off cycle feature (column K and L) to make your melodic instrument &amp;quot;take a break&amp;quot; every once in a while. You can have it play 4 gestures, but then be silent for 2.&lt;br /&gt;
* If your timing ruleset is strict (as in, the timings for when gestures occur is always consistent), something fun to try is to have the melody be a back-and-forth between two different instruments. Set the initial delay for the second instrument to be longer than the first one, and then cleverly use the on/off cycle to have the instruments take turns sounding a gesture. This is done for the melody in the Bulblax Kingdom and Frontier Cavern for example.&lt;br /&gt;
* If you are using the &amp;quot;track copy&amp;quot; feature (column D), you can have the primary instrument play a melody, and have this instrument always play chords that perfectly match that melody.&lt;br /&gt;
* The 1/8th note delay achieved with column Q and the &amp;quot;track copy&amp;quot; feature can be used to create a stereo echo effect; make the copying track quieter and panned to a different speaker! It works better the faster your song is.&lt;br /&gt;
&lt;br /&gt;
== Mapping the tracks ==&lt;br /&gt;
With all that done, don&#039;t forget to edit the song&#039;s [[Trackmap parameters|trackMap]]! Edit your song in the trackMap files in either &amp;lt;code&amp;gt;/user/Totaka&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/user/Wakai&amp;lt;/code&amp;gt;, and set how many instruments will be in each mix. It goes in order from: Main Mix, Task (event), Treasure (otakara), Enemy near (kehai), Combat mix, and Spiderwort mix (ground). Although you cannot find Spiderworts underground, you will have to sacrifice at least one track for that mix. You cannot set any of the mixes to have 0 instruments in them.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Filenames for brand new CND files ==&lt;br /&gt;
If you are adding a brand new CND file instead of replacing an existing one, the prefix will determine which BMS is loaded, and which wScene. Try not to add special characters to filenames, aside from underscores.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to load the correct BMS file, the CND must start with the name of the BMS file.&lt;br /&gt;
* &amp;quot;caveconc.cnd&amp;quot;, &amp;quot;caveconc_458435.cnd&amp;quot;, &amp;quot;caveconc_Waffles.cnd&amp;quot;, and &amp;quot;caveconc_Waffles_Song_2.cnd&amp;quot; will all load caveconc.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;caverelax.cnd&amp;quot;, &amp;quot;caverelax_Gmajor.cnd&amp;quot;, and &amp;quot;caverelax_mamuta_dinner.cnd&amp;quot; will all load caverelax.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;new_09_4.cnd&amp;quot;, &amp;quot;new_09_4000.cnd&amp;quot;, and &amp;quot;new_09_portal_PotaTOS.cnd&amp;quot; will load new_09.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For cavesoil, caveconc, and cavemetal only, the game also checks for an additional &amp;quot;_00&amp;quot;, &amp;quot;_05&amp;quot;, and &amp;quot;_10&amp;quot; right after the prefix, for the purpose of loading one of three different wScenes. You must include it if you want the correct wScene to load. For example, caveconc_05 loads wScene 31, so if you want your custom song to also load wScene 31, acceptable names include &amp;quot;caveconc_05_WAFFLES.cnd&amp;quot;, &amp;quot;caveconc_05_52_46356.cnd&amp;quot;, or &amp;quot;caveconc_05_super_boss.cnd&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After adding your new CND file, be sure to add it to its respective trackMap file.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding new content to a vanilla BMS file ==&lt;br /&gt;
Adding new hex data in the middle of a file will shift all the offsets that come after it, causing your BMS to jump to the wrong locations, and likely cause a crash if vanilla songs are loaded.&amp;lt;br&amp;gt;&lt;br /&gt;
In order to add new content in addition to what&#039;s already in the BMS, you can copy and put a brand new gesture set list and timing ruleset list at the bottom:&lt;br /&gt;
* Find and copy the gesture set list and the timing ruleset list, and paste them at the end of the file. (Separate them with lots of zeros so you have lots more space to add content to these lists)&lt;br /&gt;
* Change &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; to point to your new gesture set list and timing ruleset list. These two values tell the game where the lists are.&lt;br /&gt;
The game should now use these brand new lists, instead of the original instances that occur earlier in the file. Since they still contain all the locations of the vanilla gesture sets/timetables from above in the same order, the existing CND songs won&#039;t be affected and will continue to function, but now you can expand upon these lists with brand new entries now that you&#039;ve made the space for them. All new gestures, gesture sets and timetables can be added further down the file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Editing_vanilla_BMS_file.png|The new gesture set list and timing ruleset list we want to use will be at the bottom.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4602</id>
		<title>Creating cave music</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4602"/>
		<updated>2024-03-11T18:00:28Z</updated>

		<summary type="html">&lt;p&gt;Waffles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Randomly generating cave music in Pikmin 2 needs to have two files: a .bms (sequence) file, and a .cnd (conductor) file.&lt;br /&gt;
&lt;br /&gt;
The BMS file type is a sequenced music format used in many games. For the cave music in Pikmin 2 however, it is specially-formatted. It mainly contains many short snippets of musical information to be randomized.&lt;br /&gt;
&lt;br /&gt;
The CND files are the actual &amp;quot;songs&amp;quot;; they take specific groups of snippets from a BMS file, and endlessly puzzle-piece them together to form a coherent piece of music.&lt;br /&gt;
&lt;br /&gt;
This guide will function as a walkthrough for creating your own randomly sequencing cave song. All of the editing will be done in hexadecimal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be generating a lot of tiny BMS files, to turn them into &amp;quot;gestures&amp;quot;.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
== Overview of file functions ==&lt;br /&gt;
Here are some infographics that you can reference at any time. These show all the functions of a CND file, and all the contents of a BMS file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
File:BMS_functions.png|How information is stored in a BMS file.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up your BMS file ==&lt;br /&gt;
Before you begin, set your byte grouping to &amp;quot;3&amp;quot;, so every 3 bytes is visually separated by a space. This will make it easier to see stuff.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Starting with a completely blank BMS file, begin by pasting the following:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Every cave music BMS begins with this same information.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Gesture set list ==&lt;br /&gt;
Exactly right after &amp;lt;code&amp;gt;34C600&amp;lt;/code&amp;gt; will be a list of every gesture set&#039;s location in the BMS. Each entry is the gesture set&#039;s hexadecimal location (offset), and each entry in the sequence begins with &amp;quot;&amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;&amp;quot;. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0001B0 0001BF 0001CE 0001D4 0001DA 0001E9 0001F8 0001FE 000204 00020A FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Gesture set &amp;quot;0&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1B0&amp;lt;/code&amp;gt;, gesture set &amp;quot;1&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1BF&amp;lt;/code&amp;gt;, gesture set &amp;quot;2&amp;quot; will be at &amp;lt;code&amp;gt;0x1CE&amp;lt;/code&amp;gt;, and so on. There are a total of 10 gesture sets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Until we create our gesture sets, let&#039;s use &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt; as placeholders so we can easily find and get back to this section later on. You can have as many gesture sets as you like; we&#039;ll create 16 entries for this tutorial. You may insert this into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our BMS should now currently look like this:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
You can also add an entire row of padding/zeros after this. You can do this for each section, to better visually separate them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing ruleset list ==&lt;br /&gt;
This is another sequence of offsets. These just point to the location of a &amp;quot;[[#Inserting_timetables|timetable]]&amp;quot;, which will be located at the end of our BMS file. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0005AB 0005AB 0005AF 0005C1 0005AB 0005AB 0005C1 0005C1 0005C1 0005C1 FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Timing ruleset &amp;quot;0&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;1&amp;quot; will also use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;2&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AF&amp;lt;/code&amp;gt;, and so on. There are a total of 10 timing rulesets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Let&#039;s use &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt; as placeholders again, and create 16 of them. Insert this anywhere into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set contents ==&lt;br /&gt;
A &#039;&#039;gesture set&#039;&#039; is a group of many gestures.&amp;lt;br&amp;gt;&lt;br /&gt;
Here, we list each gesture set&#039;s contents (which are... the locations of gestures!). Each gesture set begins before the &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt; and ends with &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how the gesture set list should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;000210 00022A 000258 000281 FFFFFF 0002B4 0002D9 000303 000331 FFFFFF 000355 FFFFFF 000361 FFFFFF 0003A8 0003C2 0003F0 000419 FFFFFF 00044C 000471 00049B 0004C9 FFFFFF 0004ED FFFFFF 000543 FFFFFF 000580 FFFFFF 00059E FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
There are 10 gesture sets listed above. The first gesture set has 4 gestures, located at &amp;lt;code&amp;gt;0x210&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x22A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x258&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;0x281&amp;lt;/code&amp;gt;. You can have any amount of gestures in a gesture set; even 1 is fine.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You can paste the following placeholder information for now:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It might be a good idea to leave a decent amount of zeros after this list; this one will expand a lot as gestures and gesture sets are added to it.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How is your BMS looking? ==&lt;br /&gt;
If you have been copy-pasting everything correctly, your BMS will look something like this:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=300px heights=300px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_1.png|Orange is &amp;quot;gesture set list&amp;quot;, green is &amp;quot;timing ruleset list&amp;quot;, and blue is &amp;quot;gesture set contents&amp;quot;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Once again, you can add as much padding between each section as you want, it will work fine.&lt;br /&gt;
== Creating gestures ==&lt;br /&gt;
First, you should sketch out your song idea in your DAW, and then cut your song into tiny blocks. These blocks will be your song&#039;s individual gestures. You should also consider dragging these blocks around in various arrangements to make sure they sound good in any order.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once you are ready, have them nicely organized and ready to be exported into individual MIDI files:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_Pro_gestures.png|A Logic Pro project with a bunch of short blocks of music. Each block will be a &amp;quot;gesture&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
For some reason, imported BMS files play 4 times as slow in cave songs. So if you import these gestures as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export your gestures, you need to modify your gestures to run &#039;&#039;4 times as fast&#039;&#039;. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Logic Pro can easily speed up MIDI regions with MIDI Transform. You want to use the &amp;quot;Double Speed&amp;quot; transformation twice on each block.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_pro_double_speed.gif|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting gestures ==&lt;br /&gt;
Gestures use same the note/music information as standard BMS songs.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should have converted all your MIDIs into BMS files. Open up one of your converted BMS files, and look for the first note/pitch value. If you used [[Pikmin 2 custom music|flaaffy]], this will most likely be somewhere after &amp;lt;code&amp;gt;0x1B&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;0x1D&amp;lt;/code&amp;gt;. The note&#039;s pitch value will be followed by a &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;. Copy this note, all the way to the end of the sequence, which should be &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=600px&amp;gt;&lt;br /&gt;
File:Copy_pasting_BMS_info.png|The value &amp;quot;2D&amp;quot; here is the hex value of a certain pitch, and the very first note of the sequence. Copy this, all the way to &amp;quot;FF&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
To add your gesture, start it with &amp;lt;code&amp;gt;C40000015D&amp;lt;/code&amp;gt;, then paste in what you copied. Each gesture should end with that &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;. Add as many gestures as you please!&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_2.png|The purple lines indicate where a gesture starts.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting timetables ==&lt;br /&gt;
So, how do we choose how often gestures will play? Will a gesture play every beat? Every 1/2 a beat? You will need to add a timetable for that!&lt;br /&gt;
A timetable is a sequence that dictates when gestures should play. A timetable ends with &amp;lt;code&amp;gt;FFFF&amp;lt;/code&amp;gt;. You can make a timetable as complex as you like.&amp;lt;br&amp;gt; Some examples of timetables you can use are:&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0780FFFF&amp;lt;/code&amp;gt; Play a gesture every 16 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C0FFFF&amp;lt;/code&amp;gt; Play a gesture every 8 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;01E0FFFF&amp;lt;/code&amp;gt; Play a gesture every 4 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C003C003C001E001E001E001E003C0FFFF&amp;lt;/code&amp;gt; This sequence will play a gesture every 8 beats (3x), play a gesture every 4 beats (4x), then play a gesture for 8 beats (1x), in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/2 note (every 2 beats).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0078FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/4 note (every beat).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003CFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/8th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;001EFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/16th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003C0078001EFFFF&amp;lt;/code&amp;gt; This sequence will play a gesture for an 1/8th note, play a gesture for a 1/4 note, then play a gesture for a 1/16th note, in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
Considering that &amp;lt;code&amp;gt;001E&amp;lt;/code&amp;gt; (30 in decimal) is a 1/16th note, you can create any specific timing you want. Just add another 30 to the value for each additional sixteenth note in length.&amp;lt;br&amp;gt;&lt;br /&gt;
For example, Soil 1&#039;s enemy mix piano plays very rapidly; its timetable uses a value of 90, which looks like &amp;lt;code&amp;gt;005AFFFF&amp;lt;/code&amp;gt;. The gestures last for three sixteenth notes.&amp;lt;br&amp;gt;&lt;br /&gt;
You can insert your timetables anywhere at the end of your BMS.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_3.png|Each timetable has a pink box around it.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in info ==&lt;br /&gt;
Once you have your gestures and timetables inserted, go back and fill in those &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00CCCC&amp;lt;/code&amp;gt; placeholders with the locations of your gesture sets, timetables, and gestures you want to use. Remember that gesture sets begin with the &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Also in the very beginning of your BMS, make sure the value at &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; has the location of where your gesture set list begins (this one will probably be fine), and the value at &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; has the location of where your timing ruleset list begins.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_4.png|Put the location of where the &amp;quot;timing ruleset list&amp;quot; begins here.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in the conductor file ==&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
In your song&#039;s associated conductor file, try to stretch out the window so that the instrument names are all in the same column if you can, like in the image above.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Each line represents one track. You give each track a instrument (program), and what gesture set and timing ruleset to use.&amp;lt;br&amp;gt;&lt;br /&gt;
The CND infographic above does a good job explaining all the functions, but they&#039;ll be explained again down here.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the top left corner are three important values:&lt;br /&gt;
* The first value is the swing time. &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt; is 1/16th swing, while &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; is 1/8th swing. If your song is below 100bpm, you might want to use &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt;. If its faster, try &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
* The second value is the tempo, in hex.&lt;br /&gt;
* The third value is how many tracks there will be, in hex.&lt;br /&gt;
&lt;br /&gt;
Each column explained:&lt;br /&gt;
* A: Initial delay. How many beats until this track starts running. In the vanilla game, you can notice how some song&#039;s melodies do not immediately begin playing upon the start of level. This is useful for that; ease the listener into the music.&lt;br /&gt;
* B/Q: If set to 1, all gestures will be delayed by an 1/8th note..&lt;br /&gt;
* C: Text string. You can make this say whatever you like. Useful for keeping track of what you want each track to be, like &amp;quot;Lead&amp;quot;, &amp;quot;Trumpet&amp;quot;, &amp;quot;MelodyA&amp;quot;/&amp;quot;MelodyB&amp;quot;, &amp;quot;Bass&amp;quot;, or &amp;quot;Drums&amp;quot;&lt;br /&gt;
* D: Track copy. Select a previous track # to copy the gestures from. If the track its copying plays &amp;quot;gesture 3&amp;quot; from its gesture set, this track will also play its &amp;quot;gesture 3&amp;quot;. Often used for treasure mix instruments. You can have them use different gesture sets if you like.&lt;br /&gt;
* E: Echo strength.&lt;br /&gt;
* F: If set to 1, the values in this track&#039;s timetable will always be played in order, in a loop. If set to 0, it will randomly select values from its timetable, thus, allowing you to randomize when gestures play.&lt;br /&gt;
* G: Bank number.&lt;br /&gt;
* H: Program number. For a list of all programs in the default game and the wScenes that support them, view [[Pikmin 2 custom_music/available instruments|this page]].&lt;br /&gt;
* I: Gesture set, select the set # you want to use from the BMS. &lt;br /&gt;
* J: Timing ruleset, select the set # you want to use from the BMS.&lt;br /&gt;
* K: How many gestures this track will play, before playing &amp;quot;silent gestures&amp;quot;. Linked to below. These function as a sort of on/off cycle.&lt;br /&gt;
* L: How many &amp;quot;silent gestures&amp;quot; this track will play, before playing normal gestures. Linked to above. These function as a sort of on/off cycle.&lt;br /&gt;
* M: If notes are being transposed down (see below), this is set to FF. But this column doesn&#039;t actually do anything, so you don&#039;t need to edit this.&lt;br /&gt;
* N: Transpose all notes played by this track. To transpose up, use values 1-127. To transpose down, use the sign 2 compliment (values 128-255).&lt;br /&gt;
* O: Volume.&lt;br /&gt;
* P: Stereo panning.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some considerations:&lt;br /&gt;
* You can use the on/off cycle feature (column K and L) to make your melodic instrument &amp;quot;take a break&amp;quot; every once in a while. You can have it play 4 gestures, but then be silent for 2.&lt;br /&gt;
* If your timing ruleset is strict (as in, the timings for when gestures occur is always consistent), something fun to try is to have the melody be a back-and-forth between two different instruments. Set the initial delay for the second instrument to be longer than the first one, and then cleverly use the on/off cycle to have the instruments take turns sounding a gesture. This is done for the melody in the Bulblax Kingdom and Frontier Cavern for example.&lt;br /&gt;
* If you are using the &amp;quot;track copy&amp;quot; feature (column D), you can have the primary instrument play a melody, and have this instrument always play chords that perfectly match that melody.&lt;br /&gt;
* The 1/8th note delay achieved with column Q and the &amp;quot;track copy&amp;quot; feature can be used to create a stereo echo effect; make the copying track quieter and panned to a different speaker! It works better the faster your song is.&lt;br /&gt;
&lt;br /&gt;
== Mapping the tracks ==&lt;br /&gt;
With all that done, don&#039;t forget to edit the song&#039;s [[Trackmap parameters|trackMap]]! Edit your song in the trackMap files in either &amp;lt;code&amp;gt;/user/Totaka&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/user/Wakai&amp;lt;/code&amp;gt;, and set how many instruments will be in each mix. It goes in order from: Main Mix, Task (event), Treasure (otakara), Enemy near (kehai), Combat mix, and Spiderwort mix (ground). Although you cannot find Spiderworts underground, you will have to sacrifice at least one track for that mix. You cannot set any of the mixes to have 0 instruments in them.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Filenames for brand new CND files ==&lt;br /&gt;
If you are adding a brand new CND file instead of replacing an existing one, the prefix will determine which BMS is loaded, and which wScene. Try not to add special characters to filenames, aside from underscores.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to load the correct BMS file, the CND must start with the name of the BMS file.&lt;br /&gt;
* &amp;quot;caveconc.cnd&amp;quot;, &amp;quot;caveconc_458435.cnd&amp;quot;, &amp;quot;caveconc_Waffles.cnd&amp;quot;, and &amp;quot;caveconc_Waffles_Song_2.cnd&amp;quot; will all load caveconc.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;caverelax.cnd&amp;quot;, &amp;quot;caverelax_Gmajor.cnd&amp;quot;, and &amp;quot;caverelax_mamuta_dinner.cnd&amp;quot; will all load caverelax.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;new_09_4.cnd&amp;quot;, &amp;quot;new_09_4000.cnd&amp;quot;, and &amp;quot;new_09_portal_PotaTOS.cnd&amp;quot; will load new_09.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For cavesoil, caveconc, and cavemetal only, the game checks for an additional &amp;quot;_00&amp;quot;, &amp;quot;_05&amp;quot;, and &amp;quot;_10&amp;quot; right after the prefix, so you must include this if you want the right wScene to load. For example, caveconc_05 loads wScene 31, so if you want your custom song to load wScene 31, acceptable names include &amp;quot;caveconc_05_WAFFLES.cnd&amp;quot;, &amp;quot;caveconc_05_52_46356.cnd&amp;quot;, or &amp;quot;caveconc_05_super_boss.cnd&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After adding your new CND file, be sure to add it to its respective trackMap file.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding new content to a vanilla BMS file ==&lt;br /&gt;
Adding new hex data in the middle of a file will shift all the offsets that come after it, causing your BMS to jump to the wrong locations, and likely cause a crash if vanilla songs are loaded.&amp;lt;br&amp;gt;&lt;br /&gt;
In order to add new content in addition to what&#039;s already in the BMS, you can copy and put a brand new gesture set list and timing ruleset list at the bottom:&lt;br /&gt;
* Find and copy the gesture set list and the timing ruleset list, and paste them at the end of the file. (Separate them with lots of zeros so you have lots more space to add content to these lists)&lt;br /&gt;
* Change &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; to point to your new gesture set list and timing ruleset list. These two values tell the game where the lists are.&lt;br /&gt;
The game should now use these brand new lists, instead of the original instances that occur earlier in the file. Since they still contain all the locations of the vanilla gesture sets/timetables from above in the same order, the existing CND songs won&#039;t be affected and will continue to function, but now you can expand upon these lists with brand new entries now that you&#039;ve made the space for them. All new gestures, gesture sets and timetables can be added further down the file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Editing_vanilla_BMS_file.png|The new gesture set list and timing ruleset list we want to use will be at the bottom.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=File:BMS_file_progress_4.png&amp;diff=4601</id>
		<title>File:BMS file progress 4.png</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=File:BMS_file_progress_4.png&amp;diff=4601"/>
		<updated>2024-03-11T17:52:40Z</updated>

		<summary type="html">&lt;p&gt;Waffles: Waffles uploaded a new version of File:BMS file progress 4.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
For the &amp;quot;Creating randomly sequencing cave music&amp;quot; page.&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=File:BMS_file_progress_3.png&amp;diff=4600</id>
		<title>File:BMS file progress 3.png</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=File:BMS_file_progress_3.png&amp;diff=4600"/>
		<updated>2024-03-11T17:52:28Z</updated>

		<summary type="html">&lt;p&gt;Waffles: Waffles uploaded a new version of File:BMS file progress 3.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
For the &amp;quot;Creating randomly sequencing cave music&amp;quot; page.&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=File:BMS_file_progress_2.png&amp;diff=4599</id>
		<title>File:BMS file progress 2.png</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=File:BMS_file_progress_2.png&amp;diff=4599"/>
		<updated>2024-03-11T17:52:17Z</updated>

		<summary type="html">&lt;p&gt;Waffles: Waffles uploaded a new version of File:BMS file progress 2.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
For the &amp;quot;Creating randomly sequencing cave music&amp;quot; page.&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=File:BMS_file_progress_1.png&amp;diff=4598</id>
		<title>File:BMS file progress 1.png</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=File:BMS_file_progress_1.png&amp;diff=4598"/>
		<updated>2024-03-11T17:52:00Z</updated>

		<summary type="html">&lt;p&gt;Waffles: Waffles uploaded a new version of File:BMS file progress 1.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
For the &amp;quot;Creating randomly sequencing cave music&amp;quot; page.&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4597</id>
		<title>Creating cave music</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4597"/>
		<updated>2024-03-11T17:42:46Z</updated>

		<summary type="html">&lt;p&gt;Waffles: /* Bonus: Adding new content to a vanilla BMS file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Randomly generating cave music in Pikmin 2 needs to have two files: a .bms (sequence) file, and a .cnd (conductor) file.&lt;br /&gt;
&lt;br /&gt;
The BMS file type is a sequenced music format used in many games. For the cave music in Pikmin 2 however, it is specially-formatted. It mainly contains many short snippets of musical information to be randomized.&lt;br /&gt;
&lt;br /&gt;
The CND files are the actual &amp;quot;songs&amp;quot;; they take specific groups of snippets from a BMS file, and endlessly puzzle-piece them together to form a coherent piece of music.&lt;br /&gt;
&lt;br /&gt;
This guide will function as a walkthrough for creating your own randomly sequencing cave song. All of the editing will be done in hexadecimal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be generating a lot of tiny BMS files, to turn them into &amp;quot;gestures&amp;quot;.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
== Overview of file functions ==&lt;br /&gt;
Here are some infographics that you can reference at any time. These show all the functions of a CND file, and all the contents of a BMS file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
File:BMS_functions.png|How information is stored in a BMS file.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up your BMS file ==&lt;br /&gt;
Before you begin, set your byte grouping to &amp;quot;3&amp;quot;, so every 3 bytes is visually separated by a space. This will make it easier to see stuff.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Starting with a completely blank BMS file, begin by pasting the following:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Every cave music BMS begins with this same information.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Gesture set list ==&lt;br /&gt;
Exactly right after &amp;lt;code&amp;gt;34C600&amp;lt;/code&amp;gt; will be a list of every gesture set&#039;s location in the BMS. Each entry is the gesture set&#039;s hexadecimal location (offset), and each entry in the sequence begins with &amp;quot;&amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;&amp;quot;. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0001B0 0001BF 0001CE 0001D4 0001DA 0001E9 0001F8 0001FE 000204 00020A FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Gesture set &amp;quot;0&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1B0&amp;lt;/code&amp;gt;, gesture set &amp;quot;1&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1BF&amp;lt;/code&amp;gt;, gesture set &amp;quot;2&amp;quot; will be at &amp;lt;code&amp;gt;0x1CE&amp;lt;/code&amp;gt;, and so on. There are a total of 10 gesture sets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Until we create our gesture sets, let&#039;s use &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt; as placeholders so we can easily find and get back to this section later on. You can have as many gesture sets as you like; we&#039;ll create 16 entries for this tutorial. You may insert this into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our BMS should now currently look like this:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
You can also add an entire row of padding/zeros after this. You can do this for each section, to better visually separate them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing ruleset list ==&lt;br /&gt;
This is another sequence of offsets. These just point to the location of a &amp;quot;[[#Inserting_timetables|timetable]]&amp;quot;, which will be located at the end of our BMS file. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0005AB 0005AB 0005AF 0005C1 0005AB 0005AB 0005C1 0005C1 0005C1 0005C1 FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Timing ruleset &amp;quot;0&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;1&amp;quot; will also use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;2&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AF&amp;lt;/code&amp;gt;, and so on. There are a total of 10 timing rulesets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Let&#039;s use &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt; as placeholders again, and create 16 of them. Insert this anywhere into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set contents ==&lt;br /&gt;
A &#039;&#039;gesture set&#039;&#039; is a group of many gestures.&amp;lt;br&amp;gt;&lt;br /&gt;
Here, we list each gesture set&#039;s contents (which are... the locations of gestures!). Each gesture set begins before the &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt; and ends with &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how the gesture set list should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;000210 00022A 000258 000281 FFFFFF 0002B4 0002D9 000303 000331 FFFFFF 000355 FFFFFF 000361 FFFFFF 0003A8 0003C2 0003F0 000419 FFFFFF 00044C 000471 00049B 0004C9 FFFFFF 0004ED FFFFFF 000543 FFFFFF 000580 FFFFFF 00059E FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
There are 10 gesture sets listed above. The first gesture set has 4 gestures, located at &amp;lt;code&amp;gt;0x210&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x22A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x258&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;0x281&amp;lt;/code&amp;gt;. You can have any amount of gestures in a gesture set; even 1 is fine.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You can paste the following placeholder information for now:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It might be a good idea to leave a decent amount of zeros after this list; this one will expand a lot as gestures and gesture sets are added to it.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How is your BMS looking? ==&lt;br /&gt;
If you have been copy-pasting everything correctly, your BMS will look something like this:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=300px heights=300px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_1.png|Orange is &amp;quot;gesture set list&amp;quot;, green is &amp;quot;timing ruleset list&amp;quot;, and blue is &amp;quot;gesture set contents&amp;quot;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Once again, you can add as much padding between each section as you want, it will work fine.&lt;br /&gt;
== Creating gestures ==&lt;br /&gt;
First, you should sketch out your song idea in your DAW, and then cut your song into tiny blocks. These blocks will be your song&#039;s individual gestures. You should also consider dragging these blocks around in various arrangements to make sure they sound good in any order.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once you are ready, have them nicely organized and ready to be exported into individual MIDI files:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_Pro_gestures.png|A Logic Pro project with a bunch of short blocks of music. Each block will be a &amp;quot;gesture&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
For some reason, imported BMS files play 4 times as slow in cave songs. So if you import these gestures as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export your gestures, you need to modify your gestures to run &#039;&#039;4 times as fast&#039;&#039;. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Logic Pro can easily speed up MIDI regions with MIDI Transform. You want to use the &amp;quot;Double Speed&amp;quot; transformation twice on each block.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_pro_double_speed.gif|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting gestures ==&lt;br /&gt;
Gestures use same the note/music information as standard BMS songs.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should have converted all your MIDIs into BMS files. Open up one of your converted BMS files, and look for the first note/pitch value. If you used [[Pikmin 2 custom music|flaaffy]], this will most likely be somewhere after &amp;lt;code&amp;gt;0x1B&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;0x1D&amp;lt;/code&amp;gt;. The note&#039;s pitch value will be followed by a &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;. Copy this note, all the way to the end of the sequence, which should be &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=600px&amp;gt;&lt;br /&gt;
File:Copy_pasting_BMS_info.png|The value &amp;quot;2D&amp;quot; here is the hex value of a certain pitch, and the very first note of the sequence. Copy this, all the way to &amp;quot;FF&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
To add your gesture, start it with &amp;lt;code&amp;gt;C40000015D&amp;lt;/code&amp;gt;, then paste in what you copied. Each gesture should end with that &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;. Add as many gestures as you please!&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_2.png|The purple lines indicate where a gesture starts.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting timetables ==&lt;br /&gt;
So, how do we choose how often gestures will play? Will a gesture play every beat? Every 1/2 a beat? You will need to add a timetable for that!&lt;br /&gt;
A timetable is a sequence that dictates when gestures should play. A timetable ends with &amp;lt;code&amp;gt;FFFF&amp;lt;/code&amp;gt;. You can make a timetable as complex as you like.&amp;lt;br&amp;gt; Some examples of timetables you can use are:&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0780FFFF&amp;lt;/code&amp;gt; Play a gesture every 16 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C0FFFF&amp;lt;/code&amp;gt; Play a gesture every 8 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;01E0FFFF&amp;lt;/code&amp;gt; Play a gesture every 4 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C003C003C001E001E001E001E003C0FFFF&amp;lt;/code&amp;gt; This sequence will play a gesture every 8 beats (3x), play a gesture every 4 beats (4x), then play a gesture for 8 beats (1x), in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/2 note (every 2 beats).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0078FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/4 note (every beat).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003CFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/8th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;001EFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/16th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003C0078001EFFFF&amp;lt;/code&amp;gt; This sequence will play a gesture for an 1/8th note, play a gesture for a 1/4 note, then play a gesture for a 1/16th note, in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
Considering that &amp;lt;code&amp;gt;001E&amp;lt;/code&amp;gt; (30 in decimal) is a 1/16th note, you can create any specific timing you want. Just add another 30 to the value for each additional sixteenth note in length.&amp;lt;br&amp;gt;&lt;br /&gt;
For example, Soil 1&#039;s enemy mix piano plays very rapidly; its timetable uses a value of 90, which looks like &amp;lt;code&amp;gt;005AFFFF&amp;lt;/code&amp;gt;. The gestures last for three sixteenth notes.&amp;lt;br&amp;gt;&lt;br /&gt;
You can insert your timetables anywhere at the end of your BMS.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_3.png|Each timetable has a cyan box around it.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in info ==&lt;br /&gt;
Once you have your gestures and timetables inserted, go back and fill in those &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00CCCC&amp;lt;/code&amp;gt; placeholders with the locations of your gesture sets, timetables, and gestures you want to use. Remember that gesture sets begin with the &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Also in the very beginning of your BMS, make sure the value at &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; has the location of where your gesture set list begins (this one will probably be fine), and the value at &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; has the location of where your timing ruleset list begins.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_4.png|Put the location of where the &amp;quot;timing ruleset list&amp;quot; begins here.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in the conductor file ==&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
In your song&#039;s associated conductor file, try to stretch out the window so that the instrument names are all in the same column if you can, like in the image above.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Each line represents one track. You give each track a instrument (program), and what gesture set and timing ruleset to use.&amp;lt;br&amp;gt;&lt;br /&gt;
The CND infographic above does a good job explaining all the functions, but they&#039;ll be explained again down here.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the top left corner are three important values:&lt;br /&gt;
* The first value is the swing time. &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt; is 1/16th swing, while &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; is 1/8th swing. If your song is below 100bpm, you might want to use &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt;. If its faster, try &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
* The second value is the tempo, in hex.&lt;br /&gt;
* The third value is how many tracks there will be, in hex.&lt;br /&gt;
&lt;br /&gt;
Each column explained:&lt;br /&gt;
* A: Initial delay. How many beats until this track starts running. In the vanilla game, you can notice how some song&#039;s melodies do not immediately begin playing upon the start of level. This is useful for that; ease the listener into the music.&lt;br /&gt;
* B/Q: If set to 1, all gestures will be delayed by an 1/8th note..&lt;br /&gt;
* C: Text string. You can make this say whatever you like. Useful for keeping track of what you want each track to be, like &amp;quot;Lead&amp;quot;, &amp;quot;Trumpet&amp;quot;, &amp;quot;MelodyA&amp;quot;/&amp;quot;MelodyB&amp;quot;, &amp;quot;Bass&amp;quot;, or &amp;quot;Drums&amp;quot;&lt;br /&gt;
* D: Track copy. Select a previous track # to copy the gestures from. If the track its copying plays &amp;quot;gesture 3&amp;quot; from its gesture set, this track will also play its &amp;quot;gesture 3&amp;quot;. Often used for treasure mix instruments. You can have them use different gesture sets if you like.&lt;br /&gt;
* E: Echo strength.&lt;br /&gt;
* F: If set to 1, the values in this track&#039;s timetable will always be played in order, in a loop. If set to 0, it will randomly select values from its timetable, thus, allowing you to randomize when gestures play.&lt;br /&gt;
* G: Bank number.&lt;br /&gt;
* H: Program number. For a list of all programs in the default game and the wScenes that support them, view [[Pikmin 2 custom_music/available instruments|this page]].&lt;br /&gt;
* I: Gesture set, select the set # you want to use from the BMS. &lt;br /&gt;
* J: Timing ruleset, select the set # you want to use from the BMS.&lt;br /&gt;
* K: How many gestures this track will play, before playing &amp;quot;silent gestures&amp;quot;. Linked to below. These function as a sort of on/off cycle.&lt;br /&gt;
* L: How many &amp;quot;silent gestures&amp;quot; this track will play, before playing normal gestures. Linked to above. These function as a sort of on/off cycle.&lt;br /&gt;
* M: If notes are being transposed down (see below), this is set to FF. But this column doesn&#039;t actually do anything, so you don&#039;t need to edit this.&lt;br /&gt;
* N: Transpose all notes played by this track. To transpose up, use values 1-127. To transpose down, use the sign 2 compliment (values 128-255).&lt;br /&gt;
* O: Volume.&lt;br /&gt;
* P: Stereo panning.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some considerations:&lt;br /&gt;
* You can use the on/off cycle feature (column K and L) to make your melodic instrument &amp;quot;take a break&amp;quot; every once in a while. You can have it play 4 gestures, but then be silent for 2.&lt;br /&gt;
* If your timing ruleset is strict (as in, the timings for when gestures occur is always consistent), something fun to try is to have the melody be a back-and-forth between two different instruments. Set the initial delay for the second instrument to be longer than the first one, and then cleverly use the on/off cycle to have the instruments take turns sounding a gesture. This is done for the melody in the Bulblax Kingdom and Frontier Cavern for example.&lt;br /&gt;
* If you are using the &amp;quot;track copy&amp;quot; feature (column D), you can have the primary instrument play a melody, and have this instrument always play chords that perfectly match that melody.&lt;br /&gt;
* The 1/8th note delay achieved with column Q and the &amp;quot;track copy&amp;quot; feature can be used to create a stereo echo effect; make the copying track quieter and panned to a different speaker! It works better the faster your song is.&lt;br /&gt;
&lt;br /&gt;
== Mapping the tracks ==&lt;br /&gt;
With all that done, don&#039;t forget to edit the song&#039;s [[Trackmap parameters|trackMap]]! Edit your song in the trackMap files in either &amp;lt;code&amp;gt;/user/Totaka&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/user/Wakai&amp;lt;/code&amp;gt;, and set how many instruments will be in each mix. It goes in order from: Main Mix, Task (event), Treasure (otakara), Enemy near (kehai), Combat mix, and Spiderwort mix (ground). Although you cannot find Spiderworts underground, you will have to sacrifice at least one track for that mix. You cannot set any of the mixes to have 0 instruments in them.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Filenames for brand new CND files ==&lt;br /&gt;
If you are adding a brand new CND file instead of replacing an existing one, the prefix will determine which BMS is loaded, and which wScene.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to load the correct BMS file, the CND must start with the name of the BMS file.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;caveconc.cnd&amp;quot;, &amp;quot;caveconc_458435.cnd&amp;quot;, &amp;quot;caveconc_Waffles.cnd&amp;quot;, and &amp;quot;caveconc_Waffles_Song_2.cnd&amp;quot; will all load caveconc.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;caverelax.cnd&amp;quot;, &amp;quot;caverelax_Gmajor.cnd&amp;quot;, and &amp;quot;caverelax_mamuta_dinner.cnd&amp;quot; will all load caverelax.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;new_09_4.cnd&amp;quot;, &amp;quot;new_09_4000.cnd&amp;quot;, and &amp;quot;new_09_portal_PotaTOS.cnd&amp;quot; will load new_09.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For cavesoil, caveconc, and cavemetal only, the game checks for an additional &amp;quot;_00&amp;quot;, &amp;quot;_05&amp;quot;, and &amp;quot;_10&amp;quot; right after the prefix, so you must include this if you want the right wScene to load. For example, caveconc_05 loads wScene 31, so if you want your custom song to load wScene 31, acceptable names include &amp;quot;caveconc_05_waffles.cnd&amp;quot;, &amp;quot;caveconc_05_52_46356.cnd&amp;quot;, or &amp;quot;caveconc_05_super_boss.cnd&amp;quot;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Try not to add special characters to filenames, aside from underscores. After adding your new CND file, be sure to add it to its respective trackMap file.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding new content to a vanilla BMS file ==&lt;br /&gt;
If you want to add new gesture sets to a BMS file, adding new hex data in the middle of a file will shift all the offsets that come after it, causing your BMS to jump to the wrong locations, and likely cause a crash.&amp;lt;br&amp;gt;&lt;br /&gt;
In order to add new content in addition to what&#039;s already in the BMS, you can reposition the gesture set list and timing ruleset list:&lt;br /&gt;
* Find and copy the gesture set list, and the timing ruleset list, and paste them at the end of the file. (Separate them with lots of zeros so you have lots more space to add content to these lists)&lt;br /&gt;
* Change &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; to point to your new gesture set list and timing ruleset list. This two values tell the game where the lists are.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Editing_vanilla_BMS_file.png|The new gesture set list and timing ruleset list we want to use will be at the bottom.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
The game should now use these brand new lists, instead of the original instances that occur earlier in the file. They should still contain all the locations of the vanilla gesture sets/timetables from above if you want to use them, but now you can expand upon these lists with brand new entries now that you&#039;ve made space for them. All new gestures, gesture sets, and timetables can occur further down your file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4596</id>
		<title>Creating cave music</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=Creating_cave_music&amp;diff=4596"/>
		<updated>2024-03-11T17:42:05Z</updated>

		<summary type="html">&lt;p&gt;Waffles: New information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Randomly generating cave music in Pikmin 2 needs to have two files: a .bms (sequence) file, and a .cnd (conductor) file.&lt;br /&gt;
&lt;br /&gt;
The BMS file type is a sequenced music format used in many games. For the cave music in Pikmin 2 however, it is specially-formatted. It mainly contains many short snippets of musical information to be randomized.&lt;br /&gt;
&lt;br /&gt;
The CND files are the actual &amp;quot;songs&amp;quot;; they take specific groups of snippets from a BMS file, and endlessly puzzle-piece them together to form a coherent piece of music.&lt;br /&gt;
&lt;br /&gt;
This guide will function as a walkthrough for creating your own randomly sequencing cave song. All of the editing will be done in hexadecimal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Requirements:&#039;&#039;&lt;br /&gt;
* A DAW to create your own short MIDIs in, like FL Studio or Logic Pro. A DAW is also great for sketching out your song ideas/song&#039;s structure beforehand.&lt;br /&gt;
* A MIDI to BMS converter, like [[Pikmin 2 custom music|flaaffy]]. You will be generating a lot of tiny BMS files, to turn them into &amp;quot;gestures&amp;quot;.&lt;br /&gt;
* A basic understanding of hexadecimal, and a hex editor. An editor that can dynamically resize the window is ideal (HxD on Windows, or Hex Fiend on MacOS are fantastic examples).&lt;br /&gt;
&lt;br /&gt;
== Overview of file functions ==&lt;br /&gt;
Here are some infographics that you can reference at any time. These show all the functions of a CND file, and all the contents of a BMS file.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
File:BMS_functions.png|How information is stored in a BMS file.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up your BMS file ==&lt;br /&gt;
Before you begin, set your byte grouping to &amp;quot;3&amp;quot;, so every 3 bytes is visually separated by a space. This will make it easier to see stuff.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Starting with a completely blank BMS file, begin by pasting the following:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Every cave music BMS begins with this same information.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Gesture set list ==&lt;br /&gt;
Exactly right after &amp;lt;code&amp;gt;34C600&amp;lt;/code&amp;gt; will be a list of every gesture set&#039;s location in the BMS. Each entry is the gesture set&#039;s hexadecimal location (offset), and each entry in the sequence begins with &amp;quot;&amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;&amp;quot;. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0001B0 0001BF 0001CE 0001D4 0001DA 0001E9 0001F8 0001FE 000204 00020A FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Gesture set &amp;quot;0&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1B0&amp;lt;/code&amp;gt;, gesture set &amp;quot;1&amp;quot; will be at offset &amp;lt;code&amp;gt;0x1BF&amp;lt;/code&amp;gt;, gesture set &amp;quot;2&amp;quot; will be at &amp;lt;code&amp;gt;0x1CE&amp;lt;/code&amp;gt;, and so on. There are a total of 10 gesture sets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Until we create our gesture sets, let&#039;s use &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt; as placeholders so we can easily find and get back to this section later on. You can have as many gesture sets as you like; we&#039;ll create 16 entries for this tutorial. You may insert this into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our BMS should now currently look like this:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
AC1000 00AC11 016ECC 0210CC 0311AC 100000 AC1101 8FCC04 10CC05 11E703 00A000 03A401 00A300 01C801 00003C B1C180 010000 7FA501 01C800 000025 FE0078 C40000 0058C6 00E70E 00DF07 00006A E72E00 CF03C8 000000 4EE70E 00DF07 00006A E72E00 CF03C8 000000 60E71E 00E3E7 0000E7 0F00DF 070000 7BC600 E71F00 E3C400 00006E C40000 0155E7 0600CF 03E708 00CF03 CB0306 E70900 A00003 A70002 C80100 0096A7 0001C8 010000 8EA700 03C401 0000BE C40000 00C2C8 000000 96DA00 C600E7 0A00E7 0C00A0 0003A7 0000C8 010000 F0A700 01C801 000104 A70002 C80100 00FAA7 0003C8 010001 0EC800 000109 C40000 0118C8 000001 09C400 000118 C80000 00C5C4 000001 42E70B 00C600 C40000 0142C8 000000 C5CB06 10CB07 11CB08 04A005 04A93C 058000 A70500 C40100 014EA9 3C047F FFCF04 E70D00 C40100 00BEC6 00CB08 04A93C 047FFF CF04C6 00B1C1 400028 C600DB 04EF61 6161C6 00DB00 A40801 A40900 A40A01 EF3421 34C600 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA 00AAAA FFFFFF 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
You can also add an entire row of padding/zeros after this. You can do this for each section, to better visually separate them.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing ruleset list ==&lt;br /&gt;
This is another sequence of offsets. These just point to the location of a &amp;quot;[[#Inserting_timetables|timetable]]&amp;quot;, which will be located at the end of our BMS file. &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt; indicates the end of this list.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how this sequence should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;0005AB 0005AB 0005AF 0005C1 0005AB 0005AB 0005C1 0005C1 0005C1 0005C1 FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Timing ruleset &amp;quot;0&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;1&amp;quot; will also use the timetable at &amp;lt;code&amp;gt;0x5AB&amp;lt;/code&amp;gt;, timing ruleset &amp;quot;2&amp;quot; will use the timetable at &amp;lt;code&amp;gt;0x5AF&amp;lt;/code&amp;gt;, and so on. There are a total of 10 timing rulesets listed in the above sequence.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Let&#039;s use &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt; as placeholders again, and create 16 of them. Insert this anywhere into your BMS:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB 00BBBB FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gesture set contents ==&lt;br /&gt;
A &#039;&#039;gesture set&#039;&#039; is a group of many gestures.&amp;lt;br&amp;gt;&lt;br /&gt;
Here, we list each gesture set&#039;s contents (which are... the locations of gestures!). Each gesture set begins before the &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt; and ends with &amp;lt;code&amp;gt;FFFFFF&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here is an example of how the gesture set list should be formatted:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;000210 00022A 000258 000281 FFFFFF 0002B4 0002D9 000303 000331 FFFFFF 000355 FFFFFF 000361 FFFFFF 0003A8 0003C2 0003F0 000419 FFFFFF 00044C 000471 00049B 0004C9 FFFFFF 0004ED FFFFFF 000543 FFFFFF 000580 FFFFFF 00059E FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
There are 10 gesture sets listed above. The first gesture set has 4 gestures, located at &amp;lt;code&amp;gt;0x210&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x22A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x258&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;0x281&amp;lt;/code&amp;gt;. You can have any amount of gestures in a gesture set; even 1 is fine.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You can paste the following placeholder information for now:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC 00CCCC 00CCCC FFFFFF 00CCCC FFFFFF&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It might be a good idea to leave a decent amount of zeros after this list; this one will expand a lot as gestures and gesture sets are added to it.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How is your BMS looking? ==&lt;br /&gt;
If you have been copy-pasting everything correctly, your BMS will look something like this:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=300px heights=300px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_1.png|Orange is &amp;quot;gesture set list&amp;quot;, green is &amp;quot;timing ruleset list&amp;quot;, and blue is &amp;quot;gesture set contents&amp;quot;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Once again, you can add as much padding between each section as you want, it will work fine.&lt;br /&gt;
== Creating gestures ==&lt;br /&gt;
First, you should sketch out your song idea in your DAW, and then cut your song into tiny blocks. These blocks will be your song&#039;s individual gestures. You should also consider dragging these blocks around in various arrangements to make sure they sound good in any order.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once you are ready, have them nicely organized and ready to be exported into individual MIDI files:&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_Pro_gestures.png|A Logic Pro project with a bunch of short blocks of music. Each block will be a &amp;quot;gesture&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
For some reason, imported BMS files play 4 times as slow in cave songs. So if you import these gestures as is, they will play 4 times as slow.&amp;lt;br&amp;gt;&lt;br /&gt;
Before you export your gestures, you need to modify your gestures to run &#039;&#039;4 times as fast&#039;&#039;. How you will go about this will depend on your DAW; some will allow you to stretch entire regions of notes easily.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Logic Pro can easily speed up MIDI regions with MIDI Transform. You want to use the &amp;quot;Double Speed&amp;quot; transformation twice on each block.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Logic_pro_double_speed.gif|Shorten the length of the MIDI by 4x, but don&#039;t change your project&#039;s tempo.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting gestures ==&lt;br /&gt;
Gestures use same the note/music information as standard BMS songs.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should have converted all your MIDIs into BMS files. Open up one of your converted BMS files, and look for the first note/pitch value. If you used [[Pikmin 2 custom music|flaaffy]], this will most likely be somewhere after &amp;lt;code&amp;gt;0x1B&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;0x1D&amp;lt;/code&amp;gt;. The note&#039;s pitch value will be followed by a &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;. Copy this note, all the way to the end of the sequence, which should be &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=600px&amp;gt;&lt;br /&gt;
File:Copy_pasting_BMS_info.png|The value &amp;quot;2D&amp;quot; here is the hex value of a certain pitch, and the very first note of the sequence. Copy this, all the way to &amp;quot;FF&amp;quot;.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
To add your gesture, start it with &amp;lt;code&amp;gt;C40000015D&amp;lt;/code&amp;gt;, then paste in what you copied. Each gesture should end with that &amp;lt;code&amp;gt;FF&amp;lt;/code&amp;gt;. Add as many gestures as you please!&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_2.png|The purple lines indicate where a gesture starts.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inserting timetables ==&lt;br /&gt;
So, how do we choose how often gestures will play? Will a gesture play every beat? Every 1/2 a beat? You will need to add a timetable for that!&lt;br /&gt;
A timetable is a sequence that dictates when gestures should play. A timetable ends with &amp;lt;code&amp;gt;FFFF&amp;lt;/code&amp;gt;. You can make a timetable as complex as you like.&amp;lt;br&amp;gt; Some examples of timetables you can use are:&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0780FFFF&amp;lt;/code&amp;gt; Play a gesture every 16 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C0FFFF&amp;lt;/code&amp;gt; Play a gesture every 8 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;01E0FFFF&amp;lt;/code&amp;gt; Play a gesture every 4 beats.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;03C003C003C001E001E001E001E003C0FFFF&amp;lt;/code&amp;gt; This sequence will play a gesture every 8 beats (3x), play a gesture every 4 beats (4x), then play a gesture for 8 beats (1x), in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;00F0FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/2 note (every 2 beats).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0078FFFF&amp;lt;/code&amp;gt; Play a gesture every 1/4 note (every beat).&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003CFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/8th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;001EFFFF&amp;lt;/code&amp;gt; Play a gesture every 1/16th note.&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;003C0078001EFFFF&amp;lt;/code&amp;gt; This sequence will play a gesture for an 1/8th note, play a gesture for a 1/4 note, then play a gesture for a 1/16th note, in that order.&amp;lt;br&amp;gt;&lt;br /&gt;
Considering that &amp;lt;code&amp;gt;001E&amp;lt;/code&amp;gt; (30 in decimal) is a 1/16th note, you can create any specific timing you want. Just add another 30 to the value for each additional sixteenth note in length.&amp;lt;br&amp;gt;&lt;br /&gt;
For example, Soil 1&#039;s enemy mix piano plays very rapidly; its timetable uses a value of 90, which looks like &amp;lt;code&amp;gt;005AFFFF&amp;lt;/code&amp;gt;. The gestures last for three sixteenth notes.&amp;lt;br&amp;gt;&lt;br /&gt;
You can insert your timetables anywhere at the end of your BMS.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_3.png|Each timetable has a cyan box around it.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in info ==&lt;br /&gt;
Once you have your gestures and timetables inserted, go back and fill in those &amp;lt;code&amp;gt;00AAAA&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00BBBB&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;00CCCC&amp;lt;/code&amp;gt; placeholders with the locations of your gesture sets, timetables, and gestures you want to use. Remember that gesture sets begin with the &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Also in the very beginning of your BMS, make sure the value at &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; has the location of where your gesture set list begins (this one will probably be fine), and the value at &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; has the location of where your timing ruleset list begins.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=250px heights=250px&amp;gt;&lt;br /&gt;
File:BMS_file_progress_4.png|Put the location of where the &amp;quot;timing ruleset list&amp;quot; begins here.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filling in the conductor file ==&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:CND_functions.png|Conductor file functions.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
In your song&#039;s associated conductor file, try to stretch out the window so that the instrument names are all in the same column if you can, like in the image above.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Each line represents one track. You give each track a instrument (program), and what gesture set and timing ruleset to use.&amp;lt;br&amp;gt;&lt;br /&gt;
The CND infographic above does a good job explaining all the functions, but they&#039;ll be explained again down here.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the top left corner are three important values:&lt;br /&gt;
* The first value is the swing time. &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt; is 1/16th swing, while &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; is 1/8th swing. If your song is below 100bpm, you might want to use &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt;. If its faster, try &amp;lt;code&amp;gt;3C&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
* The second value is the tempo, in hex.&lt;br /&gt;
* The third value is how many tracks there will be, in hex.&lt;br /&gt;
&lt;br /&gt;
Each column explained:&lt;br /&gt;
* A: Initial delay. How many beats until this track starts running. In the vanilla game, you can notice how some song&#039;s melodies do not immediately begin playing upon the start of level. This is useful for that; ease the listener into the music.&lt;br /&gt;
* B/Q: If set to 1, all gestures will be delayed by an 1/8th note..&lt;br /&gt;
* C: Text string. You can make this say whatever you like. Useful for keeping track of what you want each track to be, like &amp;quot;Lead&amp;quot;, &amp;quot;Trumpet&amp;quot;, &amp;quot;MelodyA&amp;quot;/&amp;quot;MelodyB&amp;quot;, &amp;quot;Bass&amp;quot;, or &amp;quot;Drums&amp;quot;&lt;br /&gt;
* D: Track copy. Select a previous track # to copy the gestures from. If the track its copying plays &amp;quot;gesture 3&amp;quot; from its gesture set, this track will also play its &amp;quot;gesture 3&amp;quot;. Often used for treasure mix instruments. You can have them use different gesture sets if you like.&lt;br /&gt;
* E: Echo strength.&lt;br /&gt;
* F: If set to 1, the values in this track&#039;s timetable will always be played in order, in a loop. If set to 0, it will randomly select values from its timetable, thus, allowing you to randomize when gestures play.&lt;br /&gt;
* G: Bank number.&lt;br /&gt;
* H: Program number. For a list of all programs in the default game and the wScenes that support them, view [[Pikmin 2 custom_music/available instruments|this page]].&lt;br /&gt;
* I: Gesture set, select the set # you want to use from the BMS. &lt;br /&gt;
* J: Timing ruleset, select the set # you want to use from the BMS.&lt;br /&gt;
* K: How many gestures this track will play, before playing &amp;quot;silent gestures&amp;quot;. Linked to below. These function as a sort of on/off cycle.&lt;br /&gt;
* L: How many &amp;quot;silent gestures&amp;quot; this track will play, before playing normal gestures. Linked to above. These function as a sort of on/off cycle.&lt;br /&gt;
* M: If notes are being transposed down (see below), this is set to FF. But this column doesn&#039;t actually do anything, so you don&#039;t need to edit this.&lt;br /&gt;
* N: Transpose all notes played by this track. To transpose up, use values 1-127. To transpose down, use the sign 2 compliment (values 128-255).&lt;br /&gt;
* O: Volume.&lt;br /&gt;
* P: Stereo panning.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some considerations:&lt;br /&gt;
* You can use the on/off cycle feature (column K and L) to make your melodic instrument &amp;quot;take a break&amp;quot; every once in a while. You can have it play 4 gestures, but then be silent for 2.&lt;br /&gt;
* If your timing ruleset is strict (as in, the timings for when gestures occur is always consistent), something fun to try is to have the melody be a back-and-forth between two different instruments. Set the initial delay for the second instrument to be longer than the first one, and then cleverly use the on/off cycle to have the instruments take turns sounding a gesture. This is done for the melody in the Bulblax Kingdom and Frontier Cavern for example.&lt;br /&gt;
* If you are using the &amp;quot;track copy&amp;quot; feature (column D), you can have the primary instrument play a melody, and have this instrument always play chords that perfectly match that melody.&lt;br /&gt;
* The 1/8th note delay achieved with column Q and the &amp;quot;track copy&amp;quot; feature can be used to create a stereo echo effect; make the copying track quieter and panned to a different speaker! It works better the faster your song is.&lt;br /&gt;
&lt;br /&gt;
== Mapping the tracks ==&lt;br /&gt;
With all that done, don&#039;t forget to edit the song&#039;s [[Trackmap parameters|trackMap]]! Edit your song in the trackMap files in either &amp;lt;code&amp;gt;/user/Totaka&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/user/Wakai&amp;lt;/code&amp;gt;, and set how many instruments will be in each mix. It goes in order from: Main Mix, Task (event), Treasure (otakara), Enemy near (kehai), Combat mix, and Spiderwort mix (ground). Although you cannot find Spiderworts underground, you will have to sacrifice at least one track for that mix. You cannot set any of the mixes to have 0 instruments in them.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Filenames for brand new CND files ==&lt;br /&gt;
If you are adding a brand new CND file instead of replacing an existing one, the prefix will determine which BMS is loaded, and which wScene.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to load the correct BMS file, the CND must start with the name of the BMS file.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;caveconc.cnd&amp;quot;, &amp;quot;caveconc_458435.cnd&amp;quot;, &amp;quot;caveconc_Waffles.cnd&amp;quot;, and &amp;quot;caveconc_Waffles_Song_2.cnd&amp;quot; will all load caveconc.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;caverelax.cnd&amp;quot;, &amp;quot;caverelax_Gmajor.cnd&amp;quot;, and &amp;quot;caverelax_mamuta_dinner.cnd&amp;quot; will all load caverelax.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;new_09_4.cnd&amp;quot;, &amp;quot;new_09_4000.cnd&amp;quot;, and &amp;quot;new_09_portal_PotaTOS.cnd&amp;quot; will load new_09.bms.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For cavesoil, caveconc, and cavemetal only, the game checks for an additional &amp;quot;_00&amp;quot;, &amp;quot;_05&amp;quot;, and &amp;quot;_10&amp;quot; right after the prefix, so you must include this if you want the right wScene to load. For example, caveconc_05 loads wScene 31, so if you want your custom song to load wScene 31, acceptable names include &amp;quot;caveconc_05_waffles.cnd&amp;quot;, &amp;quot;caveconc_05_52_46356.cnd&amp;quot;, or &amp;quot;caveconc_05_super_boss.cnd&amp;quot;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Try not to add special characters to filenames, aside from underscores. After adding your new CND file, be sure to add it to its respective trackMap file.&lt;br /&gt;
&lt;br /&gt;
== Bonus: Adding new content to a vanilla BMS file ==&lt;br /&gt;
If you want to add new gesture sets to a BMS file, adding new hex data in the middle of a file will shift all the offsets that come after it, causing your BMS to jump to the wrong locations, and likely cause a crash.&amp;lt;br&amp;gt;&lt;br /&gt;
In order to add new content in addition to what&#039;s already in the BMS, you can reposition the gesture set list and timing ruleset list:&lt;br /&gt;
* Find and copy the gesture set list, and the timing ruleset list, and paste them at the end of the file. (Separate them with lots of zeros so you have lots more space to add content to these lists)&lt;br /&gt;
* Change &amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt; to point to your new gesture set list and timing ruleset list. This two values tell the game where to the lists are.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot; widths=400px heights=400px&amp;gt;&lt;br /&gt;
File:Editing_vanilla_BMS_file.png|The new gesture set list and timing ruleset list we want to use will be at the bottom.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
The game should now use these brand new lists, instead of the original instances that occur earlier in the file. They should still contain all the locations of the vanilla gesture sets/timetables from above if you want to use them, but now you can expand upon these lists with brand new entries now that you&#039;ve made space for them. All new gestures, gesture sets, and timetables can occur further down your file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=File:Editing_vanilla_BMS_file.png&amp;diff=4595</id>
		<title>File:Editing vanilla BMS file.png</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=File:Editing_vanilla_BMS_file.png&amp;diff=4595"/>
		<updated>2024-03-11T17:28:54Z</updated>

		<summary type="html">&lt;p&gt;Waffles: For the &amp;quot;Creating randomly sequencing cave music&amp;quot; page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
For the &amp;quot;Creating randomly sequencing cave music&amp;quot; page.&lt;/div&gt;</summary>
		<author><name>Waffles</name></author>
	</entry>
</feed>