Designing a Transmission Line with SpicyTL

The contents of this article were published in issue 427 of the AUDIOreview.

I’m not a huge fan of single-driver loudspeakers and I’m well aware that, in order to make a full-range loudspeaker that can exhibit the correct tonal balance across the entire audible frequency range, you need at least three (preferably four) ways. That said, a few years ago, intrigued by the many positive reviews, I decided to build a pair of monitors using the renowned Jordan JX92S full-range drivers. I was enchanted.

Ted Jordan, a British engineer and designer who passed away in 2016, was a pioneer in the research and development of metal diaphragm cones. The sound of his loudspeakers is often compared to that of electrostatic panels, which, moreover, Ted Jordan designed for Goodmans Industries at the beginning of his long career. This similarity is probably due to the dispersion pattern of the cone, which consists of a special aluminium alloy foil called Contraflex, similar to that of an electrostatic panel. What struck me most about these speakers was their ability to reconstruct the soundstage, so much so that I named the speakers Hologram Jazz Monitor. This aspect, without demonising crossover filters, is probably due to the total absence of disturbance in the dispersion lobe at the crossover frequency, which obviously does not exist in single-driver systems. The fact of the matter is that the JX92S, even if not perfect, had a listening magic that I had trouble finding in other speakers I had listened to. Perhaps these sensations were enhanced by the total lack of reactive components between amplifier output and driver, or perhaps it was just another unfathomable aspect of this beautiful world where subjective perception of sound arises in a border zone between suggestion and reality. Anyway, when the Jordan company (EJ Jordan Design to be precise) developed its latest generation of single-driver loudspeakers, I decided to build two new monitors, but this time with acoustic transmission line loading (the HJMs were bass-reflex).

This was the starting point for the development of the simulation model described in the article “Designing a transmission line with SPICE” (see summary box) and finally the construction of the Ikigai. In the meantime, the model has been improved with new functions and a modular structure that simplifies its use, and the Ikigai are an excellent opportunity to illustrate its main features.

The drivers used, the Eikona 2, are, as I said, the evolution of the JX92S of which only the 10 cm Contraflex cone remains, damped with a foam ring in the central area where now, instead of the dust dome, we find a cylindrical phase plug. This solves a well-known problem of high-frequency resonance that plagued the JX92S in some situations. The suspension also appears to have been upgraded, and in fact the maximum excursion of the cone is now +/- 10mm (compared to +/-9 of its predecessor). The magnet assembly and die-cast aluminium basket are also new. The Eikona 2, which boasts a remarkable build quality, is currently assembled by Danish company Scan Speak and is sold in selected pairs. 

The full-range driver used is the Jordan Eikona 2, designed in the UK by Ted Jordan and assembled in Denmark by Scan-Speak.

Introduction to SpicyTL

SpicyTL is a simulation model, based on the electrical circuit theory, that predicts the electro-acoustic behaviour of loudspeaker systems loaded with transmission line. It is the evolution of the AIRDAMP model, whose development, and the principles that allow it to work, are illustrated in the above-mentioned article. Compared to the latter, represented by a single electro-mechanical-acoustic circuit, SpicyTL has a modular structure composed of several “blocks” (sub-circuits) and is able to simulate TLs with increasing and decreasing section (tapered and expanding, see Figure 1).

The model, which is particularly well suited to designing foam-damped TLs, can simulate frequency response, phase response, group delay, electrical impedance, speaker cone excursion and air velocity at the TL exit. As with the previous model, the circuit simulation program used is LTspice, which can be downloaded free of charge from the Analog Devices website.

SpicyTL can be downloaded from: https://transmissionlinespeakers.com/en/spicytl-english/

Figure 1

Project development

With the Eikona 2 it was not difficult to achieve the goal: an f3 of at least 55 Hz in a volume of no more than 15 litres. Let’s see below how I developed the project.

Launching SpicyTL.asc opens the main worksheet on which the blocks required to model the project can be added (Fig. 2).

Figure 2

The content of the sheet is automatically adapted to the size of the page, but can be resized with the lens tool (or ctrl + mouse wheel). The parameters defined at this level are transferred to all sub-circuits of SpicyTL and are therefore defined as global. Amongst these are also the loudspeaker parameters, which are therefore also valid for other loudspeakers that may be present in the system.

