Prototype Design Notes
Author: Michael J. Bauer
This web post describes the design and construction of the REMI 3 prototype.
For a general introduction to the project, see "Introducing the REMI".
REMI 3 "All-in-one" EWI prototypeOverview
REMI 3 is an "electronic wind instrument" (EWI) using a fingering scheme based on the recorder.
This model is fully self-contained, battery-powered with built-in sound synthesizer, audio amplifier and speaker. It also has a 3.5mm headphone socket for private practise and a 1/4 inch phone jack for audio output to an external instrument amplifier. A micro USB connector allows the REMI 3 to be used as a MIDI controller with a virtual synthesizer app on your computer or mobile device.
Note: The REMI is not a commercially available product. However, the design may be replicated by suitably skilled electronics professionals or hobbyists. The hardware design and software source code are in the public domain (open-source). Detailed step-by-step instructions and parts lists are not provided. Information published here may be used as a basis on which to design your own customized EWI.
If you prefer to make a simpler EWI with MIDI controller operation, but without a built-in sound synthesizer and speaker, consider building a "REMI mk2 Handset".
A printed circuit board and custom enclosure may be produced to make construction easier. There are no plans for commercialisation, but if there is sufficient demand, a limited quantity may be made for sale.
REMI 3 Features
Under-side has 2 octave pads, OLED graphic display, RH thumb rest & modulation pad (FSR).
The speaker magnet (Neodymium) protrudes through a round cutout near the bell end.
The prototype REMI 3 was made from pieces of PVC plastic cut from a scrap of drain pipe, 110mm outside diameter, 3.5mm wall thickness. Dimensions of the covers: 330mm (L) x 50mm (W). The top and bottom covers are attached to side pieces made from aluminium channel extrusion (16 x 12 x 1.5mm).
The touch-pads are "Chicago" screws, 4mm long (shank) x 10mm diameter (head), Nickel-plated. Nylon washers (8mm diam, 4mm hole) and solder lugs are fitted over the shanks on the inside of the cover. Screw heads are inserted into the shanks and tightened.
The (temporary) mouth-piece was carved out of wood, finished size 70 x 25 x 30mm (approx). It is planned to replace the wooden mouthpiece with a plastic part made with a 3D printer.
Ideally, the whole enclosure would be made of plastic parts with a 3D printer. And that is the plan for a low-volume production run in the near future!
The sound synthesizer in REMI 3 is implemented entirely in software. The synth is modelled on classic monophonic analog synth's comprising a pair of oscillators, mixer, variable-frequency resonant filter, variable-gain audio attenuator, envelope shapers, etc.
Where the REMI synth's differ from pure analog synth's -- apart from using digital signal processing (DSP) techniques -- is that the oscillators use wave-table synthesis to generate virtually any desired waveform, hence harmonic content. Further, the oscillator mix ratio can be varied in time (i.e. modulated) according to a variety of control sources, e.g. breath pressure, envelope, modulation pad, LFO, etc.
Pretty much any sound that could be produced by the Mini-Moog (for example) can be emulated by the REMI synth. However, the REMI synth soundscape is not limited to that of low-end analog synth's.
Note: Whereas the REMI mk2 Sound Module can be patched using a PC terminal connected via a serial port, the REMI 3 synth was not designed to be user-programmable. All instrument patches are "pre-defined" in the firmware. Nevertheless, REMI 3 will have an abundance of pre-defined patches, any of which can be assigned to a "preset" using the "player interface" (see next section). And of course, patches and wave-tables may be modified and more added to the software by a competent developer.
A user interface comprising a 1.3 inch OLED graphic display module (128 x 64 pixels), the 10 touch-pads and a 'SET' button (on the RH side panel) allows the player to select a desired instrument preset and to adjust other settings on the REMI 3. Following is a list of player settings supported by the UI...
While a note is not being played, a particular combination of touch-pads will select a menu item (usually a settable parameter, as in the above list) for display. The touch-pad selection also determines what action, if any, will occur when the 'SET' button is pressed. In each case, the action of the 'SET' button is indicated in a text box at the bottom of the screen.
For example, if pad LH1 is pressed, the menu item shown is "Transpose" and the 'SET' button when pressed will cause the setting to be increased by 1 semitone. If pad LH2 is pressed, the menu item is still "Transpose", but in this case the 'SET' button when pressed would cause the value to be reduced by 1 semitone. If both pads LH1 and LH2 are pressed together, the button action would be to reset the Transpose value to zero.
The "Player UI" is highly intuitive, so a user guide should not be needed.
The display is turned off while a note is playing, also if there are no touch-pads being touched. This helps to minimize battery drain when running on battery power.
REMI 3 has 8 touch-pads on the upper surface. Four pads are operated by fingers on the left hand and four pads are operated by the right hand. The fourth pad on the left hand (LH4), which doesn't exist on the recorder, serves to sharpen certain notes (e.g. to produce C# and F#). This arrangement, in keeping with other EWI designs, is simpler and more logical than the fingering arrangements on acoustic instruments.
Two pads on the underside of the handset operated by the left-hand thumb select one of three ranges of notes, each range being two octaves, as shown in the chart. The octave pads are located so that one or other or both pads together can be touched. When both octave pads are touched, the "middle" note range is selected (normally C4 to C6). By moving the thumb to the upper or lower pad, the range of notes is shifted up or down by one octave, respectively. The octave pads extend the overall range to four octaves.
Referring to the Fingering Chart, it can be seen that the fingering combinations cover two octaves, without changing the octave selection by the LH thumb. Selection of notes in the first octave of each range follows quite closely the fingering patterns of the recorder, including C" (Alt.) above the low C'.
Contrary to the recorder, the second octave simply repeats the fingering pattern of the first octave, with the top pad (LH1) released, up to G". Above high G", the fingering gets a bit weird, but not as weird as a real recorder. Notes above G" can be avoided, if preferred, simply by changing octaves using the LH thumb (except of course when already in the highest octave range).
Most of the electronics are contained in a few readily available low-cost "breakout" modules mounted on a base board (dot matrix, 120 x 44mm, 0.1" spacing). These breakout modules avoid the need to solder ridiculously small surface-mount components and they reduce the complexity of the main board.
From left to right in the photo below, the 5 breakout modules are: battery DC-DC boost converter-regulator (5V output), motion sensor (MMA8452 tri-axis accelerometer) for pitch-bend, Teensy 3.2 micro-controller module (Freescale MK20DX256 ARM Cortex M4 CPU, 72MHz), headphone amplifier (TPA6112) and audio power amplifier (PAM8302A class-D, 2.5W rms).
Prototype circuit board built on a chunk of "dot-board" measuring 120 x 44 mm
Right-angle PCB pin headers are fitted for connection of pressure sensor, OLED display, battery (2 x AA cells), modulation pad (FSR-402 resistive force sensor) and audio output sockets. The touch-pads are wired to Teensy MCU pins on the underside of the board via floating in-line connectors, allowing the board to be completely removed from the enclosure for service if necessary.
Breath Pressure Sensor
The pressure sensor is mounted on a separate little board located very close to the mouthpiece. The air inlet port should face away from the mouthpiece, i.e. downward, to prevent moisture from entering the sensor. More details on pressure sensor "plumbing" can be found in the REMI mk2 design notes.
The prefered sensor type is the MPXV5010-GP, but this part is now very expensive (> $40) and hard to obtain. There are other options for the pressure sensor, easier to find and at lower cost. Whatever your choice of breath sensor, the essential requirement is to produce an output signal of sufficient magnitude to feed into an ADC input on the micro-controller. The ADC input voltage span, i.e. difference between minimum and maximum pressure, should be about 3V ideally, but at least 1 volt. The voltage at minimum pressure should be below 1V.
There is a sensor device type MPS20N0040D available on AliExpress for about A$3. This device has a full-scale pressure range of 40kPa, which is much higher than required for an EWI, but it should work OK with appropriate signal conditioning circuitry. A high-gain differential amplifier is required. A suitable circuit is described on another website here: Lang Blogspot.
For use in the REMI, the sensitivity (amplifier gain) must be increased by a factor of 5 or thereabouts. To do this, change the value of R8 (feedback resistor of 2nd op-amp) to 12k. If the output voltage is higher than 1V with zero pressure, you'll need to add a small offset voltage to the non-inverting input of the first op-amp (junction of R4 & R6). [Send me an email if you need help.]
REMI 3 software is developed under the Arduino IDE with Teensyduino support package. The Arduino development environment, while not ideal (from a professional software engineer's point of view), provides the quickest and easiest path to completion. Thanks to PJRC for doing such an excellent job on Teensyduino!
REMI 3 source files comprise over 4,500 lines of efficient C code, including annotation but excluding synth patch data and wave-table definitions which account for a further 5,500+ lines.
Firmware is installed from a host computer via the USB connection without needing any additional programming tool. The REMI 3 micro-controller module (Teensy 3.2) has an on-board bootloader which programs the MCU flash memory via the USB port. The host computer requires the "Teensy Loader" application and possibly Arduino IDE software to be installed.
Let me know if you would be interested in buying a REMI 3, or a kit of parts for DIY, if available.
Last revised: 18-MAR-2022