Editing Creating cave music

Jump to navigation Jump to search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision Your text
Line 3: Line 3:
 
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.
 
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.
  
The CND files are the actual "songs"; they take specific groups of snippets from a BMS file, and endlessly puzzle-piece them together to form a coherent piece of music.  
+
The CND files are the actual "songs"; they take specific groups of snippets from a BMS file, and endlessly puzzle-piece them together to form a coherent piece of music.
  
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.
+
This guide will function as a walkthrough for creating your own randomly sequencing cave song. All of the editing will be done in hexadecimal.
  
 
''Requirements:''
 
''Requirements:''
Line 12: Line 12:
 
* 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).
 
* 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).
  
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.
+
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.<br>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.
  
 
== Overview of file functions ==
 
== Overview of file functions ==
Line 104: Line 104:
 
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!
 
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!
 
A timetable is a sequence that dictates when gestures should play. A timetable ends with <code>FFFF</code>. You can make a timetable as complex as you like.<br> Some examples of timetables you can use are:<br>
 
A timetable is a sequence that dictates when gestures should play. A timetable ends with <code>FFFF</code>. You can make a timetable as complex as you like.<br> Some examples of timetables you can use are:<br>
* <code>0780 FFFF</code> Play a gesture every 16 beats.<br>
+
* <code>0780FFFF</code> Play a gesture every 16 beats.<br>
* <code>03C0 FFFF</code> Play a gesture every 8 beats.<br>
+
* <code>03C0FFFF</code> Play a gesture every 8 beats.<br>
* <code>01E0 FFFF</code> Play a gesture every 4 beats.<br>
+
* <code>01E0FFFF</code> Play a gesture every 4 beats.<br>
* <code>03C0 03C0 03C0 01E0 01E0 01E0 01E0 03C0 FFFF</code> 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.<br>
+
* <code>03C003C003C001E001E001E001E003C0FFFF</code> 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.<br>
* <code>00F0 FFFF</code> Play a gesture every 1/2 note (every 2 beats).<br>
+
* <code>00F0FFFF</code> Play a gesture every 1/2 note (every 2 beats).<br>
* <code>0078 FFFF</code> Play a gesture every 1/4 note (every beat).<br>
+
* <code>0078FFFF</code> Play a gesture every 1/4 note (every beat).<br>
* <code>003C FFFF</code> Play a gesture every 1/8th note.<br>
+
* <code>003CFFFF</code> Play a gesture every 1/8th note.<br>
* <code>001E FFFF</code> Play a gesture every 1/16th note.<br>
+
* <code>001EFFFF</code> Play a gesture every 1/16th note.<br>
* <code>003C 0078 001E FFFF</code> 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.<br>
+
* <code>003C0078001EFFFF</code> 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.<br>
 
Considering that <code>001E</code> (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.<br>
 
Considering that <code>001E</code> (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.<br>
For example, Soil 1's enemy mix piano plays a gesture every three sixteenth notes. That would be 90 in decimal, and its timetable would look like <code>005A FFFF</code>.<br>
+
For example, Soil 1's enemy mix piano plays very rapidly; its timetable uses a value of 90, which looks like <code>005AFFFF</code>. The gestures last for three sixteenth notes.<br>
 
You can insert your timetables anywhere at the end of your BMS.
 
You can insert your timetables anywhere at the end of your BMS.
 
<gallery mode="packed-hover" widths=250px heights=250px>
 
<gallery mode="packed-hover" widths=250px heights=250px>

Please note that all contributions to Pikmin Technical Knowledge Base are considered to be released under the Creative Commons Attribution-ShareAlike (see Pikmin Technical Knowledge Base:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)