Skip to content

Behavior of transposition and keyswitches #1304

@peastman

Description

@peastman

I've found an inconsistency in behavior between sfizz and Sforzando. Say a file has keyswitches, and also somewhere in that file you specify octave_offset=1 to transpose some samples by an octave. In Sforzando, that only affects the notes that get played, not the keys used for keyswitches. But in sfizz it does change the keyswitches.

That's a problem in itself, since there's no way to get consistent behavior between the two programs except by completely avoiding transpositions. But also, the behavior of sfizz is inherently inconsistent. Transpositions are local. You can apply an offset to one set of regions, then apply a different offset to a different set of regions in the same or a different keyswitched articulation. But keyswitches are global. They have to mean the same thing everywhere in the file.

And in fact, sfizz gets really confused in that case. If transpositions were applied to keyswitches, you would expect it to be based on the most recent note_offset or octave_offset at the point where the keyswitch is defined, but that doesn't happen. Just putting an offset anywhere in the file causes strange and inconsistent behavior, even affecting keyswitches defined in other parts of the file where it isn't active: multiple copies of the keyswitches appearing at different places on the keyboard, notes that don't sound correctly, etc.

I suggest that sfizz be made to work the same as Sforzando, with transpositions not affecting keyswitches.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions