an automated sousaphone

Godfried-Willem RAES


[Nederlandstalige versie]

Robot: <So>

This musical robot consists of an old Bb sousaphone with an automated playing head and automated valves. Wind supply is also automated. Controlling this robot is realized using a standard midi protocol. Two PIC controllers take care of the translation of the midi commands flowing into the quite complex command set the instrumental hardware requires. The sound generating mechanism mimics human lips and does make use of the normal mouthpiece of the instrument. A moving coil valve activates a leather pad (actually one taken from the lowest keyholes of a tenor saxophone) that opens and closes the air traject through the mouthpiece. We did spend a lot of research time in finding a mechanism producing a realistic tuba sound. Hundredths of attempts using solenoid valves failed, because the magnetization of the iron alloys used is way too slow to open and close any kind of valves at speeds exceeding 40 Hz. Hence we decided to use a moving coil mechanism in a permanent magnet, much like the action of a regular loudspeaker, where the moving coil is mechanically connected to the paper cone. This mechanism is controlled by a switching signal of a frequency corresponding to the note to be played. At the same time the valves (activated by bidirectional solenoids) are pushed such that resonance through the instrument does occur. We dismissed the return springs in the original sousaphone valves as we found we could get more silent operation from the valves by pushing and pulling them under solenoid action. Wind pressure, derived from a smal axial compressor, is applied to the artificial mouth assembly. The pressure is variable between 0 and 75mm H20. In fact, this pressure is lower than what we calculated to be necessary (350mm H20 is what brass players build up by their lungs in fff passages...), but we could not find anywere in the industry small and silent operating blowers in this range. (Forget about vacuum cleaners...). As a consequence we had to foresake the implementation of ff and fff (cuivré) playing in this robot.

Dynamic control is not an easy matter, and requires at least two interdependent parameters: wind pressure and signal amplitude. The valve membrane amplitude diminishes and the center point of movement symmetry shifts with frequency, when pulsed DC is used. Thus to compensate for the lower valve excursions at higher frequencies, the wind pressure has to be increased. On theoretical grounds it would have been better to adjust the distance between valve seating and mouthpiece in function of amplitude and frequency, but this posed us way too many mechanical problems. Thinking along this path, in the first version of this robot, we went for a DC pulse steering for the lower notes and transformer coupled AC steering for the higher notes in the compass. As a consequence for the user, note velocities for notes 39 and higher had to be derated with maximum values of 63 (for note 39) to 9 (for note 47). In the 2007 version, we used a dsPIC and attempted to set the DC shift point (and thus the mouthpiece aperture) for the moving coil completely in the PIC firmware. By generating asymmetrical waveforms, the DC shift required to change the membrane position can indeed be realized. However, <So> still sounds best in its optimum range: 15-39.

In the 2007 version of <So> we implemented pitch bend over a range of nearly a semitone around any note played. With this it is now also possible to score <So> in quartertone music with perfect intonation. However, do not forget to send the appropriate pitch bend command for every quartertone you want to get played. Also, note that for quartertone music, it will definitely make a difference when you have the choice between say note 36,5 played as 36 raised a quartertone up, or note 37 lowered a quartertone, since the instrument will always use the valve position for the 'normal' basic note. The valve combinations for notes 36 and 37 are indeed different! Our advise to composers wanting to write quartertone music for <So> is to experiment first with a few testscales using the different possibilities. It is possible as well to use <So> with non standard fingerings in order to get sound color variation. Refer to the detailed midi implementation for <So> given further on this page.

We do realize that composers wanting to use this robot, at first sight might be overwhelmed by the prohibitive looking amount of degrees of freedom , expressed in a corresponding amount of midi controllers to set and steer different parameters of the sound production. At the other hand, to achieve really musical -and not caricature-like- results with just about any monophonic instrument, it seems unavoidable to me as a designer to introduce quite a lot of the musicians craftmanship in the controls of the instrument. Intelligent composers therefore will have to be knowledgeable about brass instrument playing if they want to get convincing results from such robots. Definitely so, if they want to get results surpassing the possibilities of human performers. Of course we know that in reality there are lazy composers around, without this desire for precision and surpassing human capabilities. Composers that like to have fast results, even though dirtier than possible... Cartoon composers, so to speak. With those people in mind, we have made some compromise ways of controlling this robot, implementing some quick and dirty 'off the shelve' settings in the form of program changes, corresponding to musically acceptable presets. These presets are documented in the midi implementation table below.

The overview of the circuit boards (2007) used to construct this robot looks like:

The dsPIC circuit is pretty simple, since we use only a single output and its complement (however not necessarily symmetric, since we wanted DC shift to be possible) for the wave generation. The 16-bit dsPIC controller takes care of the pitches generated as well as of their amplitude and enveloppe. These controllers offer complementary PWM outputs and thus allow very precise control of the movements of the moving coil driver around its mechanical symmetry point at rest. The circuit was first designed with a high power op amp (LM12) in a differential configuration, as output driver: Later we changed it for a more traditional ILP HY30 driver, since the power available from the LM12 was way too high. Note that a high quality audio transformer is used to coupled the wave generator output to the analog amplifier driving the moving coil head. The whole circuit around the dsPIC microcontroller looks like:

Eight bits (two separate nibbles) are used to steer very large 7-segment displays. This feature we added to facilitate communication with musicians and dancers in the M&M orchestra context. The displays can be midi controlled.

The solenoids used to strike the valves were replaced with Laukhuff bidirectional types already in 2005, merely because of the fact that our sousaphone is rather old and mechanically worn out, meaning that the valves did not operate as smoothly as they should. Hence we mounted these much stronger types (24VA) and got rid of the return springs as well. If a new sousaphone were used, the old circuitry indeed works very well. Details of the midi input circuit and the solenoid drivers using another PIC microcontroller (18F2525 type from Microchip) are given in the technical and maintenance section at the very end of this page.

Power supply voltages and currents:

Midi Mapping and implementation:

Midi note range: (0 -14) 15-39 (40- 47), or in musical notation:

The notes between brackets do not sound the best, so for best ('realistic') Sousaphone sound, restrict notes to the non-bracketed range. This range corresponds to what 'normal' sousaphones can produce. We have extended the range on the low side up to midi note 0. The note range 0-11 should be used only for special effects and will never sound realistic since they cannot normally be produced by the instrument. The footstep is mapped on midi note 48.(the force is proportional to the value of the velocity byte sent). It is not required to send separate commands for the pistons, since these commands are handled automatically in the firmware. The white lites are mapped on note 49, the colored lites on note 50 and the 'logos' display on note 51.

Pitch-bend is implemented, with a range of +/- 60 cents. Pitch bend commands do not change the valve combination used. Pitch bend is cancelled for every new note on. Only msb is relevant and should be used. However, the circuitry as well as the firmware supports full 14 bit resolution. If you want a note to be raised a quartertone, send pitch bend value 118 for the msb. To lower a note by a quartertone, send pitch bend value 10 for the msb.

Controller 1 is used for wind pressure. The motor frequency is displayed on the motor command panel. The minimum rotation frequency is set to 10Hz, such that a reasonably fast response is possible. An optimum setting for normal playing corresponds to midi value 50 (frequency 42Hz). For real good forte and fortissimo on low pitched notes, value 127 should be send. The lower the pitch requested, the more wind you should provide. For high pitches, wind pressure has to be somewhat reduced. Note that when using the program changes, (0 or 120-126) wind control in function of the note played will be automatic. When in such a preset, the lookup setting can be overridden using controller 1. To re-enable the use of the lookup tables, send the preset (program change) again.

Controller 7 is used for volume scaling. It can be used to change the amplitude of playing notes. This controller sets the maximum amplitude value attainable with the velocity byte of any note. The setting for this controller is also important if you want to use the attack control. For very strong attacks, the level for controller 7 should be set pretty high and the velocities for the notes played, to very low values. The dynamic range of the attack equals the difference between the setting for controller 7 and the velocity byte accompanying a note on command.

Controller 13 changes the lookup table for the valve-pitch correspondence. The default is 0 and conforms to an empirical mapping of valve combinations for optimal resonant sound. Value 1 selects the theoretical valve combinations calculated after simplified acoustic theory, values 2 and 3 select user programmable (sysex) lookup tables. Higher values can be used to send just any valve combination the user wants te see used for any note. The table below gives all details:

Ctrl 13 Value -1/2t -1t -2t remarks
0 default empirical [detailed mapping]
1 acoustic [detailed mapping]
2 user table 1 (sysex programmable)
3 user table 2 (sysex programmable)
4 off off off 4-7 valid
12 on off off 12-15 valid
20 off on off 20-23 valid
28 on on off 28-31 valid
36 off off on 36-39 valid
44 on off on 44-47 valid
52 off on on 53-56 valid
60 on on on 60-63 valid
other invalid


