New open source loudspeaker design program project started

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
Hello everyone,

I just started doing a new loudspeaker design program that is licensed under GPL. The program is not at all useful yet, but if someone wants to contribute, feel free to join the development.
The development platform currently is Linux and there will be two GUI clients at first for it, another one is done with Qt (Qt-designer and C++) and the another on with GTK+ (Glade and C). Ports to
other operating systems are welcome as soon as the program
begins to contain something useful. Currently I however wish
to concentrate to the development under Linux. Qt-version will be easy to port to Mac OS X at least without buying the commercial license for Qt (it is currently being developed with Qt X11 Free and is therefore licensed under GPL). The Windows port can be based
on the GTK version at least.

I have created two related discussion forums:
http://www.iti.fi/forums/viewforum.php?f=6
http://www.karoliinasalminen.com/forums/viewforum.php?f=4

If someone wants to help me with my loudspeaker designer project, I would be delighted if someone would send me some equations I may be missing.

What I am missing is:
- Calculation of impedance curve
- Calculation of group delay
- Other related calculations
- Spherical horn calculation with and without front compression chamber.
- Hypercardioid midrange enclosure modelling.

I have a collection of AES papers at home but I haven't found
any useful further to the equations I am using now.

The current very early source can be downloaded from:
http://www.karoliinasalminen.com/programming.php3

The program contains nothing extremely useful yet, but
the idea is to do it a useful tool in the end that is different
from for example Linearteam's designers - I am particularly
interested in the horn design and other unconventional
approaches and the purpose of the program is not to become
yet another bass box calculator, but be a tool that helps
in the loudspeaker design process in the same way than
Calsod did in the past with the more conventional designs.

Currently the goal is to divide the calculation logic to a library
that can be used from both GTK and Qt clients.
Because the program is GPL, feel free to contribute as much
as you wish... There is lots of stuff missing, the project
have just been only started!

To contribute to something you wish end up to me, please upload to iti.fi server:

ftp ns.iti.fi
login: anonymous
password: your@email

You can use the incoming folder. You will not see its contents
but you are allowed to upload.

Please notify us on my gtk-qt list that there is new stuff on the ftp server so I can move it to folders that are visible to others.

Welcome to join the development if you have something to contribute. It doesn't need to be necessarily code, one thing I am currently missing is the collection of useful equations. If you know any, feel free to announce them on my forums.

If you have any questions, please join my forums and ask.
Or alternatively you can send me private e-mail:
karoliina_salminen@hotmail.com or you can use the address
mentioned on my home page http://www.karoliinasalminen.com .

Best Wishes,
Karoliina Salminen

An externally hosted image should be here but it was not working when we last tested it.
 
Karoliina said:
Hello everyone,

I just started doing a new loudspeaker design program that is licensed under GPL. Currently I however wish
to concentrate to the development under Linux.


So is this a Linux program? Cause the picture looks pretty XP to me. Sure hope so, it would give me a reason to go up and use the Linux box for something other than learning network.

BTW is this like WinISD type thing. Not that thats a bad thing, cause that program is very useful.

:up: to you
 
Yes, it is basically Winisd-like thing, but doesn't end up there.
The intention is to go further than that and especially towards horn
calculation. I am interested also in hypercardioid midrange
enclosures like the ones used in Finnish Amphion (http://www.amphion.fi) and Gradient (http://www.gradient.fi) loudspeakers. I don't know if there is any theory about them out there or if those have been designed just with trial and error method.
 
There is a lot to say about this, and I cannot possibly say it all here. I have done my share of simulation programs. My main tip for you would be to read up on electrical-mechanical-acoustical analogies and simulate the hole system as an electric circuit. If you can build a generic simulator for electric circuits you can then simulate almost any box configuration by just entering the right components and values. Such a network can give you impedances, SPL, box pressure, you name it. Once the generic circuit simulator is build it is also easy to include crossover design etc.
If you start deriving specialised functions for each box type, the system will be far less flexible, and adding features will become more and more complicated. Also, the functions describing eg a bass-reflex box are horrible.

That would be my little tip :)
 
