ac-digital-vc

Access Virus C emulation

betaVersion 0.1.0 is a beta

Expect bugs, and changes before 1.0. The installers aren't signed yet, so macOS and Windows warn before opening them. How to open them

Factory programs
Dataac-digital-vc 0.1.0
Emulates
Access Virus C
Year
2002
Type
virtual analog synth
Status
working
Without ROM
[✗] ROM missing
ROM image
virus_c_660x368.bin, not included
Outputs
OUT 1, OUT 2, OUT 3, stereo
Inputs
EXT IN L and R, as a side-chain
macOS 11+
Universal: AU, VST3, standalone
Windows 10+
VST3, standalone

Release announcements by email

Nothing else is sent. Mailing list

ac-digital-vc: the Virus C desktop panel with its knobs, keys, LEDs and display showing 1 A0 AutoBendBC, its brand marks' places left blank, and the bar with REAR
A1Firmware. Access's OS 6.6 runs unmodified on an emulated 80C515: the display, the keys, the LEDs and every menu are its own.
A2Sound. The DSP56362 runs the DSP program the firmware loads into it, on the dsp56300 recompiler; three Cirrus Logic CS4390 DACs put it out.
FIG. 1The panel with its brand marks' places left blank, and the bar with REAR.

In numbers

The firmware's paths checked against Gearmulator's Osirus, which runs the same DSP engine with its 80C515 replaced by C++. Method: How it was made.

The clips at the top: factory programs as a new instance holds them, played from MIDI, every knob where the program puts it.

768 / 768
flash programs sent to the DSP word for word as Osirus sends them
But two bytes that change nothing. Banks A and B, 256 of 256; notes, every kind of channel message and sysex parameter changes the same.
0.00 dB
the median level of a note on each factory program, against Osirus
Their spectra differ by 1.31 dB per third octave, median, where Osirus against itself with the note 0.34 s later differs by 1.45.
5.5 %
of one core at 48 kHz, a filter sweep on a held note
Apple M5 Max. Idle, the DSP sleeps and the rest takes about 1 %.

What is still different

Against real units
The recordings of Virus Cs that exist are phrases on factory programs: Access's own 2002 web demos and videos. E73 PowerStrnJ's chords match within 3.5–5.3 dB per third octave with their notes guessed from the spectrum, and an A/B by ear against them passed. No recording has isolated notes on known settings.
After the DACs
The op-amp stage between the DACs and the jacks isn't modelled, nor the inputs' converter: the photos of the board don't show their parts.
The DACs' mute
After 0.17 s of digital silence the CS4390s mute, and the output is exact zeros. Whether the board enables that isn't known.
The sample rate
46,875 Hz, 12 MHz / 256: Gearmulator's figure and what the DACs' clocking gives, not measured on a unit.
A new instance
Its RAM banks A and B are copies of flash banks C and D, as a unit fresh from the factory might hold; what Access put there isn't known.
STORE TO FLASH
It writes the flash, kept with the session. The DSP program that holds the bank meanwhile is stood in for, from what the firmware asks of it, and erasing is instant where the chip takes about a second.
LEDs
12 of 69 are placed by their wiring order alone: LFO 2's and LFO 3's destinations, and BPM.
CPU
The DSP's code is compiled the first time it runs. Code no earlier program used costs up to 8 ms in one audio block: 3 blocks over 2.67 ms across all the factory programs, none the second time.

Not emulated

The power-on keys (State, Reset… in the top bar starts a fresh memory instead), MIDI THRU, and the analog stages above.

How it was made

  1. 01

    The firmware

    OS 6.6 runs from reset: the 80C515's program on an emulated 80C515 (MAME's MCS-51 core with the C515's own peripherals from Siemens' manual), which loads the DSP's program over the host port into a DSP56362 on the dsp56300 recompiler, Gearmulator's DSP engine. The board around them was traced in the firmware: the key matrix and LED latches, the battery RAM and flash banks, the port pin that selects the host port and the one that lets the firmware write its own flash. Every key and menu page, and the LEDs, were then checked against the owner's manual.

  2. 02

    Against Osirus

    Gearmulator's Osirus runs the same DSP engine but replaces the 80C515 with C++, so it checks the control side. The same MIDI goes into both, and what each sends the DSP is compared word by word: the DSP's program, the upload of every factory program, every kind of channel message, sysex parameter changes, single dumps and multi mode. In multi mode 15 of 16 parts match; on the 16th, Osirus loads the wrong program. The comparison also found a bug here, now fixed: part 1's edit buffer read back through the host port.

  3. 03

    The DACs

    Photos of a Virus C's board show three Cirrus Logic CS4390s, one per stereo output. Their response is modelled from the datasheet: the filter fitted to its plots within 0.16 dB, flat to 21.3 kHz with 25 samples of delay, the noise floor 103 dB under full scale, and the mute.

ROM image

The firmware and every factory program are in the unit's flash, Access's copyrighted work, so it isn't included. ac-digital-vc needs the BIOS v6.6 image of MAME's virusc set, virus_c_660x368.bin: without it there is nothing to run. The ROM

Panel artwork

Access's logo and the Virus wordmark are trademarks, so their three places on the panel are blank. Each place takes an SVG or PNG file of your own, named ac-digital-vc-maker and so on, in the ROM folder: drawn yourself, or generated with an AI tool such as Claude or ChatGPT. Panel artwork