SpeakerSim speaker simulation software

SpeakerSim - speaker simulation software

Hi.

I have made this speaker simulation software.
It works on Windows, Linux, and Mac OS X (requires Java 8 or newer).
Goal was/is to make simple all in one speaker simulator.

It currently has Bass Reflex, Closed box, Aperiodic, and Open Baffle simulator, baffle diffraction, passive filters, active filters, room simulation, power response, listening window response ...

I hope it is useful. Any suggestions, wishes, or ideas are welcome.

Download

 

Attachments

  • SpeakerSim.png
    SpeakerSim.png
    61.4 KB · Views: 4,969
Last edited:
  • Thank You
Reactions: 1 user
Unfortunately, I don't have any website or manual. There is no installation, you just run it and window like on screenshot will open.
I plan to open source it (so it will be on GitHub), but I would like to improve code quality first.
I would like to make it so easy to use, manual wont be necessary.

I mentioned main features in first post.

  • Graphs show frequency response, phase, maximal frequency response, maximal power handling, impedance, group delay, cone excursion, baffle diffraction effects, room effects.
  • You can export FRD and ZMA.
  • Passive low/high pass filters (up to 4th order), parallel/serial notch filters, L pad, and you can construct your own (in a tree structure) with inductors, capacitors, and resistors.
  • Baffle and room dimensions are limited to rectangular shapes.
  • Every speaker has it's own position in room and baffle.
  • It is focused on in room performance, but that can also be disabled.

If you have any specific question, just ask.
 
I wrote it in Java, because it is practically the only language where you can write program with GUI anywhere and run it anywhere.
I'm Linux user and making it just for Linux would make no sense. JRE is kinda big, if you only need it for one program, but yet smaller then Microsoft Office or .NET.

Many programs these days are written in C# (also VituixCAD) which is not native (performance is very similar to Java). Java's slowness is mostly historical (computers and JRE improved). Because C# is newer than Java it has better reputation.
SpeakerSim works fast on my machine, yet there are many areas where it could be optimized (huge FRD/ZMA can make it slow, but I will fix that).
Windows users would probably prefer .NET, because it comes pre-installed with Windows (multiple versions actually, because in contrast with JRE it isn't fully backwards compatible).

If I would write it some native language (C/C++), it would be probably as big as JRE, as I would have to add portability libraries (like QT or GTK+) or write it for each platform separately (I rather die).
BTW native C++ on Windows is pure hell.

I'm not sure why are you concerned about backdoors in JRE, since JRE is 99% open source (I'm using OpenJDK so it is 100% open source).
There where/are many security issues with Java web browser plugin, which is something completely different (not JRE).

Can you program it in other programming language than Java?
I can, but I won't. I already wrote it too much, even if more suitable language would exist.
 
  • Like
Reactions: 1 user
Thanks LightBit for your detailed reply!

I have to admit that it's long time ago I have studied Java and maybe I even recall some things incorrectly, also it has developed a lot since then, and also seeing you coming from a Linux world I can understand due to it's relatively smaller user base it's tempting to use a more "universal" programming language such as Java to reach the much larger Windows user base.

Great to hear you are going to use OpenJDK! Are you also going to use HotSpot JVM?
And will it be possible to run your program in an isolated/stand alone installation which doesn't require JVM installed on the machine (sort of "portable")?

Regards
 
I wrote it in Java, because it is practically the only language where you can write program with GUI anywhere and run it anywhere.
I think Java is a great choice. And I don't believe there is any security challenge for a standalone application written in any of the modern languages, since you're not opening network ports or communicating with data which you are downloading. What security holes then remain will be almost entirely language independent.

If I were in your place, I'd probably not even say which programming language it's written in. I'd just create a nice Windows installer which would download and install the JRE automatically if it was missing, before installing your JAR file. And it would create a desktop icon for launching. That way, many users wouldn't even ask what language you've written it in.

Will your application now have the distinction of being the first speaker design software written from Day 1 to be open source? Other than Charlie Laub's Active XO Designer, I guess. I know that Speaker Workshop later was released in open source but was not that way from its birth. Several years ago, a lady from one of the Scandinavian countries had put up a website talking about an open source speaker design application she was writing. I don't think it got completed. I can't find the web page now. UPDATE: I just discovered there is something called GSpeaker... though it's a dead project. Last news is from 2004?

I'm a Linux user. I've been trying to do speaker design without booting Windows for 12 years now, and of course, there's very little I can do in Linux. Some spreadsheets work in LibreOffice, that's about it. Even the old faithful Unibox, which claims it works in OpenOffice, actually doesn't work properly in LibreOffice today. I've recently switched from Eagle PCB design software (on Linux) to KiCAD and am still struggling to learn it. Your application will be a thrilling step forward for me. Thanks a ton.
 
Last edited:
@ LightBit

I was going to post similar to what Ultima Thule has about The other version of Java you could use. So good for him being one step ahead ;) This version is a LOT smaller install than the usual Java = :)

Room EQ Wizard uses it in the version i have. From REW's log.

HotSpot Client Compiler

REW uses classes from other jars in addition to its own RoomEQ_Wizard_obf.jar jar file.
These are: jh.jar, comm.jar, TableLayout.jar, vecmath.jar and parallelcolt-0.8.jar. For OS X REW also uses AppleJavaExtensions.jar, and for Windows registry.jar, jasiohost.dll, jasiohost64.dll and ICE_JNITRegistry.dll are used.

All must be in the same directory as the RoomEQ_Wizard_obf jar.

To run REW just double-click the RoomEQ_Wizard_obf.jar or use the command:

java -jar RoomEQ_Wizard_obf.jar

Under Linux REW uses the Metal look and feel.

So would be nice for Everyone :)
 
Great to hear you are going to use OpenJDK! Are you also going to use HotSpot JVM?
I already use OpenJDK. HotSpot JVM is just part of JRE so it won't work.
SpeakerSim should work with any Java 6 compatible runtime that has Swing support.


And will it be possible to run your program in an isolated/stand alone installation which doesn't require JVM installed on the machine (sort of "portable")?
I'd just create a nice Windows installer which would download and install the JRE automatically if it was missing, before installing your JAR file. And it would create a desktop icon for launching.
I will look in possibility of making installer for Windows that bundles minimal JRE. REW installation with JRE is 30MB so I should be able to do at least as small as REW.


Will your application now have the distinction of being the first speaker design software written from Day 1 to be open source?
Well, I didn't release the source code yet, but I think I will do so for V1 or before. Would like to polish the code first and I have to decide which license to use.


I haven’t tried any modelin yet, but the ap does launch and, as much as i poked around, runs fine under Mac OS X 10.12.6.
Nice to hear that, since I didn't test it on Mac.
 
Last edited:
The simulation window is always active...
you have to create a project, input all the data etc., and only then will it start automatically.
Probably with an error message first because you sure forgot something (I did :) ).

Takes a bit getting used to, but works. And you have to create a filter network first to get a display of a response.
A very simple will do, all values at zero. The program just needs something to start calculating=simulating.
 
Probably with an error message first because you sure forgot something (I did :) ).
Do you remember what you forgot, so I can prevent error message.

And you have to create a filter network first to get a display of a response.
A very simple will do, all values at zero.
Speaker directly under Amplifier should work fine. Can you describe how exactly you have added Speaker. It could be refreshing issue. I have just fixed some.

New version 2017-11-27:


  • Save changes dialog didn't show when moving items in tree (fixed)
  • Unnecessary double enclosure recalculation removed
  • Filters didn't refresh properly