Originally posted by ggamer77Labels always retain their octave. So you'd need to make a new label...
This is correct. But for the sake of clarification: o, < and >, and also h (discussed below) are actually not NSPC commands at all; they simply tell AddmusicK to play different notes. So whether you write o4c, o2>>c, o1>>b+, or o6<<<<><<>>>><<h9d+, they will all play the same note and be exactly the same insert size. If we extend this to loops, all of that is handled by NSPC. Since octave commands are an AMK thing, they are not actually stored in a loop, only the resultant notes are in the NSPC sequence data, and this is why you cannot change octaves in recalled loops in a conventional way. Furthermore, if you make a loop, switch octaves and recall that loop, then the octave you will be in afterwards will not be the octave of the loop. The octave will instead be the one you were in before you recalled the loop. So in this example:
Code[o3 c e g]2
< c d e f g *
You will be in o2 after the *, not o3.
QuoteYou can use $FA $02 which raises pitch by semitones.
This is actually something I didn't know, I thought $fa $02 was an alias for h. As it turns out, this isn't the case. h just transposes the notes on AMK's side, $fa $02 seems to let you transpose within nspc. Just tested it, and it is indeed possible to transpose loops in this way. Thank you so much for figuring this out, as there's a port I'm working on which will really benefit from this knowledge!
As an aside, you can use $fa $02 to go above o6 if you have a sample that'll go up into that range without hitting the upper rate limit. Doesn't work the other way around, you can't get below o1 unless you lower the instrument's tuning to give yourself extra lower octaves. Haven't tested this but that command might? also be useful with pitch bend and legato commands if you need to make really really wide slides for some reason that go beyond 6 octaves, of course with some added expense to insert size if used often.
Originally posted by MiracleWaterWhat's the most efficient way of sustaining a note for a long time (like an entire song)? Surely it wouldn't be something like c1^1^1^1^...
There are two ways you can try to reduce that, you can try to put the ^1 in a loop but I've just tested that and it doesn't work for extending notes. So the only other way I can think of is to use the = command, which isn't documented. Found it in a port that I liked and figured it out. It basically is another way of specifying note duration. Here's how it works: each note is split up into 48 ticks per beat internally, and = lets you manually specify the number of ticks something gets. So c=48 would be equivalent to c4. c=12 would be c16, c=1 would be c192, which is the smallest note length you can use. Normally = doesn't really need to be used, it's only in special cases like this one that I can see a use for it. You can use = to extend a note as much as you like; the longest I ever did was =1488 which is 31 beats, and it sounded fine so you could do longer, and probably combine with ^=. Again, not sure if it's the most efficient in terms of insert size, but it certainly looks a little nicer if you are good at multiplication and don't like seeing ^1^1^1^1... Just have a calculator on hand!
QuoteI'm having trouble grasping how ADSR works within the context of addmusic as it seems to contradict how I've perceived it's usage outside of smw.
You would be correct, The SPC700 has an ADSR which is a little different than general usage in synthesizers for example. For now I'll leave the hex notation for ADSR for another time, but I or someone else can try to explain further if you like. There are several explanations of it on the forums that helped me out, in addition to experimenting a lot. For now I'll simply describe what the SpC's ADSR does.
A (attack) is what you'd expect, the amount of time a note fades from silence to full volume when it is keyed.
D (decay, not delay), is similar to the decay control in most ADSR implementations. Once the attack is over, the decay determines how quickly the note goes from full volume to sustain level.
S (sustain) indicates at what level to sustain at once the decay is over.
R (release) isn't release in the typical sense you'd expect, where the release would only start when you release a note. In this case, the release starts as soon as decay ends. In other words, the sound will attack, decay, then reach the sustain level and then immediately fade to silence from there. The speed of this fade to silence is controlled by the release value, which if set at 0, will leave the sound to sustain infinitely. If you want to have a sound release in the traditional sense where it sustains infinitely until told to release, you will have to use remote codes. But again I won't go too advanced right now, just wanted to directly answer your question and allow you to pose further questions as needed.
Sorry for the long post, but I hope it has helped you out!
Make more of less, that way you won't make less of more!