1

Though there have been some great strides in various parts of Neo-Geo content creation in the past few years, one thing is still bothering me: music and sound playback without using the ADPCM channels. (Also, playing FM/SSG along with PCM channels, but that can be dealt with after the others.)

Chris Covell managed to figure out the ADK driver and its use of MML, but I personally find composing with MML to be a hassle. I guess that's really my fault for liking tracker-based workflows better. (Also I don't really want to emulate another system to track music unless it's the Amiga; stubborn freem strikes again!)

One of the first ideas I had was to make a native tracker (running on the Neo-Geo), but after realizing that the 68K<->Z80 comms would be a bottleneck, I scratched it. (Maybe it's not a lost cause, but that was the main issue on top of trying to figure out how to implement a decent interface.)

Back in 2015, I started to hack up the MVSTracker source code, to see if that was a viable way forward. I had no real idea what I was doing, so the project got shelved after some frustration. Fast forward to today, where I've picked it up again (knowing slightly more than I did before), but am still having troubles (primarily with rewriting the Z80 driver and having it still be able to preview music). Sometimes, I wonder if throwing it out and writing a new tracker from scratch is a better idea.

The real reason I'm posting this is that I want to not really duplicate effort in this (or any FM/SSG related) field, just in case someone else has been working on something. Trying to figure out a reasonable path forward would be nice, as well as alternate avenues (for the adventurous).

List of dumb things to think about:
  • Converting the Echo sound driver to Neo-Geo
  • Conversion tools for S3M (ScreamTracker 3) songs that use AdLib instruments; AdLib Tracker 2 files (or some other 4-op capable AdLib composers); Deflemask files for Genesis/Mega Drive? (Among various other options)
  • Some sort of VGM converter (since uncompressed VGMs are too big for Z80) and player
  • Deflemask getting Neo-Geo support (as an alternative to converting from Gen/MD)
  • You might think about using various tools on MSX, PC-88, X68K, or other computing platforms... as mentioned above, I'd prefer to avoid it, but don't let me stop you.
avatar

2

Been updating 2610 info lately so I had some thinking about it.

I believe the only good solution comes with writing a proper tracker. I wouldn't pursue with MVStracker and its z80 emulation approach tho.
In a nutshell you want to import and run the mame 2610 core in your application, then you can simply play instruments by writing to its ports. Keep z80 out of the equation for now. From there playing instruments is trivial and 95% of the job is writing a tracker display/interface.
That's basically rewriting Deflemask but it's not open source, so yeah...

Once you have the tracker writing the Z80 driver should be a separate project.

3

Thanks for the advice and comments, HPMAN. Time to dig in:

HPMAN (./2) :
I believe the only good solution comes with writing a proper tracker. I wouldn't pursue with MVStracker and its z80 emulation approach tho.
That's what I figured. There's only so much you can do without rewriting the entire thing from scratch.

HPMAN (./2) :
In a nutshell you want to import and run the mame 2610 core in your application, then you can simply play instruments by writing to its ports.
Simple enough; this was the one part of MVSTracker that I knew worked, even after my hacks, and even with older code. Main issue here is working around MAME's device system... maybe I can get lucky and find an older version before the conversion to devices or something.

I've been hammering away at a skeleton of a tracker in C# with WinForms for a bit, but it's nowhere near complete. Most of the work is being done in the back-end, preparing the required data structures and routines. I'm not sure if anyone would like to help with the project, but I'm making a public note of it just in case.
avatar

4

There's neocd/sdl sources available, hooking 2610 mame core with SDL layer. The FM core used is much older tho and probably not as good as nowadays.

Stripping the 2610 core out of mame specific formats/usages is probably the most painful part of this project heh.

5

Ok, I have the neocd version kinda working barebones.

One issue however: FM/ADPCM core outputs 2 PCM data streams (L+R channels), SSG core outputs 3 PCM data streams (1 per channel, mono)
How does one mix all this together back to L+R channels?
(neocd just ignore the SSG part it seems)

52025eeec856113fa9000014_736.jpg

6

Good question, as audio mixing isn't always straightforward. My initial thought is to convert the SSG channels to stereo (just duplicating the existing waveform onto L/R channels), and then mix those in with the FM/ADPCM somehow.

Might not be accurate, might not be the best way to go, but I don't have knowledge on either of those fronts. :s
avatar

7

Do you have a good way to play an audio stream with C#? Tried using SDL_OpenAudio with a SDL C# wrapper and the thing crashes the application.

8

Turn on your skype, got a couple files to send you

9

Heya guyz, what is the current status of all this after more than a year later ?

any soundriver available out there for hoembrew development ?

thx
avatar

10

Hi everybody ....

Yesterday, I discover a new Ym2608 (OPNA) tracker -> BambooTracker ( for the moment , It is a tracker for YM2608 (OPNA) which was used in NEC PC-8801/9801 series computers. exported VGM and S98 )

few videos are available on the Net yet ... :

BambooTracker Test Tune
+
YM2608 Test Tune: [BambooTracker] | Oscilloscope

Description :
If you're wondering what BambooTracker is, it's a new tracker music program by rerrahkr that lets you make music for the Yamaha YM2608, the soundchip of the NEC PC-8801/9801 computer. While the custom ADPCM channel is missing here, at least anyone who isn't a fan of MML (for freem wink ) can make YM2608 music. I do hope to see this tracker being developed further. Also, it isn't shown here, but I am using the hi-hat from the Rhythm Sound Source portion of the YM2608.

Here's the GitHub link to this program:
rerrahkr/BambooTrackerGitHubYM2608 music tracker 🎍🎋. Contribute to rerrahkr/BambooTracker development by creating an account on GitHub.

other URL around the subject : https://famitracker.org/wp/?tag=bambootracker BambooTracker – a new OPNA tracker with great usability and even greater potential

http://battleofthebits.org/academy/GroupThread/19492/OPNA+tracker+(BambooTracker)/
https://vgmrips.net/wiki/S98_File_Format

Now , how to contact the Dev , rerrahkr ???? found in his BLOG : http://www.crescendi.at-ninja.jp/about.html
A++ fred /FRONT

PS : https://github.com/rerrahkr/BambooTracker/releases BambooTracker-v0.1.3-winXP.zip 26.8 MB + BambooTracker-v0.1.3.zip 12.1 MB

UPTDATE : BambooTracker and ADPCM support -> new issue and good stuf from CTR / or superctr from VGMRips -> an ADPCM Library ( ADPCM codec here for :

https://github.com/superctr/adpcm/blob/master/ymb_codec.c Encode and decode algorithms for Y8950/YM2608/YM2610 ADPCM-B - 2019 by superctr.
https://github.com/rerrahkr/BambooTracker/issues/6 some good discussions here , around ADPCM support !!!!

https://awesomeopensource.com/project/rerrahkr/BambooTracker cool stuff Now

Instrument (FM instruments)
The tracker can load instrument from the following files.

.bti (BambooTracker instrument file)
.dmp (DefleMask preset file)
.tfi (TFM Music Maker instrument file)
.vgi (VGM Music Maker instrument file)
.opni (WOPN instrument file)
.y12 (Gens KMod dump file)
.ins (MVSTracker instrument file)

It also supports loading plain text of FM envelope.
ADPCM waveform editor supports .wav import (16-bit mono 2k-55.5kHz). <<<< cool , ADPCM deltaT or N supported now ! ; Ym2608 is not just limited to 2k-16kHz wink

A instrument saves as .bti file.

Bank
The tracker can load bank from the following files.

.btb (BambooTracker bank file)
.wopn (WOPN bank file)
.ff (PMD FF file)
.ppc (PMD PPC file) <<<< adpcm file
.pvi (FMP PVI file) <<<< adpcm file

A bank saves as .btb file.

Export
The tracker can export a song to the following files.

.wav (WAVE file)
.vgm (VGM file) <<< cool !
.s98 (S98 file)

https://user-images.githubusercontent.com/26477882/77825642-eb296300-714d-11ea-95c0-863bce2affc9.png
(sample with Sampling rate 16K -> Delta-N: 18893.26126126126 (round to whole number) / 0X49CD in Hexa
-> note : for the control > i used this good convert by freem: http://www.ajworld.net/neogeodev/ym2610am2.html #Sampling Rate to Delta-N Converter

> rerrahkr commented on 28 Mar

After the implementation of ADPCM instrument, I will work on ADPCM drum kit.
I plan ADPCM drum kit editor:

-It has key assign list and waveform editor.
-There are no envelope, arpeggio and pitch editor, specializing in only playing samples.
-Key assign list controls sample (waveform number) to play at note-on and its pitch (by seminote).
-Each sample can be edited waveform editor in the same way as that of ADPCM instrument editor.
-Waveform properties are shared with ADPCM instruments.

Note: additional tools for BT - > helps well to import instruments from .opm files
https://github.com/nobuyukinyuu/bambooCopy take your VOPM library and make it easy to preview and copy FM envelopes for import into BambooTracker.


ADDON:
https://raw.githubusercontent.com/ValleyBell/MidiConverters/master/pmd_SeqFormat.txt
https://github.com/OPNA2608/libopenpmd/blob/master/docs/ some specification for PMD + PPC + PVI -> the sample address of the YM2608 is specified in steps of 32 bytes.

https://github.com/rerrahkr/BambooTracker/issues/335 YM2610B VGM export
One more different thing - YM2610B supports 16 MB for the ADPCM-B channel, because of this, the sample address of the YM2610B is specified in steps of 256 bytes. As you know, YM2608 is specified in 32 bytes. That's All.