@gilboonet
thank you for that.
after a few mis-steps and with the guidance of editor prompts, i came up with this which seems to work for the sphere with a sound hole.
i'm tickled pink because i had wanted to provide form fields for the parameters also, but due to my newbieness, thought it would be additional html/javascripting.

function
main(params) {

var sr = params.sphereradius; var sh = params.soundhole; var wt = params.wallthickness; var fn = params.fragmentnumber; return [ difference(sphere({r:sr+wt, center:true, fn:fn}), sphere({r:sr, center:true, fn:fn}), cylinder ({r:sh, h:-(sr+wt)})) ];

}

function getParameterDefinitions() {
return [
{ name: 'sphereradius', type: 'number', initial: 47, caption: 'Sphere Radius' },
{ name: 'soundhole', type: 'number', initial: 15, caption: 'Sound Hole Radius' },
{ name: 'wallthickness', type: 'number', initial: 2, caption: 'Wall Thickness' },
{ name: 'fragmentnumber', type: 'number', initial: 100, caption: 'Fragment Number' },
];
}