Language…
5 users online: Cristian Cardoso, KoJi, playagmes169, stormitive, Zavok - Guests: 231 - Bots: 333
Users: 64,795 (2,377 active)
Latest user: mathew

AddmusicK 1.1.0 Beta Release (New Beta Up 5/7)

Uh, your download link still links to the original AMK zip with addmusick.exe from 2017-04-21 7:39PM PST.

Files modified: /asm/SPC/include/S8A_SkipKeyOff.asm and /asm/SPC/include/S8_RemoteCommands.asm. Nothing else changed.

EDIT: What happened to 6646's AMK mod?
https://www.smwcentral.net/?p=viewthread&t=61465&page=43&pid=1398121#p1398121 https://github.com/boldowa/AddmusicK/tree/amki_dev


You're looking at many features from it in what I released.

I had collaborated with 6646 to implement changes both he and I were planning. However, he has been absent for a while due to private reasons. AMK 1.1.0 is a realization of what we were planning. As he had been gone for a while, I had created many of the new features (i.e. effectively everything related to sound effects and resolving the slowdown), but I also included his functions and several changes on the C++ he had suggested. The AMKi dev build as such is not the most recent one 6646 has worked on, as we did work on a separate branch location when he was active (and I proceeded offline while he was gone, as I was making significant experiments and modifications constantly which would have made uploading to github time-consuming to verify that everything was in place).

