News:

Don't forget to visit the main site! There's lots of helpful docs, patches, and more!

Main Menu

Metroid Tuner

Started by snarfblam, January 29, 2012, 08:21:38 PM

Previous topic - Next topic

Grimlock

Quote from: snarfblam on September 24, 2014, 05:00:42 PM
Quote from: Grimlock on September 24, 2014, 01:14:14 AM
I think the most useful feature that could be added is a way to create "music projects".

That's not a bad plan, really. Maybe I should integrate this tool into Editroid, and make it part of the project system.

That would be great.  If possible working in some presets for memory allocation would be huge. Presets using the available unused memory past $B000.

Example:

Norfair: "Split memory even between SQ1 SQ2 and TRI, Noise replaces Tourian Track"

UP TO  489 0R B1E9
163 EACH = $A3  (DIVIDED BY THREE   NOISE TO TOURIAN DATA)

SQ1 -
[Address: B000]
[MaxSize: A3]  //163
SQ2 -
[Address: B0A4]
[MaxSize: A3]  //163
TRI -
[Address: B148] // 328
[MaxSize: A3]  //163
NOISE -
[Address: BE47]
[MaxSize: 30]  //48


Alternatively in order to take some work off of your shoulders and place it on the end user you can give them the option to create memory allocation presets, that way they can do it how ever they want and you wouldn't have to put all the presets together.

Yuki

Knowing that you've had progress and even replaced I believe the memory mapper of M1, is there any chance you could try to work the same magic with the Famitone engine discussed earlier in the thread? That would make Tuner somewhat unnecessary but save a lot of trouble in the long run. In no way am I asking "lolmakthisfurme", just curious if you think it would be possible now.

snarfblam

I don't see any reason Famitone couldn't replace M1's original sound engine, and obviously it would be pretty sweet if you could import or create songs and sound effects with FamiTracker, but it's not something I'm about to jump on. If it were to ever happen, my only concern would be that if it uses even a little more CPU time than the original sound engine, it could aggravate slowdown issues. I think Famitone could be placed in its own 8k bank (and probably sound effects and "global" songs like the item-get tune and the game-start tune too), and each level could have an 8k bank reserved for sound data.

NARFNra

