Language…
9 users online: Cristian Cardoso, Golden Yoshi, Isikoro, Maw, MorrieTheMagpie, nonamelol1, Rauf, Scags, Torchkas - Guests: 251 - Bots: 312
Users: 64,795 (2,377 active)
Latest user: mathew

AddmusicK Beta Release Thread

Link Thread Closed
Not a problem with AddMusic K itself, but if anyone wants another patch that needs fixing, it's the sprite status bar. That one seems to crash the game when applied too.

I assume it changes the same sort of code that layer 3 exgfx does.
For gaming news and Wario discussions, check out Gaming Reinvented and Wario Forums respectively.

As for Mario's Nightmare Quest? Well, it's currently on Fusion Gameworks, ROM Hacking.net or the GCN at the moment.
Okay, there's a bit of a problem with defines...not so much a bug as a design flaw. If you use #if or the like to skip over a section of data, and there is an error in the text file that wasn't in the skipped part, the line number it shows the error on doesn't count the skipped part, making it hard to tell where the error is.

Actually, on the subject of defines, would it be feasible to make a case system for them? Something like this:

Code
#switch samplestatus
#case 0: "UnsampledStart->UnsampledEnd"
#case 1: "Sampled1Start->Sampled1End"
#case 2: "Sampled2Start->Sampled2End"
#case 3: "Sampled2SubStart->Sampled2End","Sampled3ListStart->"Sampled3ListEnd"


I don't know what the best syntax for it would be (there's probably a better way than my example), but you get the idea: You use the #switch command, and it will assemble the data defined by a list of label pairs in the corresponding case statement.

----------------

I'm working on a hack! Check it out here. Progress: 64/95 levels.
And two glitches I found:

1. Pressing Start and unpausing the game, causes the songs to stop playing.

2. I used songs, such as "Terra Diver - Ota City Sky Stage1" and getting hit by an enemy causes songs to stop playing due to SFX.
So I need a suggestion: I want to make the syntax for the $E6 loop more natural (i.e. not need an actual hex command just for a simple loop). The problem is that I can't implement it just by reusing the [ ] command because of various complications (mostly with the * and label loops). So I want someone to suggest an alternate syntax that would specify an $E6 loop; what would you guys suggest?

Originally posted by Vitor Vilela
I'm pretty sure that this is SPC-700 slowdown. This song have lot of pXX,XX / vibrato commands. Huh, if it slowdowns on normal playing, it should be a chaos then the time is < 100 (aka time is running out). Maybe AMK's engine needs a little optimization?


I haven't touched any vibrato-related code, so if there's any optimization to do it would be to the original code. And I have no clue how the vibrato routines work, to be perfectly honest...

Originally posted by ShadowFan-X
Found another bug. When you hit a P-switch and then get a starman (in that order), then when the P-switch runs out, the invincibility music will stop, and the normal music will start playing. When the starman runs out, it will switch to the P-switch music.


Man, I hate it when old bugs just keep reappearing and don't die. Thanks; I'll look into it.

Originally posted by cheat-master30
Not a problem with AddMusic K itself, but if anyone wants another patch that needs fixing, it's the sprite status bar. That one seems to crash the game when applied too.

I assume it changes the same sort of code that layer 3 exgfx does.


I'm not getting any issues with that patch. Could you give me any more information?

Originally posted by imamelia
Okay, there's a bit of a problem with defines...not so much a bug as a design flaw. If you use #if or the like to skip over a section of data, and there is an error in the text file that wasn't in the skipped part, the line number it shows the error on doesn't count the skipped part, making it hard to tell where the error is.


Thank you; that's been fixed.

Originally posted by imamelia
Actually, on the subject of defines, would it be feasible to make a case system for them? Something like this:

*code*

I don't know what the best syntax for it would be (there's probably a better way than my example), but you get the idea: You use the #switch command, and it will assemble the data defined by a list of label pairs in the corresponding case statement.


I'm not sure I see the point, to be honest. That could be done just as well with a series of #ifs.

Originally posted by Ruberjig
And two glitches I found:

1. Pressing Start and unpausing the game, causes the songs to stop playing.


I'm going to guess that you didn't copy over Addmusic_sound effects.txt. Replace your version with the one in the zip file.