Hi Marvin,

Okay, thanks, I would appreciate the help. The current version
is so early that it doesn't worth having a Windows version
of it yet, but later it would be good if you could offer the help.
Please contact me using private-email or join to my discussion forums.

If you would be willing to help in some other way, please join
the ITI GTK-Qt discussion forum and tell what you are going to do.
Then I can avoid reinventing the wheel. To upload files, you can
use the ftp server, ftp://ns.iti.fi

Best Wishes,
Karoliina
E-mail:
An externally hosted image should be here but it was not working when we last tested it.
 
If I were to undertake such a project, I would definitely write it in Python/wxPython, with C++ extensions only if absolutely necessary for speed. That's a far better solution than starting with one "platform" -- Linux or whatever. When you write something using software that only runs on one platform, you unnecessarily limit the usefulness of the program for many people. (If it's not MS-Windows, replace "many" with "most".) Python runs on quite a few platforms, and you can expect more and more in the future. The "cross-platform" problem is a general one. It is counter-productive to attempt to solve the problem every time you develop an application program. Developing a "Windows version" is a huge waste of time. The Python folks have already done that for you... and it's free.
 
One more thing: A project such as you are contemplating is never finished. It is difficult and time-consuming to maintain versions for various platforms. The versions for some platforms will always be "down-rev," because no one has yet incorporated the latest changes into them. Different versions will have different bugs. If you use wxPython, you'll have only one version to maintain.
 
Hi,

Dave Jones said:
If I were to undertake such a project, I would definitely write it in Python/wxPython, with C++ extensions only if absolutely necessary for speed. That's a far better solution than starting with one "platform" -- Linux or whatever.

According to my understanding Karoliina's main job is software development. So I'd leave this platform selection up to her. Of cource there are other options - Java, Python, C#/Mono etc but C++ and some cross-platform development toolkit (like Qt) is OK as well. Two supported op. systems is enough and if Mac people feel themselves uncomfortably it is possible to create Mac OS X binaries also - by someone who has appropriate Qt license. Qt license allows royalty-free distribution of binaries so there should be no legal problems.

In my professional life we here are developing POS software using Qt and PostgreSQL. Well-written code compiles without any changes on both platforms. So from my point of view there is nothing wrong with platform selection. Python would be also be ok but if Karoliina feels herself more conviniently in C++ - let's go!

- M -
 
Marvin said:
Hi,



According to my understanding Karoliina's main job is software development. So I'd leave this platform selection up to her.


No one likes the self-appointed. But dang it, I'm just trying to help.

Software has been my main job too, since 1971. Of course back then we programmed the paper tape with our belt buckles - and we liked it! These days I have other responsibilities, but I still manage a small group of programmers. And of course, I am leaving it up to her -- (not that I have any choice! :)) I don't have anything against C++, either. I was one of the 80 or so people at the first C++ conference in 1986, (I think it was), and I frequently talked with the C++ onlie begetter, via email and telephone, about the definition of the new language. I still use C++ exclusively for the realtime layer of the robotics software I'm responsible for today. But I do think anyone who is looking into a project such as the one under discussion would do well to consider wxPython.
 
Marvin said:
Hi,
According to my understanding Karoliina's main job is software development. So I'd leave this platform selection up to her. Of cource there are other options - Java, Python, C#/Mono etc but C++ and some cross-platform development toolkit (like Qt) is OK as well.

...

nothing wrong with platform selection. Python would be also be ok but if Karoliina feels herself more conviniently in C++ - let's go!

- M -

Hi,

I am not a big fan of any interpreted languages (Python, Java, ...),
I prefer do tasks at a bit lower level.
I master already C and C++ very
well and I see no reason to learn Python just for this project.
If there would be urgent need to learn Python because of
some work project, perhaps I would then give it some priority
but otherwise, no.

Qt + C++ is so simple and easy combination that I just have
to wonder why I would need to mess up with Python when
it can be done more efficiently with C++ anyway. And Qt is
a cross-platform toolkit anyway, so it shouldn't be a major
problem to do Windows version as well. And in fact, to
be honest, there are only three operating systems out there
that I feel that would be necessary to be supported:

