Page 1 of 2

SNES music program

Posted: Fri Jul 20, 2018 9:51 pm
by psycopathicteen
This weekend I started working on my own SNES music program. It's going to use the Mario Paint mouse and will have 3 main sections:

-SPC700 parameters (volume, ADSR, echo enable, etc)
-software synthesizer
-music tracker

The software synthesizer lets you create your own samples from scratch using a combination of additive synth and FM.

My "synthesizer specs" include, up to 4 operators per channel (maybe even 8 operators in the future). Operators can be a selection of waveforms (pulse, square, saw, triangle and sine) with detuning, FM modulation and ADSR settings (though you would have to be careful not to clash with the hardware ADSR).

There would be 5 sample loop settings:
-no loop
-single cycle loop (no detuning)
-multi cycle loop
-single cycle loop with attack (no detuning)
-multi cycle loop with attack

Re: SNES music program

Posted: Sat Jul 21, 2018 5:26 pm
by 93143
Sounds interesting.
The software synthesizer lets you create your own samples from scratch using a combination of additive synth and FM.
Do you mean offline processing? Are you going to try to do an optimizing BRR encoder?

Re: SNES music program

Posted: Sun Jul 22, 2018 10:00 am
by psycopathicteen
I found out using the Mario Paint mouse is harder than I thought. I thought the directions you move the mouse work the same as the D-Pad, and the 2 buttons are A and B, but I guess I was wrong.
93143 wrote:Sounds interesting.
The software synthesizer lets you create your own samples from scratch using a combination of additive synth and FM.
Do you mean offline processing? Are you going to try to do an optimizing BRR encoder?
I never heard of offline processing before, but it's going to attempt to compute the BRR samples with the 65816 as soon as parameters get changed, then feed them to the SPC700.

Re: SNES music program

Posted: Sun Jul 22, 2018 10:14 am
by tepples
The buttons are X and A, and the cumulative distance is in the sign-and-magnitude of the next 16 bits after the autoreader finishes. For more info, see "Mouse" on NESdev Wiki.

Need code examples? My NES programs with Super NES Mouse support include Controller test, Thwaite, Action 53 menu, and the sound effects editor that comes with Pently. NovaSquirrel has Sliding Blaster. The controller interface on the Super NES controllers works exactly the same way, except that the autoreader has already read the first 16 bits for you.

Re: SNES music program

Posted: Sun Jul 22, 2018 11:17 am
by psycopathicteen
So it's basically

lda $4016
lsr
ror {joypad}

8 times in a row, for 2 bytes.

Re: SNES music program

Posted: Sun Jul 22, 2018 11:19 am
by 93143
psycopathicteen wrote:I never heard of offline processing before, but it's going to attempt to compute the BRR samples with the 65816 as soon as parameters get changed, then feed them to the SPC700.
What I mean by "offline processing" is essentially just the opposite of "real-time" or "on-the-fly". As in, encoding to BRR once the user has designed the waveform and pushed the RENDER button, rather than live while the track is playing (or, I suppose, while the user is designing the waveform - I can't figure out what you mean by "parameters get changed"). I was wondering if you were going for an optimizing encoder, which I imagine would be easier to pull off without the rigid time constraints of real-time playback.

Re: SNES music program

Posted: Tue Jul 24, 2018 7:22 pm
by psycopathicteen
Got a piano working. Right now it's doing NES style square waves. I'm using hand coded samples that are 64 samples long, with a simple (-.5, 2, -.5} sharpening filter manually applied. I had trouble with aliasing on high notes, so I rounded the values to the nearest 64000/x Hz frequency.
music program.zip
(21.23 KiB) Downloaded 509 times

Re: SNES music program

Posted: Tue Jul 24, 2018 11:58 pm
by Erockbrox
I'm about to download this. I hope that I can plug in my MIDI keyboard and use it with the program. I also hope that the program is has GUI and I can actually understand how to use it.


*crosses fingers*


[edit]

Okay, All I got was this strange SNES rom which had a blue screen and an arrow that just flickered diagonally across the screen. So ???

Re: SNES music program

Posted: Wed Jul 25, 2018 1:53 am
by 93143
You have to put the mouse in port 2. Gamepad in port 1; it's used to manipulate parameters.

The graphics (other than the mouse pointer) don't work in Snes9X. Gotta use something else.

Re: SNES music program

Posted: Wed Jul 25, 2018 1:58 am
by Nicole
Erockbrox wrote:Okay, All I got was this strange SNES rom which had a blue screen and an arrow that just flickered diagonally across the screen. So ???
Gotta read the original post a little more closely:
psycopathicteen wrote:This weekend I started working on my own SNES music program. It's going to use the Mario Paint mouse
In other words, this isn't a Windows program for making SNES music. This is a SNES program for making SNES music. Or, at least, it will be eventually, I guess.

Re: SNES music program

Posted: Wed Jul 25, 2018 7:21 am
by psycopathicteen
93143 wrote:You have to put the mouse in port 2. Gamepad in port 1; it's used to manipulate parameters.

The graphics (other than the mouse pointer) don't work in Snes9X. Gotta use something else.
Oh yeah, I forgot. Snes9x is retarded.

EDIT:

Tested it. It's working on Snes9x correctly on my computer.

Re: SNES music program

Posted: Wed Jul 25, 2018 11:35 am
by Erockbrox
I used ZMZ emulator.

Okay so you need an SNES mouse then? Okay I will try it out on real hardware once I get an actual mouse.

Re: SNES music program

Posted: Thu Jul 26, 2018 7:21 am
by Fisher
Good idea!
Seems promising!
I'll keep an eye on it.

Re: SNES music program

Posted: Thu Jul 26, 2018 7:08 pm
by Drew Sebastino
Very interesting idea and certainly ambitious. Do you plan on adding any capability for samples too? That would be great, but I have no idea how you'd get this to work for a multitude of reasons...

Re: SNES music program

Posted: Fri Jul 27, 2018 7:12 am
by KungFuFurby
My instinct on adding custom samples would require the SRAM to be used and will likely require an external program to put them in there.