Hi! I'm a noob to Metroid hacking who's really into music (Previously I've only done this with Mega Man) and ran into a bit of trouble.

Is there a limitation on the range of notes the game can process? I wanted to use "C2" but I get this warning:
InserterException: Error (Unrecognized text) in line 26 of track section [Song: 3][Track: Square2].

Now, it is the lowest note in the NES's register, so I could see it being an inherent limitation of the game, but I thought I'd ask.

Oh, and I can confirm that you can run this on Linux using Wine/Mono Runtime! Not that I think anyone was looking for confirmation, but The More You Know. There was some weirdness with the inserted track moving a segment up by a byte and causing loop errors, but it's very easily fixable with a hex editor.

Sorry about the bump!

GF_Kennon

Hey, Welcome to MetConst, bumping is usually fine if you have a good reason (like just now), but since snarf is probably the only one that can help you and he seems to be away on IRC (I tried poking him and he hasnt responded) so he might be away for the night and possibly not back till tomorrow, feel free to come poke him yourself though!

snarfblam

Quote from: NARFNra on April 04, 2015, 11:04:37 PM
Is there a limitation on the range of notes the game can process? I wanted to use "C2" but I get this warning

This is a list of all the notes the game supports ("-" indicating a rest).
[spoiler]        public static string[] NoteNames = {
                                               "END OF SONG",
                                                "-",
                                                "C#2",
                                                "D2",
                                                "E2",
                                                "F2",
                                                "F#2",
                                                "G2",
                                                "Ab2",
                                                "A2",
                                                "A#2",
                                                "B2",
                                                "C3",
                                                "C#3",
                                                "D3",
                                                "D#3",
                                                "E3",
                                                "F3",
                                                "F#3",
                                                "G3",
                                                "Ab3",
                                                "A3",
                                                "A#3",
                                                "B3",
                                                "C4",
                                                "C#4",
                                                "D4",
                                                "D#4",
                                                "E4",
                                                "F4",
                                                "F#4",
                                                "G4",
                                                "Ab4",
                                                "A4",
                                                "A#4",
                                                "B4",
                                                "C5",
                                                "C#5",
                                                "D5",
                                                "D#5",
                                                "E5",
                                                "F5",
                                                "F#5",
                                                "G5",
                                                "Ab5",
                                                "A5",
                                                "A#5",
                                                "B5",
                                                "C6",
                                                "C#6",
                                                "D6",
                                                "D#6",
                                                "E6",
                                                "F6",
                                                "F#6",
                                                "G6",
                                                "Ab6",
                                                "A6",
                                                "A#6",
                                                "B6",
                                                "C7",
                                                "C#7",
                                                "D7",
                                                "F7"
                                           };
[/spoiler]

You can dump, modify, and re-insert the note table, which will change the pitch of the notes. If you do something like change C#2 to C2, though, the utility won't understand this and you'll have to continue referring to it as C#2.

Quote from: NARFNra on April 04, 2015, 11:04:37 PM
Oh, and I can confirm that you can run this on Linux using Wine/Mono Runtime!
Good to know!

NARFNra

Oh I see, that's actually a pretty good work around. So theoretically, could I actually take the highest note of F7 and change its pitch to be equivalent to C2? Then I'd just have to refer to it that way whenever I used C2, right?

(P.S. First music hack! https://www.youtube.com/watch?v=Yfz6U_-xq1Y :))

Grimlock

Quote from: NARFNra on April 05, 2015, 01:54:57 PM
Oh I see, that's actually a pretty good work around. So theoretically, could I actually take the highest note of F7 and change its pitch to be equivalent to C2? Then I'd just have to refer to it that way whenever I used C2, right?

(P.S. First music hack! https://www.youtube.com/watch?v=Yfz6U_-xq1Y :))

Congrats on taking the time to figure out how to work with Metroid Tuner.  I know it can be a bit intimidating at first being text based.

I have a few related threads if you want to check them out:


Editing Tutorial - Using Guitar Tablature in Metroid Tuner:
http://forum.metroidconstruction.com/index.php/topic,3255.0.html

Metroid Tuner - Music Tracks:
http://forum.metroidconstruction.com/index.php/topic,3260.0.html

Metroid Tuner - Experimentation & Miscellaneous notes:
http://forum.metroidconstruction.com/index.php/topic,3254.0.html

Ideas for Metroid (M1) music – Any suggestions?
http://forum.metroidconstruction.com/index.php/topic,3248.0.html

NARFNra

Haha, actually it's not too much trouble using the text based music system! In fact I actually find this really easy once you understand the pointers and finding unused space, see, so far I've been hacking Mega Man games, and they don't have any utilities that can pull this off. So I've actually been editing NES music with a hex editor for a while now, which really isn't all that fun let me tell you. You end up with a lot of stupid mistakes where you calculated a loop pointer wrong, or you didn't realize how long a track was going to be and end up overwriting the next track, etc. Having Metroid Tuner is really great. All I need to do now is found out how to change duty cycle and volume for tracks and I'll be at the limits of what the current sound engine can do, I think.

I'll be sure to contribute to your music threads when I can! While I'm at it, I think I might note that you were looking for NES game tablature at some point; When dealing with songs from other early video games, it's usually possible to convert the sequence data (.nsf) directly to midi. If you want, I can show you some examples. Obviously this only applies to music in old video games though, and for more "normal" music guitar tablature and sheet music are the only real method you've got.

Thanks for the links!

GF_Kennon

A shameless plug of the wiki

It would be pretty nifty if we could get information like that on there for other people to use, information can get buried in threads (and threads themselves can get buried), maybe you two could help flesh out some part on Metroid Music?

NARFNra

Sure, I'd be willing to help out. Not quite immediately though, as I'm running a bit low on time... but typing up a bit of information on the process of inserting a song and such should be pretty simple! I'll give it a go sometime.

Grimlock

Definitely share any discoveries or methods if you come up with anything new (anything not addressed in this thread or the ones I linked), I'd be very interested to hear about them.  Your MIDI technique sounds interesting, if you have the time to lay it out create a new tutorial thread and maybe even post it up on the WIKI.

NARFNra

#62

So I'm still a little mystified by how exactly the volume tables work. I feel like there must be something weird going on somewhere involving how the volume is actually stored. I've been trying to recreate the Metroid instruments in a tracker and wanted to compare the volume envelopes to the volume table data using NSF Importer, a Famitracker offshoot:
http://rainwarrior.ca/projects/nes/nsfimport.html

And so I've run into some oddities. For example, here's the Title and the Brinstar theme's Song blocks:
TITLE:
<Song>
[Song:            7]
[NoteLengthTable: 17]
[TriangleLength:  F0]
[Sq1VolumeTable:  2]
[Sq2VolumeTable:  5]
[Repeat:          False]

BRINSTAR:
<Song>
[Song:            A]
[NoteLengthTable: 0B]
[TriangleLength:  00]
[Sq1VolumeTable:  2]
[Sq2VolumeTable:  3]
[Repeat:          True]


So we can expect SQ1 to use the same volume envelope on each track, right? So I import both songs and notice that while the volume settings are almost identical, they aren't.
TITLE

BRINSTAR

(P is fine tuned pitch, V is duty cycle, and the row of single numbers is volume)

So let's look at the equivalent volume table really quick, to make sure that the table instrument is right.

<VolumeTable>
[Table:   1]
[Address: BCC5]
[MaxSize: A]

02 04 05 06 07 08 07 06
05 FF

And looking at the actual tracks, to make sure there's no other notes confusing the situation;
TITLE

16 { // --------------
    :54
        D2
    :1C
        -
} //   --------------

BRINSTAR

2 { // --------------
    :60
        B3 C4
} //   --------------


So if the volume was just shifted down by some amount, they'd make sense. After all, Kraid's theme uses volume envelope 0 which appears not to have any volume control at all, yet its first Pulse track is at volume 2 and its second is at volume 6, meaning the Pulse volume is set by a byte somewhere. But the weird thing here is that the volume actually starts at a different byte in the table! There's also an oddity at the end of the note in the title theme, where it sustains at 06...

I suspect there's more to the tables somewhere, but I guess the only way to find out will be skimming through the disassembly some more.

It could ALSO be that NSF Importer, or even the NSF itself is just buggy. This is such a small issue that I really doubt it matters so much, but I like understanding what I'm messing with. I guess a good test would be looking at the volume registers of the NES?

EDIT: This instrument is also used in the Intro/Samus Appears theme, where it looks different again! This time it starts at 5 like the Title theme but sustains at 4.

Flower

#63
I ran into serious problems when inserting a song into a ROM. After i load it (via Metroid Tuner or Emulator, it doesn't matter), some parts of the song get deleted.
i don't know what to do and i have no clue why this happens.
Actually i would finish a great new song, but the last bits always get wasted. I can definitely exclude a user's fault.
Please help!
Is there maybe a newer Version of the Tuner? I guess i ran into a serious bug...

For example i want to insert this:
18 { // --------------
    :18
        B2 B2 A#2 -
    :60
        -
} //   --------------
2 { // --------------
    :18
        G2 B2 D3 G3 A2 C#3 E3 A3 B2 D3
        F#3 B3 B2 D3 F#3 B3
} //   --------------
14 { // --------------
    :0C
        - D3 G3 A3 B3 A3 G3 D3 - E3
        A3 B3 C#4 B3 A3 E3 - F#3 B3 C#4
        D4 C#4 B3 F#3 F#4 E4 D4 C#4 D4 C#4
        B3 A3
} //   --------------
    :18
        F#2 A#2 C#3 F#3 A#2 C#3 F#3 A#3 C#3 F#3
        A#3 C#4 F#3 A#3 B3 A#3


but after inserting and reloading there is only this left:
18 { // --------------
    :18
        B2 B2 A#2 -
    :60
        -
} //   --------------
2 { // --------------
    :18
        G2 B2 D3 G3 A2 C#3 E3 A3 B2 D3
        F#3 B3 B2 D3 F#3 B3
} //   --------------
14 { // --------------
    :0C
        - D3 G3 A3 B3 A3 G3 D3 - E3
        A3 B3 C#4 B3 A3 E3 - F#3 B3 C#4
        D4 C#4 B3 F#3 F#4 E4 D4 C#4 D4 C#4
        B3 A3
} //   --------------


So this part is always deleted:
    :18
        F#2 A#2 C#3 F#3 A#2 C#3 F#3 A#3 C#3 F#3
        A#3 C#4 F#3 A#3 B3 A#3

:sad:
The result is that the song is messed up near the end.

This would be the whole song:
<Context>
[Bank:            1]
[SongTable:       BD31]
[VolumeTable:     BCB0]
[NoteTable:       BE77]
[NoteLengthTable: BEF7]


<Song>
[Song:            A]
[NoteLengthTable: 0B]
[TriangleLength:  00]
[Sq1VolumeTable:  5]
[Sq2VolumeTable:  4]
[Repeat:          True]


<Track>
[Song:    A]
[Track:   Square1]
[Address: B000]
[MaxSize: 51]
// Remove or update MaxSize tag to embiggen data (be ever so careful).

// Track length: ~ 168 seconds
// Track size: 81 ($51) bytes

18 { // --------------
    :18
        B2 B2 A#2 -
    :60
        -
} //   --------------
2 { // --------------
    :18
        G2 B2 D3 G3 A2 C#3 E3 A3 B2 D3
        F#3 B3 B2 D3 F#3 B3
} //   --------------
14 { // --------------
    :0C
        - D3 G3 A3 B3 A3 G3 D3 - E3
        A3 B3 C#4 B3 A3 E3 - F#3 B3 C#4
        D4 C#4 B3 F#3 F#4 E4 D4 C#4 D4 C#4
        B3 A3
} //   --------------
    :18
        F#2 A#2 C#3 F#3 A#2 C#3 F#3 A#3 C#3 F#3
        A#3 C#4 F#3 A#3 B3 A#3
00 // Song terminator


<Track>
[Song:    A]
[Track:   Square2]
[Address: B051]
[MaxSize: 11A]
// Remove or update MaxSize tag to embiggen data (be ever so careful).

// Track length: ~ 168 seconds
// Track size: 282 ($11A) bytes

20 { // --------------
    :60
        -
} //   --------------
2 { // --------------
    :0C
        F#4 B4 D5 F#4 F4 -
    :18
        -
    :60
        -
    :0C
        D4 E4 D4 E4 F4 -
    :18
        -
    :60
        -
    :0C
        F#4 E4 D4 C#4 D4 -
    :18
        -
    :60
        -
    :0C
        B3 A3 B3 A3 B3 -
    :18
        -
    :30
        -
    :0C
        A#3
    :18
        B3
    :0C
        -
} //   --------------
4 { // --------------
    :0C
        - D4 G4 A4 B4 A4 G4 D4 - E4
        A4 B4 C#5 B4 A4 E4 - F#4 B4 C#5
        D5 C#5 B4 F#4 A4 G4 F#4 E4 F#4 E4
        D4 C#4
} //   --------------
2 { // --------------
    :18
        B4
    :0C
        B4
    :18
        F#4
    :0C
        F#4
    :18
        B4 A4
    :0C
        A4
    :18
        F#4
    :0C
        F#4
    :18
        E4
    :60
        F#4
    :0C
        A4 G4 F#4 E4 F#4 E4 D4 C#4
    :30
        F#3
    :18
        F#3
    :0C
        B3 G3
    :30
        F#3
    :18
        F#3
    :0C
        B3 A3
    :30
        C#4 D4
    :18
        E4 F#4 A4 A#4
} //   --------------
2 { // --------------
    :18
        F#5
    :0C
        E5 D5
    :18
        E5
    :0C
        D5 C#5
    :18
        D5
    :0C
        C#5 B4 C#5 B4 A4 C#5
    :60
        B4
    :18
        C#5
    :0C
        D5
    :18
        C#5
    :0C
        B4
    :18
        A4
    :30
        F#4
    :24
        F#4
    :06
        C#5 G4
    :30
        F#4
    :24
        F#4
    :06
        C#5 G4
    :30
        F#4 F#4 F#4
    :24
        F#4
    :06
        D5 A4
} //   --------------
2 { // --------------
    :18
        G4
    :0C
        G4
    :24
        D5
    :0C
        A4 G4
    :18
        A4
    :0C
        A4
    :24
        E5
    :0C
        B4 A4 B4 F#5 D5 B5 B4 F#5 A5 B5
        B4 F#5 D5 B5 B4 F#5 A5 B5
} //   --------------
        A#3 C#3 F#3 A#3 C#4 F#4 A#4 C#5 F#5 C#5
        G5 F#5 E5 F#5 E5 D5 C#5 D5 C#5 B4
        A#4 B4 A#4 G4 F#4 G4 F#4 E4 D4 E4
        D4 C#4


<Track>
[Song:    A]
[Track:   Triangle]
[Address: B16B]
[MaxSize: 58]
// Remove or update MaxSize tag to embiggen data (be ever so careful).

// Track length: ~ 168 seconds
// Track size: 88 ($58) bytes

12 { // --------------
    :60
        -
} //   --------------
7 { // --------------
    :30
        D4
} //   --------------
    :0C
        D4 C#4 B3 A3
7 { // --------------
    :30
        B3
} //   --------------
    :0C
        B3 C#4 B3 C#4
7 { // --------------
    :30
        D4
} //   --------------
    :0C
        D4 C#4 B3 A3
7 { // --------------
    :30
        B3
} //   --------------
    :0C
        B3 C#4 B3 C#4
7 { // --------------
    :30
        D4
} //   --------------
    :0C
        D4 C#4 B3 A3
7 { // --------------
    :30
        B3
} //   --------------
    :0C
        B3 A3 B3 A3
16 { // --------------
    :18
        G3 G3 G3 G3 A3 A3 A3 A3 B3 B3
        B3 B3 B3 B3
    :0C
        B3 B3 B3 B3
} //   --------------
8 { // --------------
    :18
        F#3
} //   --------------
8 { // --------------
    :18
        F#4
} //   --------------



<Track>
[Song:    A]
[Track:   Noise]
[Address: B1C3]
[MaxSize: 23]
// Remove or update MaxSize tag to embiggen data (be ever so careful).

// Track length: ~ 168 seconds
// Track size: 35 ($23) bytes

4 { // --------------
    :60
        $01
} //   --------------
2 { // --------------
    :18
        $0D $0D $0D $01
    :60
        $11
} //   --------------
48 { // --------------
    :18
        $0D $0D $05
    :0C
        $0D
    :06
        $07 $08
    :0C
        $0D $05 $07 $0D $05 $07 $0F
    :06
        $0D $0F
} //   --------------


Did you folks have similar experiences? or even better: does someone know what to do?
I flunder and i am very frustrated.

Flower

Is there maybe a maximum of tones you can put into a looped song?
When i use an unedited ROM of Metroid (just expanded by Editroid) and insert the song into it and then try to dump it again with Tuner , i get an "Index Array out of Bounds"- Exception.

Flower

#65
[spoiler]<Context>
[Bank:            1]
[SongTable:       BD31]
[VolumeTable:     BCB0]
[NoteTable:       BE77]
[NoteLengthTable: BEF7]


<Song>
[Song:            A]
[NoteLengthTable: 0B]
[TriangleLength:  00]
[Sq1VolumeTable:  5]
[Sq2VolumeTable:  4]
[Repeat:          True]


<Track>
[Song:    A]
[Track:   Square1]
[Address: B000]
[MaxSize: 60]
// Remove or update MaxSize tag to embiggen data (be ever so careful).

// Track length: ~ 144 seconds
// Track size: 96 ($60) bytes

18 { // --------------
    :18
        B2 B2 A#2 -
    :60
        -
} //   --------------
2 { // --------------
    :18
        G2 B2 D3 G3 A2 C#3 E3 A3 B2 D3
        F#3 B3 B2 D3 F#3 B3
} //   --------------
12 { // --------------
    :0C
        - D3 G3 A3 B3 A3 G3 D3 - E3
        A3 B3 C#4 B3 A3 E3 - F#3 B3 C#4
        D4 C#4 B3 F#3 F#4 E4 D4 C#4 D4 C#4
        B3 A3
} //   --------------
        A#3 C#3 F#3 A#3 C#4 F#4 A#4 C#5 F#5 C#5
        G5 F#5 E5 F#5 E5 D5 C#5 D5 C#5 B4
        A#4 B4 A#4 G4 F#4 G4 F#4 E4 D4 E4
        D4 C#4
00 // Song terminator


<Track>
[Song:    A]
[Track:   Square2]
[Address: B060]
[MaxSize: FE]
// Remove or update MaxSize tag to embiggen data (be ever so careful).

// Track length: ~ 144 seconds
// Track size: 254 ($FE) bytes

20 { // --------------
    :60
        -
} //   --------------
2 { // --------------
    :0C
        F#4 B4 D5 F#4 F4 -
    :18
        -
    :60
        -
    :0C
        D4 E4 D4 E4 F4 -
    :18
        -
    :60
        -
    :0C
        F#4 E4 D4 C#4 D4 -
    :18
        -
    :60
        -
    :0C
        B3 A3 B3 A3 B3 -
    :18
        -
    :30
        -
    :0C
        A#3
    :18
        B3
    :0C
        -
} //   --------------
4 { // --------------
    :0C
        - D4 G4 A4 B4 A4 G4 D4 - E4
        A4 B4 C#5 B4 A4 E4 - F#4 B4 C#5
        D5 C#5 B4 F#4 A4 G4 F#4 E4 F#4 E4
        D4 C#4
} //   --------------
2 { // --------------
    :18
        B4
    :0C
        B4
    :18
        F#4
    :0C
        F#4
    :18
        B4 A4
    :0C
        A4
    :18
        F#4
    :0C
        F#4
    :18
        E4
    :60
        F#4
    :0C
        A4 G4 F#4 E4 F#4 E4 D4 C#4
    :30
        F#3
    :18
        F#3
    :0C
        B3 G3
    :30
        F#3
    :18
        F#3
    :0C
        B3 A3
    :30
        C#4 D4
    :18
        E4 F#4 A4 A#4
} //   --------------
2 { // --------------
    :18
        F#5
    :0C
        E5 D5
    :18
        E5
    :0C
        D5 C#5
    :18
        D5
    :0C
        C#5 B4 C#5 B4 A4 C#5
    :60
        B4
    :18
        C#5
    :0C
        D5
    :18
        C#5
    :0C
        B4
    :18
        A4
    :30
        F#4
    :24
        F#4
    :06
        C#5 G4
    :30
        F#4
    :24
        F#4
    :06
        C#5 G4
    :30
        F#4 F#4 F#4
    :24
        F#4
    :06
        D5 A4
} //   --------------
2 { // --------------
    :18
        G4
    :0C
        G4
    :24
        D5
    :0C
        A4 G4
    :18
        A4
    :0C
        A4
    :24
        E5
    :0C
        B4 A4 B4 F#5 D5 B5 B4 F#5 A5 B5
        B4 F#5 D5 B5 B4 F#5 A5 B5
} //   --------------
    :18
        F#2 A#2 C#3 F#3 A#2 C#3 F#3 A#3 C#3 F#3
        A#3 C#4 F#3 A#3 B3 A#3


<Track>
[Song:    A]
[Track:   Triangle]
[Address: B16B]
[MaxSize: 58]
// Remove or update MaxSize tag to embiggen data (be ever so careful).

// Track length: ~ 144 seconds
// Track size: 88 ($58) bytes

12 { // --------------
    :60
        -
} //   --------------
7 { // --------------
    :30
        D4
} //   --------------
    :0C
        D4 C#4 B3 A3
7 { // --------------
    :30
        B3
} //   --------------
    :0C
        B3 C#4 B3 C#4
7 { // --------------
    :30
        D4
} //   --------------
    :0C
        D4 C#4 B3 A3
7 { // --------------
    :30
        B3
} //   --------------
    :0C
        B3 C#4 B3 C#4
7 { // --------------
    :30
        D4
} //   --------------
    :0C
        D4 C#4 B3 A3
7 { // --------------
    :30
        B3
} //   --------------
    :0C
        B3 A3 B3 A3
14 { // --------------
    :18
        G3 G3 G3 G3 A3 A3 A3 A3 B3 B3
        B3 B3 B3 B3
    :0C
        B3 B3 B3 B3
} //   --------------
8 { // --------------
    :18
        F#3
} //   --------------
8 { // --------------
    :18
        F#4
} //   --------------



<Track>
[Song:    A]
[Track:   Noise]
[Address: B1C3]
[MaxSize: 23]
// Remove or update MaxSize tag to embiggen data (be ever so careful).

// Track length: ~ 144 seconds
// Track size: 35 ($23) bytes

4 { // --------------
    :60
        $01
} //   --------------
2 { // --------------
    :18
        $0D $0D $0D $01
    :60
        $11
} //   --------------
44 { // --------------
    :18
        $0D $0D $05
    :0C
        $0D
    :06
        $07 $08
    :0C
        $0D $05 $07 $0D $05 $07 $0F
    :06
        $0D $0F
} //   --------------
[/spoiler]



I interchanged a part from one track to another, and then it works out! =)
Don't ask me what was wrong... EDIT: Maybe you can't have too much notes in a track.
But i am very very happy i could finish it without errors.

Grimlock

You can only have too many notes if you run out of memory.

Yuki

So I just wanted to make sure, there's no way for the songs to use DCPM samples at all? Working on songs for Metroid: Incursion and wanted to double check the limitations I'm working with. Also, is the percussion sound for Brinstar DCPM or just a noise channel sound?

Flower

Quote from: Kenta Kurodani on January 23, 2017, 07:39:58 AM
So I just wanted to make sure, there's no way for the songs to use DCPM samples at all? Working on songs for Metroid: Incursion and wanted to double check the limitations I'm working with. Also, is the percussion sound for Brinstar DCPM or just a noise channel sound?
As for the DCPM samples i don't know if there's a way.
Brinstar's percussion for sure are just sounds of the Noise Channel. I jammed a bit with them using values $02 - $1F. Try for yourself, you will have an interesting and sometimes funny time!  :heheh:

Yuki

I'm composing in Famitracker first (also so that eventually I can create expanded versions of the songs not limited by the Metroid engine) because it's the environment I prefer. I'll find which noise channel sound fits the closest to what I'm writing once I put it in the game

Flower

Hello,

what do you have to put into screen load asm to load another song that's not the main theme from that area and also not the 'creepy' alternative music?
I guess it's not that complicated but i don't know the right directives and syntax.