diff options
author | Rangi <remy.oukaour+rangi42@gmail.com> | 2018-11-11 17:01:19 -0500 |
---|---|---|
committer | Rangi <remy.oukaour+rangi42@gmail.com> | 2018-11-11 17:01:19 -0500 |
commit | 8f5de72725d04e014e12404eb66af946172d6d8b (patch) | |
tree | 844219438cc29016e5ace253adfe74a1408ca331 | |
parent | af95122e389cdf5315a3f090bdb029fb199f8dc3 (diff) |
Composing music
-rw-r--r-- | Add-a-new-music-song.md | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/Add-a-new-music-song.md b/Add-a-new-music-song.md index eab81a7..808610b 100644 --- a/Add-a-new-music-song.md +++ b/Add-a-new-music-song.md @@ -7,6 +7,7 @@ This tutorial is for how to add a new music song. As an example, we'll add the [ 2. [Create a file for the song](#2-create-a-file-for-the-song) 3. [Update the music pointers](#3-update-the-music-pointers) 4. [Include the new file in the ROM](#4-include-the-new-file-in-the-rom) +5. [Composing your own music](#5-composing-your-own-music) ## 1. Define a music constant @@ -27,7 +28,7 @@ Edit [constants/music_constants.asm](../blob/master/constants/music_constants.as ## 2. Create a file for the song -Writing your own music is beyond the scope of this tutorial. If you're interested in doing that, start by reading [docs/music_commands.md](../blob/master/docs/music_commands.md) and the source code of existing music. However, there's already a lot of new music available, demixed and remixed from other games by composers like [FroggestSpirit](https://soundcloud.com/froggestspirit), [Mmmmmm](https://soundcloud.com/mmmmmmmmmmmmmmmmm-1), [ShantyTown](https://soundcloud.com/huderlem), and [Pum](https://www.youtube.com/playlist?list=PLQHiVZUO5so0LHdQzx6iu4Ze0zCkbbm7N). +If you want to write your own music, skip ahead to [step 5](#5-composing-your-own-music), and come back here when you have an ASM file for your song. However, there's already a lot of new music available, demixed and remixed from other games by composers like [FroggestSpirit](https://soundcloud.com/froggestspirit), [Mmmmmm](https://soundcloud.com/mmmmmmmmmmmmmmmmm-1), [ShantyTown](https://soundcloud.com/huderlem), and [Pum](https://www.youtube.com/playlist?list=PLQHiVZUO5so0LHdQzx6iu4Ze0zCkbbm7N). For now, download the [source code](https://pastebin.com/raw/aSDuVfDW) for Mmmmmm's Route 47 theme and save it as **audio/music/route47.asm**: @@ -94,3 +95,22 @@ Edit [audio.asm](../blob/master/audio.asm): That's it! Now you can use `MUSIC_ROUTE_47` like any other music constant—try assigning it to a map in [data/maps/maps.asm](../blob/master/data/maps/maps.asm). There is one thing to be aware of if you plan to add a lot of new songs. Crystal's music IDs go from $00, `MUSIC_NONE`, to $66, `MUSIC_MOBILE_CENTER`. If the IDs reach $80 or above they have their high bit set and start getting interpreted differently by `GetMapMusic`. There's a full explanation and fix at the [hard-coded logic](Hard-coded-logic#some-high-values-for-maps-music-ids-play-incorrectly) page. + + +## 5. Composing your own music + +In theory, you could write a new song from scratch in a text editor. You'd start by reading [docs/music_commands.md](../blob/master/docs/music_commands.md) and the source code of existing music, then write your own file that defines each of a song's channels note by note. + +But that would be quite difficult. It's easier to write a song in the standard MIDI format, supported by many digital audio programs and actual instruments, and then convert the MIDI to a pokecrystal ASM script. + +Here are some materials to get started: + +- **[Anvil Studio](https://www.anvilstudio.com/):** A free digital audio workstation program for Windows. Includes lots of features for composing your own music. +- **[MidiEditor](https://www.midieditor.org/):** A free program to edit, record, and play MIDI files. More limited than Anvil Studio, but easier to learn if you just want to edit an existing MIDI file. +- **[VGMusic.com](https://www.vgmusic.com/):** A source for many MIDIs sequenced or demixed from video games, including most of the Pokémon series. +- **[MIDI2GSC](http://www.mediafire.com/file/je58y68i7us1ud6/GSCImport+Midi2GSC.rar):** An old tool by FroggestSpirit that converts a set of one to four MIDIs, one for each channel, into a single ASM file. It was made back when ROMs were hacked right in a hex editor, so it comes with the now-obsolete GSCImport tool to patch the music right into a GBC file. [This tutorial](https://hax.iimarckus.org/topic/4457/) describes what that process used to be like. +- **[gs2c.py](https://github.com/Rangi42/polishedcrystal/blob/master/utils/gs2c.py)**: A Python script by Rangi that converts the output of MIDI2GSC into the up-to-date pokecrystal's music macros. You'll still have to define the headers yourself, and check for any comments of "`WARNING: unconverted`". +- **[GB Note](https://hax.iimarckus.org/topic/7113/):** Another tool by FroggestSpirit that can directly open and edit ASM files as well as MIDI files. +- **[Making A GBC MIDI](https://www.youtube.com/playlist?list=PLQHiVZUO5so3TmPnUFNoijRnnbIao4c_v):** A seven-video tutorial by Pum on how to create new music with Anvil Studio and MIDI2GSC. + +Composing music may be harder to get into than simply editing graphics or text, but it's not at all impossible. Creators like [Pigu](https://pigu-a.bandcamp.com/album/pok-mon-anniversary-crystal-pigus-arranges), [coraldev](https://soundcloud.com/coraldev), [Monstarules](https://soundcloud.com/monstarules), and [TriteHexagon](https://soundcloud.com/user-930339535) have all made original music for pokecrystal-based games. |