[1] Linux (which runs in both computers, PDAs and mobile terminals in addition to numerous other embedded devices)
[2] Windows (uncle Bill is still rather popular, after all)
[3] Mac OSX (music makers usually prefer Macs)

I see no reason to support dead or dying operating systems or
operating systems that are not intended for desktop use.
Someone could mention that AmigaOS or MorphOS on
Pegasos would worth
having support, but I feel that Linux is better choice for
Pegasos than MorphOS. We are using actually Linux on
G3 and G4 Pegasos computers. We are using also
Linux on Compaq iPaq PDA (we did remove the uncle Bills
limiting WinCE product from it). In fact, we have Linux running in
majority of our computers.

There is one additional operating system that has some
great popularity, Symbian, but I don't see it necessary that
it would be a must that my loudspeaker program would run
on Symbian OS mobile phones which usually feature smaller
spec screens etc. than their more PDA-like counterparts.

And there is more: I rather prefer
to not support soon-to-be-dead
Unix System V derivatives
than to support them,
partially because of they are old-faschioned and partially because
of SCO's ridiculous lawsuit-show that have given me
rather bitter taste of about everything that is derived from
Unix System V.

Of course there are more operating systems out there.
For example in network elements, some dedicated operating
systems are being used (both proprietary and open source),
but a scientific hard fact is that
noone will design loudspeakers with them for sure.

Best Wishes,
Karoliina
-- a happy Linux user :)
 
Horn Design

Karoliina,

I applaud your efforts on the design program. Massive undertaking.

I also enjoyed the waveguides you added to the Seas. Very nice.

I include this link for David McBean's Horn Response. Perhaps you have seen it. http://www.users.bigpond.com/dmcbean/

Many horn diy er's find this and, if able, the math of W. Marshall Leach to be useful.

http://users.ece.gatech.edu/~mleach/

Scroll down to publications. These are now available in pdf, where formerly(a few months ago you had to purchase them from AES. The material is quite dense, EE level, but the math models work.

Hope this helps.

Tim Moorman
 
Hi Karoliina,

Regarding your interest in cardioids, here are some useful reading:

Harry Olson, Gradient Loudspeakers, March 1973

Thomas J. Holmes, The "Acoustic resistance Box" -A fresh look at an old principle, JAES December 1986

Juha Backman, Theory of Acoustical Resistance Enclosures, AES preprint, May 1999

I have a spreadsheet based on the Holmes paper, quite preliminary but usable. Just tell me if you are interested.

Regards,

Roberto
 
Hi,

I am not a big fan of any interpreted languages (Python, Java, ...),

I don't care for Java either. Nor Perl, TCL, LISP, whatever. Python is unique.

I prefer do tasks at a bit lower level.
I master already C and C++ very
well in

Me too. I even helped in a small way to define the C++ language. I've used C since 1984, and C++ almost daily since 1987 or so.

... and I see no reason to learn Python just for this project.

Python is something you would use every day, once you learned it. It is a great calculator program, for example. But even for one large project, it's worth the effort, particularly an open source project. It's also very easy to learn. Check it out:

www.python.org
 
Okay, I tried Python. I agree, it is great calculator
tool and a tool for trying different things.
In that context, Python appears to be excellent,
I will no longer use the KDE calculator now...

However, I still don't think that a such platform is
a good base for a huge program (currently not huge,
later will be) that is supposed
to do complex numerical analysis to calculate some response
curves. Yet alone using C++, the program is currently
not without some waiting times (allthough the calculation
routines currently used are not final, not even nearly).

Let me clarify, the program is aimed to be a
calculation program. Not a script or sheet for some platform
such as MS Excel, Gnumeric, Mathlab etc.
I am also going to add audio support (ALSA) later;
I am planning to implement MLS based measurement
system into it. Btw, anyone with experience with MLS
time windowing, ALSA or Jack is
warmly welcome to take part in the project.
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.