VRC7 Patch Switching

Discuss NSF files, FamiTracker, MML tools, or anything else related to NES music.

Moderator: Moderators

Post Reply
User avatar
za909
Posts: 249
Joined: Fri Jan 24, 2014 9:05 am
Location: Mijn hart woont al in Nederland

VRC7 Patch Switching

Post by za909 »

Since the emergence of Furnace tracker, it's become quite easy to go wild with sound chips in ways people haven't really done before. One of such things is VRC7 (and OPLL) patch switching where the patch selector is changed while the sound is playing. Some parameters, like feedback and multipliers and operator levels seem to be changed immediately, while others, mainly the ADSR envelope parameters are not changed as that would require a new key-on event. This makes it possible to mix and match many different combination sounds without having to tie up the custom instrument and it can be done in every channel at once. Not to mention that if someone wants to code a custom engine the custom patch could be used as a way to deliver your "payload parameters" and essentially get multiplexed custom patches with the aforementioned limitations on what can be instantly changed.

Personally I have my doubts about this technique working on hardware the same as in emulators, and based on discussions I've had so far on this topic people believe that the exact timing of the change is very important, and the deterministic but hard to predict phase of the two operators in each channel will produce somewhat inconsistent phase in the combination tones (this is already apparent in emulators).

IS there anyone who has already verified / tested or is willing to test this kind of trick on actual hardware, be it the VRC7 or an original OPLL? The principle is the same in either case, it's just that as the default patch set is different, the resulting combinations will be different.
Last edited by za909 on Tue Feb 14, 2023 8:20 am, edited 1 time in total.
User avatar
TmEE
Posts: 960
Joined: Wed Feb 13, 2008 9:10 am
Location: Norway (50 and 60Hz compatible :P)
Contact:

Re: VRC7 Patch Switching

Post by TmEE »

It makes sense that it works this way, since ADSR parameters only take effect on new note-ons on all other FM chips, while rest of the parameters update immediately. The ROM based parts shouldn't be any different on this behaviour but I have not actually explicitly tried this myself on OPLL, only on other chips (OPL2/3, OPN2/A/B, OPM) without ROM based instruments. I am unsure how the instrument ROM connects to the parameters but I expect just a demultiplexer setup to spread single ROM bus to relevant register paths as a channel's turn comes to be processed.
Pokun
Posts: 2681
Joined: Tue May 28, 2013 5:49 am
Location: Hokkaido, Japan

Re: VRC7 Patch Switching

Post by Pokun »

I have an MSX2+ with a built-in OPLL (MSX-MUSIC implementation). I don't really have any experience in programming the OPLL except in BASIC and MuSICA however, and I'm not sure these can do what you want to test.
I guess I could make a disk program in Z80 and run it on my MSX if I knew what registers to write to though.
Post Reply