This small and very portable robot builds further on the experiences gained during the development and evaluation of our tiny <Pi> robot built in 2017. With its reduced ambitus <2Pi> comes closer to a traditional serinette, a historic miniature automated pipe organ. The lowest notes are an octave lower than in <pi> and the compass here is 30 notes, or circa two and a half octave. Just as in <Pi>, here we used tiny electromagnetic buzzers, type ABT-408-RC costing only about one Euro a piece, to bring the pipes in resonance. We designed resonator tubes for the lowest notes, made from aluminum pipe 12 mm outer diameter, 10 mm inner diameter, so somewhat wider than what we took for <Pi>. The adapters to fit the pipes to the buzzers with their rectangular orifice were made from 10/8 mm tubing. The next higher eight notes use the same pipe material as the corresponding notes on <Pi>. The very highest pipes were made on the lathe from massive aluminum rod. The special extruding tool we made for <Pi> could be used again. to make the rectangular opening at one end of the 10/8 alu-pipes. The sound of the pipes thus formed is quite reedy, as was to be be expected from metal membranes, and thus compares quite well to a soft high pitched regal.
For driving the buzzers we designed a circuit build around the microchip P24EP128MC202 microprocessor, in fact a chip developed as a dedicated 3-phase motor controller. The circuits are in principle identical to the ones used for <Pi>, but the PCB boards were redesigned and improved on some details. Here we have only two PCB's, each serving 15 notes. All sound synthesis is handled in the digital domain using PWM techniques. On each processor chip, three 16-bit timers are used to generate the required pitches with variable duty cycles. The three PWM channels working at a base frequency of >300kHz are used for the envelope control of each individual note by multiplying their output with the variable duty cycle square wave signal from the tone generators. No low pass filtering was applied, as all possible artifacts are situated well above the normal auditory perception range. Moreover, the coils driving the membranes serve as an intrinsic low pass filter due to their inductance (900uH). We considered using analog control for the global volume control of the instrument as the power supply voltage for the buzzers controls directly the sound volume leading to a possibly better resolution in dynamics. However, after some experiments we dropped the idea mainly because it would introduce a high risk of overloading the buzzers if the instrument were given in the hands of not knowledgeable musicians. The current through the buzzers should be limited to 75 mA.
Here is the circuit design (shown for 3 notes only, but the practical circuit on a single 100 x 220 mm board, houses 5 processors, good for 15 notes):
The 20 Ohm Bourns trimpot resistors in series with the load in the circuit are used to balance the non-linearity of the frequency response of the sounders. Their value increases as the resonant frequency is approached. Complete detailed circuit drawings are given at the bottom of this page. In this version, we used multiturn trimpots such that balancing becomes more comfortable as compared to <Pi> were we soldered in selected fixed value resistors. The MOSFETS used here were selected to operate on a 2.5V gate voltage such that they can be fully driven with the outputs of the AND-gates.
The complete robot consists of just two PCB's in the format 100 x 220 mm, each holding five 16-bit PIC microprocessors. Here is an overview:
As each PCB houses 5 PIC microcontrollers , there are 10 controllers to write firmware for.
The populated PCB's, without the resonators, look like:
To make and calculate the required pipe resonators we first made a bunch of test-pipes of different lengths and measured them out carefully using our Tektronix arbitrary function generator. After collecting the data, we wrote a small computer program to calculate by logarithmic interpolation the required pipe lengths for the practical instrument. It was observed that the pipes resonate as 1/4 wavelength resonators for all pitches below the resonant frequency of the buzzers.
Definitive pipes as made, tuned and measured:
|freq = f0||l/d||L||De||Di||Lambda / 4||R|
Note: the pipes with an external diameter of 12 mm have an insert made with 10 mm pipe at the end to fit the buzzers. Pipes with internal diameters smaller than 8 mm were turned on the lathe from massive 10 mm diameter aluminum rod. The internal diameter for the highest pipes is only 6 mm.
An extra feature of <Pi> as well as <2Pi> is that it can, next to the default equal temperament tuning, also be tuned in so called just intonation. As the intervals in any just intonation system are based on a single reference pitch, we implemented just intonation for all 12 possible base-pitches. To this end we implemented controller 21. With value 0, equal temperament is used. With values 12 to 23 just intonation is in used based on the references C to B. These are the interval ratios as implemented:
Note that changes of pitch and tuning are only applied to the next note played and thus do not affect an already playing note.
For composers <2Pi> offers a wealth of subtle possibilities, a striking one being that the pipes can also produce controllable noise bands around their central pitches. Not only it can behave as a tiny organ, but also quite well as a source of soft but high pitched percussive sounds. In order to explore this, just set the sustain level very low and use very high velocity values with fast attack and decay.
Midi implementation and mapping:
Midi channel: 5 (counting 0-15)
Note Off: notes 72 to 101, note release time implemented. If`release is used,
it will override the setting of ctrl.19 (global release time).
Note On: notes 72 to 101, velo implemented. The velocity byte controls the extra level above sustain (set with ctrl.#7) during the attack period.
<2Pi> has two blue LED lights, one on each board. These lights are mapped on midi notes 1 and 2. For these, velocity is not implemented.
#1: Wind noise or pitch instability. (Default value 0)
#7: Global volume corresponding to the sustain level (default value 96)
#15: Waveform controller (duty cycle, default value 127).
#17: global attack control (attack time) (default value 8)
#18: global decay time (default value 6)
#19: global release time (default value 10), release starts on reception of a note-off command. If note-off with release commands are issued, the release byte sent will override this controller for the note released.
#21: tuning system in use. Value 0 (default) sets equal temperament. Values 12-23 set just intonation based on the notes C to B respectively.
#66: Power on/off switch. Power off resets all controllers to their startup default values. Users should always send #66 with value 0 when the robot is not playing.
#72 to #101: Microtuning controllers for the individual notes. Note 72 uses ctrl.#72 etc, up to note 101 with ctrl.#101. By default all these controllers are set to 64. The range is about a quartertone up or down.
#123: all notes off, preserving all controller settings
Note: controllers #7,#17,#18,#19,#21 and #72 to #101 will have an effect only for the next following note played and have no effect on the note(s) sounding. Controllers #1, #15, #66 and #123 have an immediate effect.
Program change, with value 0, is implemented and can be used to reset all controllers to their cold boot settings. This command will also reset the tuning in use.
Channel aftertouch, key pressure and pitch bend are not implemented on <2Pi>
|All specs given here are subject to changes during the still ongoing building
process. The instrument is available for users since september 15th 2018
Music composed for <2Pi>:
Godfried-Willem Raes '2Pi demo' (2018)
Godfried-Willem Raes "Namuda Study #70: Poly" (2018)
Godfried-Willem Raes "Fanspastic Voyage after a student" (2018)
Georg Friedrich Haendel "The Inharmonious blacksmith"
|Back to Logos-Projects page : projects.html||Back to Main Logos page:index.html||To Godfried-Willem Raes personal homepage...||To Instrument catalogue|
Dit instrument kwam tot stand zonder enige steun van de Vlaamse Gemeenschap, na een vernietigend en korrupt advies van Piet Van Bockstal.
22.08.2018: First sketches and outline for a serinette version of <Pi>. First data sets for the lowest pipes and resonance's collected. This could become a prototype for an instrument that could go in production.
23.08.2018: First attempt to design a PCB that at the same time would serve as a carrier for the pipe resonators.
24.08.2018: Further calculations on the hardware circuit.
25.08.2018: PCB designed for board 1, covering notes 72 to 87. .
26.08.2018: Test pipes made with concentric alu-tubing 12 mm outer diameter.
27.08.2018: Calculations and further measurement on test pipes in the range 72 to 83
28.08.2018: Calculation software rewritten in PBCC. Improvements on the PCB design. 20 Ohm trimpots ordered from Farnell.
29.08.2018: Pipes 72 to 86 made and tuned. This whole set made from 12 mm pipe with a bottom insert 10 mm. All resonators are 1/4th lambda.
30.08.2018: Pipes 87 to 90 made from 10 mm aluminum tube.
31.08.2018: PCB for the notes 72-86 produced. Here is the PCB: Drilling takes about 2 hours of nervewrekking work.
01.09.2018: Soldering of the first board. After a first failure (the AND-gates have to go inverted into their sockets, so pin1 down...) everything seems to work. Firmware roughly adapted to operation in the midi note range 72-83. We did this by introducing a divide by 2 in the three timer ISR's. Setting the prescaler to :8 would lead to a serious loss of precision in the tuning. Measured note-frequencies now: note 72 = 523 Hz and 82 = 932 Hz.
02.09.2018: PCB design for the second board finalised. Board etched and drilled. Board 1 tested with firmware. Running out of components for board 2. Also, meeting problems soldering 30-years old IC sockets... We wanted to use them as we do not have budgets anymore to afford buying fresh components due to the complete cut of our funding... On board 2, the trimpots are 50 Ohms, 25 turns multiturn, Bourns 3206VV-1-500LF for notes 97 ro 101.
03.09.2018: Working on the chassis design. Width will be 240mm, height 290 mm, depth 80 mm. Here is a view on the backside (pipes 72 to 86) under construction:. To make the pipeholders we used this drilling sjablone: The upper part fits the 12 mm diameter pipes, the lower part is for the 10 mm diameter pipes.
04.09.2018: Construction of the pipe holder for the 10 mm diameter pipes. Construction of the side panels. The mount with L-shaped aluminum hooks, 10 mm wide, cut from 30 x 50 x 3 profile. Continuing construction and tuning of pipes.
05.09.2018: All pipes constructed. Pipe assemblies soldered on board 2. Pipe holder mounted. Finalising wiring. Testing...
06.09.2018: Pipes 78 and 85 sound muffled. Did some cyanoacrylate creep inside the buzzers?
07.09.2018: New pipes made for notes 78 and 85. Also we have to check the solder joints on the MOSFET for note 98.
08.09.2018: Replacement of the defective pipes. Everything works fine now. We may consider to replace also pipe 77, as it sounds a bit muffled.
15.09.2018: <2Pi> presented on the kultuurmarkt, Kouter Gent at the occasion of Odegand.
17.09.2018: <2Pi> given a place in the orchestra. It's smallness is striking...
18.09.2018: Working on Namuda Study #70, with an important sections for <2Pi> in interactive mode.
20.09.2018: Namuda Study #70 premiered with Emilie De Vlam. We also presented two solo-pieces for 2Pi.
22.09.2018: Start working on making 2Pi work as a stand-alone robot. We need an Axoloti board to do this.
24.09.2018: Circuit for the AXO drawn. Stainless steel chassis prepared for stand alone operation.. We could consider an interactive mode whereby 2Pi could be controlled using a build-in microphone.
This is the lay-out of the Axoloti board: As it is impractical to power the Axoloti board from <2Pi>, we provide in a separate power supply for the board. This should be connected to the coaxial power connector on the side of the Axoloti board.
25.09.2018: Rotary switch with pull-up resistors and connector soldered. Board and chassis assembly finished. Ready for programming now by Lara Van Wynsberghe.
28.09.2019: Lecture at Hackersspace (Kopergieterij) with <2Pi>, followed by a programming workshop led by Lara Van Wynsberghe.
26.12.2019: Noticed failure of note 98. We have to investigate the cause: found bad solder joint on multiturn pot. Note 77 has a small problem as well: it sounds way to weak.
07.12.2020: Bug discovered in reading TMR3. We must use TMR3HLD to avoid amplitude glitches. All firmware recompiled after the bug fix. Upload still to be done now.
- optimizing the firmware
- extensive testing
- preparing more demo files
- evaluation and conclusions on the experimental prototype,
- suggested changes for further future designs:
source code (to be separately compiled for each of the 10 microprocessors).
Hex-dumps for the PIC's:
|PIC 1 72-74|
|PIC 2 75-77|
|PIC 3 78-80|
|PIC 4 81-83|
|PIC 5 84-86|
|PIC 6 87-89|
|PIC 7 90-92|
|PIC 8 93-95|
|PIC 9 96-98|
|PIC 10 99-101|
If people are interested in owning a handmade version of this miniature robot, I can hand make them for ca. 2500 Euro. Delivery time will be ca. 2 months.
Cost calculation for the <2Pi> robot:
Board components (30 notes):
|item / part||NR.||description||price|
|IC socket||10||28 pins||
|IC socket||10||16 pins||
|PCB||2||100 x 220 + processing (drills, solder, etching baths, films)||
|IC socket||1||8 pins||
|SMPS 5V - 2A||2||XP Power ECB10US05||
|5-pole DIN sockets||1||Preh, vertical mount, bajonet||
|LM2940 - TO220||2||3V3 voltage regulator||
|ICD headers 6-pins||10||
|2 pole Weidmueller||2||socket and plug||
|3 pole Weidmueller||2||socket and plug||
|Fuse||2||self resetting fuse||
|100nF bypass caps||36||
|20 Ohm trimpots||30||Bourns multiturn||
|Figure 8 connector||1||PCB mount||
|Blue 1W LED||2||TO220 - PWR350 T21B1||
Mechanical parts and general assembly::
|item / part||NR.||description||price|
|polycarbonate plate material||1||400 x 300 x 8||
|aluminium brackets||4||30 x 50 x 3||
|aluminum profile||50 x 2 x 10||
|M3 bolts and nuts||24||stainless steel||
|Aluminum pipe 10/8 mm||2 meters||
|Aluminum pipe 12/10 mm||2 meters||
|Aluminum staff 10 mm10/8 mm||0.5 meters||
|Epoxy glue||1||fast setting||
|5 mm distance holders||16||3 mm||
|Loctite Cyanoacrylate glue||4||gel||
|Power cord||1||figure-8 plug||
|Flightcase (attache case)||1||
total cost for materials: 858.50 Euro
Labor and research investment:
22.08.2018 --->04.09.2018: 14 working days a 315/d = 4410. Euro.
Estimated end cost of prototype production: 5268.50 Euro
by Godfried-Willem Raes
Further reading on this topic (some in Dutch):
Audsley, George Ashdown 'The Art of Organ-Building', ed. Dover Inc, NY,1965,
(first edition: 1905) ISBN 0-486-21314-5
D'Appolito, J. 'Luidspreker-meettechniek', ed. Segment BV, Beek , Nederland, 2000, ISBN: 90 5381 116 8
Philips Components, 'Piezoelectric Ceramics, properties and applications', Eindhoven,1991
Raes, Godfried-Willem 'Bug', an automated fluegelhorn (2017)
Raes, Godfried-Willem , Expression control in musical automatons
Raes, Godfried-Willem, "Logos @ 50, het kloppend hart van de avant-gardemuziek in Vlaanderen" (book, 2018)
Maintenance and disassembly instructions:
Robody picture with <2Pi>: