in Audio projects synergy horn ~ read.

Horn Design

Whilst reading about various DIY attempts at designing a Synergy Horn I came across an interesting quote that said that because you are designing in a 3D space something like a simple 60x60 degree horn does not contain any easy 60 degree angle cuts. Given this fact I thought why try with maths when we have some amazingly powerful free CAD programs available such as the excellent Google SketchUp.

My design was highly iterative meaning that first I designed the basic horn, added the flares, added the drivers and finally added the walls to complete the enclosure. This was done in parallel with the Horn Modelling process using Akabak to determine the physical deisgn.

This page will walk you through the design process. Although it may look like this process was done quickly and efficiently the total process took probably 20-30 hours including learning SketchUp and making small tweaks.

Step 1: Basic Horn

The first step was to build a basic 60x60 horn.

The Basic Horn

Step 2: Add the Flares

All Danley Synergy Horns include a flare which is supposed to smooth the response so that was added second.

Horn with Flares

Step 3: Add Some Drivers

Because I was aiming for a three-way Synergy Horn I wanted to see if the drivers would fit. I found a very high detail model of a Vifa driver which I scaled for all modeling work. Somehow Danley managed to fit twelve inch woofers into his where I was struggling with only 8" woofers.

Driver Test Fit

Step 4: Offset the Bass Drivers

Deciding that 8" drivers wouldn't do I was fortunate enough to have someone suggest that if I offset the drivers I could fit a bigger 10" driver and a lot more of the surface area of the panel would be utilised. The secondary benefit is that the wider panels would allow the horn to be braced against the cabinet walls for additional strength.

Offset Bass Drivers

Step 5: Adding the Ports and Building the Enclosure

Once the basic model was built the rest was quite easy: I was able to 'cut' out the ports using the solid tools functionality of Google SketchUp Pro and build an approximate imitation of the Danley cabinet shape very quickly. You can see that the bass driver offsets braces the horn against the cabinet walls.

Add the Ports

Step 6: Adding the Finishing Touches

The final step was to add all the detail, for example the SpeakOn connector, the furniture bolts to hold the ends on and basically make the cabinet more build friendly (where possible).

One object which I was thinking to have printed by a 3D printing company is an adapter to convert the circular entry from the compression driver to the square shape at the entry to the horn. This should have a side benefit of smoothing the shape of the horn where the midrange drivers enter.

Compression Driver Adapter

At this stage the design was complete.

Final Design Front

Final Design Side (Cut away)

Final Design Top

Step 7: Conversion to a Cutting Sheet

Once the 3D CAD model was complete I needed to convert it to a single plane so it could be sent for 3D CNC routing. Unfortunately Google SketchUp doesn't include this functionality but after an extensive googling session I managed to find a script which I have altered which will greatly help in this process. You can download the script at the bottom of this page.

# Copyright 2012 by Mike Seddon - All Rights Reserved
#
# THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
# Oct 2012
#   
# flatten_object.rb
#   rotate objects axis relative to the area of the largest face. once flattened
#   move all the objects to be vertically aligned with the origin point.
#
#
require "sketchup.rb"  
module FlattenObject  
    def self.Execute
        model = Sketchup.active_model
        entities = model.entities

        # Loop through all entities and ensure they have a unique id otherwise transformations may affect multiple entities
        groups=[]
        entities.each do |entity|
            if entity.is_a? Sketchup::Group
                entity.make_unique;
                groups<<entity;
            end
        end

        groups.each do |group|
            # Define or reset area
            area=0
            name=group.name
            current_group=[]            

            # Separate each group into individual faces then loop through each face and determine which has the greatest surface area
            group_entities=[]
            group_entities=group.entities.to_a  
            group.explode
            group = Sketchup.active_model.entities.add_group(group_entities)
            group_entities.each do |entity|
               if entity.is_a? Sketchup::Face
                   if entity.area>area
                       area =entity.area;
                       current_group<<entity;
                   end
               end
            end
            # If the face is not horizontal then rotate to flat.
            if current_group.last.normal.cross([0,0,1]) != [0,0,0]   
                group.transform! Geom::Transformation.rotation(current_group.last.vertices[0],current_group.last.normal.cross([0,0,1]),current_group.last.normal.angle_between([0,0,1]))
            end

            # Finally move each object to be vertically aligned with the origin
            current_group=[]
            vector=[]           
            group.explode
            current_group = Sketchup.active_model.entities.add_group(group_entities)
            vector = Geom::Vector3d.new 0,0,-current_group.transformation.to_a[14]
            current_group.transform! Geom::Transformation.translation(vector)   
            current_group.name=name
        end
    end
end  
# Add a menu item to launch the plugin
unless file_loaded?( "flatten_object.rb" )  
    UI.menu("Tools").add_item("Flatten Model") {FlattenObject.Execute}
    file_loaded("flatten_object.rb")
end  

Once you execute the script (select Tools > Flatten Model) all the objects will be 'flattened' and centred on the point of origin. Prior to running it you should remove all non-CNC parts (such as the drivers or anything else not to be cut).

Flat Pack

It is then up to you to try to fit them sensibly on whatever size your material arrives in (2400mm x 1200mm is standard in Australia). I was fortunate enough to have help with the layout which meant I was able to fit one full speaker per sheet with very little wastage.

Cutting Sheet

This model can now be saved and used for cutting or CNC machining.

comments powered by Disqus