BleuBleu / FamiStudio

FamiStudio NES Music Editor
MIT License
1.59k stars 101 forks source link

MMC5 PCM or 5B's Noise planned? #168

Closed jadasse closed 1 year ago

jadasse commented 1 year ago

Could FamiStudio be the first emulator to implement these two features that have been neglected for a long time; or would not even emulators would support them; thus, there is no reason to do so?

Kenocrystal commented 1 year ago

I've already made an issue about this, specifically any plans to support the 5B's advanced noise and envelope/waveform features

The creator stated that they are just busy and focusing more higher priority things, and once there are less things on the list, there is a possibility that these features may be supported You can read that "issue" here: https://github.com/BleuBleu/FamiStudio/issues/106

If you want these features to come to Famistudio faster, consider helping out! :)

jadasse commented 1 year ago

Could FamiStudio be the first emulator to implement these two features that have been neglected for a long time; or would not even emulators would support them; thus, there is no reason to do so?

Furnace Tracker supports MMC5's PCM but it only has WAV and VGM export so that's no good and it's a tracker.

jadasse commented 1 year ago

I've already made an issue about this, specifically any plans to support the 5B's advanced noise and envelope/waveform features

The creator stated that they are just busy and focusing more higher priority things, and once there are less things on the list, there is a possibility that these features may be support

You can read that "issue" here: https://github.com/BleuBleu/FamiStudio/issues/106

If you want these features to come to Famistudio faster, consider helping out! :)

I would if I could code

Kenocrystal commented 1 year ago

I would if I could code

I don't know what to tell you then, you're just gonna have to wait, again, this is mostly just one person working on a program for 4 different platforms, things take time ¯_(ツ)_/¯

jadasse commented 1 year ago

I would if I could code

I don't know what to tell you then, you're just gonna have to wait, again, this is mostly just one person working on a program for 4 different platforms, things take time ¯_(ツ)_/¯

That's alright; I'm pretty patient

BleuBleu commented 1 year ago
jadasse commented 1 year ago
  • MMC5 PCM (or any form of PCM) will never be supported. Its a gimmick that makes cool tech demos but is 100% impractical on real hardware, in the context of a real game, except on a mostly static/black screen.

  • S5B will come at some point, someone is looking at it but he's also very busy. I'm personally not developing anything at the moment besides fixing bugs, not enough free time.

Alright; thanks for telling me.

Kenocrystal commented 1 year ago
  • MMC5 PCM (or any form of PCM) will never be supported. Its a gimmick that makes cool tech demos but is 100% impractical on real hardware, in the context of a real game, except on a mostly static/black screen.

It'd be nice for the chiptune artist though, and lets be honest, most things made in Famistudio are probably not going to be used for real NES hardware, but I respect your decision

I never knew the MMC5 was capable of PCM though, this is new information to me! What if somebody was to create their own branch of Famistudio with MMC5 PCM implemented, then would you consider?

BleuBleu commented 1 year ago

I never knew the MMC5 was capable of PCM though, this is new information to me! What if somebody was to create their own branch of Famistudio with MMC5 PCM implemented, then would you consider?

If they respect all the rules stated in the README in the contributing + testing section (https://github.com/BleuBleu/FamiStudio#contributing), and the code review is good yes.

But the problem is that you will not be able to make the sound engine work with PCM. Just displaying the little volume bars in the ROM and updating the other channel will take away the precious CPU time you need to constantly put the PCM data. So its pretty much doomed to fail.

And I don't include features in the app that arent supported on real HW, that's where I draw the line.

-Mat

Kenocrystal commented 1 year ago

Interesting line, but I understand Thanks for the communication! I think this issue is safe to close now, I don't own the thread though so, one of you two have to do it.

jadasse commented 1 year ago

But the problem is that you will not be able to make the sound engine work with PCM. Just displaying the little volume bars in the ROM and updating the other channel will take away the precious CPU time you need to constantly put the PCM data. So its pretty much doomed to fail.

I just realized something: why can't it just not be available for ROM? Some features that are present in NSFs would not be possible in respective ROM files, like multiple-expansion audio

jadasse commented 1 year ago

But the problem is that you will not be able to make the sound engine work with PCM. Just displaying the little volume bars in the ROM and updating the other channel will take away the precious CPU time you need to constantly put the PCM data. So its pretty much doomed to fail.

I just realized something: why can't it just not be available for ROM? Some features that are present in NSFs would not be possible in respective ROM files, like multiple-expansion audio

Assuming it won't work for NSFs either...

Kenocrystal commented 1 year ago

But the problem is that you will not be able to make the sound engine work with PCM. Just displaying the little volume bars in the ROM and updating the other channel will take away the precious CPU time you need to constantly put the PCM data. So its pretty much doomed to fail.

I just realized something: why can't it just not be available for ROM? Some features that are present in NSFs would not be possible in respective ROM files, like multiple-expansion audio

Bingo! Well, thats something I've wondered too, what if it was just implemented as a disable/enable option when enabling the MMC5 expansion. When you enable PCM and MMC5 PCM you could just have ROM Export disabled because its impractical on real hardware. Like when a warning sign pops up when you do something in Famistudio that might lead to some jank like multi-expansion and weird time signatures, you could have a red warning sign stating that "PCM ROM Export is not supported!" have the buttons for rom export disabled, and move on with your day.

But PCM export would be difficult to implement regardless. 2A03 PCM and MMC5 PCM are not the same so you'd probably have to have entirely different tabs and instruments for DPCM, PCM, and MMC5 PCM each. 2A03 uses 7 bits for PCM playback while MMC5 uses 8, which gives it alot more sample positions to choose from. I've read forums on the difficulty of getting PCM on the 2A03 to sound right. It sounds like alot of work.

But there are repositories of NES SND EMU (The library that is used to emulate the sound of the Famicom) out there that have both 2A03 PCM and MMC5 PCM implemented - so if you want to go through the trouble of compiling those and implemented them and new ui into Famistudio you can do so.