Is it possible to make a Snap! to Scratch converter?

Can it be done? Is it currently possible to convert a Snap! project to Scratch? If not, could it be possible to make a converter?

I don't think so because there are so many features and blocks that Snap! has that Scratch does not have.

It could be possible to add replacements to those things. For example, the warp block could become a "run without screen refresh" custom block when converted to Scratch.

Can you provide more examples?

numbers from () to () could be turned into a script that adds numbers to a list until it reaches a specific number when converted into scratch, <shown?> could be turned into a variable, etc.

though not everything could be replaceable

everything is possible, but what's the point of a convert to scratch.
Snap is more powerful, the only Con of using Snap is you will never be popular and there's no comment section, you can provide a link in your scratch project.

scratch is better for projects that use music, sounds, art, etc.

nope, it's not(maybe it is, but you don't need it), you can drag the art and music directly fro scratch to snap. Another con: right now snap don't have anti-cheat cloud vars which is very very annoying

you can barely put any sounds into Snap! projects at the moment

you can drag the sound file into it, but
I still encourage you to make a scratch converter

Little frills like NUMBERS FROM could easily be written in Scratch. The things that can't be done are Snap!'s core features: first class procedures, first class lists, and first class objects (sprites, costumes, and sounds). So if your project has a gray ring in it, or a two-dimensional list of lists, or the MY block, that's the sort of thing that's untranslatable.

(Note: I'm not saying that the program couldn't be rewritten in Scratch; Scratch is Turing-equivalent. But it would be a complete rewrite, not a translation.)