Let’s start right here: right-click on the line of the parameter we want to insert to open the “.param Statement Editor” window. Enter the value and click OK. This operation must be repeated individually for all loudspeaker parameters. If different from the International System (or if considered necessary to avoid confusion) the unit of measurement is specified in blue next to the value.

Another global parameter is the internal width of the TL, “Line_width”, which is used to automatically calculate the length of any corner bends. As these are relatively compact monitors, the idea is to keep the front panel as narrow as possible while respecting the personal rule of thumb of not going below the external diameter of the loudspeaker basket as far as internal width is concerned. Since we will be incorporating folds into the design later on, we can already define the width (0.15 m).

Finally, we have the parameters describing some physical properties of the air and the dampening materials used. These values were obtained by measurements on a test TL and predict quite well the behaviour of the classic egg-crate foam commonly used as sound absorber. If you have read the previous articles carefully, you will notice that the speed of sound inside the damping material and the speed of sound inside the empty line are now defined separately. This makes it possible to specify the thickness of the absorber material for each different TL segment.

At the level of the various subcircuits that may be added to the main sheet, we find the local parameters. They are entered by right-clicking on the block that is to be configured and are only valid for that block. The values must be entered in the PARAMS: line and replace the default values (Fig. 3).

Figure 3

A block that is copied after the parameters have been entered retains the parameters entered previously.

The local parameters are:
S_0: area of the initial section of a segment (cm²);
S_1: area of the end section of a segment (cm²);
SL: cross-sectional area of a straight segment; initial (and final) cross-sectional area of a 90° bend; central cross-sectional area of a 180° bend (cm²);
S_in: area of the initial section of a 180° bend (cm²);
S_out: area of the end section of a 180° bend (cm²);
S_foam: area of the section occupied by the foam (cm²);
S_end: area of the opening (cm²);
Lenght: length of a segment (m);
Offset: distance between the centre axis of the loudspeaker and the beginning of the TL (m);
Panel_THK: thickness of the internal panel at a fold (mm);
Vol: volume of the coupling chamber (L);
Output: amplitude of the sinusoidal sweep (default: 2.83 volts rms);
RG: amplifier output resistance (default 0.1 ohm);
dist: SPL measurement distance (m)

To insert a block, click on the Component button on the toolbar and select SpicyTL’s working directory, which automatically appears as the second choice in the Top Directory drop-down menu (Fig. 4).

Figure 4

Then select the desired block and place it on the main sheet by left-clicking with the mouse. The block can be moved, dragged, copied or deleted like any other component using LTspice tools. Blocks must be placed side by side horizontally, starting with the Test_point block (which is already in the main sheet); once placed side by side, they automatically connect. Unused blocks must be removed from the worksheet.
Test_point is the fundamental block of SpicyTL: it contains all the measuring instruments and must never be removed from the main circuit. It includes the only local parameter “dist” that defines the SPL measurement distance in meters. The labels on the top of the block act as test points for measuring the SPL of individual loudspeakers, of the opening or of the whole system. The labels on the bottom of the block provide measurements of the cone excursion of individual loudspeakers (in mm, rms value) and the air velocity at the opening (m/s).
Let’s start the project with the IntegratedTL block: it allows us to simulate the behaviour of a TL with constant, increasing or decreasing section. It includes a loudspeaker that can be mounted at the beginning of the TL or moved at will along it by defining an offset value. It is a very practical tool for a first simulation and provides immediately usable results. The local parameters (default values) are as follows:

S_0=100 S_1=100 S_foam=0 Offset=0 Lenght=1 Vol=0

I usually start the simulation with an empty TL with a section equal to the area of the loudspeaker cone and a length tuned to its resonance frequency: L=c/4fs, where c is the speed of sound in air. This leads to the considerable length of 1.65 m, but, as we now know, the foam has a considerable impact on the speed of sound passing through it and this will allow us to considerably reduce the effective length of the TL.
The total length of the TL, including any driver offset, is defined by the “Length” parameter. As far as the offset is concerned, the size of a small monitor does not leave us much choice and an initial sketch gives me a value (which will later become definitive) of 8 cm.
We therefore right-click on the block and modify the default parameters as follows:

S_0=78.54 S_1=78.54 S_foam=0 Offset=0.08 Lenght=1.65 Vol=0

