Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for Codec's AMK Beta (parser version 3) #282

Draft
wants to merge 24 commits into
base: master
Choose a base branch
from

Conversation

KungFuFurby
Copy link
Owner

@KungFuFurby KungFuFurby commented Apr 6, 2022

This merge request closes #216.

The music parser additions (and modifications) that this should cover are...

  • New character : - breaks out of an $E9 loop (requires Loop Break VCMD #89) (ready via commit e49d63f)
  • New character % - triggers percussion ID
  • v is enhanced to support slides
  • t is enhanced to support slides
  • w is enhanced to support slides
  • (!!) resets remote code. (AMK Beta Remote Gain/Anticipation Gain Revamp #232 contains a replacement for this through remote code event IDs)
    • (!!0) resets both key on and non-key on remote commands
    • (!!-1) resets "on key on" remote commands
    • Any other value resets non-"on key on" remote commands
  • #allsamplesimportant is new. Optimizations are forced off for everything. For my case, this is only relevant for sample groups due to Samples filtered out in SPC files are included in the compiled ROM #121 and Sample groups are colliding with manually defined samples on ROM compilation #123 being resolved.
  • #notranspose is new. See Add parser flags #253: I have a similar plan.
  • #percussion is new and defines custom percussion. This... is problematic because of Custom percussion per song (overwrites VCMDs $C8-$CF) #130 , which has different intentions. Also, this overwrites the global percussion table. Technically I can replicate that with a VCMD not unlike what was used in AddmusicO, but again, this is conflicting...
  • #efficient decreases the accuracy of the pitch in exchange for speed. Requires a SPC-side modification... and since I use phrases, either a new VCMD (a $F4 command in this case) or a hot patch bit.
  • #semiefficient decreases the accuracy of the vibrato in exchange for speed. Requires a SPC-side modification... and since I use phrases, either a new VCMD (a $F4 command in this case) or a hot patch bit.

In addition, these VCMD IDs should be translated...

These pull requests, once merged, will require this pull request be updated (critically, it's because they contain features that are required for this to be fully implemented):

This marks the beginning of the implementation for Codec's AddmusicK Beta. Note
that the upcoming code will be sourced, though also probably slightly modified,
from the C++ source, which is otherwise not public, unlike the rest of the
extant beta: I acquired the source from Codec themselves.

This branch will not be merged until all of the music changes are implemented.

This commit mentions #216.
Mostly adapted from the source for Codec's AMK beta, though with some minor
adjustments.

This commit mentions #216.
Mostly adapted from the source for Codec's AMK beta, though with some minor
adjustments.

This commit mentions #216.
Mostly adapted from the source for Codec's AMK beta, though with some minor
adjustments.

This commit mentions #216.
Pretty much directly adapted from the source for Codec's AMK beta, though with
some minor adjustments.

Resetting key on and non-key on remote code events are not yet implemented.
Technically they can be since I have them in another branch, but that still
requires some inheritance, so to speak.

This commit mentions #216.
Some of these require new hex commands or SPC700-side code. Others, well... they
simply haven't been implemented yet.
@KungFuFurby KungFuFurby added the c++-side Involves the AddMusicK program itself in some way. label Apr 6, 2022
My bad for this failed circumnavigation (and not thinking things through with
using make on this before pushing).
This one stops the parser from guessing the tempo, as it already does not guess
when any tempo fade is used.
An erroneous text position increment was added on where it wasn't supposed to be
since it was already done, causing one of the digits to not get read correctly.
…o check

The source code I got made a mistake with testing with ltempo, when ltempo was
not the variable that was supposed to be checked. Also, AddmusicK used a tabbed
block without using brackets, which for me is more Python-esque than C++-esque.
A bad variable reference was used, and the v commands were outputting the wrong
values.
With the addition of the two remote code events tailored for the two types of
events, the implementation of (!!) can be completed on a technicality.
(!!) was initially not going to be implemented in parser version 4 due to me not
wanting to grab anything that required a new hex command. However, due to the
way AMK Beta's Remote Gain was restored, this MML command can now make the cut
into parser version 3.

: and % are still cut from parser version 4, on that note: : because it requires
a new hex command, and % because of a conflict with binary notation in asar (I
have decided to reserve this for parsing a binary number).
@KungFuFurby KungFuFurby added the documentation Improvements or additions to documentation label Jul 1, 2022
Partially cherry picked off of commit e026687 .
Does not include components that currently require a different commit to
implement.
Didn't realize a marker was removed in the process of merging, which would have
caused a compilation failure.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
c++-side Involves the AddMusicK program itself in some way. documentation Improvements or additions to documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add support for Codec's AMK 1.1.0 Beta (parser version 3)
1 participant