EDIT:
www.alyjameslab.com
Coming next >> VGM conversion smile
Go to the download section, under FMDrive you will find among other tools a link to the MIDI 2 VGM conversion pack (Convert your FMDrive or/and SPSG track to a .VGM format. (Win Only), info and how to included.

https://www.alyjameslab.com/download.html

FMDRIVE is a VST SYNTH that emulate the SEGA GENESIS/MEGADRIVE FM sound chip and adds a lot of extra features

FMDRIVE is not another YM2612 emulator it is a WIN VST instrument with live control in mind. Extended features add the full FM power underneath the original concept...Feel free to ask if you have questions

AUDIO DEMOS : https://soundcloud.com/alyjameslab

I learn a lot from documentations and all the nice people who documented the YM2612 on the web.
you know who you are smile
It turns out to be quite nice so I decided to make it public in exchange for a small donation for the large amount of work I put into this.
Package can also control the Little Scale GENMDM midi interface for those who have one or be converted into a VGM file for hardware play.


ABOUT FMDRIVE 2612 VST

This emulation uses a totally new core that I started from scratch a few months ago and was almost fine tuned by ear
so minors differences with the hardware could appears sometimes.(improved in 1.23)
The goal was on one hand to reproduce the hardware distortion of the sega megadrive and features of the YM2612 chip
and on the other hand to expand further the original capabilities and create a high resolution processing mode for perfect sound quality.

I tested the not well known CSM "illegal mode" usage, designing custom roms to investigate further
and finally include a way in FMDRIVE 2612 to use it for modern music production.
All and all the YM612 EXTENDED emulation turns out to be a fantastic synth suitable for chip music
and FM nostalgic pleasure and also a powerful tool for modern production.

Fact is that the Megadrive had a very characteristic and cool sound, -much- cooler than Nintendo's smile
I grew up playing some great games on the genesis.
So, I thought the Genesis / Megadrive also deserves that kind of attention and its own project.

You may think, the YM2612 chip is basically another 4 Operator YAMAHA FM synth but there is more...
DAC, SSG Envelopes and Special operating MODES like CSM speech synthesis.
On top of that the SEGA had a distinctive distorted sound, more or less present, depending on revision models.
FMDRIVE add many extended features and huge user friendly GUI!

You can design a vast range of sound on top of 33000 instruments presets already available from Games ROMS.
Go further with extended controls, and even midi control a real sega genesis with a special hardware add on interface:
GENMDM designed by Little Scale.(see the thread)

DONATION start at 13 $ (10€)  and PACKAGE  INCLUDE
45 PAGES USER MANUAL
FMDRIVE 2612 Standalone with nice BIG SIZE GUI 1296 x 787
FMDRIVE 2612 Vsti with nice BIG SIZE GUI 1296 x 787
FMDRIVE 2612 Vsti with smaller SIZE GUI 1037 x 630 (coming soon : for lighter configurations)
VGM2TFI 2.0 with GUI (extract tfi patches from VGM with "corrected DT parameters" and create a folder with the name of the VGM)
HUGE FULL SET OF TFI PATCHES (round 33000!) from game ROMS etc...

TUTORIALS will also be available soon:
-DIFFERENT WAYS TO EXTRACT SAMPLES FROM A GAME
-FROM DAWS TO THE SEGA GENESIS HARDWARE (compose a song with fmdrive and play it on the real hardware)
_____________________________________________________


There is already some vids on youtube that I made during the development process. however final version got quite some changes, improvements and accuracy.
For example some fun with the CSM mode...
http://www.youtube.com/watch?v=A1OUGzeD … LXug3hdhnA smile

++ AJ

UPDATES LOG

V1.23
--------------------------------------------------------------------------------

- Rewritten envelope cycles system
- Improved accuracy over volume tables
- New SSG selection method
- Adjusted PCM DAC ladder noise
- Corrected DAC on/off register not being saved with patches
- Solved Program change memory BUG causing certain YM2612 registers not being updated
after closing and re-opening the plug-in interface.


V1.22
--------------------------------------------------------------------------------

-Pitch Bend range can now be set (1-12 semitones)
-Glide Mode can be set to Portamento or Glide behavior


V1.2
--------------------------------------------------------------------------------

- Rewritten Fast & Accurate distortion emulation "ladder effect" of MD model 1
- PCM sample data DAC filter improved (now also benefit from the ladder effect too)
- New DAC PCM data read LOOP function (can loop the sample data with start and end point for nice fx)
- New DAC PCM wav files can now also be browsed & imported via windows native explorer (with no location limitation)
- New Polyphony up to 6 voices
- New  optional frequency FREEZE (fixed frequency) for SPECIAL MODE
- New solid or line view for the envelope generators display with release stage highlight
- Improved CSM mode implementation
- CSM mode now respond to Release rate (RR) and handle external MIDI channels correctly
- Glide is now available in polyphonic mode too with time and slew rate control!
- Improved MONO mode
- Init state will all operator pre-activated

Make the SEGA GENESIS Talk : CSM control
Finally I have made it smile
For the final stage of development of my sega genesis sound chip emulator F-MDRIVE 2612 Vsti, I was trying to give more usable control of this speech synthesis thing aka CSM mode.
Now we can :

    Control the 3 supplementary YM2612 CH3 frequencies and separate key on/off my different MIDI channels(MIDI channel 11,12,13). pitch bend included
    CSM on/off is internally controlled by key on/off to bypass the original behavior.
    Timer A speed can now be controlled by MIDI notes !(MIDI channel 14).pitch bend included


So it means that combining 4 MIDI channels of control we can change the formants and tone and keep control over the actual frequency with Timer A tied to MIDI notes. (in the limit of timer A speed, still there is a quite usable range!)
The CSM mode could now be used to make some robot vocal noise, talk or play notes with formant control over the sound...kind of virtual robot singing tone ^^

If the user find a way to make a word it is easily saved or reloaded just by saving the appropriate MIDI channels in the project. This way one could save some "words midi data" and use them again in another project.

I recorded a raw preview of this as i was testing it in ableton live...
(also a snippet of the DAC custom waveform..)
Next I will post the full specs of the F-MDRIVE 2612 Vsti.
It should be out in 10 Days more or less for people who already knows about the baby and a few weeks after for the rest of the world.
Keep watching the news. GENMDM Controller version will be available for free for customers as a download as soon as I received my GENMDM and make some testing smile
Best ++

Hi guys, this is gonna be my last message here regarding the FMDRIVE 2612 Vsti before I open a proper thread smile
Might be of interest , basic audio compare between sega megadrive hardware and the software...

little-scale wrote:
Aly James wrote:

Beer accepted smile
I am going to post something really interesting regarding the so called  CSM Mode ! Speech Synthesis on the Genesis...

When activated We are in SPECIAL MODE plus Auto KEY ON/KEY OFF is pulsing @ the TIMER A RATE.
Defining some different frequencies in the vocal range on the operators and toying with the timer A gives me a really nice output and a basic proof of concept that it should be usable...at least on the FMDRIVE!  Seb if you got the time to  test it out on the hardware if would be cool smile
It seems that timer A ranges from +/-19ms down to 18.77µs... my emulation cannot go down this low for note on/off but we can reach 8000BPM easily without CPU killing, very usable range!...

CSM speech audio recording are very rare so...I will drop a vid with a sound recording from the FMDRIVE IN CSM MODE ASAP! ...I mean 2day smile


very interesting. i will try this out on hardware once i get the chance!

Great! Some basic info:
-On CH3 Use a slot with for example Algo 0.
-CSM will key on/off automatically as long as you not manually key on. Timer A is on LOAD
-Slowly increase a modulator TL to something like 27 or so.
-Use The CH3 feature to change the frequencies between the carrier and the modulator to some formant vocal range.
-Use the Timer A speed to control if the voice is low or high... like a throat .
Complex combination of FRQ/TIMER A and TL parameters can make the sega kind of talk...yeah smile

EDIT:
To be more precise I will add this:
If it works, you could swap:

1)Test register 0x27 Lowest 6 Bits CC 92 (timers function not very useful?...Timer A is automatically loaded when the CSM Bit is set?)
or if need to be set,
2)Test register 0x20 ,CC 94,95. (still do not know what it does...)