The IntegratedTL block, which if necessary can be inserted as the first segment of a more complex project, if used alone must be ended with an opening (Open_end block) or a closed panel (Closed_end block). Let’s end it by inserting the Open_end block and setting the surface of the opening:

S_end=78.54

Before launching the simulation, we must connect the Amplifier block; this is the only block that is exclusively electrical and obviously represents the amplifier. The default parameters are:

output=2.83 RG=0.1

Unlike the various acoustic blocks, connected on a horizontal line, amplifier and loudspeaker are connected vertically.
The complete model can be seen in Figure 5, while the obviously unsatisfactory simulation result can be seen in Figure 6.

Figure 5
Figure 6

Before intervening on the damping material (the insertion of which is undoubtedly the most effective method to reduce the strong oscillations in the response) we evaluate the effect of an acoustic volume (or coupling chamber) placed immediately behind the loudspeaker. We can do this simply but effectively using the “Vol” parameter built into the block. The volume of this TL is just under 13 litres and a good rule of thumb suggests a volume of about a third of the total for the coupling chamber. Setting Vol=4.5 we get the response in Figure 7.

Figure 7

We note that ripple, while remaining at unacceptable levels, is greatly reduced.
This is just one of the many effects that the coupling chamber exerts on the system’s response and I won’t dwell on them further, having already dealt with them in the TL monograph; I’ll just point out that the -3 dB response now extends below 50 Hz. Not bad, given the size of the box, but we should not forget that since the TL is still empty, the aperture provides a large contribution to the total system response, but this will diminish considerably once the absorber is inserted. Let’s check this right now by setting “S_foam=40” (which is equivalent to about 50% polyurethane foam filling) and looking at Figure 8.

Figure 8

The f3 has moved up a lot and the response is still far from optimised.
Without the aid of a simulation programme, a designer or DIYer wishing to design his own drive line from scratch, even with a fair amount of theoretical knowledge, could only get so far or a little further. In reality, even with the constraints imposed by the small size, there is still plenty of room for improvement. The main parameters to work on at this point are the length and cross-section of the TL. The response in Figure 8, you will realise with experience, suggests that the line is too long. To align the low frequency output with the midrange I reduced the total length to 1 metre (Fig. 9).

Figure 9

The f3 is now just over 55 Hz and very close to the target, which we can achieve with a slight increase in the section of the TL and consequent adjustment of the volume of the coupling chamber.
At this point we have to start thinking about the shape of our box and put on paper some sketches trying to maintain a good dimensional balance. I don’t have any great suggestions on this point; you can take inspiration from good existing designs or work on your imagination. Generally speaking, a small monitor is more constrained to a classic shape, whereas a floorstanding speaker gives more freedom and probably makes tapered shapes more appealing. After several drafts I arrived at the design in Figure 10.

Figure 10

As you can guess from the pictures, the Ikigai are made with several layers (16) of MDF on top of each other. This construction technique, that I had already experimented with a pair of smaller speakers, allows to free the box from the classic straight parallelepiped shape. To cut the panels it is advisable to use a numerical control machine, but a good and patient craftsman will be able to manage very well also with some jigs and a manual electric tool; whoever wants to try his hand at the construction can download the vectorial pdf at transmissionlinespeakers.com/projects/ikigai.
The assembly is not very difficult, however, despite the presence of long pins to centre the panels (Photo 1), it does require considerable work to finish the side walls. The gluing of the panels (Photo 3) is a particularly important phase; for this project, instead of the classic vinyl glue, I used a polymer-based water-repellent glue.
I have not drawn up alternative construction plans, but the measurements for any simplifications can easily be taken from the original project.
With the exception of panels 8 and 12, which serve as internal partitions and are 16 mm thick, all the others are 19 mm thick. The binding posts are Dayton Audio’s premium series and are mounted on the dedicated aluminium plate (Photo 4).

Photo 1
Photo 3
Photo 4