Originally posted by Ruberjig
2. I used songs, such as "Terra Diver - Ota City Sky Stage1" and getting hit by an enemy causes songs to stop playing due to SFX.


Again, I'm not getting any errors like that. Could you give me some more details?
I should get a new layout.

Probably won't, though.
For the looping, maybe you could do something like "X1 c1d1e1f1g1a1b1 X2,Y" where X is a letter of the alphabet (your choice which one) and Y is the number of times to repeat? Kind of like p vibrato.
soundcloud / bandcamp / twitter / buy/stream my EP / buy my touhou music / buy my NEW album!!!
It's kind of clunky, though; there'd never be any reason to use two consecutive X1s or X2s in a row, so it shouldn't be necessary to specify which X you'd have to use (the program should figure that out for itself). Perhaps something like [| cdef |]? Anyone have any objections to that?
I should get a new layout.

Probably won't, though.
Originally posted by Kipernal
Anyone have any objections to that?


If you're killing $e6 command, then yes, if not, it's ok.

...though I prefer using only the $e6 command as it's pretty simple and easy to use.

Also, one question; what happened to the pitch oscillation command ($fa)? It's complicated to add or it's not worth of adding?

Edit: Forgot to ask, can you give an example of how to use the arpeggio and trill command? (txt and spc), I don't understand how to use them, and, if I just write numbers, it sounds... awkward (but quite funny lol).
Originally posted by Masterlink
If you're killing $e6 command, then yes, if not, it's ok.
...though I prefer using only the $e6 command as it's pretty simple and easy to use.


The $E6 command would have to stay for backwards compatibility anyway, so...yeah. Though I'm not sure how using hex values is more straightforward than an actual command:

Code
$E6 $00 cdefcdefcdef $E6 $04

vs

[|cdefcdefcdef|]4


To each their own, I suppose.

Originally posted by Masterlink
Also, one question; what happened to the pitch oscillation command ($fa)? It's complicated to add or it's not worth of adding?


I had never heard of anyone actually using it, so I didn't see the point in adding it. I'm not even 100% sure what it does, to be honest...maybe it's actually insanely useful, in which case I could add it back in if people want it.
I should get a new layout.

Probably won't, though.
Not THAT useful but it's a nice command, here's an example of what it does:

.spc
.txt
Masterlink...the trill, arp command is pretty simple actually, it's pretty much similar to the step sequencer in FamiTracker if you ever used that.

Kipernal and I put a lot of thought into this for the sake of simplicity

$FB $XX $YY

$XX is the number of steps in the sequencer which adds 'x' amount of bytes to the command based on how many steps you specify

$YY is the speed of articulation

for example, if you specify $04 in $XX, you must add 4 bytes to the command

$FB $04 $YY $aa $bb $cc $dd

those 4 extra bytes are how many semitones from the note that is being played that the command will alternate between.

If your mml is playing a C note and you use the command $FB $04 YY $01 $02 $03 $04

That sequence will loop between 5 notes, cc+dd+e, the extra bytes can also be used with negatives, FF FE FD FC etc. If you want to specify a loop point in the sequencer, simply put $7F where its needed in the extra steps.

Example: o3 c $FB $04 YY $01 $02 $7F $03 $04

that will play cc+d | d+e | d+e | d+e | d+e etc...

______________________________________________________________________


There is also subcommands like how $ED works.

$FB $80 $YY $ZZ = trill where $YY is speed and ZZ is the semitone value

$FB $81 $YY $ZZ = glissando

$YY is the delay and $ZZ is how many semitones the gliss alternates by, $01 will ascend by 1 semitone at a time, 02 will go up by 2, etc, same with negative, FF will move down 1 at a time, FE will move down by 2 etc...
I think a post layout goes here somewhere...
Aha, it makes sense now, I got confused by how the readme explains the commands.

Thanks.
Originally posted by Masterlink
Aha, it makes sense now, I got confused by how the readme explains the commands.

Thanks.


What exactly were you confused by? I'd like to make it as simple as possible to understand in the readme.

Here's an example, if it helps, and this is the result.
I should get a new layout.

Probably won't, though.
The '$ ...' part specifically and the duration of the notes, it uses the same table as the delay?