Controller 14 sets the functionality of the display (values 0-3): With value 0, the display always shows the midi note the sousaphone is playing. With value 1, the displays show the value sent with controller 15 (value range 0-99), with value 2, controllers 16 and 17 can be used to display numbers and signs (0-15) to each display independently. With value 3, the displays will we completely off. Other values for this controller are disregarded. The default setting for controller 14 on startup is 0. The displays are fully functional, regardless the value for controller 66 (on/off).

Controller 15: if controller 14 is set to value 1, controller 15 allows you to send a numeric value 0-99 to the displays. Note that it is up to the user to limit the number to 99 (use count MOD 100, in your code). For higher values, strange signs do appear on the displays...

Controller 16: if controller 14 is set to value 2, controller 16 allows you to send a nibble to the msb of the display. For values larger than 9, the display shows 'strange' signs. It is up to the user to limit the range.

Controller 17: if controller 14 is set to value 2, controller 17 allows you to send a nibble to the lsb of the display. For values larger than 9, the display shows 'strange' signs. It is up to the user to limit the range.

Controller 18: sets the duration of the attack in the sound production. Default is 64. Refer to the diagram below to understand the functionality. If velo equals volume, the setting for attack will have no effect at all, the amount of attack being a function of the difference between volume (set by controller 7) and velo. For strong attacks, very low values for velo and high values for volume should be used.

Controller 20: Tuning. Defaults to 0, for an A=440Hz tuning. The tuning can only be raised. The range extends up to a quartertone.[454Hz]

Controller 21: Sets the amount of second partial in the driving waveform. [for advanced usage only]. The second partial is not exactly equal to the octave (2f0)

Controller 22: Sets the amount of third partial in the driving waveform. [for advanced usage only]. The thirth partial is not exactly equal to the duodecime (3f0).

Controller 66: on/off: switches the motor and enables the sound production. Note that setting this controller to zero will make sound production impossible. The valves may still work however. The displays can work as well.

Controller 123 switches all notes off. Resets the wind to a minimum value. Releases the valve solenoids.

Note Off commands are required. Velocity is implemented and has a wide control range. Very soft notes do not sound very natural, since no real tuba is able to produce those. (see tables below for reference).

Program change commands are implemented and can be used to change the velocity scaling and other parameters at once. The lookup tables used can be programmed using sysex commands. Program change with value 0 will return you to the default setting at start up. Program change with value 127 is reserved for research, development, debugging and advanced use. Valid program changes are mapped on values 0 and 120-126. We implemented these as presets such that lazy composers have a quick-and-dirty way of getting reasonable results without having to send many controllers for precize musical control of every single note. In case these presets are used, no controllers at all have to be send to <so> in order to play the requested notes.

Preliminary documentation on the meaning of the program change commands:

Program number use remarks
0 default on startup all controllers can be used. Their ranges will we limited to safe values.
120 p legato playing the wind pressure will be automatically adapted to the pitch.
121 mf legato playing
122 f -ff legato playing  
123 p sforzando playing use ctrl.18 for accents
124 mf sforzando playing
125 f - ff sforzando playing no long notes allowed
126 to be determined
127 for research and development Dont use this. Reserved for advanced users. Untoughtfull use of controllers may lead to dangerous and destructive results for the robot.

Pitch Bend:

Pitch bend implemented. The range is limited to a semitone, thus a quartertone up or down. Pitch bend can be used for microtonal music as well as for vibrato control. The coding follows from the example below, given for a fragment of the highest range of a quartertone scale:

Most good sequencer software (such as Cakewalk or Sonar) use the signed 14 bit format. To convert fractional midi to the msb only pitchbend to apply follow following procedure: if the fractional part is <= 0.5 then msb= 63 + (FRAC(note) * 128), if the fractional part is larger than 0.5, we should switch on the note + 1 and lower the pitch with msb= (1-FRAC(note)) * 128.

Optimalisation tables for good sound production: [program change 127, advanced users only]

Program change set to 127, for research. This table is for velo on maximum and gives the usefull and legal range for controller 7 (volume) Note that with velo on maximum, the attack time controller (18) will be irrelevant.

midi note velo

min volume

(ctrl 7)

max volume

(ctrl 7)


(ctrl 1)


(ctrl l18)

0 127 12 58 40 [64]
1 127 12 52 41
2 127 12 50 42
3 127 12 48 44
4 127 12 36 45
5 127 12 36 46
6 127 12 40 54
7 127 12 40 50
8 127 12 32 50
9 127 12 40 50
10 127 12 40 50
11 127 12 38 50
12 127 23 42 50 [64]
13 127 16 42 50
14 127 20 44 50
15 127 16 48 50 lowest 'real' sousaphone note (Eb)
16 127 20 42 50
17 127 20 42 50
18 127 15 42 50
19 127 16 42 50
20 127 16 44 50
21 127 17 46 50
22 127 20 47 50 lowest 'real' sousaphone note (Bb) without using valves
23 127 20 50 50
24 127 20 52 50
25 127 25 63 50
26 127 30 58 50
27 127 26 80 50
28 127 30 84 50
29 127 32 86 50
30 127 32 86 50
31 127 65 86 50 may sound the octave
32 127 60 100 50
33 127 60 102 50
34 127 64 105 50
35 127 64 105 50
36 127 60 101 50
37 127 65 88 50
38 127 28 65 49
39 127 28 66 48 highest 'real' sousaphone note
40 127 26 60 47
41 127 22 54 46
42 127 28 78 45
43 127 26 75 44
44 127 43 64 43
45 127 54 74 42
46 127 62 80 41
47 127 50 83 40

The next table is for volume (ctrl 7) set at maximum and gives the usefull and legal range for the velocities.Note that now we can change the attack using control 18.

[to be added]

Sysex implementation:

Sysexes are implemented but are not meant to be used by composers, except technically very advanced ones, understanding thoroughly the internal guts of this robot. The implementation is documented here for our own collaborators, for researchers and for completeness sake. Using sysex commands, different aspects of the workings of the <So> robot can be (re)programmed:

  1. Sysex tables for the valve combinations used to play the notes. Two tables can be programmed (accessible with controller 13, values 2 and 3). The pincode for these sysexes is 'sova' followed by the midi channel, the number of the list (2 or 3) and a list of 48 bytes wherein the valve positions are set or reset in the lowest three bits. (details: see maintenance section at the end of this page)
  2. Sysex tables for the air pressure. Eight tables can be programmed. They are activated with the program change commands with the values 0,120,123,124,125,126. The pincode for the sysexes is 'sowi' followed by the so channel, the number of the table (0 or 120-126) and a list of 48 bytes with the optimal wind pressure for each note for the preset requested. (details: see maintenance section at the end of this page)
  3. Sysex tables for the ds-pic. These are activated with the program change command with the values 120 to 126. The pincode is 'sods'. (details: see maintenance section at the end of this page)

Technical specifications:

Design, research and construction: dr.Godfried-Willem Raes

Further collaborators on the construction of this robot:

Music composed for <So>:


Back to Logos-Projects page : projects.html Back to Main Logos page:index.html To Godfried-Willem Raes personal homepage... To Instrument catalogue Go to Godfried-Willem Raes' homepage


Robot: <So>

In het M&M robot orkest hadden we behoefte aan wat meer variatie in de heel lage basinstrumenten, niet in het minst voor de verklanking van de opening van mijn apero <Technofaustus>. Alleen de <player piano>, <bourdonola> en <Qt> beschikken over een in de laagte redelijke bas. Nu is het maken van lage instrumenten op zich eigenlijk technisch eenvoudiger dan hoge vanwege de geringere eisen gesteld aan de precizie bij de bouw, maar, de afmetingen ervan swingen werkelijk de pan uit. Om midi noot 24 voort te brengen met open luchtkolommen bvb., heb je gauw een bouwhoogte nodig van ca. 6 meter... Tongwerken anderzijds klinken wanneer ze klein worden gemaakt, gauw erg nasaal en uiterst boventoonrijk, waardoor ze niet goed als dragende bassen aan te wenden zijn. De bezoekers van de <M&M> koncerten zullen dit ook wel al hebben opgemerkt bij het horen van de klanken van <Vox Humanola> en van <Krum>. Vandaar het idee om werk te maken van een geautomatiseerde bastuba. Een tuba, het instrument bij uitstek voor de verzorging van sterke dragende bassen, hadden we wel niet in onze instrumentenverzameling, maar een (helaas erg versleten) Sousafoon, ooit eens op de rommelmarkt gekocht voor een prikje, hing nog ergens in onze traphal sierraad te wezen. Nadere inspektie leerde ons dat het om een Sib instrument ging voorzien van 3 ventielen. Automatisering van die ventielen bleek een erg eenvoudige klus, maar het vinden van een adekwaat klankvormingsmechanisme had heel wat meer voeten in de aarde. Na heel wat research met namaaklippen in rubber, silikonen en neopreen, kleppen in koper, mica en teflon, kwamen we terecht bij een reeds in de 19e eeuw bekend mechanisme voor toonopwekking: dat van het diaphane register in sommige britse orgels. Het toongat, in ons geval het mondstuk van de sousafoon, wordt daarbij door een zachte en juist sluitende klep heel erg snel geopend en gesloten. Dat klinkt zo'n beetje zoals je met de palm van je hand op het mondstuk slaat: een zachte slaptongue op het instrument. Nu was het zaak deze klep tegen de juiste snelheid, overeenkomstig de resonantiefrekwentie van het instrument, te laten trillen. Elektromagneten bleken hopeloos te traag: we haalden nooit snelheden groter dan ca. 40Hz. Dan maar de zaak omgekeerd aangepakt: vaste magneet en lichte beweeglijke spoel. Zo hadden we ei zo na opnieuw de luidspreker uitgevonden natuurlijk... Hier echter, wordt niet een membraan in beweging gebracht door de spoel, maar uitsluitend de in silikonenrubber uitgevoerde afsluitklep voor het mondstuk. Deze klep vormt eigenlijk het equivalent van de lippen waarmee het mondstuk bespeeld wordt. Dit bleek prima te werken en liet ons de mogelijkheid ook lucht opgewekt door een radiale kompressor aan de achterzijde toe te voeren. De sousafoon wordt op die wijze ook echt aangeblazen. De pedaalnoten (midi 15 tot 22) bleken met ons op deze wijze opgebouwd artificieel hoofd uitstekend speelbaar: voor menselijke spelers zijn die tonen zo goed als onhaalbaar). Alleen om snel van lage naar hoge noten te kunnen overgaan, konden we geen snel genoeg reagerend drukventiel verzinnen. De radiale kompressor is weliswaar in druk regelbaar gemaakt, maar door de inertie van de schoepen, reageert die eerder traag op winddrukkommandos. De tessituur zal dus beperkt blijven tot de diepere regionen van de muziek (tot hooguit, en niet zonder moeite, midi noot 47).

Als speels extraatje hebben we onderaan deze robot een houten leest -aan de onderzijde met ijzer bekleed- gemonteerd, die bekrachtigd door een elektromagneet, de maat kan tikken op de grond; 't heeft voorwaar iets menselijks zo... Ook enkele LED-spotjes werden toegevoegd om de visuele attraktiviteit nog iets te vergroten.

De <So> robot werd op het 21 augustus 2003 koncert van het Logos <M&M> ensemble voor het eerst ten doop gehouden. In de daaropvolgende weken werden nog vele verbeteringen in de werking van de robot aangebracht. Hij groeide zowaar op. In 2005/2007 onderging <So> een komplete 'redesign' en upgrade, waardoor hij nu ook naar een standaard midi protocol luistert en ook de ventielen grotendeels van bijgeluiden werden ontdaan. Het was zijn puberteit. De derde bouwfaze met verdere verbeteringen werd na heel wat research en experimenteel werk, afgerond in de zomer van 2007. In deze upgrade werd <So> voorzien van tooninflektiemogelijkheden (via pitchbend), klankkleurmogelijkheden, en van een groot 2-digit display voor kommunikatie met live musici en/of dansers in het M&M orkest. <So> kan van nu af ook worden gebruikt in kwarttoonsmuziek en heel wat 'extended' techniques zijn nu ook mogelijk geworden. De korrekte en muzikale besturing van <So> vergt evenwel vrij veel inzicht en begrip van koperblaasinstrumenten van de komponist. De robot kan zeker niet beschouwd worden als een midi-synth waar je zowat eender welke kommandos kan op loslaten. De volledige dokumentatie van de midi-implementatie is opgenomen in de engelse tekst op de <So> webpagina en zal zeker door belangstellende komponisten moeten worden doorgenomen. Om komponisten toch enigszins op weg -en in toom- te houden, voorzagen we <So> van een heel grote analoge meter waarop het vermogen toegevoerd aan de mond kan worden afgelezen. De naald van deze meter mag nooit tegen het maximum (10) aanlopen. Overtredingen hiervan kunnen de robot ernstig beschadigen.