As we have seen, the IntegratedTL block allows you to do practically everything you could do with the previous AIRDAMP model (with the added possibility of simulating variable section TLs) but in a much simpler way. Although it is already a complete tool to simulate most of the classical TL designs, with SpicyTL you can go further and reconstruct in detail the geometry of more complex designs also assessing the impact of the folds on the system response.
Let us try, for example, to reproduce the equivalent model of the Ikigai starting from the section in Figure 10. I have not included the dimensions here so as not to complicate the drawing too much (on the other hand, to do a clear and complete job I would have had to quote all 6 different panels that make up the sandwich), but I have highlighted the line sections that correspond to the various blocks: in green the section corresponding to the driver offset, in yellow the 4 constant section sections, in blue the 2 180° folds and in orange the 90° curve.
Let’s start with the offset with the Offset_foam block, which represents the segment of the TL between the central axis of the driver and the beginning of the TL. It can be a constant, increasing or decreasing section. If you are not using the IntegratedTL block this is generally the first component to be connected to the Test_point; alternatively, if the TL to be simulated has no offset value, you can connect a loudspeaker directly (a classic example of a TL with no offset is a loudspeaker mounted at the start of a pipe). Let us now see how to enter the parameters: excluding the final section, the internal width of the TL is 15 cm, while the depth in the first section corresponds to 6 panels of 1.9 cm; the surface of the line in the offset section is therefore 171 cm². The length of that vertical section is instead 0.08 m (8 cm), i.e. the distance between the centre of the loudspeaker and the beginning of the TL. The parameters to be entered, which replace the default values, are:

S_0=171 S_1=171 Lenght=0.08 S_foam=90

As can be seen from the “S_foam” parameter, the section is already damped with a certain amount of foam: this is the area occupied by two sheets 15 cm wide and 3 cm thick (corresponding to 90 cm²). The quantity can be increased by lining the side walls as well, but for now I have limited myself to the front panel and the first dividing panel. In reality the front surface occupied by the loudspeaker is free of absorbent material, which is in compensation on the upper part of the main volume (see foam arrangement in Figure 11) corresponding to the beginning of the line.

Figure 11

A further refinement of the offset block could consist in adding the possibility of simulating the presence of a sheet of damping material also on the initial surface (in practice on the closing panel of a TL with offset). This operation could in fact already be done by placing a short segment of TL with a length of 3 cm and 100% filling in front of the offset block, but in this case it would have a certain impact on the speed of calculation since each segment added to the simulation, regardless of its length, is composed of 50+50 RLC elements.
We can now insert the Speaker1 block: this is the equivalent circuit of the electrical, mechanical and acoustic components of the loudspeaker and includes the air load on the diaphragm. The parameters, as mentioned above, are defined globally in the main circuit. It is possible to design a system with two speakers, Speaker1 and Speaker2, identical to each other, but with different positions along the TL.
We connect the Amplifier block and continue by inserting the first straight TL section with the Straight_foam block. The cross-section in that section is still 171 cm² while the length is 10.8 cm; the parameters to be entered are therefore:

SL=171 Lenght=0.108 S_foam=45

Here again we note the presence of damping material, but from this point on I have considered the thickness of a single sheet of foam.
We also note that the volume of the coupling chamber is now modelled as a section of TL with a larger cross-section (in this case double) than the rest of the duct.
This leads to a better definition of the volume that really participates in the effect of the coupling chamber on the system response than the simple dimensionless compliance of the IntegratedTL block (and the old AIRDAMP model) can do.
The next two sections of straight line (I remember, in yellow in the drawing) have a cross-section of 85.5 cm², while in the last section (the horizontal one, always highlighted in yellow) I reduced the cross-section to 80 cm², bringing it to a value practically identical to Sd. This small reduction (which has an almost negligible effect on the response of the system) improves the aesthetics of the project and speeds up the measurements (since the surface of the loudspeaker is equal to that of the aperture, it is not necessary to apply corrections to the level of the response of the latter).
The foam used in this last section is thinner, but the total area occupied by the material increases from 45 to 50 cm² due to the greater width of the line (and consequently of the sheet).
Separating these sections, which are 13.1 cm, 20.3 cm and 22.2 cm long respectively, are two 180° and one 90° folds. If we look at the box we can see how important it is to consider the variations in cross-section due to the presence of a fold in the TL.
The first 180° bend also halves the cross-section, from 171 cm² to 85.5 cm². The 180bend block foresees this eventuality: the section variation in the bend is calculated from the area of the entry section “S_in”, the area of the middle section “SL”, the area of the exit section “S_out” and the global parameter “line_width”; the latter, as in the 90bend block, is used to automatically calculate the length of the segment. The thickness of the inner panel “Panel_THK ” may be added to the total length if necessary. The parameters for the first and second 180° folds are:

