Wohlstand / libOPNMIDI

A Software MIDI Synthesizer library with OPN2 (YM2612) emulator
GNU Lesser General Public License v3.0
96 stars 6 forks source link

Using automatic arpeggio chords makes some music bad #101

Closed denjhang closed 3 years ago

denjhang commented 3 years ago

Can you provide the option of auto arpeggio on or off? When I used the MIDI to VGM tool, I found that adding automatic arpeggio to some music that needed multiple chords made the music hard to listen to, and the notes were always vibrating.Especially in the slow rhythm of lyric music, this kind of automatic arpeggio is not suitable. My suggestion is: when the channel is not enough, directly cover the first note pressed, just like the normal OPL3 driver. Or give me an option to use auto arpeggio or overlay old notes.

Wohlstand commented 3 years ago

I thinking on that, and the thing will need a work at libADLMIDI, because it works faulty with 4op channels when use mono-chip mode

Wohlstand commented 3 years ago

However, on libOPNMIDI it works good

Wohlstand commented 3 years ago

You can generate VGMs by --chips 2 flag to use duo-chip and extend channels up to 12 from 6.

denjhang commented 3 years ago

Due to the use of FM extra channels, a single chip should have eight channels, which is enough for many midi. Personally, I prefer to deal with channel pressure in a way that covers old notes. In fact, I just like the single ym2612, because it can be easily played on my hardware VGM player (only a single ym2612). If I use the dual chip option, in some cases, there will still be insufficient channels leading to automatic arpeggio. I think it will be better to simply cover the old long notes.

Wohlstand commented 3 years ago

If hardware, then yes, the monochip only. Anyway, I'll try to make this option at evening (utc+3), or after I'll complete some organizing at my home...

denjhang commented 3 years ago

I have some MIDI with no more than 8 channels, but there will be more than 8 polyphones in some parts, but only a few times. If you use automatic arpeggio to deal with them, the whole music has a kind of discordant feeling. It seems to be a better option to overlay old notes, which can sound more channeled without creating discordant feelings. (of course, if the Polyphony reaches more than ten, the effect will be very bad. If the Polyphony is less than ten, the effect should be good.)

denjhang commented 3 years ago

In addition, for the problem of insufficient channels of ym2612, I have another solution, which is to use a chip like OPL3 with several times the number of channels than OPN2. I also have an OPL3 hardware player, which is also a single chip. It's just that libADLMIDI doesn't have the function of converting vgm, and we look forward to your development.

denjhang commented 3 years ago

@Wohlstand Waiting for you

Wohlstand commented 3 years ago

Just now I made the ability to disable an automatic arpeggio. Use -na flag at opnmidiplay and at midi2vgm to use it. :fox_face:

Wohlstand commented 3 years ago

The working demo: [Uploading HungarianDance1-midi2vgm-no-arpeggio.zip…]()

Wohlstand commented 3 years ago

This archive contains two VGM files: one with arpeggio (si.arpeggio), and second without auto-arpeggio (no.areggio) HungarianDance1-no-arpeggio-demo.zip

Wohlstand commented 3 years ago

Also, sorry for the long delay, I was busy at my side, however, I found a time window to make this thing now :fox_face:

Wohlstand commented 3 years ago

@freq-mod, I checked them at ZXTune, on Linux, and on my phone, both works... :thinking: Did you properly unpacked them?

Wohlstand commented 3 years ago

VGMPlay reports error 0x01 opening file

Heck the ANSI charsets on Windows, on Linux at me all works properly because of UTF8. Try to rename files into any random and retry.

freq-mod commented 3 years ago

Yeah, now works. Sorry about that.

freq-mod commented 3 years ago

vgmtests.zip - fair enough 👌

freq-mod commented 3 years ago

Now if YM2608 support was added into midi2vgm and YM2608's ADPCM rhythm channels were implemented into libOPNMDI... then FM channels would get offloaded by not having to play drums, even single-chip VGMs would become listenable 💭

Wohlstand commented 3 years ago

Before I can have that I will need to complete my work with WOPNv3 and OPN2-BE side to support those features at the bank side, then I can support that at libOPNMIDI and at MIDI2VGM too.

freq-mod commented 3 years ago

Well, these ADPCM channels are not much unlike OPL percussion mode - six samples baked into YM2608's internal ROM, each of them having their own channel assigned to them. Only volume and panning can be tweaked, pitch, sample rate and other stay fixed.

Wohlstand commented 3 years ago

Yeah, I know them, however, I still need a bank-side update. Using anything also needs me to make the system of instrument types, etc.

denjhang commented 3 years ago

I found a problem, why not use FM extra channel? @Wohlstand

denjhang commented 3 years ago

Very satisfied at the moment, but it will be better to use FM extra channel. The melody of lovers.zip

Wohlstand commented 3 years ago

FM extra channel?

I do use 6 FM voices of OPN2, what do you mean?

freq-mod commented 3 years ago

FM extra channel

Um..... do you mean FM channel 3 special mode, when you can split channel 3 into two 2-op FM channels? (one in made up from operators 1 &2, second is operators 3 &4) With that, you can even have four sine-wave channels, depending on instrument algorithm

Because, that's the only way to have anything that can be called "extra FM channel".

Wohlstand commented 3 years ago

Very satisfied at the moment, but it will be better to use FM extra channel. The melody of lovers.zip

Anyway, as you had tested the thing, the task of this use has been solved :fox_face: