tildearrow / furnace

a multi-system chiptune tracker compatible with DefleMask modules
GNU General Public License v2.0
2.23k stars 198 forks source link

General major issues I catched (0.42) #16

Closed freq-mod closed 2 years ago

freq-mod commented 2 years ago

Philips SAA1099/AY-3-8910

AY-8930

Neo Geo

Sega Mega Drive

General PCM

General FM

PC Engine

C64 8580

YM2151

Other

Surely there are more... I will report them. I am aware fixing all of that will take some considerable amounts of time, just worth having that in one place to track the process of development of this promising software.

freq-mod commented 2 years ago

Ah, a lil nitpick:

Arcade

Which arcade? There were tons of arcade cabinets with YM2151 and PCM sound source... which one is this, with 5ch PCM? ( ͡° ͜ʖ ͡°) please Sharp X68000

cyberic99 commented 2 years ago

Actually, I think, PCM for all chips should be handled Amiga-style, with free pitch control, as much as the chip can handle...

I think that would be great but compatibility with deflemask should be preserved when possible, so maybe 2 modes could be possible

I think that in deflemask, pitch changes do not affect samples, but I'm not sure

freq-mod commented 2 years ago

Exactly! Deflemask mode for operation, where stuff behaves like in DM, and Furnace mode, which fixes all these questionable design choices.

N-SPC700 commented 2 years ago

Which arcade? There were tons of arcade cabinets with YM2151 and PCM sound source... which one is this, with 5ch PCM? ( ͡° ͜ʖ ͡°) please Sharp X68000

The "Arcade" naming is recycled from Deflemask. I believe it's one of the SEGA machines (SEGA System 16B?), considering the emulated PCM is the SEGA PCM chip. A "general" YM2151 export would be a pain in the ass, though. Each system using it changed the clockspeed, so it'd sound fine on one and horribly detuned on another.

I think that would be great but compatibility with deflemask should be preserved when possible, so maybe 2 modes could be possible

This is already done. There's the "compatible" pre-existing dmf format, and the more capable "furnace" format specific to the tracker.

freq-mod commented 2 years ago

The "Arcade" naming is recycled from Deflemask. I believe it's one of the SEGA machines (SEGA System 16B?), considering the emulated PCM is the SEGA PCM chip. A "general" YM2151 export would be a pain in the ass, though. Each system using it changed the clockspeed, so it'd sound fine on one and horribly detuned on another.

I see, but

  1. It's not like you can play arcade songs on a real cabinet, since that would require manufacturing a new PCB for that, afaik.
  2. Sega System 16B has 16 PCM channels. I don't see reason for artificially limiting an amount of PCM polyphony. If too much channels are visually a problem, BambooTracker has a neat feature - you can hide channels per song. 3. Sharp X68000 YM2151 + OKI ADPCM support is more attractive for me lel

As for furnace format, still PCM sample handler is limited I think. Although didn't really had a deep dive yet.

cyberic99 commented 2 years ago

A "general" YM2151 export would be a pain in the ass, though. Each system using it changed the clockspeed, so it'd sound fine on one and horribly detuned on another.

I thought the 'standard' clock was 3579545 Hz. But yes, it seems that at least the x68000 uses 4MHz

N-SPC700 commented 2 years ago

It's not like you can play arcade songs on a real cabinet, since that would require manufacturing a new PCB for that, afaik.

simple, just burn a few EPROM chips. All arcade machines (especially the SEGA System designs) run from ROMs, so by replacing them you can run whatever you'd like.

As for furnace format, still PCM sample handler is limited I think. Although didn't really had a deep dive yet.

Yes. It is. I believe this might be changed in the future. Well, I hope it will be...

freq-mod commented 2 years ago

I see. Only don't know how is that with other YM2151 based arcades, like CPS-1, Namco System 2 or Toaplan 2, so that must be considered if furnace will target these machines too.

N-SPC700 commented 2 years ago

I think a good general solution would be to allow the user to set the clockspeed of the YM2151, so they can target multiple systems (and also add preset clockspeeds for systems like the X68000, System 16B, etc.)

freq-mod commented 2 years ago

Also, selectable clockspeed for YM2612, as it's clocked at 7.67 on NTSC Mega Drives and 8 MHz on Fujitsu FM Towns computers.

tildearrow commented 2 years ago

