@OP0 = { ~ }

Valid parameter values: ($00 - $FF)

Must use 8 parameters.
e.g. { $01 $23 $45 $67 $89 $AB $CD $EF }

This will define the custom user instrument for the VRC7.

The following is a chart of what the custom parameters mean. The number after the description shows how many bytes this info takes up.

Custom Parameters Meanings:
Byte Number 0 1 2 3 4 5 6 7 8 9 A B C D E F


t: Tremolo Enable
v: Vibrato Enable
u: Sustain Enable
k: KSR
m: Multiplier
L: Key Scale Level
O: Modulator Output Level
-: Not used: Write 0's
q: Carrier Waveform
w: Modulator Waveform
E: Feedback

The eight parameters you enter correspond to the VRC7's eight registers for controlling its FM synthesis. You can read more about this in Kevin Horton's VRC7 Documentation [1].

An easy way to create VRC7 instruments is to use FamiTracker [2]. Simply create a VRC7 instrument, select patch #0, tweak the instrument options to your liking, hit copy and paste the result into your MML.

@@<num> to call up instrument for the track. Special procedures are necessary to call up the custom user-defined instrument.
@@1 - @@15 are built-in instruments listed below.
@@17 - @@31 are the same built-in instruments as @@1 - @@15.

Keep in mind that calling @@0 in the actual track is reserved: it's a shortcut for the last VRC7 instrument you called within the track. If you want to call on your user-defined VRC7 instrument, first use @@64. To call your second user-defined instrument (OP1) then use @@65 and so on. Calling a different instrument will override the last called. You can use the @@0 shortcut on other VRC7 tracks as long as you've selected one of the instruments as stated above.

Descriptions of VRC7 Built-in Instruments
VRC7 Instrument Descriptions
Macro Description
@@1 Buzzy bell
@@2 Jazz electric guitar
@@3 Fretless bass
@@4 Tuba/trombone
@@5 Recorder/Clarinet
@@6 Strange chime
@@7 Trumpet
@@8 Violin
@@9 Soft bell
@@10 Music Box
@@11 Vibraphone
@@12 Violin 2
@@13 Organ/Wurly
@@14 Chimey Trumpet
@@15 Acoustic Guitar

; G track using user-defined instrument
G @@64 c4 d4

; H track doesn't need full call since we did with the G track
H @@0 e4 f4

; The same goes for the I track.
I @@0 g8 a4

; Just calling a built-in instrument
J @@4 e4 c4

;@@16 is the same as @@0.
1. Kevin Horton's VRC7 Documentation.
Unless otherwise stated, the content of this page is licensed under GNU Free Documentation License.