for the 10Bits Timer A registers:

Register 0x24 Timer A MSB Highest 8 Bits
Register 0x25 Timer A LSB  Lowest 2 Bits (might not need this one...)

With the highest MIDI CC 127  we could set the Timer A to his lowest period and so on:
18 x (1024 -TIMER A 10bits) microseconds (NTSC).

Remember that CSM mode will be active only when the channel 3 mode status bits D7,D6 are set to 10, not when they are set to 11. However The "special" Multi frequency control is always activated in CSM mode like in "special" mode D7,D6  01...
anyway, happy testing! ;p

Hi, This is going to be a long post regarding the tfi format conversion and the detune parameter DT..
There is an error in the tfi format conversion that should be corrected..

If you implement a software with a tfi import function,you cannot simply read the tfi DT bytes because it is a conversion from the original YM2612 DT register.

First YM2612 Register DT ranges from:

DATA  0 - 1 - 2 - 3 - 4 - 5 - 6 - 7
----------------------------------------------------
PITCH 0  -1  -2  -3   0   1   2   3

small decrease on the pitch (from 1 to 3)where 3 is max.
small increase on the pitch (from 5 to 7)where 7 is max.

So the maximum detune between two operator is:
3 from max decrease and 7 for max increase.

In the tfi 42 bytes long format, DT parameter was converted
following a table and adding +3 to the register value.
Like so:
DETUNE TABLE(8)
0  1  2  3  0 -1 -2 -3

