Skip to content

About

🎵 Japanese cell phone ringtone format player

Topics

Resources

Stars

2 stars

Watchers

2 watching

Forks

Latest commit

 

History

127 Commits

Folders and files

Repository files navigation

Release Java CI CodeQL Java

vavi-apps-mfiplayer

logo

♬ MFi Player w/ dedicated synthesizers

type synth receiver how status comment
smaf Nuked VaviSmaf pure java ✅️🚧 only adpcm
smaf Nuked - pure java ✅️
smaf Ma7 - pure java ✅️🎯 the engine of mfi:yamaha, adpcm
mfi:fuetrek Faith VaviMfi dll on emu ✅️🚧 TODO heavy, timing, send adpcm to dll
mfi:fuetrek Fuetrek - pure java ✅️🎯 uses AudioEngine inside
mfi:yamaha Nuked VaviMfi pure java ✅️🚧️ only adpcm
mfi:yamaha Nuked - pure java ✅️ sample needed
mfi:rohm Rohm - pure java ✅️🎯 bit exact to rt_synth_2.dll, no UCS
mfi:yamaha Ma7 - pure java ✅️🎯 bit exact to libM7_EmuSmw7.so
  • 🎯 perfect reproducibility

Install

Usage

system property

  • vavi.sound.midi.ymf262.soundbank ... a soundbank file for the synthesizer to play, read through the SoundbankReader spi. Nothing named means the OPL3 (YMF262) bank each synthesizer comes with, which is what they were made for. Both of them take it. An MA-3 preset voice library (.vm3, "FMM3") is one such file, e.g. DefMA3_16.vm3 of mmftool: its FM voices are what gives a wave table voice a timbre, the drum kit next to the standard one holding an FM voice for every note the standard one plays a rom wave for. It is read into the OPL3 bank of this package (YmF262Soundbank, what a .sbi or .o3 is read into as well), so by hand it is synthesizer.loadAllInstruments(MidiSystem.getSoundbank(new File("DefMA3_16.vm3"))).

  • vavi.sound.mobile.AudioEngine.volume ... the volume of the line an adpcm engine of vavi-sound opens for itself (default 0.2). When a synthesizer here mixes the streams into a song instead, no such line is opened and this does not apply: the synthesizer says how loud they are, vavi.sound.ma7.adpcm for the MA-7 (default 1, level with the sound source).

  • vavi.sound.mobile.AudioEngine.disabled ... what its name says is not what it does. In vavi-sound 1.1.3 it is read by MidiContext and ProgramChangeMessage of the smaf spi and by nothing else, so it changes one thing only, and only for a "Mobile Standard" SMAF file: what a percussion channel of it becomes when the file is read as a midi sequence. It is to be set before the file is read, being the reading it changes; the waves of a file travel the same either way.

    • with the flag (true) ... a percussion channel keeps its own midi channel and its own program, which is the drum kit of the file (Bank_Program3 of the MA-3 driver). This is for a synthesizer which plays the file's own voices - the MA-7 ones (vavi.sound.smaf.ma7, vavi.sound.midi.smaf) and the OPL3 ones with the voices of the file loaded - and it also keeps the streams of a file, which are notes of key 0 ~ 12 / 92 ~ on a channel of the bank MSB 0x7d, off the drum channel
    • without the flag (false) ... every percussion channel goes to midi channel 9 and its program becomes 0, which is what a GM synthesizer wants

MFi chip detection

References

TODO

  • nuked soundfont
  • yamaha
  • fuetrek
  • rohm
  • sysex wiring
  • test openDoja synthesizer ... vavi-sound-sandbox
  • ma# timbre ... DefMA3_16.vm3, the FM kit is the timbre of a rom wave note
  • for what instrumentation jar is in pom.xml? ... for apple.ewt? samples is in vavi-text-aozora and that not uses instrumentation

image designed by @umjammer, drawn by nano banana

About

🎵 Japanese cell phone ringtone format player

Topics

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages