As noted in the overview, the line array requires on the order of 20 amplifiers for a 3-way design. These amplifiers don’t need to provide a lot of power output, as the line arrays are quite efficient. And, as we already noted, the SSM3582 amplifier from Analog Devices checks a lot of boxes, such as low distortion, spread spectrum modulation, efficiency, compact circuitry, digital inputs, easily expandable, etc. But in this article, we aren’t going to review all the reasons for using this chip but instead get right into the design and discuss how to build it. The picture below shows one of the completed boards. For 20 channels, we will need 5 of these boards.

The design uses two SSM3582 chips on a circuit board that can be plugged into a motherboard using a 14-pin header with standard .1″ spacing. The 14-pin connector provides power and input, but the speaker outputs are on separate connectors using .1″ headers. Sullins makes matching connectors that allow using 20-gauge wire, which is fine for the typical wire lengths needed inside the array. There is also a set of jumper pads on either side of the board that set the I2C address for each chip.
The picture below is a close-up of the address jumper area. The jumpers are closed by using a blob of solder to bridge the two pins. There is a table on the schematic that defines the I2C address for the various combinations of jumpers, and that table is reproduced below. The picture shows the Addr0 and Addr1 jumpers at the 0, 0 position for the SSM3582 chip on the left and 0, 1 for the chip on the right. Therefore, the chip on the left is I2C address 0x10 and the one on the right is address 0x11. This addressing scheme supports a total of 8 of these boards, and since each board uses two stereo chips, the array could be expanded to a total of 32 individual channels.


An interesting feature of the SSM3582 is that the bridged outputs can programmed to operate in “mono” mode, in which the amps can be used for loads as low as 2 ohms and provide over 30 watts. That’s a feature that might be useful for powering the woofer section of the line array, although in this design we won’t use that feature. For this line array we will configure the chips in stereo mode, so that each module will provide 4 channels of 10-20 watts per channel using a 15volt supply. With a total of 20 channels, that’s plenty of power for most line array designs.

The schematic follows the reference design in the data sheet. I added some metal tabs to serve as heatsinks and I tried to keep number of unique parts to a minimum to keep automated assembly costs low. The only part that I might change in the future is the NFZ2MSD181SZ10L output filter inductor. The NFZ series of inductors from Murata are ferrite beads designed for low distortion in class D amplifiers. However, I haven’t done any EMI testing to know whether these devices are adequate to keep radiated noise to acceptable levels. The original line array design used a somewhat larger common-mode choke that should provide even better output filtering, and it might be worth switching to that part if better filtering is needed.
In spite of the many tiny parts on this board, it is not difficult to assemble if you have the right DIY equipment. You need a hot air soldering station, a decent soldering iron with a fine tip, and you will need a head loupe or else a stereo microscope. I made 15 of these boards in two sittings, and I’m 73 years old, so I believe anyone with steady hands and lots of patience can build these. There are a number of good videos on YouTube that show technicians replacing QFN chips and soldering other SMD parts, and once you get a feel for how much heat and how much air to use, it’s not as tedious or difficult as it first appears.
You can also have the SMD parts assembled by PCBA houses like JLCPCB. In fact, I had them assemble 5 of them–see the photo below. JLCPCB had the SSM3582 in stock in their library, but they don’t carry the NFZ inductors, so I had the boards built without that part and added the inductors myself. But you can have JLCPCB purchase those parts for you to get a board that has all of the SMD parts preassembled. I didn’t have JLCPCB assemble the through-hole parts but I’m sure they could do that for a reasonable price. The assembly cost, which included all of the parts was $108 for 5 boards. The 4-layer boards with 1oz copper for the ground and power layers, was only $23. Since the SSM3582 chips are $9.53 each at Digikey, and with the boards costing around $10 each at Digikey (using their DKRed service), the parts and assembly at JLCPCB are less than the parts alone from US suppliers.
However, our current administration enforces a 45% tariff paid through the shipper, plus there is a matching Chinese tariff that amounts to a gift to the Chinese government. That almost doubles the cost of the assembled boards, as the total cost for 5 assembled boards was $188. That ridiculous DIY hobby tax makes you think twice about purchasing the boards assembled, at least as long as this tax is in effect. Unfortunately, there are no PCB vendor in the US that will assemble such low quantities at these prices, so you either have to pay the tax or else build the boards yourself. The cost of the tariffs on a set of 10 boards is about the same as a budget hot air rework station, so you might as well buy that rework station if you want some of these amp boards.

Manufacturing files
The KiCad files for the amplifier modules are linked below. There are also links to the bill of materials and placement files that are needed to get the boards assembled at JCLPCB. This design is “stable” and doesn’t need further adjustments to work well. You should be able to upload the zipped Gerber file to any PCB fabrication house that supports Gerber uploads.
- KiCad Project, zipped
- KiCad Gerber file (zipped)
- Bill of Materials (includes motherboard), Excel
- JLCPCB BOM
- JLCPCB Placement
Programming
The SSM3582 needs to be programmed to extract the right TDM slot, and there are some other registers that need initialization. The exact code to program these registers is in the SSM3582.ino file. The snippet below shows the values that get written into registers 0x4 through 0xE for each chip (it is part of a larger loop). Consult the SSM3582 data sheet if you need to change this code or want to take advantage of the limiter, clipping and temperature monitoring features.
Wire.beginTransmission(SSM3582_I2C_addresses[i]);
Wire.write(4); //start at register 4
Wire.write(0x80); //(4) POWER_CTRL: turn on the device
Wire.write(0x0B); //(5) AMP_DAC_CTRL: +21dB gain, with low EMI
Wire.write(0x02); //(6) DAC_CTRL: 48KHz, no mute
Wire.write(0x40); //(7) VOL_LEFT_CTR: 0dB
Wire.write(0x40); //(8) VOL_RIGHT_CTR: 0dB
Wire.write(0x17); //(9) SAI_CTRL1: TDM mode, Left justified
Wire.write(0x06); //(A) SAI_CTRL2: TDM mode, linked
Wire.write(slot_counter); //(B) SLOT_LEFT_CTRL: write slot counter
slot_counter += 1; //bump the counter
Wire.write(slot_counter); //(C) SLOT_RIGHT_CTRL: write slot counter
slot_counter += 1; //bump the counter
Wire.write(0x00); //(D) Dummy write to register D
Wire.write(0x00); //(E) Turn off the limiters
//Skip over limiter, clipping and temp controls for now
Wire.endTransmission(true);