Release 1.2.4: New emulator version now includes a fully featured UI and many performance improvements!

We are very happy to announce that we have reached a state where the emulator can be used without any external editors. The emulator now includes its own user interface for Virus B & Virus C!

The UI has been contributed by multiple external developers, we would like to thank everyone being involved in this! 👍

Furthermore, the emulation code of the DSP 56300 has been optimized, better performance results in speed improvements between 10% and 20% to make the emulation usable even on older CPUs.

A video of the emulator in action:

Using the Virus B input for FX processing

The upcoming plugin version 1.1.5 will have working audio inputs.

In the plugin world, this means that you just have to feed any audio data to the plugin input and it will appear as IN L+R on the Virus B/C.

What can you do with it?

  • Feed the audio signal to the filters and FX section
  • Use the envelope follower to drive the filter cutoff
  • Use the integrated Vocoder for robotic voices or other special effects (try it on drums!)
  • Use the input as FM source for Oscillator 2

Two example videos to see what you can do with it:

External Input, processed by Virus Bs Filter and FX section
Virus B Vocoder

Sample-perfect MIDI timing on an Access Virus B

One thing that was left to create a useful VST plugin was to work on the MIDI timing. This is now solved and works great, as you can hear in the video. 👍

If you want to know a little bit about the details, continue reading below the video. 👀

Technical Background

In general, plugins work on audio in so called blocks. The host software, something such as Cubase, Ableton, etc., call the process() function of the plugin and request it to calculate the next 256 samples of audio. How many exactly depends on the block size (and also on some other conditions), but this is the concept in general.

What our test plugin did so far in this case is: It wrote all MIDI data to the HDI08 interface (serial DSP interface) and then processed the DSP until it has written enough samples to the ESAI interface (DSP audio interface).

This solution was not sufficient as you cannot pass a MIDI Note On including timing information to the DSP. Its just that a hardware never required to handle that information as it does not operate on blocks and any MIDI event, such as a Note On was just processed immediately.

To work around this problem, we did the following: We divide the processing block that is requested by the host software into chunks. If there is a block of 256 samples, but a MIDI event at position 100, we let the DSP process 100 samples of audio, then inject the MIDI data, then calculate the remaining 156 samples.

Virus B ROM being run as VSTi

In contrast to a Virus C, that is clocked at 136 MHz, the Virus B runs at 108 Mhz. That’s why we had the idea to try a Virus B ROM in the emulator to get rid of audio drops.

The Virus B ROM is version 4.9. We use VirusHC with a loopMIDI device to edit it.

As you can hear, the Virus B works flawlessly – and is a lot of fun! 😍