Europa User Guide

Europa Internal Architecture

13. Europa internal architecture

Europa is a completely new operating system replacement for the Roland Jupiter 6. The code is an entire rewrite from the original Roland code and uses a compatible microprocessor with modern features, such as flash storage and double performance of the original 8051/8031 at the same clock rate. The source code is over a megabyte of MCS-51 assembly language, which compiles down to roughly a 32K binary executable. The additional processor performance allows Europa to expand the Jupiter 6’s feature set and perform tasks the original Roland Jupiter 6 controller board could not. Due to backward compatibility, Europa’s installation is greatly simplified as compared to many other synthesizer retrofits.

Europa is comprised of two images:

Boot block

The boot block provides basic flash writing services, Jupiter 6 controller board diagnostics, check coding of the Europa image itself, firmware transfer mode, and other boot time diagnostics. This area is never written to and is guaranteed to be there even after a bad Europa upload. The boot block will not attempt to execute a Europa image if it is bad or missing or if the board’s uncorrectable diagnostics fail.

Europa

The Europa operating system itself. All runtime board functionality is present in this image. It can be updated by the Europa Firmware Update Utility.

Europa contains a custom message queued operating system. When Europa has no messages to process, it puts the microprocessor to sleep waiting for the next event. Europa runs with a single foreground thread. MIDI Messages and timer callbacks (for user interface and clocking) are run as interrupts. Timers check for other events (such as arpeggiator advancement and clocking), the buttons/LEDs are checked and strobed, and potentiometers/sliders are checked – looking for changes in board operation. Changes are deposited in the message queue at timer interrupt time for processing by the foreground process. The differences in messages deposited from MIDI and the front panel is a single bit. To Europa’s messaging system, the front panel is a MIDI device! The same code – literally – handles the processing of MIDI and front panel events.

Internally, the message queues have a depth of 128 outstanding messages. Almost all messages (excluding those that write to flash) are processed in under 1 millisecond, giving the best possible performance. As a comparison, the original Roland code had a latency of as much as 15 milliseconds! Note that the controller board speaks to the voice board over a serial port, so it is possible for Europa fall behind in processing incoming notes and controllers. We’ve found that Europa and the Jupiter 6 voice boards can sustain a flood of controllers and notes at the rate of 32nd notes @ 500 beats per minute – roughly a single event every 3.8 milliseconds. It’s highly unlikely that anyone would ever realistically reach this limitation - especially considering most other synthesizers would drop notes or lock up at much lower rates. Changes at this rate are nonmusical.

Arpeggiator clocks are maintained in a separate queue. Clocking takes priority over all regular events. This contributes to Europa’s ultra stable internal clock – performing to within 0.2% of the desired BPM setting over a range of 60-240BPM!

The Europa source code itself is an object oriented design. Each subsystem is its own independent bit of code allowing for great modularity and ease of development making Europa much easier to expand or modify in the future. The code took about a year to write. No Roland code was used or harmed in the process – it’s completely Synthcom developed code.

Page 77

Page 77
Image 77
Roland 5 manual Europa User Guide Europa Internal Architecture, Boot block