S_in=171 SL=85.5 S_out=85.5 S_foam=45 Panel_THK=16

S_in=85,5 SL=85.5 S_out=85.5 S_foam=45 Panel_THK=16

while the parameters of the 90° bend are:

SL=85.5 S_foam=45 Panel_THK=0

The latter also includes the possibility of defining the thickness of a panel, which is very useful if the 90° bend represents the end section of the TL and it is therefore necessary to take into account the front (or back) panel. In the 90bend block the area of the input section is always equal to the area of the output section.
Finally we can end the line with the Open_end block which corrects the acoustic length of the TL and applies the acoustic load to the opening. It also detects the volume velocity at the opening and sends the data to the Test-point block for SPL and air velocity measurement. The only local parameter is the area of the opening in this case:

S_end=80

The complete model appears as in Figure 12.

Figure 12

The potential of the modular approach is immediately apparent. New blocks can be developed if necessary and at the same time other electrical or acoustic components can be added to the main sheet to evaluate their effects.
Below we see the application of an idea that came to me while building the Ikigai. I included in the simulation a bypass connecting two different points of the TL to model the effect of some holes made at speaker height on the first divider panel (Photo 2).

Photo 2

The aim was to slightly reduce ripple in the response by offloading some of the pressure generated by the driver to an area close to 1/3 of the length of the TL to achieve an effect similar to that of a more offset configuration.
I dragged part of the blocks to one side using the drag command (the little closed hand in the command bar); this automatically resizes the connecting wires and allows the acoustic components to be connected between blocks. The acoustic connection is made on the first wire from the top (Fig. 13).

Figure 13 - Equivalent acoustic circuit of 9 holes (diameter 7 mm and depth 16 mm) drilled in the first divider panel. Inductance L1 and resistance R1 model the air mass in the hole and the friction losses respectively.

The holes in the panel (9, each 7 mm in diameter and 16 mm deep) were modelled with an inductance to represent the air mass filling them and a resistor to represent the losses. Figure 14 shows the measurement with and without holes and the corresponding simulation. The effect, although mild, causes a reduction of the ripple in the response and slightly alters the behaviour of the TL with a small increase in frequency of the first resonance modes. A good starting point for future studies.

Figure 14 – Effect of holes (red trace) on system response. a) Measurement, b) Simulation.

Let’s examine the last few blocks with an example that differs somewhat from the classic transmission line. Let’s try to see what happens when we load the loudspeaker with a closed volume having one dimension that is very dominant over the other two.
With SpicyTL there are several ways to simulate a closed box. In Figure 15a we see the response of a 20-litre closed box, empty and lossless, obtained simply by placing the Volume block next to the loudspeaker; unlike the other acoustic blocks, Volume is modelled by a concentrated parameter circuit and therefore cannot provide information about the reflections inside the box.
We now model the same empty volume with a straight TL segment closed by a panel (Closed_end Block). We obtain the 20 litres by defining the section of the segment 200 cm² for a length of one metre and observe the result in Figure 15b. We immediately notice the presence of irregularities in the response due to internal reflections on the longest side of the box and the consequent formation of normal oscillation modes (standing waves).
Finally, let us use the Tapered_foam block and set the initial area at 353.5 cm² (the variation of the section of the TL as its length varies has been modelled following a truncated cone shape or, as in this case, conical shape; the value simply represents the base of a cone having a height of 1 m and a volume of 20 L), the final one at 0 cm² and a length of 1 metre in order to obtain once again an empty volume of 20 L, but with a tapered shape. We immediately notice from Figure 15c how the resonances due to internal reflections are much attenuated with respect to the segment of equal length but straight.

Figure 15 – Simulated response of a closed box (20 litre volume). a) Considering only the loading effect of the volume, b) With a rectangular section, taking into account reflections on the longest side, c) With a tapered section, taking into account reflections on the longest side.

From the graphs in Figure 16 we can also observe how, with the same content of absorbing material, the attenuation effect of the resonances is decidedly more marked in the tapered type box.
Another interesting datum comes from the graph of the cone excursion that in the last configuration appears more contained (Fig. 17).

Figure 16 – Effect of resonance attenuation with the same absorbing material. a) Rectangular section, b) Tapered section.

