Jump to content

DB50XG / SW60XG / NEC XR385 driver code


EsotericLabs

Recommended Posts

Hello Midibox friends,

Below is the MB50XG project in beta version. It is MIDIO128v3.13 with a driver for the Yamaha DB50XG, DB60XG and NEC XR385 wavetable daughterboards. With thanks to fellow midiboxers Roman01 & Sparx, hardware geeks Chiel & Serge and of course TK and all of you for the MB platform!

Beta0.4.3 Xcode project here: . Ready to upload .hex here: .

Hardware requirements:

  • LPC17 core, SCS, SD card, any daughterboard adapter (see references below) plus a working soundcard of the said types.

Functionalities:

  • voicing system and effect operation in db50xg_base.h / .c / db50xg_list.h.
  • Beta 0.4.3 with global parameters master volume, transpose and master tune implemented
  • currently being tested for Beta0.4.4: line in functionality for DB60XG/NEC XR385 cards (not DB50XG). Pre-release here:
  • rudimentary support in db50xg_extra.c for drum setups, multiparts and QS users voices.
  • Menu support for SCS based apps in db50xg_scs_ui.c/.h, db50xg_scs.ui.inc goes into your scs_config.c file (see example 1).
  • Basic midi implementation with cc's managing main effect settings:
    • cc12 = effect type; cc13 = effect return; cc14=effect pan; cc15 = dry/wet; cc16-31 = effect parameters 1-16 with proper value range checking.
    • chn1 = reverb; chn2 = chorus ; chn3 = variation (see example 2).

To-do list:

  • patch filing system,
  • imidi implementation for master volume, transpose, master tune
  • separated transpose for midi file, midi in ports etc (see known issues).
  • sysex handler,
  • midi implementation for advanced parameters of variation effect (connection, insert, control depths),
  • SEQV4 menu support (based on seq_ui_todo.c) memory allowing,
  • Full support for QS, drum setup, multipart and TB300 mode.

Known issues:

  • transpose function transposes all midi going to soundcard.

 

Example 1. Include the MB50XG include file into your scs_config.c like this:

/////////////////////////////////////////////
//  menu items added for MB50XG
/////////////////////////////////////////////
#include "db50xg_scs_ui.inc"

Then add the MB50XG menu pages to your main menu like this:

const scs_menu_page_t rootMode0[] = {
        SCS_SUBPAGE("DB50 ", subpageDB50XG), // this is the new one
        SCS_SUBPAGE("Midi ", subpageMIDI),  // these three were already there
       SCS_SUBPAGE("I/O  ", subpageIO),
        SCS_SUBPAGE("Sys  ", subpageSYS),};

Example 2:

MIOS32_MIDI_SendCC(soundcard.midi_port, Chn1,  12, 4); 
// sets reverb effect to reverb type  =  Room 2
MIOS32_MIDI_SendCC(soundcard.midi_port, Chn2,  15, 0x64);  
// sets dry/wet of chorus effect to 0x64
MIOS32_MIDI_SendCC(soundcard.midi_port, Chn3,  18, 27);  
// sets effect parameter 3 of variation effect to value 27, look it up in your db50xg manual

Have fun!


References for daughterboard adapters:

  • copyright of respective owners.
Edited by EsotericLabs
Link to comment
Share on other sites

+1 New version Beta 0.4.2! Bugs fixed in synchonization of voice menu and incoming midi. Now working properly both in GM and XG.

Beta 0.4.3 has global function master volume, master tune, transpose implemented.

I've got a real DB50XG for a very fair price. Let the feast begin!!

Edited by EsotericLabs
Link to comment
Share on other sites

Great stuff! I have a rather similar project simmering on low heat. Mine is based on the Core8 module, though. Anyway, I read somewhere on the Intertubes that the DB50XG clones by NEC don't support the QS300 mode of the original. Have you verified this by any chance?

 

I can see in your code that you provide a specific macro to turn QS300 processing off, so perhaps you know more.

 

Thanks

Link to comment
Share on other sites

Hello sompost,

I think you are correct: no QS voices on the clones.

If you have an unbroken link, please post it here.