He also had a handful of other things planned which should be available for AMK 1.1 when it exits beta. (i.e. we combined our intentions for PWM such that it will default to the PWM he designed if no PWM is designated by the song and the PWM code the song data contains otherwise, and he wished to convert AMK's ARAM charting feature to a different library, which was not implemented in the beta yet.)

However, most of the more radical changes are present in this beta, hence why i wanted to have an open testing period to make sure things are working as intended (and to of course fix what isn't).
Hey, I was wondering, though I hope this is not too much for you to handle, but is there anyway possible to recreate the echo volume effects that some of the Ocean games uses?

You know, the effects where the echo volume goes up and down in slides and goes backwards to the reverb values, like with, but not limited to, these songs for example?

Apparently, no AddMusic program can use the $F2 echo volume fade command like that at all, so I'm hoping that there could be good use of these effects with AMK ports and making ports from such games that actually use them more accurate.

It's no big problem if you can't do it, but I thought I'd ask.
Hey y'all, Scott here!

PFP by: https://twitter.com/GinCalico (🔞 Warning)
Originally posted by AntiDuck
Hey, I was wondering, though I hope this is not too much for you to handle, but is there anyway possible to recreate the echo volume effects that some of the Ocean games uses?

You know, the effects where the echo volume goes up and down in slides and goes backwards to the reverb values, like with, but not limited to, these songs for example?

Apparently, no AddMusic program can use the $F2 echo volume fade command like that at all, so I'm hoping that there could be good use of these effects with AMK ports and making ports from such games that actually use them more accurate.

It's no big problem if you can't do it, but I thought I'd ask.


Well, I mean, Torchkas managed to do it with the VLDC9 Abstract map theme, so its definitely possible to do it in a similar fashion without a command. But yeah, I would agree it would be much easier with a specific command for that. lol
Layout by Mathos
Originally posted by Ultima
Well, I mean, Torchkas managed to do it with the VLDC9 Abstract map theme, so its definitely possible to do it in a similar fashion without a command. But yeah, I would agree it would be much easier with a specific command for that. lol

The thing is, with Torchkas's port, it simply used the $F2 command over and over again.

The effect used in the Ocean games have much more flexibility in use, such as going below $00 and going backwards through $FF to $80 in the reverb values and so forth, and slowing down when reaching the desired value, besides,

I tested out SPC2MML with one of the ports to see if it used any hex command that could be strategically using echo commands with available AMK commands, but they don't seem to, so that must mean that there is a special command that the Ocean games used.
Hey y'all, Scott here!

PFP by: https://twitter.com/GinCalico (🔞 Warning)
Originally posted by AntiDuck
The effect used in the Ocean games have much more flexibility in use, such as going below $00 and going backwards through $FF to $80 in the reverb values and so forth, and slowing down when reaching the desired value...

I looked into the Waterworld SPC files. There is a low frequency sine oscillator built into the sound engine, that writes to the echo volume registers independently from the channel events. It appears that the LFO's frequency and phase offset are fixed, and the only controls possible are changing its amplitude. Sometimes the echo volume in Diving overflows / underflows, because the LFO operates by adding the amplified differential to a cached value, not amplifying this cached value. Regardless of the underlying implementation I do not believe that such a feature would be sufficiently useful for the general AMK user.

Originally posted by AntiDuck
...I tested out SPC2MML with one of the ports to see if it used any hex command that could be strategically using echo commands with available AMK commands, but they don't seem to, so that must mean that there is a special command that the Ocean games used.

An Ocean SPC does not use N-SPC / AMK commands and, before anyone asks, there are no such things as "SPC commands" either, not any less general than DSP writes. SPC2MML only attempts its best to collect as many DSP writes into events understood by AMK as possible, but since different sound engines have vastly different semantics (observable behaviour), detection of high-level features requiring continuous register writes is virtually impossible. In particular SPC2MML cannot detect AMK's own $F2 command. So there are only very limited conclusions you can draw from these converted MML files.
YouTube · Bandcamp · Twitter · Github
Constructing Chiptune; Construing 8-Bit.
Custom theme based on Zenburn; install Lato and Liberation Mono for best results
Could you implement a command where the note releases when it's supposed to come off? I would love to have that kind of sound without dealing with this

Code
(!200)[$ED $7F $EF]
(!201)[$ED $7F $F3]

"R00=(!200, 3)"
"DR00=(!200, 0)"

e^< R01@41a^> @41R01g^ q3F {@41R01f+ @41R01g @41R01f+}
@41R01q5F e^<@41R00a1r2 DR00


It could be simplified to this

Code
$ED $7F $F3
$F4 $0Aorsomething		;Toggles the command
q5Fe^< a^> g^ q3F {f+ g f+}
q5F e^< $ED $7F $EF a1r2 


Context
Hacks:
Uploaded a new beta to test, should be the last major jump before I go to make a finalized version with the features mentioned before.

New features in the 5/7 build:

-the ability to have quick transitions between SMW level themes (and the boss theme), between SMW OW themes, SMW Credits themes and SMW's bowser fight themes has been implemented go into SNES/patch.asm and set "!fastTransition" to "!true" to try it out as it actually makes the fight and credits in a playable state again! Do note that I set the org position in the new SampleChecker.asm to org $108000 for testing purposes. Move it around to wherever you have room if that's not free for you.
-as a consequence of testing this, all samples have been set to important in the default sample group as it seems AMK only will set the importance of a sample on the first attempt to locate it (i.e. I tried to make a sample group where all samples were important separate from the default, but it just resulted in some not being included based on the song). This should hopefully be fixed in the release candidate by making an easy way to group songs with a padding value. DO note though that I may not be able to get around that sfx still get dropped when transitioning songs as in earlier AMK builds, although I am toying around with an idea that may be able to get around this.
-fixed a bug that would occasionally crash the soundchip if a song didn't loop due to changes in how they were compiled
-included some sound effects from the GBA ports done by ear (can't rip them yet directly). They're not in the default sound effect list, which only has SMW and SMAS sounds, but a list with them is also included. Speaking of which, I will be changing the sound ids for several SMAS and GBA sounds in the next major 1.1 release (in order to remove several of the less necessary sounds, such as the unused ones), although the SMAS sounds themselves should be accurate.
-included two new .bat files for your convenience. AddmusicK+SFX.bat (launches AddmusicK like normal, but also will compile SFX SPCs) and Trackmusic.bat.
-Trackmusic.bat is a new feature, which allows you to quickly compile SPCs without SFX or SFX-related code being included and without needing to use a ROM or arguments! In fact, you can use a separate list from Addmusic_list.txt called "trackmusic_list.txt", which will be referenced to determine which SPCs you want to produce, keeping your ROM songs and your tracker music separate while remaining in the same folder! Do note though that SPCs for both are currently placed in the regular SPC folder. I may change that so that the ones made using the Trackmusic.bat are instead loaded into "TrackSPC" or something like that. Also, if you do not have a "trackmusic_list.txt" in your folder (the zip provides one, though), it assumes that it should read the "addmusic_list.txt" instead. Don't worry though, in either case, it won't include the global songs, providing the maximum amount of space possible!
-made the NINTENDO logo load moderately faster by making it upload only the one sample it uses for the coin sound

If people could test out the !fasttransition = !true feature, that'd be appreciated. It works fine with all samples in the #default sample group set to important (which is similar to how it was in SMW, I believe), but I just want to make sure any level transitions aren't quirky. You could technically group together the level and overworld themes to have lightning fast level transitions from the OW and back (most of the wait from level/map load is actually from uploading samples) . . . . but I didn't because this makes it VERY noticeably inconsistent when including custom music and, importantly, is extremely odd-looking. My personal testing didn't show any issues remaining, but you never know

Originally posted by Coolmario
Could you implement a command where the note releases when it's supposed to come off? I would love to have that kind of sound without dealing with this

Code
(!200)[$ED $7F $EF]
(!201)[$ED $7F $F3]

"R00=(!200, 3)"
"DR00=(!200, 0)"

e^< R01@41a^> @41R01g^ q3F {@41R01f+ @41R01g @41R01f+}
@41R01q5F e^<@41R00a1r2 DR00


It could be simplified to this

Code
$ED $7F $F3
$F4 $0Aorsomething		;Toggles the command
q5Fe^< a^> g^ q3F {f+ g f+}
q5F e^< $ED $7F $EF a1r2 


Context


I can try thinking of a solution, but it likely won't be in 1.1 but instead later down the pipeline if it happens.
If your interested in adding a wind sfx still, I have a brr that may work and sound pretty close. It is also possible that it may be a better alternative to the spc generated noise.
Originally posted by zacmario
If your interested in adding a wind sfx still, I have a brr that may work and sound pretty close. It is also possible that it may be a better alternative to the spc generated noise.


This would be for the best, since I am tired of the lack of wind sound effects!
If there are SMAS samples included, why not use the wind SFX from that? It's sample 20, and it was used in The Lost Levels.

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

I'm working on a hack! Check it out here. Progress: 64/95 levels.
Originally posted by imamelia
If there are SMAS samples included, why not use the wind SFX from that? It's sample 20, and it was used in The Lost Levels.


Not just the BRR, I cannot successfully recreate or trace and disassemble the sound effect via SNES SPC700 player (spcplay), It is confusing with all those extras and no tutorials!
I'd just use split700, personally. Or actually, since I already have the .brr file (I think), here.

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

I'm working on a hack! Check it out here. Progress: 64/95 levels.
Originally posted by imamelia
If there are SMAS samples included, why not use the wind SFX from that? It's sample 20, and it was used in The Lost Levels.


This actually includes no SMAS samples, as all but one sample in SMAS is actually in SMW (four sound effect instrument settings were not in SMW though, three of which were included as well as a few others for the SMA2/SMA4 sfx, but they take up less than 0x30 bytes so I left them in on the instrument table). Everything else uses the sound effect parameters used already by SMW sound effects. The only sample that isn't included is the blanked information that is used for the PWM generation in SMAS, which is useless by itself. It will be added in the release that contains PWM functionality, though.

As far as the wind, I located the code related to both it and the pitch modulation, and it's relatively straightforward, so I will probably include it in the final 1.1.0 release.

Speaking of which, I was moderately conflicted. . . . but decided that the wind PWM would probably be utilized more than synth PWM, and thus the default will most likely be the wind. This would also make it more likely for people to try out their own custom PWM routines, as songs will be able to divert the PWM routine to the ones they contain instead if they have one. (This does mean that wind PWM and songs that have PWM synths would be incompatible since only one PWM would be done at a time, but this should be an acceptable compromise compared to having neither in AMK 1.05) The wind PWM routine only adds around 0x30 bytes, so it's not going to be an issue for music creators considering the music mode exists and you could always just disable the inclusion of anything PWM-related using a setting option.

Originally posted by Hamtaro126
Not just the BRR, I cannot successfully recreate or trace and disassemble the sound effect via SNES SPC700 player (spcplay), It is confusing with all those extras and no tutorials!


It's unrolled code, similar to the jump sound effect in SMW and the turn sound effect in SMAS (which I converted both into normal sound effects for the beta since they're relatively simple).

Unlike those two, I'll need to probably keep it unrolled and thus have it be specially coded, but I am currently looking over how it works to see if that is necessary or if I can make a looping sound effect that is close enough.
Hey, Codec, how about you post it in that thread? I was waiting for this since forever...
The Hacking of PuyoPuyo. Come join the fun, friends. 『いけいけ団長、頑張れ頑張れ団長!』
Help us raise funds for the Armed Forces of Ukraine. #ДопомагаємоРазом / #HelpTogether
“Even if you personally are so dissatisfied with life that you want the world to end, surely the cruel reality is that it will continue on, unchanging. All the better for someone perfectly content, like me.”
Aya Shameimaru, Touhou Suzunaan ~ Forbidden Scrollery
I'll edit the first post in that thread once AMK 1.1 is out of beta.
Your layout has been removed.
Thanks for including the wind sfx.
Sorry for a late reply, I only found out about AddmusicK 1.1 beta today and gave it a try.
I have several questions and a bug report. Questions first.
I mainly use AddmusicK to make SPC music, not SMWC ports, so I would be using the new musician mode a lot. My first question: what should I be expecting in AMK1.1 for this purpose alone? I know the engine has been optimized for smaller size and less slowdown. And there's some PWM command in the works, I have no clue what that's meant to do as I really have no knowledge of the inner workings of processors or the SPC700. What would it allow me to do, is it some sort of synth kinda like the variable pulsewidth on the C64 or similar analog synths? If so I have no clue how the SPC would do that, and haven't the inclination to learn how either. Regardless I think I need clarification because I feel like I'm off track. And anything else I should know at present?

Second question. Because I often just write SPCs, I had a special copy of AMK set aside for this. In 1.0x, I cleared out the sound effects and removed all local songs. Since you need at least one song in globals afaik, I made a file called null.txt which has almost nothing in it to save a hair's breadth of space. Then, I would run addmusicK from the command line with the norom command and the name of my text file, for sake of discussion I'll just say my file was test.txt. The result would be an spc in the spcs folder called test.spc, and to my knowledge, the sequence for null.txt was just dumped in the spc, minding its own business, and doing nothing significant. In AMK1.1, my guess is that the trackmusic list makes one spc per entry? That would make the most sense. However it seems the songs to compile must be specified in that list. If you specify a file in the command line, it will not be taken. Is this intended behavior?

Now for a bug report. I have no clue how this is happening, but it seems that loading custom samples, in particular, is bugged. I tested one of my compositions with the musician mode, and noticed that in one of my custom samples, an area around my loop points was mildly disturbed. I'm using homemade samples here so that might be the problem, though I don't suspect that to be the case because the BRRs sound fine everywhere else, including old AddmusicK with the same text file and samples. Even stranger, depending on the setup of my custom samples, the defect either disappears, or comes back somewhere else with varying degrees of severity. This leads me to believe that the problem is with the engine rather than the brrs themselves. I'm also using the #amm group here to leave maximal room for samples. Using another group such as #optimized also changes when/if the defect occurs, but that also loads an overhead of samples! I also compared the brrs of the two spcs, and soundwise they are fine. I haven't tried doing any scientific comparison though. And I didn't test AMK1.1 in its normal mode either.

I put together a zip with everything needed to reproduce the problem. Everything is stripped down for easy testing. Included are: the text file illustrating the problem along with the necessary samples, a trackmusic list, and two spcs to compare. Remove the unplayed bells.brr, or flip the order of the two samples around, or put them in #optimized, and recompile. You'll get a different-sounding result than if you run them the way I have them initially set up in the .zip. I'd be intrigued to know what's going on!

Thanks for bringing AddmusicK back and overhauling it! I'll post suggestions at some point, as I have a few ideas for commands. I look forward to its further progress!
Make more of less, that way you won't make less of more!
Originally posted by musicalman
Sorry for a late reply, I only found out about AddmusicK 1.1 beta today and gave it a try.
I have several questions and a bug report. Questions first.
I mainly use AddmusicK to make SPC music, not SMWC ports, so I would be using the new musician mode a lot. My first question: what should I be expecting in AMK1.1 for this purpose alone?


I am looking toward potentially incorporating several label definitions based on what HertzDevil has created in his in-progress branch of AMK after discussing with him, such that hopefully I can make it a simple process to avoid needing to use hex-based commands. I did something similar for sound effects when it comes to pitchbending, but it does not apply to music.

Originally posted by musicalman
there's some PWM command in the works, I have no clue what that's meant to do as I really have no knowledge of the inner workings of processors or the SPC700. What would it allow me to do, is it some sort of synth kinda like the variable pulsewidth on the C64 or similar analog synths? If so I have no clue how the SPC would do that, and haven't the inclination to learn how either. Regardless I think I need clarification because I feel like I'm off track. And anything else I should know at present?


Basically, samples, memory and the code share the same space, meaning that just like frequently used addresses for note generation, nothing stops you from writing directly to the samples. Thus, it's possible to generate algorithms onto samples even if they are actively being played. For three major examples, the F-Zero engine sounds, the Super Mario All-Stars wind and the lead synth used in this song starting at 0:50 generate FM, FM and PWM, respectively. Such manipulation is quite powerful, and can be done in a variety of creative ways. Thus, it will be possible to perform both PWM and FM using software-based code on the SPC700 using AMK, as other developers have already achieved this.

Originally posted by musicalman
Second question. Because I often just write SPCs, I had a special copy of AMK set aside for this. In 1.0x, I cleared out the sound effects and removed all local songs. Since you need at least one song in globals afaik, I made a file called null.txt which has almost nothing in it to save a hair's breadth of space. Then, I would run addmusicK from the command line with the norom command and the name of my text file, for sake of discussion I'll just say my file was test.txt. The result would be an spc in the spcs folder called test.spc, and to my knowledge, the sequence for null.txt was just dumped in the spc, minding its own business, and doing nothing significant. In AMK1.1, my guess is that the trackmusic list makes one spc per entry? That would make the most sense. However it seems the songs to compile must be specified in that list. If you specify a file in the command line, it will not be taken. Is this intended behavior?


I'll look into this, as I had not specifically set it up to assume that a song would be taken as an argument by itself, but it makes sense to do so.

Originally posted by musicalman
Now for a bug report. I have no clue how this is happening, but it seems that loading custom samples, in particular, is bugged. I tested one of my compositions with the musician mode, and noticed that in one of my custom samples, an area around my loop points was mildly disturbed. I'm using homemade samples here so that might be the problem, though I don't suspect that to be the case because the BRRs sound fine everywhere else, including old AddmusicK with the same text file and samples. Even stranger, depending on the setup of my custom samples, the defect either disappears, or comes back somewhere else with varying degrees of severity. This leads me to believe that the problem is with the engine rather than the brrs themselves. I'm also using the #amm group here to leave maximal room for samples. Using another group such as #optimized also changes when/if the defect occurs, but that also loads an overhead of samples! I also compared the brrs of the two spcs, and soundwise they are fine. I haven't tried doing any scientific comparison though. And I didn't test AMK1.1 in its normal mode either.

I put together a zip with everything needed to reproduce the problem. Everything is stripped down for easy testing. Included are: the text file illustrating the problem along with the necessary samples, a trackmusic list, and two spcs to compare. Remove the unplayed bells.brr, or flip the order of the two samples around, or put them in #optimized, and recompile. You'll get a different-sounding result than if you run them the way I have them initially set up in the .zip. I'd be intrigued to know what's going on!


It seems bell.brr is corrupted in some way, putting a different sample in the place of bell.brr produced a result where softhorns.brr plays normally (tried with several other samples), as did removing #amm. I'll try to look closely at the sample later today to figure out what could cause this behavior, as I've not had it happen in other songs.

Originally posted by musicalman
Thanks for bringing AddmusicK back and overhauling it! I'll post suggestions at some point, as I have a few ideas for commands. I look forward to its further progress!


Thanks! I appreciate it.
Thanks for your response!

Originally posted by Codec
Nothing stops you from writing directly to the samples. Thus, it's possible to generate algorithms onto samples even if they are actively being played. For three major examples, the F-Zero engine sounds, the Super Mario All-Stars wind and the lead synth used in this song starting at 0:50 generate FM, FM and PWM, respectively. Such manipulation is quite powerful, and can be done in a variety of creative ways. Thus, it will be possible to perform both PWM and FM using software-based code on the SPC700 using AMK, as other developers have already achieved this.

Whoa, that's cool! I do remember hearing things like the above examples and thinking it was some clever sample trick, though I wasn't sure what. Admittedly I was too lazy to do any looking. Seems to me as though you plan to adopt this sort of behavior into AMK which would allow for the creation of these sounds plus other things, and it won't be painfully restricted? In any case, it would probably require a learning curve to use. It'll seem a little intimidating but I look forward to it.

As a side note, updating the documentation might be... difficult, given the fact that so much has been included in AMK1.1. But as I'm sure you know, it's pretty necessary, so I hope it's not that bad. :)

Originally posted by Codec
It seems bell.brr is corrupted in some way, putting a different sample in the place of bell.brr produced a result where softhorns.brr plays normally (tried with several other samples), as did removing #amm. I'll try to look closely at the sample later today to figure out what could cause this behavior, as I've not had it happen in other songs.

Hmm, well for the record I did have problems with bell as well, though while testing to make a simple reproduction scenario, that one started sounding okay and softhorns inherited the problem. It's perhaps possible that one or even both are corrupted, but I still wonder why the behavior is so erratic, and why they work everywhere else for me but here. Hopefully your investigation will prove successful!

Not sure if it helps any, but I used BRRTools to make the brrs and a hex editor to insert the AMK loop header. I also remember having to restrict the compression filters used by BRRTools especially on the bell sample, because bells are hard to compress without making them too noisy, so I messed with the -f command until I got it as clean as I could. I believe I still have the original wav someplace, so I could experiment with that. Now I'm worried that all my custom samples are at risk. Maybe I should try some of my others and see if they break.
Make more of less, that way you won't make less of more!