midibox_quad_genesis
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
midibox_quad_genesis [2016/08/08 18:06] – [Synth Architecture] sauraen | midibox_quad_genesis [2017/12/20 21:19] (current) – [Hardware components] smithy | ||
---|---|---|---|
Line 10: | Line 10: | ||
[[http:// | [[http:// | ||
- | |||
- | [[http:// | ||
- | |||
====== Hardware ====== | ====== Hardware ====== | ||
Line 22: | Line 19: | ||
* 2x40 character [[http:// | * 2x40 character [[http:// | ||
* [[MBQG_FP]] custom front panel board; or alternately, | * [[MBQG_FP]] custom front panel board; or alternately, | ||
+ | * [[MBQG_TB_CASE]] a DIY wooden case for MIDIbox Quad Genesis, designed by Technobreath to be easily replicated with little skills and tools. | ||
* Stereo audio output connection of desired type | * Stereo audio output connection of desired type | ||
* Mono audio input connection for each SN76494/96 if desired | * Mono audio input connection for each SN76494/96 if desired | ||
+ | * Power supply (see below) | ||
- | ====== Synth Architecture ====== | ||
+ | ===== Power Supply ===== | ||
+ | |||
+ | All the modules within MIDIbox Quad Genesis run at 5V, so there is no need for a fancy supply. However, the front panel draws up to a theoretical maximum of 1.2A (if the synth crashes with all the LEDs on), and noise from the digital components can easily get into the analog audio output. | ||
+ | |||
+ | Because of these considerations, | ||
+ | |||
+ | This filtered DC was split and sent to two miniature switching regulators, OKI-78SR-5 (Mouser 580-OKI78SR5/ | ||
+ | |||
+ | The output of one switching regulator was used exclusively for the front panel, while the output of the other was sent to the core and the Genesis boards. A 0.1uF capacitor was placed from input to ground and output to ground on each regulator, and additionally a 10uF capacitor was placed at the output. | ||
+ | |||
+ | This approach worked fine for me. As far as noise, my synth does have audible noise at harmonics of 1kHz, but I don't think this is due to the power supply (the regulators switch at much higher frequencies, | ||
+ | |||
+ | ====== Synth Architecture ====== | ||
- | | VGM Streaming || VGM from RAM | VGM Realtime Queue | | + | | |
- | | Stream Thread | VGM Player ||| | + | | Subscreens |
- | | File System | Chip State Tracking ||| | + | | Modes ||||| |
- | | MIOS32 SD Card | MBHP_Genesis I/O ||| | + | | |
+ | | Stream Thread | ||
+ | | | ||
+ | | MIOS32 SD Card | MBHP_Genesis I/O ||| MIOS32 DIO | ||
===== Overview ===== | ===== Overview ===== | ||
Line 49: | Line 63: | ||
==== Tracker Mode ==== | ==== Tracker Mode ==== | ||
- | A voice in tracker mode has little-to-no synth engine and is simply controlled in realtime by MIDI commands from a DAW or tracker. It is configured to respond to commands from one MIDI port on one channel. The following MIDI messages are supported: | + | A voice in tracker mode has little-to-no synth engine and is simply controlled in realtime by MIDI commands from a DAW or tracker. It is configured to respond to commands from one MIDI port on one channel, according to the GENMDM specification. I have been in contact with Aly James, |
- | * Note On sets the voice' | + | |
- | * Pitch Bend changes the voice' | + | |
- | * CC7 (Volume) changes | + | |
- | * CC10 (Pan) changes whether the voice is assigned to left, right, or both channels. | + | |
- | * Other CCs (TBD) set all other operator parameters. | + | |
- | + | ||
- | In addition, each YM2612 may be placed into Tracker mode itself, and then it will respond | + | |
==== Free Mode ==== | ==== Free Mode ==== | ||
- | A voice in free mode is available to be assigned in real-time by the synth engine to an appropriate instrument. | ||
- | ===== Instruments ===== | + | A voice in free mode is available to be assigned in real-time by the synth engine to any program. This sounds simple enough, but this requires tremendous complexity on the inside, for two reasons: |
- | An instrument | + | - A VGM file can use any combination |
+ | - Certain OPN2 features (the LFO and the test bits) are global to the chip, so VGM files which use these features have to be kept on the same chip or carefully assigned across multiple chips. Moreover, for certain | ||
- | An instrument contains: | + | The synth engine keeps track of what chip resources each VGM file and program |
- | * Information about how many of what kinds of voices the instrument will use, and whether it will set or use chip-global features like the LFO | + | |
- | * A "state" VGM file, which must be of time-length 0, which is played when the instrument is loaded to a voice | + | |
- | * A " | + | |
- | * Information about how the MIDI note played combines with frequency information in the VGM to produce the actual frequency values sent to the voice | + | |
- | * Optional operator gating at fixed delay from MIDI note on, or in response | + | |
- | * A set of modulators (software LFOs, EGs, velocity, CCs) and their assignments to voice parameters | + | |
===== Interface Modes ===== | ===== Interface Modes ===== | ||
==== Voice Mode ==== | ==== Voice Mode ==== | ||
- | Press Voice and select a voice. Use the screen to set whether the voice is in tracker or free mode. If the voice is in tracker mode, the voice controls light up and are functional to set the current state of the voice. This state of course may be overridden by subsequent MIDI messages. The current voice state may be loaded/ | ||
+ | Select a voice using the Genesis buttons. The voice controls display the current state of the voice. If the voice is in tracker mode, the voice controls are functional to set the current state of the voice; this state of course may be overridden by subsequent MIDI messages. View the current Genesis' | ||
+ | |||
+ | Planned features: | ||
+ | * Capture button: create a VGM file which represents the state of the current voice. Display a menu of channels so you can choose where this will be stored. Upon selecting a channel, or pressing the Capture button again which will use the last edited channel, a new program will be set up on this channel with that VGM file as its init and appropriate keyon and keyoff files, so you can play this sound on the keyboard as usual. | ||
==== Channel Mode ==== | ==== Channel Mode ==== | ||
- | Press Chan. Use the screen | + | Use the PSG Voices and OPN2 buttons |
- | * A multiplier can be added to any MIDI channel to affect one or both of CC 7 and CC 11. If enabled, the multiplier simply multiplies any incoming CC of this type by the 16-bit value and then divides it by 2^8, before passing it on to the synth engine. This allows the volume of channels to be adjusted while they remain responsive to incoming volume messages. | + | ==== Program Mode ==== |
- | * If the channel is in free mode, a program | + | Edits the program selected in Chan mode. |
- | ==== Instrument Mode ==== | + | A program consists of 3 VGM files: one to init the voice(s), one played at key on, and one played at key off. Program mode allows |
- | Press Inst and use the screen to select a loaded instrument, or select the instrument from Channel mode. Use the screen to load and unload more instruments, choose | + | |
- | Voices light up corresponding | + | Planned features: |
+ | * VGM file tempo adjustment, including the option | ||
+ | * Drum type programs, which instead of having three VGM files, have 16, one for key-on for each of a definable split region. Key off is fixed to just key-off or silence | ||
+ | ==== VGM Mode ==== | ||
- | Select a voice and use the voice controls to view and edit the voice' | + | Full-featured editor for VGM files loaded into RAM, and partial editor for VGM files streamed from the SD card. |
- | ==== VGM Mode ==== | + | Both modes support real-time preview of the VGM file, muting |
- | Press VGM and use the screen | + | |
+ | For VGM files loaded into RAM, supports editing, inserting, and deleting individual | ||
- | TODO | + | Planned features: |
+ | * For either type of VGM, support defining soft start and end points (" | ||
+ | * For either type of VGM, Capture the current state of a voice as in Voice mode. | ||
+ | * For RAM only, move, duplicate, or copy-and-paste the individual commands or the marked section to a different position. |
midibox_quad_genesis.1470679602.txt.gz · Last modified: 2016/08/08 18:06 by sauraen