Voor 'quick-and-dirty' komponisten en eerste vlugge schetsen, voorzagen we <So> ook van een aantal gestandaardiseerde presets, geimplementeerd als program-change kommandos onder midi besturing.

Godfried-Willem Raes

The left picture shows the original circuitry, operational up to june 2007. The right pictures shows the newest version finished in august 2007.

Construction and research diary:

(Terug) naar logos-projekten:


Terug naar Logos' index-pagina:


Naar Godfried-Willem Raes personal homepage... Naar katalogus instrumenten

gebouwd door

Godfried-Willem Raes

Go to Godfried-Willem Raes' homepage  

Maintenance notes and further technical documentation:

Detailed circuitry for PIC1 on the midihub board:

Detailed circuit for the two large 7-segment display boards:

Valve solenoids: bidirectional August Laukhuff, 24V - 24 VA (24 Ohms per winding, 1 A nominal at 100% duty cycle).

Power Supply: 24V - 5A (unloaded, 29V), 33mF buffer capacitor. Fused. The protective cover over the power supply module is to be removed to get access to the fuse.

Motor: August Laukhuff mini ventola. triangle connected, 3x132V - 0-75Hz, 70W, 2800 rpm at 50Hz

Programming information and settings for the Siemens Sinamics G110 motor controller:

Parameter nr. setting comment
P0003 - User Access level 3
  • 1= standard
  • 2 = extended
  • 3 = expert
P0004 - access control filter params 0 allow access to all parameters of P0003 = 3
P0005 - display parameter 21 display motor frequency
P0010 - commisioning params 0

must be set to 1 to change motor params.

For access to P4 params and normal operation, must be set to 0

P0100 - Europe/ US 0 = default value (Europe, 50Hz)
P0210 - voltage 230V mains voltage
P0304 - nominal motor voltage 132V motor specs.
P0305 - motor current 0.56A motor specs.
P0307 - motor power 0.07 kW motor specs.
P0310 - nominal motor frequency 50Hz motor specs.
P0311 - nominal motor rpm 2800 motor specs.
P0700 - ctrl. via control panel or digital I/O 2 use digital inputs for ctrl.
P1000 - select frequency setpoint 2 set analog setpoint (1= operator panel f-ctrl)
P1080 - min.. motor frequency 10 Hz  
P1082 - max. motor frequency 80Hz the practical maximum freq. will be ca. 60Hz
P1120 - ramp up-time 2"  
P1121 - ramp down time 5"  
P2000 - max.frequency setpoint 80Hz  
P3900 - end quick commisioning 1 resets P0010

Wiring motor controller:

Audio transformer specs:

LED spotlite specs:

Detailed structure for the sysex commands:

Valve lookup tables:

&HF0, &H7D, "s", "o", "v", "a", channel (14), table nr (2 or 3), 48 bytes of data [Note 0 Valve combination (3 LSB's) Note 1 Valve combination (3 LSB's) Note 2 Valve combination (3 LSB's) Note 3 Valve combination (3 LSB's) .... Note 47 Valve combination (3 LSB's), &HF7

byte count: 57 bytes for each table

Wind control tables:

&HF0, &H7D, "s", "o","w","i",channel(14), preset nr.(0,120-126), 48 bytes of data [Note 0 Wind pressure (7bit like CC1) Note 1 Wind pressure Note 2 Wind pressure Note 3 Wind pressure .... Note 47 Wind pressure] &HF7

byte count: 57 bytes for each table

Coil driver tables: [under investigation]

&HF0, &H7D,"s","o","d","s", channel(14), preset nr.(0,120-126),

byte1: max.amplitude, byte 2: max.velo, byte 3: attack value, byte 4:f1 amplitude, byte 5: f2 amplitude. byte 6: dc offset (or assymmetry) , byte 7: freq dev, byte 8: f1/f2 deviation

[48 lines of 8 bytes with data (8 bytes for each note in the order as documented above)]


byte count: 393 bytes for each preset. Total size: 3144 bytes.


Last update: 2013-04-23 by Godfried-Willem Raes