no ability to set tone/noise (ah, on AY it's via wave macro, not too intuitive) or envelope generator/square mask can it be a macro like in Bamboo?

Yep, currently the macro works but is very ugly. Improvements to this UI are coming soon though.

no ADPCM-B channel. It's Neo Geo CD?

It's to remain DefleMask-compatible, but I do plan in adding that channel in a future version.

Actually, I think, PCM for all chips should be handled Amiga-style, with free pitch control, as much as the chip can handle... MD uses software mixing, so it's a matter of driver.

Hmmmm... I could do something like effect 17FF to enable Amiga-style sampling...

sample editor, not too pleasant IMO, even compared to DM. I would like to propose sth like BambooTracker's (yeah, I repeat myself with it lol) sample editor:

Sample editing within Furnace is not possible yet, but is planned.

having common FM editor for YM2612 and YM2151 might be a bit confusing, since 2612 doesn't have DT2... it can be grayed out, if having separate editors for each system isn't viable?

Not possible because of multi-system support. But there is a tooltip that tells you DT2 is YM2151-only.

Waveform creator can create 256x256 waves. Since PC-Engine can handle only 32x32 waves, at least without tricks, that might be somewhat confusing.

Intentional. Wavetables are downscaled to fit within a system's limits. These wavetables go up to 255 since I am planning to add wavetable support to Amiga soon.

PCE wavetable cycling sounds dirty wavetable_cycling_PCE.zip, almost like it doesn't wait the end of the wave before switching to the next one

Unless there is a way to alter the waveform without resetting phase, this is not fixable. The reason why DefleMask allows it is because it modifies the emulation state directly or does some other trick I am not aware of, but even on export it sounds dirty.

freq-mod commented 2 years ago

I see. Thanks for explanations. By sample editor i meant what is already here - having to hit apply after each change, also it's slightly clunky in some cases IMO

freq-mod commented 2 years ago

With regards to AY8930, is it normal that it has only 5 selectable duty cycles (from 6.25 to 25% and 50%, no 31.25% and such)? and duties 5-8 are duplicates of previous ones? I'm not familiar with AY8930 capabilities, I thought it allows for more variable pulse width control...

tildearrow commented 2 years ago

With regards to AY8930, is it normal that it has only 5 selectable duty cycles (from 6.25 to 25% and 50%, no 31.25% and such)? and duties 5-8 are duplicates of previous ones? I'm not familiar with AY8930 capabilities, I thought it allows for more variable pulse width control...

Yes, exactly. If you mean PWM on the Wansui song, then I think that's done using noise with pulse and the noise AND/OR mask, which was not emulated until 0.4.3.

StinkerB06 commented 2 years ago

With regards to AY8930, is it normal that it has only 5 selectable duty cycles (from 6.25 to 25% and 50%, no 31.25% and such)? and duties 5-8 are duplicates of previous ones? I'm not familiar with AY8930 capabilities, I thought it allows for more variable pulse width control...

The duties are:

0 - 3.125% 1 - 6.25% 2 - 12.5% 3 - 25% 4 - 50% 5 - 75% 6 - 87.5% 7 - 93.75% 8...15 - 96.875%

freq-mod commented 2 years ago

SAA1099 waveform macro is really strange: 0 is complete silence, 1 is tone and both 2 and 3 are noise, no tone + noise? Idk, not familiar with SAA either, so I'm asking

tildearrow commented 2 years ago

3 should be noise and square. Last time I tested it seemed to work... I will redesign the SAA/AY wave macro UI soon.

freq-mod commented 2 years ago

I see, thx for explaining

I think about sensible macro for hw envelope. Bamboo has it, but it's a liitle rough and a bit limiting, will ask some people more knowledgeable about AY about some requests or ideas.

freq-mod commented 2 years ago

Can SAA produce tone + noise, like AY?

tildearrow commented 2 years ago

Yes, it's able to but with some limitations (not sure if I am doing something wrong). Only some channels work, and sometimes requires two channels to be active for it to work.

tildearrow commented 2 years ago

stereo panning effect for SAA1099 (does it work that way?)

There is. 08xy will do the job. x is left channel and y is right channel. This is the case for Arcade and PCE systems.

tildearrow commented 2 years ago

waveform macro doesn't have envelope option. Is it due to how envelope works on SAA?

Yep. SAA1099 envelope generators affect 3 channels at once.

freq-mod commented 2 years ago

When jamming keyboard at wavetable preview, you can't play chords, I noticed

tildearrow commented 2 years ago

Oh no......... That's sadly intentional, as there is only one preview channel...

freq-mod commented 2 years ago

why? shouldn't it be there am much preview channels as the chip provides (6 in case of PCE, 1 in case of GB)

tildearrow commented 2 years ago

The reason is because wave/sample preview is not done in the emulated system, but rather on a separate channel (to allow previewing even when no compatible systems are present).

tildearrow commented 2 years ago

I see, thx for explaining

I think about sensible macro for hw envelope. Bamboo has it, but it's a liitle rough and a bit limiting, will ask some people more knowledgeable about AY about some requests or ideas.

Added AY envelope macros for 0.5 (including AutoEnv macros).

freq-mod commented 2 years ago

whatever, sample editor rewrite is goin on, amiga wavetable synthesis is confirmed

tildearrow commented 2 years ago

No closing the issue early on time.

tildearrow commented 2 years ago

All tasks done for 0.6 - closing.