Figura 17 – Escursione del cono; 1 mV corrisponde a 1 mm. a) Sezione rettangolare. b) Sezione rastremata.

Every time I look at these results I am reminded of two reference designs such as the B&W Nautilus and the more recent GIYA series by Vivid Audio which, obviously not by chance, come from the mind of the same designer: Laurence Dickie.
The last block to be described is Expanding_foam, which represents a segment of TL with increasing section. In fact, the Tapered_foam and Expanding_foam blocks are circuitically identical, and both can simulate straight, rising or falling TL segments. The block symbols, on the other hand, are different in order to more easily identify the shape of the transmission line we are simulating.
Basic instructions on the main functions of SpicyTL can be found in the dedicated section of the website.

Listening test

The listening test takes place at my friend Fernando’s house. My intentions of using his analogue set-up (Luxman PD 272 direct drive turntable and Audio Analogue Fortissimo integrated amplifier) vanish as soon as I discover that Fernando has a subscription to Tidal Masters and an alternative set-up made of pro components (Carver Model C-6 preamp and QSC USA 850 power amp) dedicated to liquid music. The feeling that the Ikigai are particularly at home with the generous QSC, and the vast amount of high definition titles available, leads us to continue listening with this set-up.
I place the Ikigai on the stands normally occupied by a pair of Aliante One Pininfarina loudspeakers (used as a reference for some comparisons) at a couple of metres from each other and facing almost completely towards the listening point, about three metres away from the speakers. Single-drivers tend to become directional at lower frequencies, if compared to multi-way systems, but this lack of “panoramicity” makes room placement much less critical than with the latter.
The monitor approach is immediately noticeable and the association with professional components seems even more appropriate.
At the beginning of the listening session a pair of imposing and well-preserved AR-3As dominates at the sides of the Ikigai. As soon as I got used to the room, and considering Fernando’s great cooperation, I remove the ARs and place the monitors further apart. We are listening to a Diana Krall song and the stage widens beyond the speakers without fraying in the middle, where the singer’s voice remains perfectly in focus. The speed and precision of the attacks make the scene even more realistic and convincing.
The Aliante, positioned at a more open angle, offer an even wider, but less stable soundstage. With the Ikigai, now turned completely towards the listening point, there is the sensation that horizontal width and depth are reconstructed exclusively with the spatial information contained in the recording.
Fernando calls them ‘finicky’ and I take it as a compliment: I like details chiselled with precision and I like listening to a track for the hundredth time and discovering a detail I had never noticed before.
I listen for several hours, during which the sound of the speakers becomes clearer and more and more persuasive (while one of the two speakers has already been burned in, the other one is playing for the first time).
I realise it was a compliment from Fernando when I see his expression as we listen to These Bones by the Fairfield Four. And indeed, it is with voices and the natural sounds of acoustic music that these speakers (I take no credit for this) are at their best.
With Phil Collins’ pop-rock the Aliante’s have more impact. Obviously the 17 cm Seas woofer has more bass extension (though the difference, perhaps due to a not-so-large room, is less than I would have expected) and the Ikigai’s lack some of that liveliness (which very often becomes exuberance, but this is not the case with the excellent Aliante’s) on the very high treble proper of the dome tweeters.
Clearly, a single driver cannot operate in full-range mode in the literal sense, but it is equally clear that there are infinite aspects of music reproduction that go far beyond the maximum bandwidth that can be reproduced. In short, the Eikona 2 cannot do everything, but what it does do, and it does a lot, it does superbly. Among the many things I liked, the richness of detail, the ability to focus and the depth of the scene deserve a special mention.
The control over low frequencies typical of the transmission line is truly remarkable. The volume knob rises to unexpected levels and it is surprising how a single driver can give back a timbre so credible and detailed even in the most demanding passages.
A last note on an aspect that I consider fundamental: after many hours of listening, sometimes at very sustained levels, the sensation of fatigue is totally absent.
It may seem a nonsense, but I’m really convinced that these drivers, if used in a two-way project that doesn’t distort the design philosophy and puts them in the conditions to express at their best the wonders they are capable of, could represent for many people a definitive solution. I’d see them well matched with a ribbon tweeter for the refinement of the highs and a possible sub section to complete the bass range; on the other hand, both solutions, even if separately, have already been experimented in a couple of very interesting DIY projects.

Andrea Rubino