Jump to content

MIDIbox ASIDITY


Sauraen
 Share

Recommended Posts

med_gallery_10357_139_167434.jpg

 

 

Oikanys and I are happy to introduce MIDIbox ASIDITY: soon to be arguably the world's most powerful SID-based synthesizer!

 

[Edit: The listed features have changed slightly as the build has progressed. I will update this post as it becomes final.]


Designed with the mantra "MORE CONTROL" always in mind, ASIDITY harnesses the powerful versatility of eight Commodore 64 SID sound chips and one OPL3 using three LPC1769 cores. Featuring a digitally controlled feedback/volume/panning array, a massive modulation matrix (40 active and 198 passive modulators outputting to 512 SID parameters, 620 OPL3 parameters, and 424 modulator parameters), a powerful built-in 64-track 1536-measure morph sequencer that can control the SIDs as well as eight external MIDI outputs, an 8x16 four-color button/LED matrix that can run built-in adaptive visualizers when not being used, 35 knobs, over 240 buttons, and over 760 LEDs, ASIDITY will be awesome (if we finish it ;) ).

Features:
---------

SID core:
- Support for up to 8 SIDs of any type (will be using 4x6581 and 4x8580)
- Each SID audio output is split into 6, run through LM1973 audio attenuators, and connected as follows: feedback input to same SID, feedback input to next SID's audio in, feedback input to next-to-next SID's audio input, external audio output (one per SID), master left channel, master right channel; this allows for leveling and panning of each SID independently
- In addition to the feedback inputs from other SIDs, each SID has an external audio input

- Each SID has four pairs of filter capacitors; which one is active is digitally controlled (modulatable)
- Modulation matrix: 239 modulation sources (all independent): 8 EGs, 8 LFOs, 8 Patterns (16-step sequencers), 8 random generators (with 3 adjustable biases each), 8 256-step data delay modules, 64 Note track outputs from sequencer, 64 Velocity track outputs from sequencer, 32 configurable MIDI/loopback inputs, 32 configurable control surface outputs, 7 sequencer data inputs
- All active modulators (EGs, LFOs, PTNs, RNDs, DLYs) have gate, time scale, and value scale inputs, plus 12 more each
- Every SID parameter is modulatable (64 per SID), including things like filter type and TEST bit

- Every OPL3 parameter is modulatable except CSW and NoteSel, including things like waveform and whether a voice is 2-op or 4-op

- For both sound chips, frequency is modulatable in cents; includes two-mode portamento
- Modulators connected to a destination are combined through operators:  +, -, *, /, AND, OR, XOR, XNOR, ==, !=, >=, <=. >, <, with options: Negation, Invert, Bitwise, Enable, Zero Half mode; allows selection of first modulator processed in order-dependent operations like subtraction and division
- Copy function
- Save and load complete state or individual voices to dedicated SD card
- Communicates with other cores over MBNet (CAN interface)
- Hardware refreshes a register of all the SIDs at the same time, or a value of eight of the audio attenuators, for maximum framerate
- Adaptive framerate (software only processes modulators, outputs, etc. if they have been changed)
- Switch between four tuning systems for the SIDs: one is fixed at equal temperament but the others are generatable by runtime-definable algorithms (e.g. you can make D-centered just intonation just with the front panel controls); not fixed to twelve notes per octave so you may do microtonal stuff
- Control surface mode: Configure the knobs and matrix buttons to output values to 32 modulators, then place the control surface in CS mode and operate the controls to modulate things. This is not the only way to directly control SID parameters, though; in the modulation matrix edit screens, just turn the column knobs to edit the default values.

Sequencer core:
- Four UART-based MIDI inputs and four outputs
- Five more input and output ports through USB MIDI port
- An additional four MIDI inputs, four MIDI outputs, and USB MIDI port are available on the front panel core (communication through MBNet), which support fixed-length MIDI messages only (no SysEx)
- 64 tracks
- Variable number of measures per track, 1-768
- Variable number of steps per measure for each track, 1-16
- External SRAM modules hold 64 tracks x 16 steps per measure x 1536 measures

- Two sequences can be loaded at once and tracks switched between them, one-by-one or in groups
- Within each step: 7 bit note, 7 bit velocity, 6 bit delay (proportion), 6 bit gatelength (proportion), 3 bit roll (number of equal subdivisions in step), boolean whether note output is smoothed, boolean whether velocity output is smoothed

- Three triplet modes: 3-within-1-step (all share same note and velocity--this is really just three-hit roll), 3-within-2-steps (all share same velocity), or 3-within-4-steps (all independent)
- Jump To and Resume buttons (changes current sequencer play position to selected step, and puts it back to where it would be if you hadn't jumped); softkey to reset Resume to current position
- Hold and Release buttons (pile up a lot of buttons to be either released or pressed when you press Release on the downbeat of the break)
- Always-accessible mute and solo buttons with both destructive and non-destructive soloing (destructive means when you press solo, it just mutes the other tracks rather than having a separate solo layer above the mute layer)
- Save and load sequences in internal format to dedicated SD card
- MIDI In configuration: n-voice polyphony starting from arbitrary track, routing of control messages to note or velocity input or directly to SID core MIDI modulators
- MIDI Out configuration: send track outputs to selected ports/channels
- Arpeggiator: 20 page design document, we'll see how much gets done

Front panel core:
- 16x8 button/LED matrix with red, yellow, green, and blue LEDs beneath each button; total light power of BLM is ~1000 Candelas
- Column select buttons with red/green LEDs and encoders below each column
- Row select buttons with red/green LEDs and encoders on each side of each row

- One 6-digit LED display and two 3-digit LED displays, to show parameter values, tempo, column numbers, etc.
- Columns correspond to five-character-wide sections of LCD
- 16 softkeys with LEDs, one below each column (5 chars) of the LCDs
- Variety of buttons
- Front panel core uses custom driver to run front panel; also runs both LCDs, relays MIDI data from its ports to the Sequencer core, and runs the visualizer (if enabled) in the background
- Keyboard mode: rows are octaves, columns are note values. Transmits MIDI note on/off messages to Sequencer core as a separate port. Velocity and controllers can be controlled by knobs.
- Visualizer: makes pretty pictures on the matrix that follow the sequence (not designed more specifically yet)

Other things to mention:
- Three linear PSUs: +5V 9A for digital electronics and front panel board (also regulated to +3.3V 2A), +12V 4A for SIDs and fans (also regulated to +9V 1A), +/-5V 2A for analog audio circuitry
- Custom boards for SIDs, front panel, and memory
- Two headphone jacks
- Two external audio inputs, connected through analog volume controls to L and R, respectively
- SID external audio inputs have analog volume controls on front panel
- ASIDITY can be used as an eight-channel MIDI-controlled audio mixer with per-channel modulatable effects. Connect devices to SID external inputs and use SIDs' L and R outputs to mix and pan them. Activate SIDs' filters or feedback for effects.
- ASIDITY can be used as a standard step sequencer.
- Using loopback modulators and operators, simple digital logic circuits can be constructed in the modulation matrices of ASIDITY.
- ASIDITY's modulation matrix is 239x1556, but calculating how many states it is capable of is difficult since a modulator can be connected to a maximum of 16 destinations, and a destination can have a maximum of 8 modulators connected to it. The number of possible states of connections to matrix outputs is on the order of 10^22, and to the inputs on the order of 10^53. This is the basis for our claim that ASIDITY will be the most powerful SID-based synthesizer in existence. However, at this point the numbers start getting pretty meaningless.

Suggestions for more awesome features, and suggestions that the features we plan are impossible, are welcome. smile.gif

Sauraen

Edited by Sauraen
Link to comment
Share on other sites

A project with high aims!

Hope that you don't expect too much help from my side, without the same hardware (infrastructure) I couldn't help you anyhow. ;)