Conversion happens like so:
--------------------------------------------------
-Converters read the DT register
-DT register is converted to the table value
-Add +3
Result will always give values ranges from 0 to 6.

So DT register will be written in .tfi format like so:

DT REGISTER    0 - 1 - 2 - 3 - 4 - 5 - 6 - 7
-------------------------------------------------------------
DT TFI FORMAT  3   4   5   6   3   2   1   0

The tfi DT byte is read like so in softwares:
DT TFI FORMAT                                0 - 1 - 2 - 3 - 4 - 5 - 6
------------------------------------------------------------------------------------------
DT VGMM,TFMM,DEFLMASK etc     -3  -2  -1   0   1    2   3 

If you followed so far you can see that the parameters are inverted were 3 is -3 and so on.

More, If you extract a tfi patch with the very useful GenKmod the DT bytes will be saved with the original register value witch is plain correct but will produce incorrect values in every trackers that followed the tfi DT table...

So for compatibility with my FMDRIVE 2612 Vsti and LittleScale Genmdm Midi Interface I have rewritten a vgm2tfi 2.0 converter that output direct DT register values (0 to 7) with no changes.
and a classic one for compatibility sake with a reverted Dt table.

smile AJ.

So there it is .. (as always sound is not synchronize to the video smile sloppy video card....)

Beer accepted smile
I am going to post something really interesting regarding the so called  CSM Mode ! Speech Synthesis on the Genesis...

When activated We are in SPECIAL MODE plus Auto KEY ON/KEY OFF is pulsing @ the TIMER A RATE.
Defining some different frequencies in the vocal range on the operators and toying with the timer A gives me a really nice output and a basic proof of concept that it should be usable...at least on the FMDRIVE!  Seb if you got the time to  test it out on the hardware if would be cool smile
It seems that timer A ranges from +/-19ms down to 18.77µs... my emulation cannot go down this low for note on/off but we can reach 8000BPM easily without CPU killing, very usable range!...

CSM speech audio recording are very rare so...I will drop a vid with a sound recording from the FMDRIVE IN CSM MODE ASAP! ...I mean 2day smile

neat smile