Good luck with the core8 coding. asm right? Or get a lpc17 core and come join the fun! There are more xr385 heads out here...

Edited by EsotericLabs
Link to comment
Share on other sites

Thanks for the link. I though I read all of what I could find on DB50XG and midibox.

 

Perhaps I should have used an LPC17 core to start with. But then, there's an engineer inside me that tells me, it's only UI work I do and that a PIC18 is sufficient (you know, "make it as simple as possible..." etc).

 

I write in "C redux", i.e. I try hard avoiding all C constructs that produce lots of code.

 

As for the QS300 thing, that's disappointing. I thought because Yamaha's spec defines a QS bulk dump, the clones would implement that too.

 

Cheers!

Link to comment
Share on other sites

Hello sompost, If you're experienced with pics and asm, that's great. I' m always building code and then spend even more time simplifying it. I started this in C but might have should have in C++. Less lines & trickery, more power. I like the esoteric ring of virtual template polymorphy and operator overloading. The clones won't give you QS voices. They are OEM version of the db60xg, which gives you audio-in in return. There's also a sw60xg but that's not a daughter board but a full pc sound card. Check out http://www.studio4all.de/htmle/frameset090.html I think the clones feature sections 3 and 4. I'm now building the code, sparx will test it. Have fun!

Link to comment
Share on other sites

Hi sompost, I made a box for my db60 clone (), based on MB64E with lot of code customization, so the PIC18 is sufficient, but it needs a lot of ASM work. I'll take some pictures at the weekend.

 

My NEC clone works fine with QS voices! Just upload the voices simply via midi.

Link to comment
Share on other sites

Quote from the DB50 doc:
 
Up to 32 Voices created by the QS300 can be saved in the DB50XG’s User Memory by bulk dump messages. (Effective only when the XG mode is active.)
QS300 User Voices are stored in Bank MSB = 63, LSB = 00. Program Change numbers for User Voices are 1 – 32.

 
I used MIDI-OX. First you should switch the DB to XG mode (MIDI-OX menu: Actions/Send/XG on). Next send one of the QS bank midi file to the DB. I use the MIDI-OX MIDIBar player (Actions/Play MIDI...).

The 32 voices are now available in Bank MSB = 63, Bank LSB = 00. PC = 1 – 32. (you can set it with MIDI-OX Control Panel)

 

qs300_voices_e.zip

Link to comment
Share on other sites

I can confirm that the QS sounds can be loaded onto an XR385 using the above method, thanks a lot for that tip.

Can you post some more details of your project?

So far this version using the LPC core features GM/XG voice, MIDI file player, transpose, volume plus the features of the MIDIO128. It's great!

Link to comment
Share on other sites

  • 4 weeks later...

Nääää, 

 

integrating the DB50XG driver into the SEQ V4 is not gonna work: the LPC1769 has too little SRAM to support both.  I could try to squeeze out every single last byte,  save mem by disabling SEQ v4 modules I don't need myself (like CV). But even then there's only enough mem for a very reduced DB50XG feature set. Dead end street..   TK had warned me, but these DIY spirits made me find out for myself anyway. (Well, coding does not blister my fingers as soldering does...)

 

So the new strategy is to fully develop DB50XG/DB60XG/XR385 functionality into the MIDIO128 platform.  Unless you guys & gals think its better to port to  the NG?

 

Now I come to think of it: a Midibox DB50XG sound module in a commodore datasette case might look quite cool..

Edited by EsotericLabs
Link to comment
Share on other sites

Hello sompost, If you're experienced with pics and asm, that's great. I' m always building code and then spend even more time simplifying it. I started this in C but might have should have in C++. Less lines & trickery, more power. I like the esoteric ring of virtual template polymorphy and operator overloading. The clones won't give you QS voices. They are OEM version of the db60xg, which gives you audio-in in return. There's also a sw60xg but that's not a daughter board but a full pc sound card. Check out http://www.studio4all.de/htmle/frameset090.html I think the clones feature sections 3 and 4. I'm now building the code, sparx will test it. Have fun!

Hello members

 

You can also use the sw60xg, see my project

Nice if the QS voices  are working and will be made to edit.

(sorry niet zo goed in engels) :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...