Originally posted by Table
02- 64th note triplets
03- 64th note
04- 32nd note triplets
06- 32nd note
09- 16th note triplets
0C- 16th note
10- 8th note triplets
18- 8th note
20- Quarter Note triplets
30- Quarter Note
40- Half Note triplets
60- Half Note
80- Whole Note triplets (60 length note + 20 length tie)
C0- Whole Note (60 length note + 60 length tie)


...but that's probably just me.
Originally posted by Kipernal
About the command "[|cdefcdefcdef|]4"


I actually use | to separate my hex commands to make my text more readable. Hopefully none of my older text files are affected by this if you implement the feature (most of them aren't submitted), but are you sure [[ and ]] aren't possible to implement? There's no other situation that you could have that syntax in without it crashing if it didn't support double-looping, though it would need to have a way of telling the user if there truly was a bad looping syntax on the outer and inner loops. I guess it's good enough to say which line the bad loop syntax was on if that's a more complicated thing to check for.
I don't see a reason for using [ ] break the default loop, it should work fine if you add a separate code if the music is already inside the default loop for '[' and ']'.
GitHub - Twitter - YouTube - SnesLab Discord
Originally posted by Vitor Vilela
I don't see a reason for using [ ] break the default loop, it should work fine if you add a separate code if the music is already inside the default loop for '[' and ']'.

I'm a bit confused what you mean by this. In this scenario:

Originally posted by Example
[[
$ED $7F $E0 | $EE $00

[$ED $7F $E0 | $EE $00]9

$ED $7F $E0 | $EE $00
]]9


^I was asking Kipernal if it was possible to implement double outer-brackets without breaking AMK.
Here's the exact problem with using [] to represent both normal loops and the special $E6 loops. Suppose that, by default, a [ ] denoted an $E6 loop, any any [ ] loops within a loop denoted a "normal" loop. In that case, it would break all songs that use the * command, since it calls the most recently used loop, which would always be an uncallable $E6 loop.

Now, suppose that using [] works like it does now, and a [] inside of a loop represents an $E6 loop. If you wanted to do something like [ cdef (1) cdef ] it would be impossible, since something like that could only be done with $E6 loops on the outside.
Originally posted by CrispyYoshi

^I was asking Kipernal if it was possible to implement double outer-brackets without breaking AMK.


That would be fine. The [| |] wouldn't have broken any existing songs, but you like the [[ ]] syntax better I'd be happy to use it instead.

Originally posted by Masterlink
The '$ ...' part specifically and the duration of the notes, it uses the same table as the delay?


Yes; the durations are the same. I'm not sure how better to explain the '$ ...' part, though; I can't really think of a better way to say "plus some number of hex commands here" concisely besides that...
I should get a new layout.

Probably won't, though.
Originally posted by Kipernal
Originally posted by CrispyYoshi

^I was asking Kipernal if it was possible to implement double outer-brackets without breaking AMK.


That would be fine. The [| |] wouldn't have broken any existing songs, but you like the [[ ]] syntax better I'd be happy to use it instead.

I personally like the [[ and ]] syntax more than [| and |], it makes more sense, and is easier to remember. :B
I found another Yoshi bongos bug. When you get Yoshi in a level where the music doesn't have Yoshi bongos, get Yoshi, and then go to a level where the music does have Yoshi bongos, they don't play until you either remount Yoshi or restart the level.

Also, a feature request: Music groups. For example, if you wanted to switch songs mid-level without the nasty pause that happens when music is uploaded, you could add something like this to Addmusic_list.txt:
Code
{
20  Song 1.txt
21  Song 2.txt
}

When a song in a group gets uploaded, the rest in the same group get uploaded as well (samples and everything).
While you could put these in the global music, that would be wasteful since it would limit the size and echo buffer of other songs.
GradientToolLevelMusic UtilitySM64 Clean ROM verifierHQX VirtualDub FilterImoSPC2 (Alpha)Music Section SPC PlayerEmbeddable SPC Player for SMWCYouTube EmbedderJSRomcleanJS Address ConverterLazyHDMA
May I make a small request?

Would it be possible to add an additional byte to the #instruments table for fine tuning (like the $EE command) like this?

Code
"Sample1.brr" $AD $SR $GA $XX $YY

Where $XX = pitch and $YY = Fine tuning.

This would really save a few bytes when it comes to constantly changing instruments in a single channel.
Please excuse my lack of an avatar or banner. I'm just too damn lazy to create one.
Link Thread Closed