Hi Seb,
I'm actually coordinating with a bunch of developer (Apollolux), (ValleyBell) (superjoebob on SpritesMind Forums) to have VGM2MIDI dump YM2612 registers to MIDI CCs!  I have send them the actual v102 CC MAP for direct compatibility in case of fixed CC...hope it will go somewhere..:)
by the way what is the state of the second GENMDM row (witch I am in) I actually have to wait for the device to implement the controller version of FMDRIVE 2612 smile
Also I saw your SN76489 teensy thing, do you provide the arduino code somewhere ?
++

Might be of interest for those who follow the work on the FMDRIVE 2612 Vsti, improved tfi import function, load on one clic and fast ^^ ...closer to the release...

A Kind of reverse genmdm, yes smile lots of work indeed but could be fun!

Between
-Added .tfi export to FMDRIVE 2612 Vsti  also save as plain text decimal data
One ot two more thing to work on for the SSG part.. and we are close to the release smile
++

Also I think that i could send vgm midi data to my fmdrive vsti  that way...including midi cc! That are already mapped to genmdm...i already have a vgm to midi thing that works well for notes/pitch/pan bit nothing for the others register except patch changes. So you have to manualy import presets instruments before..and some registers variation are excluded...anyway it is a good way to explore vgm game music , fun and inspiring smile

So the midi out of your max patch contains raw midi data converted from the vgm, that is great so if we send the midi out to a synth or whatever it will receive midi notes / per channels + cc ? That is huge , so The psg midi data for exemple to anything that received the right channels?

little-scale wrote:

Real time PSG VGM data hardware playback via GenMDM: http://little-scale.blogspot.com.au/201 … enmdm.html

It makes me think...does your vgm loader convert to midi prior to sending midi to the genmdm or those it sends directly registers writes ?
because if it is vgm to midi in real time...it opens up a lot smile
anyway looking good!
thx for the comment between

little-scale wrote:

Not scaled! It's a typo, and only should send from 0-15

So here is my little contribution a vgm 2 genm converter...it could be useful if you want to process some vgm's that were not included in tfi packages
or convert some personal vgm instruments...
tested and works fine smile

Give it a try!
The only thing we got to get right is the DEC2 (secondary decay) parameter, I tested both with mine and your tfi 2 genmdm and also directly reading from actual tfi / vgm files.
DEC2 secondary decay ranges from 0 to 31 not 0 15
so if you try to load and instrument that has more than 15 on the secondary decay (say 25) the value will be 15 anyway when loaded to genmdm editors causes differences in the sound.
Check out some of your genm files you should find quite some with more than 15 on DEC2.
Also as 0 15 is actually mapped to 0 127, a 15 on DEC2 correspond to 31 on the hardware and so on...
Whether or not you change the range on the editors or on the tfi/vgm data import will make the problem solved.

I do not know if it makes sense...maybe I do not understand some internal conversion well...you tell me smile


//----------------------------------------------------------------------------

// VGM2GENM v1.0 by Aly James, 02.01.13
 

//for use with the GENMDM Midi Interface by Little Scale
//based on original vgm Shiru converters code
//small command line tool to convert VGM files to GENMDM Bank Instruments Presets

//----------------------------------------------------------------------------

Simply drag and drop a .vgm file onto vgm2genm.exe
will output a .genm file in the same forder
You can drop many vgm at the same time.

You can also process a whole directory with all sub folders
using this command line with cmd.exe :
vgm2genm.exe [path\\]* to process whole directory with all subdirectories

source included : need Zlib to compile.
Have fun!

AJ.

https://dl.dropbox.com/u/58656523/VGM2GENM.rar

little-scale wrote:

GenMDM .GENM patch storage file format info: http://little-scale.blogspot.com.au/201 … ument.html

Sorry to bother, I need one more detail to be sure smile
SSG is 0 31 in the MAX editors , data range 16 in the midi CC map.txt
extracted from a .tfi file we have 0 7 : disabled  8 to 15 : on/ SSG shape
when I convert a tfi where I got 8 on SSG (enabled / shape 0) I got an 8 too in the editor, so how is this scaled ?
thx