MIDIbox Forum: MIDIbox ASIDITY - MIDIbox Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

MIDIbox ASIDITY Rate Topic: -----

#1 User is offline   Sauraen 

  • MIDIbox Newbie
  • Pip
  • View gallery
  • Group: Members
  • Posts: 13
  • Joined: 06-December 11

Posted 20 January 2012 - 06:05



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

Designed with the mantra "MORE CONTROL" always in mind, ASIDITY harnesses the powerful versatility of eight Commodore 64 SID sound chips using three LPC1769 cores. Featuring a digitally controlled feedback/volume/panning array, two massive modulation matrices (32 active and 128 passive modulators outputting to 256 SID controls and 16 virtual patch cables, each of which can be wired back to modulate 16 parameters of each modulator), a powerful built-in 32-track variable-length step 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, 44 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
- 160 modulators (all independent): 8 EGs, 8 LFOs, 8 Patterns (16-step sequencers), 8 random generators (with 3 adjustable biases each), 32 Note track outputs from sequencer, 32 Velocity track outputs from sequencer, 32 configurable MIDI/sequencer message outputs, 32 configurable control surface outputs
- All active modulators (EGs, LFOs, PTNs, RNDs) have gate, time scale, and value scale inputs, plus 12 more each
- These parameters modulatable for each SID: 3 voices * (Note, Frequency, Portamento, Pulse Width, Attack, Decay, Sustain, Release) + Cutoff, Resonance, Self-feedback, Next-feedback, Second-next-feedback, Ext out level, L out, R out
- All other SID parameters (waveform, filter mode, etc.) editable with softkeys
- Output modulation matrix connects 160 modulator outputs to 256 SID inputs and 16 patch cable inputs through operators: +, -, *, /, AND, OR, XOR, XNOR with options: Negation, Bitwise/Gating, Zero Half mode; allows selection of first modulator processed in order-dependent operations like subtraction and division
- 16 patch cables can be modulated like SID parameters, then connected to parameters of modulators (e.g. connect LFO output to patch cable, connect to time scale output of other LFO; now one LFO modulates the speed of the other); supports recursion, invalid (glitch-creating) connections, and making logic gates out of the wiring
- 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)
- 32 or fewer tracks
- Variable number of measures per track, 1-128
- Variable number of steps per measure for each track, 1-16
- Can fit in memory at least 32 tracks x 16 steps per measure x 16 measures; automatic memory allocation
- 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, boolean whether velocity is changed on roll subdivisions
- 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 MIDI 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: not designed yet

Front panel core:
- 16x8 button/LED matrix with red, yellow, green, and blue LEDs beneath each button
- 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, and 8-LED VU meters graphically showing the virtual position of the encoder
- Columns correspond to five-character-wide sections of LCD
- 16 softkeys with LEDs, one below each column (5 chars) of the LCDs
- 8 SID select buttons, 8 mode select buttons, 8 modulator select buttons, 8 operator buttons, 4 page buttons, 4 control surface mode select buttons, 3 SID voice select buttons; all with individual LED
- More special-featured buttons (including two different Shift buttons, Red Shift and Blue Shift)
- Front panel core uses BLM_X 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:
- Internal ATX power supply from old PC
- We are planning to make a custom board for the SIDs / audio attenuators, but build the front panel on perfboard
- 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 patch cables and operators, simple digital logic circuits can be constructed in the modulation matrices of ASIDITY, maybe including even memory.
- If ASIDITY had an 8x8 modulation matrix, the matrix would be capable of 2^64 states, or 18446744073709551616 states. ASIDITY's modulation matrices are actually 160x272 and 16x32x16, which is 2^51712 states, or 72968560009141315943330214253628499728308504588380939236428176217596313856229056
62466836537128156451643238228083527780481261585204820716954428760701766813605394
44789946291578019853535804530497559228335307875893042564967346528581582216433637
70545996928028141860943380668341967394611195811889171354978809716118204064854376
94569247406853343803083815800033284310059868782968787471888552181225693494906000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000
states. This is the basis for our claim that ASIDITY will be the most powerful SID-based synthesizer in existence. But this is only the number of states the modulation matrices themselves are capable of. The total number of states the SID core can be in is a much larger number, on the order of 2^250000 states. 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. :)

Sauraen

#2 User is offline   TK. 

  • MIDIbox Guru
  • View gallery
  • Group: Administrators
  • Posts: 11,141
  • Joined: 01-January 01
  • LocationGermany

Posted 21 January 2012 - 21:08

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.
Posted Image Buy TK a Beer Disclaimer: buying TK a beer gets you absolutely nothing in return likesuchas firmware enhancements, technical advices and MIDIbox troubleshooting assistance.

#3 User is offline   technobreath 

  • MIDIbox Tweaker
  • PipPipPip
  • View blog
  • View gallery
  • Group: Members
  • Posts: 253
  • Joined: 14-November 10
  • LocationVigrestad / Stavanger

Posted 02 February 2012 - 21:36

Hehe, good luck. Gonna be interesting to see the results! What's the time frame on the project?
Best Regards,
Tbreath

#4 User is offline   Sauraen 

  • MIDIbox Newbie
  • Pip
  • View gallery
  • Group: Members
  • Posts: 13
  • Joined: 06-December 11

Posted 05 February 2012 - 04:50

Our first test of controlling a SID with an LPC17 is now on YouTube:



Yes, the test app I wrote maps modwheel to SID filter, and velocity to sustain. :D

@technobreath: Oh, a year and a half. ;)

#5 User is offline   technobreath 

  • MIDIbox Tweaker
  • PipPipPip
  • View blog
  • View gallery
  • Group: Members
  • Posts: 253
  • Joined: 14-November 10
  • LocationVigrestad / Stavanger

Posted 07 February 2012 - 20:01

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?

This post has been edited by technobreath: 07 February 2012 - 20:05

Best Regards,
Tbreath

#6 User is offline   Sauraen 

  • MIDIbox Newbie
  • Pip
  • View gallery
  • Group: Members
  • Posts: 13
  • Joined: 06-December 11

Posted 08 February 2012 - 00:41

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.

#7 User is offline   Sauraen 

  • MIDIbox Newbie
  • Pip
  • View gallery
  • Group: Members
  • Posts: 13
  • Joined: 06-December 11

Posted 16 February 2012 - 17:48

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.

This post has been edited by Sauraen: 01 March 2012 - 18:36


#8 User is offline   Sauraen 

  • MIDIbox Newbie
  • Pip
  • View gallery
  • Group: Members
  • Posts: 13
  • Joined: 06-December 11

Posted 08 April 2012 - 04:05

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

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users