Roland 5 用户手册

下载
页码 82
Europa User Guide
Europa User Guide
Europa 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 architecture
Europa 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 block
Boot 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
Europa
Europa
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.