Roland 5 Electronic Keyboard User Manual


 
Europa User Guide
Europa User GuideEuropa User Guide
Europa User Guide
Europa Internal Architecture
Europa Internal Architecture Europa Internal Architecture
Europa Internal Architecture
Page 77
13.
13.13.
13. Europa internal architecture
Europa internal architectureEuropa internal architecture
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
Boot blockBoot block
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
EuropaEuropa
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 32
nd
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.