midibox_sid
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
midibox_sid [2006/03/25 16:39] – several updates admin | midibox_sid [2016/06/27 12:56] (current) – psykhaze | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | **MIDIbox SID FAQ** | + | ====== Overview ====== |
- | ===== Do I need the big and expensive control surface to get some sound out of my SID? ===== | + | //FIXME Update Things// |
- | No, you can control all sound parameters of your MIDIbox SID from a computer, with some ergonomic limitations also from a common MIDI controller. However, | + | MIDIbox SID synthesizer is a project that uses the classic SID (Sound Interface Device) soundchip |
+ | For specific info on user created designs, please check the [[http:// | ||
- | ===== Do I need a PIC18F452 for my SID or can I reuse my old PIC16F877? ===== | ||
- | Both microcontrollers are supported, but the control surface runs only with a PIC18F452. However, a new PIC18F452 (ca. US $10) doesn' | + | === Info on ucapps.de === |
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
- | ===== Where can I purchase a SID (6581 or 8580)? ===== | + | === General info on the WIKI === |
+ | * :!: [[MIDIbox SID FAQ|MIDIbox SID FAQ - Questions and Answers]] | ||
+ | * [[MIDIbox SID TB303 mode]] | ||
+ | * [[MIDIbox SID V1 Manual|The User Manual of MIDIbox SID V1]] | ||
+ | * The [[SID module]] holds the SID chip. It connects to the [[core module]]. | ||
- | Unfortunately the SID has been discontinued, | ||
- | *Addendum:* if you don't find a C64 or SID at EBay, try it [[http:// | + | === HowTos ==== |
+ | | ||
+ | * mbSIDv2: **[[Changing the order of items in menu pages]]** | ||
+ | * mbSIDv2: **[[Changing DIN pins]]** | ||
+ | * mbSIDv2: **[[Changing DOUT pins]]** | ||
+ | * mbSIDv2: **[[Layering the UI]]** | ||
+ | * mbSIDv2: **[[Adding buttons for bankstick switching]]** | ||
+ | * mbSIDv2: **[[Upgrade CS Step A (mbSIDv1) to have Shift function on Menu button]]** | ||
+ | * mbSIDv2: **[[Default Encoder Assignments]]** | ||
+ | === External info === | ||
- | ===== How can I realize a stereo SID synth? ===== | + | |
- | + | ||
- | Currently only with two CORE and two SID modules. \\ | + | |
- | Note that [[http:// | + | |
- | + | ||
- | + | ||
- | ===== What is the purpose of the Audio Input? ===== | + | |
- | + | ||
- | It allows you to chain SID modules. Note that the signal from the Audio Input goes also through the multistate filter! | + | |
- | + | ||
- | ===== How can I save my sound creations? ===== | + | |
- | + | ||
- | If the control surface is enabled, you can save the patch into a BankStick from the SAV menu. | + | |
- | + | ||
- | You can also request a dump of a patch with < | + | |
- | + | ||
- | Update: TL has implemented a really useful "Patch Manager" | + | |
- | + | ||
- | + | ||
- | ===== How many patches can be saved in a BankStick? ===== | + | |
- | + | ||
- | Up to 128 patches can be saved in a BankStick. They can be selected with the " | + | |
- | + | ||
- | Up to 8 BankSticks can be connected to MIDIbox SID - makes 1024 patches in total. Banks can be selected via CC #0 | + | |
- | + | ||
- | + | ||
- | ===== Do I need a BankStick to get the MIDIbox SID running? ===== | + | |
- | + | ||
- | The BankStick is an optional feature. If no stick is connected, only one patch can be stored into the internal EEPROM. This is still usefull if you manage the sound patches from the JSynthLib librarian and don't need quick access to your favourite sounds. | + | |
- | + | ||
- | + | ||
- | ===== How does MIDIbox SID cooperate with other MIDIboxes? ===== | + | |
- | + | ||
- | A MIDIbox can send _F0 00 00 7E 46 < | + | |
- | + | ||
- | + | ||
- | ===== How can I change the MIDI channel? ===== | + | |
- | + | ||
- | If the " | + | |
- | + | ||
- | If the control surface is not enabled (minimal version of MIDIbox SID), the channel can be changed with following SysEx command: | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | + | ||
- | + | ||
- | ===== How can I change the Device ID? ===== | + | |
- | + | ||
- | So long the AUTO_DEVICE_ID switch is enabled (this is the default setting), the device ID will be derived from the MIOS Device ID. This is the most comfortable (and less confusing) solution. In this case, the ID cannot be changed from a menu, and also not via SysEx. | + | |
- | + | ||
- | If the AUTO_DEVICE_ID switch is disabled, you can change the ID within the CFG menu, or via SysEx: | + | |
- | < | + | |
- | + | ||
- | + | ||
- | ===== How can I create Wavetables? ===== | + | |
- | + | ||
- | Wavetables can be edited with the JSynthLib Editor or from the Control Surface. First you should check the example patches which can be downloaded below. The preset library includes some demonstrations of this powerfull feature (patch names begin with WT). You can define up to 32 table entries for 3 different CC parameters which are played with every note. Most common parameters are " | + | |
- | + | ||
- | Four different directives can be selected for each entry: " | + | |
- | + | ||
- | The three parameter columns are used to enter absolute or relative values for the three CC parameters. Normaly a wavetable begins with absolute values for a defined start when a new note is played (examples: 40 - don't transpose, 3F: minus one note, 41: plus one note. Values can also be entered in decimal form, but a real C64 hacker proscribes such a unusual number system, so both variants are available ;-). For the other values below the first row it's your choice. Pitches (Transpose values) are normaly entered as relative values (begin with a + or -), Waveforms as absolute values (examples: 01 - Triangle, 02 - Saw, 04 - Pulse, 08 - Noise, 12 - oscillator saw & off, 21 - synced triangle). Refer to the [[http:// | + | |
- | + | ||
- | Here an example for a snare drum: | + | |
- | < | + | |
- | CC Parameter #1 assigned to Voice1 Waveform | + | |
- | CC Parameter #2 assigned to Voice1 Transpose | + | |
- | CC Parameter #3 not used here | + | |
- | Rate (Speed) set to 119 | + | |
- | + | ||
- | 00 | + | |
- | 01 | + | |
- | 02 | + | |
- | 03 | + | |
- | 04 | + | |
- | 05 | + | |
- | 06 | + | |
- | </ | + | |
- | + | ||
- | The result can be heared at the beginning of [[http:// | + | |
- | + | ||
- | Another example, a synth sound with loop point: | + | |
- | < | + | |
- | CC Parameter #1 assigned to Voice1/2/3 Transpose | + | |
- | CC Parameter #2 not used here | + | |
- | CC Parameter #3 not used here | + | |
- | Rate (Speed) set to 88 | + | |
- | + | ||
- | 00 | + | |
- | 01 | + | |
- | 02 | + | |
- | 03 | + | |
- | 04 | + | |
- | 05 | + | |
- | </ | + | |
- | + | ||
- | This result into a nice dropping sound, known from C64 games :) | + | |
- | + | ||
- | However, this was just a short introduction, | + | |
- | + | ||
- | *Update:* since v1.5 it is also possible to trigger notes and arpeggiator keys from the wavetable sequencer in order to realize more complex textures. The appr. CCs are #8-#11. Examples can be found in the preset patch library (patch #64 upwards). | + | |
- | + | ||
- | + | ||
- | ===== How do I start the JSynthLib editor? ===== | + | |
- | + | ||
- | This is described in the JSynthLib guide [[http:// | + | |
- | + | ||
- | + | ||
- | ===== How to supply power? ===== | + | |
- | + | ||
- | Without the C64 PSU it's better to use seperate power supplies. One for the SID module (15V/100 mA should be ok), another for the digital modules (7V/500 mA are possibly enough) | + | |
- | + | ||
- | It can work with a single PSU (Thorsten used this configuration at the beginning), but the 7805 of the core will get very hot, especially when additional consumers (esp. backlit LCD) are connected. | + | |
- | + | ||
- | + | ||
- | ===== Will feature X be implemented? | + | |
- | + | ||
- | There are several things to consider before a new feature is implemented. Will it be used by a lot of people? Is the hardware really able to do that, will it use up too much memory? Remember, we're only using a PIC here. Also, the MB SID is built in such a way that each editable feature has to have a MIDI CC number. And since most of those are already used, you'll need a //Really Good Reason< | + | |
- | //Sounds strange? Here the reason why I'm always very carefully with new features: check the CC list of MIDIbox SID and you will notice that most CC parameters are allocated. Check the content of the SysEx dump (e.g. in the JSynthLib driver) and you will notice that also there most of the memory is allocated (and I already did a lot of tricks).// | + | |
- | + | ||
- | //Oh, now you possibly come with the suggestion that NRPN should be used instead of CC --- no chance! One of my focus was always the capability to control all parameters via external sequencers/ | + | |
- | + | ||
- | //Next suggestion from your side could be to remove some uninteresting parameters from the CC list to make some new place free for new ones. But this is also nearly impossible, since the internal parameter handling relies on CC parameters. A different implementation would consume much more memory (which means: some nice new functions would possibly never fit into memory anymore)// | + | |
- | + | ||
- | Also, using another MIDI channel to make more CC numbers available (again, TK) // | + | |
- | + | ||
- | + | ||
- | ===== Can you connect multiple SIDs in parallel to one Core, to get a " | + | |
- | + | ||
- | You can - but beware, the SID's oscilators are DCOs, which means they' | + | |
- | + | ||
- | As TK says: //you can connect multiple SID modules to one core module, in this case they always listen to the same control data. But the audible effect isn't really so interesting. If you are having two identical SIDs, then the volume will just be doubled (the oscillators are digital and therefore always output exactly the same waveform). | + | |
- | This option can make sense if you want to switch between 6581 and 8580 because of the different filter characteristics. | + | |
- | But for really interesting (especially fat) sounds, seperate cores are the best option, so that the SID parameters are modulated independent from each other. The result is much more analog-like(especially when the LFOs are in freerunning mode and the finetune/ | + | |
- | + | ||
- | + | ||
- | ===== Can we get better envelopes? ATDTLDTSRTR ;)? ===== | + | |
- | + | ||
- | This would use up more MIDI CC numbers, and memory. And you know you should take care with that! | + | |
- | + | ||
- | + | ||
- | ===== Can we get faster LFOs, WTs? ===== | + | |
- | + | ||
- | The SID chip can only be updated at 1220 Hz. Because of that, an LFO starts to " | + | |
- | + | ||
- | + | ||
- | ===== Is Oscillator FM doable with the SID chips? ===== | + | |
- | + | ||
- | As TK puts it: //no// | + | |
- | + | ||
- | + | ||
- | ===== Is it possible to add morphing between the patches of MB SID? ===== | + | |
- | + | ||
- | It would require memory for a mirror of all parameters (old ones you're morphing from and new ones to morph to). And even more memory for the morphing itself. Conclusion: can't be done really. | + | |
- | + | ||
- | + | ||
- | ===== Can you implement modulation depth values in the modulation matrix? ===== | + | |
- | + | ||
- | In words of TK: //typical question from somebody who thinks that if other synths have a depth pot for each modulation target, MBSID must have the same. Some technical background: I started MIDIbox SID ca. 3 years ago on a PIC16F877 which doesn' | + | |
- | The result is the same. | + | |
- | Not exactly, because common synths mostly don't provide 6 LFOs and two envelopes for a mono voice, they provide seperate depths instead just as a workaround for this limitation. This means also, that there is more live in the sound of MBSID when you just use the existing the modulation possibilities// | + | |
- | + | ||
- | + | ||
- | ===== Can you add more sources in the mod matrix (aftertouch, | + | |
- | + | ||
- | modmatrix costs a lot of execution time, therefore Aftertouch/ | + | |
- | + | ||
- | + | ||
- | ===== Can you add filter resonance as a mod matrix destination? | + | |
- | + | ||
- | Have you ever tried sweeping the SID's resonance? :) It's just a two-pole filter. You'll be much more successful with an external filter module. | + | |
- | + | ||
- | + | ||
- | ===== Can we have more SIDs in one MB SID? ===== | + | |
- | + | ||
- | TK: //As always I have to define such specs before beginning with the implementation. First I thought that controlling two SIDs from one control surface is sufficient for stereo effects. Then I was possibly in such a volatile temper that I decided the incredible: controlling 4 SIDs from a single PIC, which is doing the sound engine of one SID in parallel! Hard to believe that this works without affecting the realtime capabilities too much. I'm really proud that it works without trouble.// | + | |
- | + | ||
- | However, if you really want 8 SIDs, TK suggests: //you could build two 4*SID systems... this will possibly cost you 50 EUR more, but what are 50 EUR compared to my unpayable sparetime ;-)// | + | |
- | + | ||
- | I'd go with that suggestion :) | + | |
- | + | ||
- | + | ||
- | ===== How do I make the MB SID sound more phat? ===== | + | |
- | + | ||
- | Try external effects, filters. Connect them to the synth's AOUT. Experiment with the Moog filter from Rene Schmitz: [[http:// | + | |
- | Try guitar effects. It's unbelievable what evil a simple fuzz can do to a lead or a nice " | + | |
- | + | ||
- | + | ||
- | ===== Does MIDIbox SID support graphical LCDs? ===== | + | |
- | + | ||
- | Yes and *no* | + | |
- | + | ||
- | MIOS itself supports graphical LCDs, which means that you could use such displays with the MIDIbox SID application. | + | |
- | + | ||
- | But the application itself doesn' | + | |
- | + | ||
- | Another problem is, that graphical LCD loads the CPU much more than dotmatrix LCDs, therefore such an option has never been taken into account, it would affect the realtime behaviour of the synth too much. | + | |
- | + | ||
- | In theory it should be possible to use a second core just only for the graphical user interface. But no volunteer has been found so far who wants to implement this. | + | |
- | + | ||
- | + | ||
- | ===== Do I need an AIN module for the " | + | |
- | + | ||
- | No, an AIN module is not required. | + | |
- | + | ||
- | The analog signal sources can be directly connected to J5: | + | |
- | + | ||
- | If you want to check the analog inputs, just select the " | + | |
- | + | ||
- | + | ||
- | ===== Why does the "play note" feature of CS Step C play multiple SIDs at once ===== | + | |
- | + | ||
- | TK wrote: | + | |
- | Thats a known " | + | |
- | + | ||
- | Sending a note instead of SysEx has also the advantage, that if SIDs are assigned to the same channel, they will be started at exactly the same time without a delay. Doing the same with SysEx would mean that I would have to implement something like a " | + | |
- | + | ||
- | + | ||
- | ===== Why does MIDIbox SID stop playing a note when a patch is changed ===== | + | |
- | + | ||
- | this would lead to many unwanted side effects and wouldn' | + | |
- | + | ||
- | A proper patch change without reset would also require that the whole patch data is transfered to the SID as well as to the sound engine within one update cycle (0.8 mS), this is not possible with the PIC. It's especially not possible to send so much data to the slaves within this short timewindow, since the transfer takes ca. 260 mS. | + | |
- | + | ||
- | + | ||
- | ===== How is it possible to save CC changes which have been sent from external ===== | + | |
- | + | ||
- | Short answer: enable the edit mode. In this mode, all CC changes which have been sent to the master will be regognized by the control surface. CC changes to the slaves won't be regognized. | + | |
- | + | ||
- | Long answer - TK wrote: | + | |
- | Update of CCs to slaves: nearly impossible with the concept. At the time where I started with the implementation of the SID application on the PIC18F I had to decide | + | |
- | + | ||
- | This works fine in most cases, but it has disadvantages which must be accepted. E.g., since it is possible to change multiple parameters with a single CC (e.g. CC#16 which changes the transpose value of all three oscillators), | + | |
- | The current solution is to read back the data from the sound engine data storage and copy it into the SysEx storage when the CPU has some free time. This works fine, but only for the master SID, because the control surface has no access to the sound engine storage of the slave SIDs (unidirectional interface...) | + | |
- | + | ||
- | Another solution could be to write a large function which decodes the incoming CCs and passes them to the appr. registers of the SysEx structure. This would work for the master and the slaves, but it would consume so much code memory, that other features would have to be removed. Therefore I prefered the " | + | |
- | + | ||
- | There are two good points which I want to mention here: | + | |
- | 1) for the MIDIbox | + | |
- | 2) sometimes I'm thinking about a major redesign of the SID application which doesn' | + | |
- | + | ||
- | However, just another remark: if the PIC18F4620 wouldn' | + |
midibox_sid.1143304777.txt.gz · Last modified: 2006/10/15 09:35 (external edit)