Although you can re-use many routines which already exist, merging and enhancing will be a challenge.

You will especially need some good debugging skills to keep an eye on the performance, and I'm sure that you will reconsider some features once you hear the first audible results.

Best Regards, Thorsten.

Link to comment
Share on other sites

  • 2 weeks later...

I like the patch. Always been a sucker for reverbed saws... reminds me of some of my favourite music from the early 2000s :)

Well, I will be following this to see where it ends up!

Edit:

Where are you guys from?

Edited by technobreath
Link to comment
Share on other sites

The reverb was actually an accident at first--we forgot we had effects enabled on that mixer channel. :) Also, this really was supposed to be a test program, and it wasn't really intended for playing: whenever it receives a MIDI note on message, it sets the frequency to that note and gates the SID, and whenever it receives any note off message it ungates the note. Hence playing legato is impossible with this test program--the stuttering in the video is due to that, not Oikanys playing badly. :) But that'll of course be fixed once I write the polyphony engine.

We're college students in Maryland, United States.

Link to comment
Share on other sites

  • 2 weeks later...

Update: We've now tested controlling two SIDs from one core, to see if the code for simultaneously sending different data to different SIDs works (it does). (It's basically eight MIDIbox SID modules, but instead of controlling the SIDs separately by CSing one at a time with eight CS lines, it sends different serial data to each simultaneously.) I wrote a small six-voice polyphony engine to demonstrate the independent control of all six voices, but this won't wind up in the final version. I didn't think this was worth making a video for; I hope to get the digitally controlled feedback working this weekend, and I'll make a video about that because that's really a new thing that hasn't been done before.

We don't have a device with enough knobs to send controller changes to ASIDITY to control all these features simultaneously, so even we won't know what it's really capable of in terms of sound until the control surface is finished. For instance, in a 2-SID feedback loop playing originally from a pulse wave, we would have all the following parameters to control that could affect the sound: frequency, pulse width, envelope, cutoff and resonance in the generating SID, cutoff and resonance in the other SID, audio level from the first to the second SID, audio level from the second to the first, and L/R out for either or both. I can't wait for 32 customizable knobs!

Edit: The audio attenuators did not work as I expected; they evidently need a balanced (+/-5 v) power supply or they will pop every time the level changes. We will be getting a power supply that can run everything in a couple of weeks, and then we'll see.

Edited by Sauraen
Link to comment
Share on other sites

  • 1 month later...

We purchased a large open-frame switching power supply that would be able to supply all the voltage outputs we needed (including for the audio attenuators), and after working fine for a few tests but making a high-pitched noise (~17 kHz), when I turned it off the last time there was a big spark from the inside of the power supply. I got scared and decided I should use a less potentially dangerous power supply. I'm currently considering the MFOS wall wart power supply that I saw referenced on the forums for the +5/-5 volts for the audio attenuators and feedback circuitry, but I don't know what to do for powering the SIDs and the LPC17 cores and the front panel with hundreds of LEDs. The approximate current consumptions would be:

+12v (analog) 500 mA for SIDs, including voltage regulator to +9v for 8580s

+5v (analog) 500 mA for analog audio circuitry

-5v (analog) 500 mA for analog audio circuitry

+12v (digital) 500 mA for fans

+5v (digital) 3A or more for LEDs, SIDs, etc.

+3.3v (digital) 500 mA for LPC17 cores

Do you think I should try for another switching power supply, despite the potential for auditory and electrical noise? It would probably have to power the SIDs' 12 volt line as well, which might make them noisy. (I do not have a Commodore 64 power supply.)

Link to comment
Share on other sites

  • 3 months later...

Here's an updated mockup of the front panel (click for life size):

atChel.jpg

