TK. Posted December 1, 2004 Report Share Posted December 1, 2004 Well, one month has passed after the last update, here is the current status:D2k has created a PCB layout for the MBHP_OPL3 module which is perfectly working:Not visible: the 3 SMD chips at the bottom (one YMF262, two YAC512).The second YAC512 is optional for two additional audio channels.The firmware is ca. 75% completed: the synth architecture is defined, all implemented features are working (hopefully ;-)) without failures, the first two JSynthLib editor panels are running.The Patch Editor:Full view: http://www.ucapps.de/midibox_fm/mbfm_patch_panel_pre1.gifThe Drum Editor:Full view: http://www.ucapps.de/midibox_fm/mbfm_drum_panel_pre2.gifMissing: the ensemble editor which allows to edit the MIDI channel assignments/keyboard ranges/transpose/audio channels, etc... for the 4 instrumentsSome new demo samples (no perfect work yet ;-)):A .mid file (Phil Collins, Against all Odds...) played with a Rhodes-like sound. This was to test the polyphony (6 4OP voices are automatically assigned, the longest note will be killed first):http://www.midibox.org/midibox_fm/mbfm_demo3.mp3Some sound engine tests - note that beside of the hardware EGs, each voice has two additional LFOs and one EG. Each modulation target has an own depth pot, and it's also possible that a LFO or EG modulates the frequency of another LFO (so really wired things ;-)):http://www.midibox.org/midibox_fm/mbfm_demo4.mp3The third example demonstrates the possibilities of the drum synth, which has it's own voices (it runs in parallel to the main synth engine):http://www.midibox.org/midibox_fm/mbfm_demo5.mp3Next targets: finalize all planned features, adding the third editor panel for an ensemble, completing the minimal control surface, starting with the full control surface, case, and having a lot of fun :)Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
raphael Posted December 1, 2004 Report Share Posted December 1, 2004 Wow, cool demos!! (But I could not download demo5.mp4?...)A YMF262 is already desoldered an waiting for it's rebirth!Btw. what are the other 3 chipt on the PCB???Raphael Quote Link to comment Share on other sites More sharing options...
TK. Posted December 1, 2004 Author Report Share Posted December 1, 2004 Fixed - the other three chips are TL074 (a common operation amplifier)Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
bosone Posted December 1, 2004 Report Share Posted December 1, 2004 great!i'm just curious about two things:how did you solder mount these SMD IC on the backside? could you post a photo? i'm curious because the pins are SOOOO tiny and close one to each other!! :-) Quote Link to comment Share on other sites More sharing options...
illogik Posted December 1, 2004 Report Share Posted December 1, 2004 manomanomanoman...... it has a drumsynth!?! :D (still can't open demo5_mp3, but hey, i'll build it anyway)can't wait to start on this one! TK, thanks for staying active and sharing your creations!cheers, marcel Quote Link to comment Share on other sites More sharing options...
moebius Posted December 1, 2004 Report Share Posted December 1, 2004 TK - a typo fixed, the file still isn't there ;D..Sounds, VERY interesting!!!!One thing: Software Envelope.. that could be (switchable to) multistage EG... (well, WT is there, but.. ;))(And for "live" sound editing - is there a way to prevent these TOO drastic changes in sound.. I mean, for real live work, It's nice to change textures, but with FM it's SO easy to end up with something totally unwanted. CS live mode? (Custom disabling of some the controls/ scaling of the others, to some wanted range??))Bye, MoebiusOf course, You're never runnin' out of ideas.. BUT - I've never heard of a real HARDWARE synth, capable of Granular synthesis.. *Whistling* Quote Link to comment Share on other sites More sharing options...
TK. Posted December 2, 2004 Author Report Share Posted December 2, 2004 Alright, the link to the drum example should work now: http://www.midibox.org/midibox_fm/mbfm_demo5.mp3 - if you get a "service temporarily unavailable" message, then try it again after some minutes. It seems that the server is currently very busy.Matteo: I've added some photos to the http://www.ucapps.de/mbhp_opl3.html page.Marcel: yes, but a very FM-like drum synth (see example): punchy bass drum and a lot of noise ;-) Unfortunately the frequencies for the Toms and snare/hihat/cymbal is not independent from each other, also the envelopes are very rough. But this doesn't prevents you from creating some nice grooves :)Moebius: I will check the request for a multistage EG once I know how much parameters are free after the planned features are implemented. Live editing: I've already an alternate view for the most important parameters in mind, maybe I can extend this idea by a set of full assignable parameter pages, where the parameter number and adjustable range can be specified. :)Granular synthesis: hold the line until I will start with FPGAs (just kidding - or not? ;-)Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
AndrewMartens Posted December 2, 2004 Report Share Posted December 2, 2004 Wow, TK, that is IMPRESSIVE! I hadn't realized that each YAC512 provided a pair of outputs. Now I'm going to have to get a new mixer, and it's all your fault ;DAll I've managed to do this past month is change apartments. My electronics gear is somewhere in a pile of boxes that takes up half of the den :-/ As of the moment I haven't made any more progress on my POKEY or PSG synths, nor will I before 2005. But oh well, that's life.Anyways, I'm looking forward to having a Midibox FM PCB available from SmashTV sometime next year (as he no doubt will have them, once you have finalized your hardware). Quote Link to comment Share on other sites More sharing options...
pay_c Posted December 2, 2004 Report Share Posted December 2, 2004 :-X :-X :-X*astouned* :-X :-X :-XWOW! Very cool sound! Perfectly fitting with the SID. ;DMan, I have to overthink my mixer routing... again ... making place for one more slot... ;) Quote Link to comment Share on other sites More sharing options...
airmailed Posted December 4, 2004 Report Share Posted December 4, 2004 this looks great to me so far (i still haven't built my first box yet.. more and more features keep coming to me ;-) ..this seems like the kind of synth i would like to build a control surface for.. well.. that led mod matrix on the sid looks very hard to build.. i think with this one i would like kind of a "halfway" option between minimal control surface and the full one.. what i mean is the full surface without the led matrix (mods controlled via the menu like in the minimal version).. only if an led matrix is planned of course..the new modulation possibilities sound good as well..on the proteus synths they use a system of virtual patchcords for mod sources controlling other sources (lfos controlling lfos etc.).. this is all done via a 2 line lcd (so it seems a bit like rocket science.. much easier with a computer ;-) for example: env1 <- patchcord1-> LFO2rate <- patchcord2-> Qeach patchcord can control several parameters at once and each has a "depth" control (if this is set to -100 then the lfo waverform it controls is reversed)as well as patchcords the emu synths also have "processers" such as diode, quantizer, 4x gain etc. which can be patched between mod sources to modify the control signals further.. and further and further..all the bestadam Quote Link to comment Share on other sites More sharing options...
TK. Posted December 4, 2004 Author Report Share Posted December 4, 2004 Hi Adam,problem with the OPL3 is, that there are not so much parameters which are worth to modulate with a high-resolution LFO/EG. Most of them are 4 bit only. Therefore my strategy is to have a modulation link to all high-resolution parameters, and these are the four "volumes" (note: volume on a modulator->carrier connection means that the amount of FM), the note pitch, the LFO frequency, the assigned AOUT (analog CV output) - and thats all. There are already 14 modulation targets (each has a seperate depth parameter into negative/positive direction), with 6 voices this makes 84 modulation targets which are handled in parallel. I think this is enough for the small PIC ;-)The diode, gain, etc... features could be selected with the waveform parameter, so here I'm open in the futureAnyhow, all parameters can be modulated with the wavetable sequencer. Thats the strategy for more complex sounds, and therefore the possibilities are hard to compare with common synths.Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
airmailed Posted December 5, 2004 Report Share Posted December 5, 2004 hi Thorsten,thanks for writing... the wavetables sound promising..i have been playing with wavetables in pure data lately, in pd it is possible to draw the waveforms with the mouse (and to draw way outside of the graph for some extreme gains etc.).i am not very familiar with yamaha fm.. my friend dave has had a dx7 for years.. he told me once about using noise as a starting point for analogue style synthesis.. i'm not sure what he meant but i have been trying it lately on the micro modular.. first thing i found was that modulating an operator all the way with white noise makes musically pitched noise (which i like..) i am still an absolute beginner with fm.. i was amazed to find that this makes a very nice soft cymbal type sound.. i think what amazed me was that i modulated an operator with a 7hz sine wave, and got white noise, i couldn't believe it.. i was pleased.. i was expecting a pulsing ring modulated type sound.. but no ;-) well.. the lfo rate is also controlled by the ad envelope so it might be going much higher than 7hz at the peak.. the emu (again) also features noise as a modulation source.. and another LFO shape called sine plus noise (it looks like a very messy sine wave) which is supposed to be good for simulating flute and trumpet vibratoi think a noise LFO waveform would consist of a random value at each step, evenly spaced across the whole rangeanother nice feature i have heard of on some synths is the ability to morph the lfo shape with a knob.. i think it would be nice to be able to choose 2 lfos (e.g square and sine) and morph between the two shapes.. i don't know how difficult this is to program.. anyway.. bye for nowbest wishesadamPS, for anyone who is interested, here are some articles on modulation, am and FM modulationhttp://www.soundonsound.com/sos/feb00/articles/synthsecrets.htm?session=bd3fadb4fe25022fcb636f0b5aae42f7amhttp://www.soundonsound.com/sos/mar00/articles/synthsecrets.htm?session=bd3fadb4fe25022fcb636f0b5aae42f7fm part 1http://www.soundonsound.com/sos/apr00/articles/synthsecrets.htm?session=bd3fadb4fe25022fcb636f0b5aae42f7fm part 2http://www.soundonsound.com/sos/may00/articles/synth.htm?session=bd3fadb4fe25022fcb636f0b5aae42f7 Quote Link to comment Share on other sites More sharing options...
Duggle Posted December 5, 2004 Report Share Posted December 5, 2004 To get a handle on what might be possible with this chip its best to consult the datasheet:'>http://www.funet.fi/pub/msx/mirrors/msx2.com/vortexion/YMF262.PDFNaturally modulation can be done in software, but only within the limits of the resolution of the parameter, and also at a rate that the PIC can update all parameters.This is more in the mS rather than uS so that software envelopes and LFO's are possible but useful audio frequency modulation in software most likely not.cheers Quote Link to comment Share on other sites More sharing options...
AndrewMartens Posted December 6, 2004 Report Share Posted December 6, 2004 TK, on a related note, I'm wondering what the approximate max software envelopes would be for the PIC. It's sort of a digitally-controlled analog synth project that's sitting in the back of my mind (and would be somewhat related to the AOUT/SHX8).Would it be possible to have 8 modulation sources (envelopes, LFOs, let's say they're 8-bit each) and 12 modulation destinations (pitch, filter Q, etc.) for each of 8 voices? Or would this run out of steam at about 4 voices? Mostly I'm trying to determine whether I should be using a MIOS frontend interface with a dedicated envelope-controlling PIC (using the PIC's PSP feature), or whether a MIOS unit could handle a control surface, MIDI in, _and_ a whole lot of envelopes.I'm just looking for a vague estimate of whether or not this would be possible - I doubt that I'll get around to this for quite some time, as I still have about 3 other projects to do first :-) Quote Link to comment Share on other sites More sharing options...
TK. Posted December 6, 2004 Author Report Share Posted December 6, 2004 Hi Andrew,Would it be possible to have 8 modulation sources (envelopes, LFOs, let's say they're 8-bit each) and 12 modulation destinations (pitch, filter Q, etc.) for each of 8 voices? Or would this run out of steam at about 4 voices? I'm missing an important spec, and thats the update cycle for all voices.I guess that this number of modulation sources/destinations can be processed within ca. 500 uS with 16 bit resolution. A lower resolution is not practicable, since especially EGs require a high-res counter, otherwise slow ramps cannot be realizedCalculation example: let's say the waveform generator is clocked at each millisecond, the EG counter is working with 16-bit resolution, this means that ramps with up to 65s are possible. With 8-bit resolution the maximum ramp time is only 256 mSFor LFOs a high-res counter is also required, with 8-bit you would only get a minimum frequency of 4 Hz (depends on implementation), with 16-bit ca. 0.015 Hz1 mS update cycle means that 1mS-500 uS = 500 uS are free for other tasks: for updating the analog outputs, handling MIDI, printing LCD messages, etc...Best Regards, Thorsten.Addendum: I just remember that for such a dedicated application you can "unroll" your code, means: avoid iteration loops and avoid the use of pointers and indirect addressing, but generate the code directly (e.g. with macros). Registers should always be addressed diretcly. This enlarges the code dramaticaly, but can reduce the execution time by factor 3..5 and more :) Quote Link to comment Share on other sites More sharing options...
AndrewMartens Posted December 7, 2004 Report Share Posted December 7, 2004 I'm missing an important spec, and thats the update cycle for all voices.Ooh, good point. I hadn't really considered that, but I would imagine that a tolerance of 2-4 mS would probably be acceptable. Maybe up to 10 mS, but I'd really have to listen to the effects of timing.I guess that this number of modulation sources/destinations can be processed within ca. 500 uS with 16 bit resolution. A lower resolution is not practicable, since especially EGs require a high-res counter, otherwise slow ramps cannot be realized.While I had taken the bit resolution into account for the DAC portion (I think 8-bit should be "good enough" for envelopes), I hadn't considered the EG timing.Calculation example: let's say the waveform generator is clocked at each millisecond, the EG counter is working with 16-bit resolution, this means that ramps with up to 65s are possible. With 8-bit resolution the maximum ramp time is only 256 mS.What about this alternate possibility: each envelope has a phase accumulator, step size, and output value. Each cycle (1 mS), the phase accumulator for each envelope is increased by one; if it overflows, the step size is added to the output value. The fastest envelope would be 1 mS; the base accumulator value would be 255 (to overflow on the first step), and the step size would also be 255. The longest envelope would be 65s as you said; base accumulator value would be 0, and the step size would be 1.Or I could be way off - my approach above is just a bastardized 16-bit envelope that makes precise envelope timing difficult at best, and may be almost as (if not more) processor-intensive as a full 16-bit envelope.This is all getting _way_ ahead of myself (I still need to determine whether my PIC-based 2 osc + 2 subosc numerically controlled wavetable oscillator scheme will work)... but it's a lot more fun than doing what I'm supposed to be getting paid to do at work ;) Quote Link to comment Share on other sites More sharing options...
TK. Posted December 7, 2004 Author Report Share Posted December 7, 2004 While I had taken the bit resolution into account for the DAC portion (I think 8-bit should be "good enough" for envelopes), I hadn't considered the EG timing.The final resolution for the destinations doesn't really matter here. You have to work with 16 (or better 24) bit anyhow once you add the LFO/EG output values, thereafter you have to saturate the result to the desired resolution to avoid distortions.What about this alternate possibility: each envelope has a phase accumulator, step size, and output value. Each cycle (1 mS), the phase accumulator for each envelope is increased by one; if it overflows, the step size is added to the output value. The fastest envelope would be 1 mS; the base accumulator value would be 255 (to overflow on the first step), and the step size would also be 255. The longest envelope would be 65s as you said; base accumulator value would be 0, and the step size would be 1.thats the way how I've realized the envelopes and LFOs in the MIDIbox SID/MIDIbox FM firmware (see sid_lfo_table.inc and sid_env_table.inc)but it's a lot more fun than doing what I'm supposed to be getting paid to do at work ;)It definitely is a nice challenge, especially because you are able to hear the results - and sometimes really wired things are coming out, sounds which won't be doable with the final (bugfixed) algorithm ;-)Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
AndrewMartens Posted December 7, 2004 Report Share Posted December 7, 2004 thats the way how I've realized the envelopes and LFOs in the MIDIbox SID/MIDIbox FM firmware (see sid_lfo_table.inc and sid_env_table.inc)Cool, so I'm not crazy after all :DIn case you're curious, the project concept is a digitally-controlled analog polysynth with 8 voices (and up to 8 parts multitimbral). Each voice has two numerically-controlled wavetable oscillators + two suboscillators (-1 or -2 octaves), a Wasp-style 12 dB VCF (switchable NP/LP/BP/HP) with distortion and dual VCAs (one for post-filter, one for post-distortion). The wavetable oscillators will be in a dedicated PIC18F252 (one per voice), using modified Digisound and/or Wiard wavetables in a lookup table in the PIC to save on chip count.Of course, this has nothing to do with the Midibox FM... Quote Link to comment Share on other sites More sharing options...
TK. Posted December 8, 2004 Author Report Share Posted December 8, 2004 Hi Andrew,you must publish sound samples and pictures of the project once the first sounds are comming out! :)Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
Artesia Posted December 20, 2004 Report Share Posted December 20, 2004 Well done ! Another neat project idea :) ..Had forgotten til now how much i liked the sound of those pc soundcard midichips. Demo's sounding very promising, be great to see more on this. By the way, i read somewhere that although this chip supports panning; its support is somewhat limited, ie hard left, center, or right - can i make a suggestion that the 4 output channels have their (panning) output modulated by a add on CV section ? ..this would add the scope for far more dynamic sound variations - (ADSR or LFO modulated?) as part of the sound patch itself potentially. Also btw, yamaha have been continuing development of such soundchips; there latest offering both plays back pcm & adpcm (audiostreams (& samples ?)) & does fm synthsis with 64 voices ! ..interesting - but opl 3 seems more adiquate & accessable right now :) ..might end up salvaging this in the future tho ;){see: http://www.yamaha.co.jp/english/product/lsi/prod/pdf/sgl/4mf781a20.pdf} Quote Link to comment Share on other sites More sharing options...
TK. Posted December 20, 2004 Author Report Share Posted December 20, 2004 Hi Artesia,I've prepared a very generic solution for the CV OUTs: the EG5, the two LFO and the wavetable outputs of each voice (makes 36 signal sources) can be assigned to 8 AOUTs. So, you can not only control a stereo VCA, but also filters, distortion, or whatever you want. But I won't provide special schematics, because there are a lot of webpages from Synth-DIY specialist which cover these topics. However, you can start a collection of useful links if you want.64 voices: this suggestion can only come from people who don't know how busy the PIC18F already is to handle the 6 4-operator voices (+5 percussion voices) of the OPL3. Here the register allocation list to give you an impression. Note that nearly the whole RAM is allocated. I did my best to give each RAM cell a special purpose, most of them are used for very interesting features (most of them are not part of the OPL3 itself, but unique for MIDIbox FM :-));; ==========================================================================MBFM_VOICE_QUEUE_0 EQU 0x0b0MBFM_VOICE_QUEUE_5 EQU 0x0b5MBFM_VOICE_QUEUE_LEN EQU MBFM_VOICE_QUEUE_5 - MBFM_VOICE_QUEUE_0 + 1;; ==========================================================================MBFM_DR_BASE EQU 0x0c0MBFM_DR_BD_M_FLAGS_MULT EQU 0x0c0MBFM_DR_BD_C_FLAGS_MULT EQU 0x0c1MBFM_DR_HH_O_FLAGS_MULT EQU 0x0c2MBFM_DR_HH_C_FLAGS_MULT EQU 0x0c3MBFM_DR_SD_FLAGS_MULT EQU 0x0c4MBFM_DR_TOM_FLAGS_MULT EQU 0x0c5MBFM_DR_CYM_FLAGS_MULT EQU 0x0c6MBFM_DR_BD_M_KSL_TL EQU 0x0c7MBFM_DR_BD_C_KSL_TL EQU 0x0c8MBFM_DR_HH_O_KSL_TL EQU 0x0c9MBFM_DR_HH_C_KSL_TL EQU 0x0caMBFM_DR_SD_KSL_TL EQU 0x0cbMBFM_DR_TOM_KSL_TL EQU 0x0ccMBFM_DR_CYM_KSL_TL EQU 0x0cdMBFM_DR_BD_M_AR_DR EQU 0x0ceMBFM_DR_BD_C_AR_DR EQU 0x0cfMBFM_DR_HH_O_AR_DR EQU 0x0d0MBFM_DR_HH_C_AR_DR EQU 0x0d1MBFM_DR_SD_AR_DR EQU 0x0d2MBFM_DR_TOM_AR_DR EQU 0x0d3MBFM_DR_CYM_AR_DR EQU 0x0d4MBFM_DR_BD_M_SL_RR EQU 0x0d5MBFM_DR_BD_C_SL_RR EQU 0x0d6MBFM_DR_HH_O_SL_RR EQU 0x0d7MBFM_DR_HH_C_SL_RR EQU 0x0d8MBFM_DR_SD_SL_RR EQU 0x0d9MBFM_DR_TOM_SL_RR EQU 0x0daMBFM_DR_CYM_SL_RR EQU 0x0dbMBFM_DR_BD_M_WS EQU 0x0dcMBFM_DR_BD_C_WS EQU 0x0ddMBFM_DR_HH_O_WS EQU 0x0deMBFM_DR_HH_C_WS EQU 0x0dfMBFM_DR_SD_WS EQU 0x0e0MBFM_DR_TOM_WS EQU 0x0e1MBFM_DR_CYM_WS EQU 0x0e2MBFM_DR_BD_CH_FB_CNT EQU 0x0e3MBFM_DR_HH_SD_CH_FB_CNT EQU 0x0e4MBFM_DR_CYM_TOM_CH_FB_CNT EQU 0x0e5MBFM_DR_BD_FRQ EQU 0x0e6MBFM_DR_BD_DECR EQU 0x0e7MBFM_DR_HH_FRQ EQU 0x0e8MBFM_DR_HH_DECR EQU 0x0e9MBFM_DR_TOM_FRQ EQU 0x0eaMBFM_DR_TOM_DECR EQU 0x0ebMBFM_DR_BD_SPLIT_LOWER EQU 0x0ecMBFM_DR_BD_SPLIT_UPPER EQU 0x0edMBFM_DR_HH_O_SPLIT_LOWER EQU 0x0eeMBFM_DR_HH_O_SPLIT_UPPER EQU 0x0efMBFM_DR_HH_C_SPLIT_LOWER EQU 0x0f0MBFM_DR_HH_C_SPLIT_UPPER EQU 0x0f1MBFM_DR_SD_SPLIT_LOWER EQU 0x0f2MBFM_DR_SD_SPLIT_UPPER EQU 0x0f3MBFM_DR_TOM_SPLIT_LOWER EQU 0x0f4MBFM_DR_TOM_SPLIT_UPPER EQU 0x0f5MBFM_DR_CYM_SPLIT_LOWER EQU 0x0f6MBFM_DR_CYM_SPLIT_UPPER EQU 0x0f7 ;; last address which should be stored in BankStick. Everything else will be set to zeroMBFM_DR_LAST_BANKSTICK_ADDR EQU MBFM_DR_CYM_SPLIT_UPPER - MBFM_DR_BASE ;; free 0xf8-0xf9MBFM_DR_BD_FRQL EQU 0x0faMBFM_DR_BD_FRQH EQU 0x0fbMBFM_DR_HH_FRQL EQU 0x0fcMBFM_DR_HH_FRQH EQU 0x0fdMBFM_DR_TOM_FRQL EQU 0x0feMBFM_DR_TOM_FRQH EQU 0x0ff==========================================================================;; instrument memory storage;; one instrument record allocates 0x80 = 128 bytesMBFM_Ix_RECORD_LEN EQU 0x80MBFM_Ix_NAME_x EQU 0x00 ; -0x10MBFM_Ix_OP1_FLAGS_MULT EQU 0x10MBFM_Ix_OP2_FLAGS_MULT EQU 0x11MBFM_Ix_OP3_FLAGS_MULT EQU 0x12MBFM_Ix_OP4_FLAGS_MULT EQU 0x13MBFM_Ix_OP1_KSL_TL EQU 0x14MBFM_Ix_OP2_KSL_TL EQU 0x15MBFM_Ix_OP3_KSL_TL EQU 0x16MBFM_Ix_OP4_KSL_TL EQU 0x17MBFM_Ix_OP1_AR_DR EQU 0x18MBFM_Ix_OP2_AR_DR EQU 0x19MBFM_Ix_OP3_AR_DR EQU 0x1aMBFM_Ix_OP4_AR_DR EQU 0x1bMBFM_Ix_OP1_SL_RR EQU 0x1cMBFM_Ix_OP2_SL_RR EQU 0x1dMBFM_Ix_OP3_SL_RR EQU 0x1eMBFM_Ix_OP4_SL_RR EQU 0x1fMBFM_Ix_OP1_WS EQU 0x20MBFM_Ix_OP2_WS EQU 0x21MBFM_Ix_OP3_WS EQU 0x22MBFM_Ix_OP4_WS EQU 0x23MBFM_Ix_OP12_CH_FB_CNT EQU 0x24MBFM_Ix_OP34_CH_FB_CNT EQU 0x25MBFM_Ix_CTRL1 EQU 0x26MBFM_Ix_CTRL2 EQU 0x27MBFM_Ix_AOUT_MOD_ASSGN EQU 0x28MBFM_Ix_FINETUNE EQU 0x29MBFM_Ix_PITCHRANGE EQU 0x2aMBFM_Ix_PORTA_RATE EQU 0x2bMBFM_Ix_VELOCITY_ASSIGN EQU 0x2cMBFM_Ix_VELOCITY_INIT EQU 0x2dMBFM_Ix_VELOCITY_DEPTH EQU 0x2eMBFM_Ix_AFTERTOUCH_ASSIGN EQU 0x2fMBFM_Ix_AFTERTOUCH_INIT EQU 0x30MBFM_Ix_AFTERTOUCH_DEPTH EQU 0x31MBFM_Ix_MODWHEEL_ASSIGN EQU 0x32MBFM_Ix_MODWHEEL_INIT EQU 0x33MBFM_Ix_MODWHEEL_DEPTH EQU 0x34MBFM_Ix_WT_RATE EQU 0x35MBFM_Ix_WT_PAR1 EQU 0x36MBFM_Ix_WT_PAR2 EQU 0x37MBFM_Ix_WT_PAR3 EQU 0x38MBFM_Ix_LFO1_MODE EQU 0x39MBFM_Ix_LFO1_PHASE EQU 0x3aMBFM_Ix_LFO1_RATE EQU 0x3bMBFM_Ix_LFO1_DEPTH_P EQU 0x3cMBFM_Ix_LFO1_DEPTH_V1 EQU 0x3dMBFM_Ix_LFO1_DEPTH_V2 EQU 0x3eMBFM_Ix_LFO1_DEPTH_V3 EQU 0x3fMBFM_Ix_LFO1_DEPTH_V4 EQU 0x40MBFM_Ix_LFO1_DEPTH_L EQU 0x41MBFM_Ix_LFO1_DEPTH_A EQU 0x42MBFM_Ix_LFO2_MODE EQU 0x43MBFM_Ix_LFO2_PHASE EQU 0x44MBFM_Ix_LFO2_RATE EQU 0x45MBFM_Ix_LFO2_DEPTH_P EQU 0x46MBFM_Ix_LFO2_DEPTH_V1 EQU 0x47MBFM_Ix_LFO2_DEPTH_V2 EQU 0x48MBFM_Ix_LFO2_DEPTH_V3 EQU 0x49MBFM_Ix_LFO2_DEPTH_V4 EQU 0x4aMBFM_Ix_LFO2_DEPTH_L EQU 0x4bMBFM_Ix_LFO2_DEPTH_A EQU 0x4cMBFM_Ix_EG5_MODE EQU 0x4dMBFM_Ix_EG5_ATTACK EQU 0x4eMBFM_Ix_EG5_ATTLVL EQU 0x4fMBFM_Ix_EG5_DECAY1 EQU 0x50MBFM_Ix_EG5_DECLVL EQU 0x51MBFM_Ix_EG5_DECAY2 EQU 0x52MBFM_Ix_EG5_SUSTAIN EQU 0x53MBFM_Ix_EG5_RELEASE EQU 0x54MBFM_Ix_EG5_CURVE EQU 0x55MBFM_Ix_EG5_DEPTH_P EQU 0x56MBFM_Ix_EG5_DEPTH_V1 EQU 0x57MBFM_Ix_EG5_DEPTH_V2 EQU 0x58MBFM_Ix_EG5_DEPTH_V3 EQU 0x59MBFM_Ix_EG5_DEPTH_V4 EQU 0x5aMBFM_Ix_EG5_DEPTH_A EQU 0x5bMBFM_Ix_EG5_DEPTH_L EQU 0x5cMBFM_Ix_BANK EQU 0x60MBFM_Ix_PATCH EQU 0x61MBFM_Ix_MIDI_CHANNEL EQU 0x62MBFM_Ix_SPLIT_LOWER EQU 0x63MBFM_Ix_SPLIT_UPPER EQU 0x64MBFM_Ix_TRANSPOSE EQU 0x65MBFM_Ix_UNISONO EQU 0x66MBFM_Ix_AUDIO_CHANNELS EQU 0x67MBFM_Ix_MODWHEEL EQU 0x70MBFM_Ix_AFTERTOUCH EQU 0x71MBFM_Ix_PITCHBENDER EQU 0x72MBFM_Ix_LAST_VOICE EQU 0x73MBFM_Ix_NOTE_STACK_0 EQU 0x78MBFM_Ix_NOTE_STACK_1 EQU 0x79MBFM_Ix_NOTE_STACK_2 EQU 0x7aMBFM_Ix_NOTE_STACK_3 EQU 0x7bMBFM_Ix_NOTE_STACK_4 EQU 0x7cMBFM_Ix_NOTE_STACK_5 EQU 0x7dMBFM_Ix_NOTE_STACK_6 EQU 0x7eMBFM_Ix_NOTE_STACK_7 EQU 0x7f ;; base addresses of instrument recordsMBFM_Ix_NUM EQU 4MBFM_I1_BASE EQU 0x100 + 0 * MBFM_Ix_RECORD_LEN ; 0x100-0x17fMBFM_I2_BASE EQU 0x100 + 1 * MBFM_Ix_RECORD_LEN ; 0x180-0x1ffMBFM_I3_BASE EQU 0x100 + 2 * MBFM_Ix_RECORD_LEN ; 0x200-0x27fMBFM_I4_BASE EQU 0x100 + 3 * MBFM_Ix_RECORD_LEN ; 0x280-0x2ffMBFM_Ix_NOTE_STACK_LEN EQU MBFM_Ix_NOTE_STACK_7 - MBFM_Ix_NOTE_STACK_0 + 1==========================================================================;; NOTE: MBFM_Px_xxx defined in mbfm_par_table.inc!==========================================================================;; ==========================================================================;; voice memory storage;; one voice record allocates 0x20 = 32 bytesMBFM_Vx_NUM EQU 6MBFM_Vx_RECORD_LEN EQU 0x20MBFM_Vx_UPDATE0 EQU 0x00MBFM_Vx_UPDATE1 EQU 0x01MBFM_Vx_FNUML EQU 0x02MBFM_Vx_FNUMH EQU 0x03MBFM_Vx_OP1_KSL_TL EQU 0x04MBFM_Vx_OP2_KSL_TL EQU 0x05MBFM_Vx_OP3_KSL_TL EQU 0x06MBFM_Vx_OP4_KSL_TL EQU 0x07MBFM_Vx_OP1_VOL EQU 0x08MBFM_Vx_OP2_VOL EQU 0x09MBFM_Vx_OP3_VOL EQU 0x0aMBFM_Vx_OP4_VOL EQU 0x0bMBFM_Vx_STAT EQU 0x0cMBFM_Vx_NOTE EQU 0x0dMBFM_Vx_VELOCITY EQU 0x0eMBFM_Vx_ASSIGNED_INSTR EQU 0x0fMBFM_Vx_FRQ_L EQU 0x10MBFM_Vx_FRQ_H EQU 0x11MBFM_Vx_TARGET_FRQ_L EQU 0x12MBFM_Vx_TARGET_FRQ_H EQU 0x13MBFM_Vx_LFO1_STAT EQU 0x14MBFM_Vx_LFO1_RATE EQU 0x15MBFM_Vx_LFO1_CTR EQU 0x16MBFM_Vx_LFO1_VALUE EQU 0x17MBFM_Vx_LFO2_STAT EQU 0x18MBFM_Vx_LFO2_RATE EQU 0x19MBFM_Vx_LFO2_CTR EQU 0x1aMBFM_Vx_LFO2_VALUE EQU 0x1bMBFM_Vx_EG5_STAT EQU 0x1cMBFM_Vx_EG5_CTR_L EQU 0x1dMBFM_Vx_EG5_CTR_H EQU 0x1eMBFM_V1_BASE EQU 0x300 + 0 * MBFM_Vx_RECORD_LEN ; 0x300MBFM_V2_BASE EQU 0x300 + 1 * MBFM_Vx_RECORD_LEN ; 0x320MBFM_V3_BASE EQU 0x300 + 2 * MBFM_Vx_RECORD_LEN ; 0x340MBFM_V4_BASE EQU 0x300 + 3 * MBFM_Vx_RECORD_LEN ; 0x360MBFM_V5_BASE EQU 0x300 + 4 * MBFM_Vx_RECORD_LEN ; 0x380MBFM_V6_BASE EQU 0x300 + 5 * MBFM_Vx_RECORD_LEN ; 0x3c0So, take MIDIbox FM as a synth with a special sound which cannot be achived with a common (software) synth (partly due to the "nice" and not-emulatable distortions which are caused by the limited resolution of the OPL3 internals - lets call it "crispy" ;-) ), but don't take it as a high-end synthesizer with a nearly unlimited number of voices and always perfect sounds. This area is covered by synth manufactures and not worth the effort from my side.Note also that each additional feature would mean that I have to downstrip already implemented features. The resources of the PIC18F452 are tiny compared to state-of-the-art microcontrollers (see the News section for oppinions on this topic)Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
Artesia Posted December 20, 2004 Report Share Posted December 20, 2004 Hey :)I've prepared a very generic solution for the CV OUTs: the EG5, the two LFO and the wavetable outputs of each voice (makes 36 signal sources) can be assigned to 8 AOUTs. So, you can not only control a stereo VCA, but also filters, distortion, or whatever you want. But I won't provide special schematics, because there are a lot of webpages from Synth-DIY specialist which cover these topics. However, you can start a collection of useful links if you want. Good broad thinking there :) Shall be fun to toy with that, will have time to actually finish building some hardware in 2005. On the note of such hardware modules, i shall take the time to offer up some links for such places. However i would quite like to design such hardware module solutions specifically for the MIOS project; assuming no one else is currently doing so. Unlike pointing to external links, this would provide some tryed and tested modules (ie: VCA's, Resonant EQ's etc) - which people here could offer support for new builders (and maybe even pcbs ?) etc. This would also allow people to swap patches with hardware using these extensions & get the 'same' sound out of the box :) One thing i will shortly be sorting out as my first little venture this way, is a simple light controlled voltage source. This could be used to control the brightness of leds & backlights on midibox projects to optimise viewing clarity & power consumption under varying lighting conditions automatically. Similar to the way canon camera's vary the brightness of the viewfinder readouts dependant of the light meter readings.64 voices: this suggestion can only come from people who don't know how busy the PIC18F already is to handle the 6 4-operator voices (+5 percussion voices) of the OPL3. :) ...Well, took half a guess that maybe so - however with the new gen of yamaha chips its more of a suggestion for 'distant' future possibles. Also notably the chip mentioned has onboard cpu for controlling all the widgets; so the strain maybe somewhat less - but it might however involve quite abit more programming :] On the note of gritty lo-fi non-dithered sound - i have to totally agree :) ..it sounds fantastic & gives a real zing to it. So many synths sound too smoothed & dull now (no matter how hard you push them) - with the ever excessive attempts to make them as 'hi-fi' as possible. Another little thing worth messing around with for the sake of getting weird & funky gargles out of a synth like this - is to make the sampling frequency of the DAC variable. This of course works like a really dirty low pass filter & produces some wonderful noises. This Probably could not be done with the dac chips for this synth - however with other dacs &/or some data stream processing this effect could possibly be acheived. To get a idea of what this can sound like; if you have a soundblaster live card - use the KX drivers & go into the structure editor (disable output dithering) & insert the downsampling module in the main signal output chain. This will allow both sample rate & bit depth to be adjusted in realtime on whatever is being played. This sounds -kool- ! (can also be done in cooledit, but is not realtime & thus a little tedious). Quote Link to comment Share on other sites More sharing options...
cheater Posted December 24, 2004 Report Share Posted December 24, 2004 Is digital-out planned for the synth? (I know it's early - but I believe that'd be the first vintage Yamaha FM synth with digital output 8) ) Quote Link to comment Share on other sites More sharing options...
Screaming_Rabbit Posted December 29, 2004 Report Share Posted December 29, 2004 Of course, You're never runnin' out of ideas.. BUT - I've never heard of a real HARDWARE synth, capable of Granular synthesis.. *Whistling*... this one offers some kind of granular synthesis:http://www.hartmann-music.com/home/us/neuron/soundengine/soundengine_basics.htmlGreets, Roger Quote Link to comment Share on other sites More sharing options...
cheater Posted December 29, 2004 Report Share Posted December 29, 2004 Actually it's a PC :) with gentoo linux :) And it gets real, real big delays on the notes too.... Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.