actually - looking at this code more in depth it’s not really all that different than what i have, other than using sfplay3 instead of sfinstr. here’s the relevant edits:
sr 	= 	48000 
ksmps 	= 	64
nchnls 	= 	2
0dbfs	=	1 
gisf1	sfload	"sf_GMbank.sf2"
gisf2 	sfload "HS_Boss_DR-550_Drums.sf2"
sfplist gisf1
sfplist gisf2
sfpassign	0, gisf1
sfpassign	0, gisf2
instr inst4
;play from score and midi keyboard
	mididefault	60, p3
	midinoteonkey	p4, p5
inum	init	p4
ivel	init	p5
ivel	init	ivel/127					;make velocity dependent
kamp	madsr	0.002, 0.2, 0, .2
kamp	= kamp/5000				;scale amplitude
kfreq	init	1						;do not change freq from sf
      
a1,a2	sfplay3	ivel, inum, kamp*ivel, kfreq, 15, gisf1
	outs	a1, a2
	
endin
i will eventually be replacing the loaded preset number with an int value to change preset, but i’m setting them to specific values for now. will give this a build and test!