Jump to content

DB50XG or Wavetable or Expander control


Roman Midi-Opa
 Share

Recommended Posts

Hallo MIOS Gemeinde,

 

nachdem ich recht problemlos ein MIDIO128 um die IIC Ports erweitern konnte, komme ich nun zum zweiten Teil meines MIOS Projektes. Die Steuerung und Kontrolle meiner Wavetable Boards bzw. Expander per MIDIO128. Ursprünglich habe ich das Ganze ja als eigenständige Erweiterung geplant, da aber weitere Mitglieder dieser Gemeinde auch Interesse daran bekundet haben werde ich versuche das Ganze zu integrieren. Die Soundauswahl läuft schon und gestaltet sich wie folgt:

Anordnung in 16 Soundgruppen als horizontales SCS-Menu. Auswahl der Sounds, bis zu 42 je Gruppe, als Werte innerhalb der Soundgruppen. Nur das Kürzel des aktuell ausgewählten Sound wird angezeigt. Die anderen Soundgruppen werden mit "----" ausgeblendet. Vorteil, man sieht auf den ersten Blick welchen Sound man gewählt hat.

 

Stand der Programmierung ist derzeit des Rücksetzen der Sounds nach Partwechsel.

 

Bei den Parametern bin ich schnell an die Grenzen des Verstehens gestossen, zu mal mir eine begrenzte Auswahl an WTB bzw. Expander zur Verfügung steht. Daher möchte ich hier das von mir erdachte Datenmodell vorstellen und bitte Euch um eine kritische Prüfung und ggf. Vorschläge zur Verbesserung.

 

/////////////////////////////////////////////////////////////////////////////
// local Action and Control data 
/////////////////////////////////////////////////////////////////////////////
enum ActionDef {
  CC,
  SysEx,
  NRPN,
  RPN
  };
  
enum ActionDef Actiontyp;

typedef struct {
  u8 wtbEmulation;
  Actiontyp Acttyp;
  char Name[11];
  char AddrH[2];
  char AddrM[2];
  char AddrL[2};
  char Data1[2];
  char Data2[2];
  char Data3[2];
  char Data4[2];
  u8  DataDigits;
  u16 Default;
  u16 SetOff;
  u16 VMin;
  u16 VMax;
  u16 VCenter;
  }wtbActionSet;

/* Description of settings
*  "--" = notset 
*  "0p"  or "pp" = p will be replaced by Part Number
*  "0v"  or "vv" = v will be replaced by Value from SCS
*  Data Digits > 1 Value will be splittet into 2 Digit 7..4 , 3..0
*/  

static u16 wtbActionSets;

const wtbActionSet wtbAction[] {
  { 0, CC   ,"PartVolume","07","--","--","vv","--","--","--", 1, 64,"--", 0,127,  0},
  { 0, CC   ,"Part Pan  ","10","--","--","vv","--","--","--", 1, 64,"--", 0,127, 64},
  { 0, SysEx,"PartDetune","08","pp","--","0v","0v","--","--", 2, 64,"--", 0,127,  0}
  };

Ich denke daran das Ganze über zwei SCS-Punkte als verticales Menue zu integrieren und die Auswahl des Wertes im darauf folgendem Menuepunkt anzubieten. Hierbei sollte es recht einfach möglich sein eigene Parameter einzupflegen. Ferner kann man durch die Struktur der Emulationen schnell eigene Emulation, z.B. mit den Lieblingssounds zur Schnellselection in Soundgruppe 1, ergänzen.

 

Ferner ist angedacht innerhalb des Soundmenues ein alternatives Menu zur Schnellauswahl von Part Nummer und Lautstärke anzubieten. Ähnlich wie Thorsten das mit der altMainPage schon gemacht hat.

 

Ich bin mir bewusst das es ein langer steiniger Weg wird auf dem ich Euch bestimmt noch mit vielen Fragen löchern werde, aber ich glaube das Projekt rechtfertigt dies.

 

Nun aber ran an die Tastatur. Ich freue mich über jede Anregung bzw. konstruktive Kritik.

 

Gruss

 

Roman

Edited by roman01
Link to comment
Share on other sites

  • 2 weeks later...

Hallo zusammen,

 

nachdem nun ein paar Tage ins Land gegangen sind, kann ich von meinen ersten Fortschritten berichten.

Die flexibelen Parameter mit einer Breite von 2 Items im SCS Menu sind lauffähig. Ich arbeite derzeit an der Ausgabe per Port. Im Zuge der Umstellung habe ich die Möglichkeit mehrfacher Karten im System vorgesehen, um dem Wunsch einiger Forumsmitglieder zu entsprechen. Diese Möglichkeit ist auch im Aufbau, da die Tiefe der Datenstrukturen dadurch sehr stark wächst. Die Möglichkeit der verketteten Listen lasse ich mal Aussen vor,  seit den 90er Jahren und Borland's Volkscompiler Turbo Pascal usw. überlasse ich dass normalerweise dem Compiler.

 

Anbei mal eine Skizze was derzeit steht und wie es organisiert ist. Vielleicht findet sich ja doch mal jemand der dazu etwas beitragen möchte und/oder dazu Vorschläge hat, wie man es besser machen kann.

 

Gruss

 

Roman

Db50XG.pdf

Link to comment
Share on other sites

Hallo Thorsten,

 

entschuldige die späte Antwort aber ich hatte Probleme mit meinem XP-Rechner (MIDIBOX-Rechner). Mit dem Begriff Emulation meine ich die verschiedenen System Modi, wie es wohl richtiger heissen müsste. Das heisst das bei der DB50XG Karte die Sounds im GM-, XG-, TB300-Mode angesprochen werden können. Hier gibt es eine geringe Anzahl gemeinsamer Parameter wie z.B. die GM-Sounds die immer auf MSB = 0 und LSB = 0 liegen. Die anderen Soundparameter und auch SysEx Messages können durchaus unterschiedlich sein. All das habe ich unter dem Begriff Emulation zusammen gefasst ( z.B. Die Karte emuliert den XG-Mode).

 