The knobs at the top are for the limiters we're adding. They're switchable between whether they apply to each SID's audio input or output; they have adjustable hardness and separate positive and negative cutoff voltages, and four choices of diode for different harmonic profiles. There's also a much-higher-cutoff hard limiter that gets connected to whichever you don't connect the bigger limiter to.

Also, we're considering throwing in an OPL3/YMF262 FM module. We already have the chip and DAC from an old sound card, and why not let ASIDITY's modulation power extend to a different kind of synthesis?

In other news, as you can see from the subtitle, we're adding external SRAM to the sequencer core so it can do 64 tracks x 96 measures x 16 steps. We're also adding a delay modulator to the SID core: it simply delays an input modulation signal (not audio).

Other than that everything is pretty much the same. I'm more than half done coding the SID core.

Link to comment
Share on other sites

  • 1 month later...

I finally built the bipolar power supply and got the audio attenuators working. However, the digitally controlled feedback is currently lame; it just sounds like adding a little drive, there's no "screaming" feedback. I think this is because I have the op-amp for the audio attenuator configured as (at most) unity gain, so it's not actually amplifying anything. I'm going to change it to x2 gain, and if it sounds cool we'll put up a video.

Link to comment
Share on other sites

  • 3 weeks later...
  • 1 month later...

We just ordered the custom SIDFB module boards. Each contains two SIDs, plus for each, a CD4052-based circuit to switch among four pairs of filter capacitors by digital control, and the six channels of digitally controlled audio attenuation/feedback. We will put up a video once we receive the boards, showing them off as well as our breadboard with 8580s (instead of the 6581s we've been testing with so far).

Link to comment
Share on other sites

  • 2 weeks later...
  • 1 month later...
You know why they sent you two, don't you? :devil:

I don't know, maybe because they wanted us to have to make two and then sell you one? :tongue:

 

 

hey sauraen, the pcbs look very good, nice to see you are progressing with the build, looking forward to more progress and pictures/videos!

Thanks! Once we finish soldering the SID boards, we'll put up a video of the eight SIDs. Hopefully that will happen in a couple weeks. Until the control surface is finished, though, we won't be able to do anything really cool with them all--any suggestions for what I should make the test program in the video? How about simple 24-voice polyphony, and play some MIDI files into it? Or would you prefer a monophonic voice made of 24 saw waves? ;)

Link to comment
Share on other sites

Hello.
 
A "Sid Synth" on the new Core LPC17, exactly what I've been waiting a long time!
And onboard USB OSC :)
 
WOW
 
I will pursue the contribution from now on and hope it drives the project is continuing and there will be a collective order :)
 
best Regards
Acul
 
 
Sorry Google English ;)
 
Link to comment
Share on other sites

  • 3 weeks later...

Basically. They're the four 20-pin chips towards the top left, LM1973s. Each LM1973 is basically three SPI-based 74-step DACs connected to three VCAs, and each channel requires a buffer op-amp. Each SID's audio output splits into six and then goes into six audio attenuator channels. The two channels that go to master L and R output are buffered at unity gain, while the three that are used for feedback and the one external output are at 3x gain. The "self" and "pair" (other SID on the board) feedback paths are built into the board, and the third path, the "next" path (to the corresponding chip on the next board), requires a wire where it says "3/NEXT". The whole idea came from the feedback knobs on the back of the MB6582, but digitally controlled (from the modulation matrix) and six times the number. :smile:

 

Edit: The limiters on the feedback loops are not on this board, but attached directly to their control pots on the front panel, connected where it says "A LIM" and "B LIM".

Edited by Sauraen
Link to comment
Share on other sites

  • 2 weeks later...

I had wanted to wait to show the case until it was all done, but after a day in the metal shop (back panel and top section of front panel), this photo was too good to pass up:

 

 

By the way, there were too many bugs (and a mistake on the circuit board :bug: ) with the SID boards that I was not able to make a video last weekend.

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