Gruss

 

Roman

 

Nachtrag: Ich vergaß zu erwähnen das ich noch eine Karte mit einer MT-32 Emulation habe. Eine ältere Roland Geschichte mit Dream Chipsatz.

Edited by roman01
Link to comment
Share on other sites

  • 2 weeks later...

Hallo zusammen,

 

nach soviel Theorie nun etwas aus der Praxis. Die angehängten Bilder zeigen mein MIDIO128 in einem Standard TEKO AUS23 Gehäuse. Damit die vielen Schnittstellen, SD-Karte und SCS befestigt werden konnten, habe ich das Ganze in einem selbst gebautem ALU-Gehäuse verpackt. Das ALU-gehäuse besteht aus 4 ALU-Platten, das seitlich mit entsprechenden 10x10mm Winkel zusammen geschraubt sind. Darna hängen dann die Platinen auf 5mm Abstandsrollen. Zur Belüftung und Kühlung sind noch einige Bohrungen zusätzlich angebracht. Die Frontplatte bzw. hintere Abschlussplatte ist noch in Arbeit.

 

Gruss

 

Roman

post-6656-0-22465600-1362915025_thumb.jp

post-6656-0-28258200-1362915027_thumb.jp

Link to comment
Share on other sites

  • 1 month later...

Hallo zusammen,

nach dem Einbau in ein Gehäuse begann eine ausgiebige Testphase die noch nicht abgeschlossen ist. Ich bin nach wie vor des Lobes voll und jeden Tag aufs Neue begeistert von dem MIDIO128. Mit dem eigenem Anspruch der Steuerung von zu "standalone" umgebauten Wavetable Boards bin ich derzeit nicht ganz glücklich. Fest steht das eine komplette Steuerung aller möglichen Parameter an der Vielzahl der Karten, die geringe Anzahl mir zur Verfügung stehende Karten und den fehlenden Eingabemöglichkeiten scheitert. Ich habe daher für mich selbst entschieden nur einige wenige Kernfunktionen für das Spiel "on the fly" zu implementieren. Hier hänge ich allerdings an der Möglichkeit des Sichern und Laden von Informationen, da diese nicht nur in das MIDIO128 zurück gelesen werden müssen, sondern auch an die angeschlossenen Karten je Part übertragen werden müssen. Das Konzept ist derzeit in Arbeit.

Die Alternative hierzu wäre eine an die Schnellregistrierung von Kirchenorgeln angelehnte Bedienbarkeit. Auf Druck einer Taste wird eine vorher gespeicherte Konfiguration an die Karten übermittelt. Etwas ähnliches gibt es in der NG-Box und wird sicherlich auch von Gitarristen geschätzt. Hier denke ich aktuell über den Typ der Datei nach (MIDI, SysEx). Die Erstellung würde ich in einer DAW oder XG-Works Software vornehmen wollen und dann nach Tanzserien speichern. Vielleicht fortlaufend nummeriert mit einem Taster/Hebel zum rauf- und runterschalten. Sinnvoll ist sicherlich auch den Song in Teile mit unterschiedlicher Registrierung zu zerlegen (Part A,B, Solo). Aber jetzt steht erstmal die Motorradsaison an und im Herbst geht es weiter.

 

Bis denne

 

Roman

post-6656-0-38234000-1366387149_thumb.jp

Edited by roman01
Link to comment
Share on other sites

Hallo roman01

 

Ich habe vor Ewigkeiten mal versucht die DB50XG im standalone mit Kontroll funktionen auszustatten,

bin aber immer an den sysex der DB50 gescheitert.

Und dann ist sie halt standalone geblieben und wurde über cubase oder XGGold gesteuert.

 

Ist es jetzt mit LPC17 Board/Midio128v3 eigentlich einfacher geworden die sysex für die DB50 zu Programmieren ?

 

Würde mich interessiern dann könnte ja mal darüber nachdenken einen neu beginn zu versuchen.

 

Gruss

Link to comment
Share on other sites

Hallo,

 

das ist mit den SysEx ist das grundsätzliche Problem. Mittels des sehr guten SCS-Menu ist es releativ einfach eine eigene Struktur zu entwickeln, die unter anderem auch Sysex Befehle sendet. Wie in dem vorherigen Post beschrieben ist das allerdings das Problem. Hier und da ein paar SysEX absetzen ist kein Aufwand, dagegen ein z.B. MU50 nachbilden zu wollen ja. Anhand der oben beschriebenen Struktur kann man sich glaube sehr gut gedanklich durch die Befehle hangeln. Menu Auswahl 01 setzt Befehl 03 aus dem Array ab. Die Struktur und die Befehlsart ist im Array hinterlegt, so wie die Stelle an der der Wert aus dem SCS-Menu einzufügen ist.

 

Gruss

 

Roman

Link to comment
Share on other sites

Die Konfiguration von SysEx Streams ist mit der MIDIbox NG einfacher geworden, siehe auch: http://www.ucapps.de/midibox_ng_manual_ngc.html

 

Auf der anderen Seite kann man davon ausgehen, dass Roman's dedizierte Applikation die beste Loesung fuer Leute sein wird, die mit wenig Kontrollelementen auf saemtliche Parameter zugriffen moechten.

 

@Roman: ich werde Deine Applikation wahrscheinlich dann auch selbst nutzen, ich habe erst letztens meine DB50XG wiedergefunden! :)

 

Gruss, Thorsten.

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...
 Share

×
×
  • Create New...