Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: ABC/HR for Java 0.5a released (Read 36115 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

ABC/HR for Java 0.5a released

I've just released a new version of ABC/HR for Java. You can get it here:

Binary
Sources

You'll need the JRE 1.5 to run this (download here).
To start the application just click the abchr.jar (on Windows) or run "java -jar abchr.jar" on a command line.

Improvements include better sound output routines, a new ABX component in ABC/HR tests and easier test setup (see next post for details).

ABC/HR for Java 0.5a released

Reply #1
Oh my. Some new development at last

Thank-you very much, Schnofler.

Any hope of adding a XML -> TXT batch result converter? Several people asked for that feature, for readability sake.

ABC/HR for Java 0.5a released

Reply #2
It has been a while since I released the last version of ABC/HR for Java. I've made small improvements now and then, but until lately never really found the time to polish it up and make it release-worthy. These are the most notable changes:
  • Use of low-level sound output. ABC/HR for Java can make use of the native sound playback which was introduced in JRE 1.5. This solves a lot of the problems in previous versions which resulted from the poor performance of Java's software mixer. In particular, latency is reduced, so there are no delays between pressing the play button and actual start of playback, and fast switching will be smoother. Also, the annoying forced volume reduction of Javas software mixer is not present when using hardware mixers.
    The playback device can be set in the Settings dialog.
  • Training/Testing mode in ABX. The ABX component in ABC/HR tests is now split into a training and a testing mode, as proposed by ff123 (see this thread). In testing mode the results are hidden from the user until (s)he presses the "Finish" button, whereafter no more trials can be added. If the pval after finishing the test is below a certain threshold (which is set in the test config), the respective sample is revealed in ABC/HR mode.
  • Integrated CLI encoding. This is what I've just implemented recently. Basically, what I'm aiming at in the long run is to make the whole test setup less of a hassle, so that there's really no good excuse not to make a quick blind test when you want to know which codec is better. Integrated CLI processing makes it possible to give something like
    Code: [Select]
    SomeSong.ape | sox %i %o trim 0 30>wav | lame -V 4 %i %o>mp3
    as a sample in ABX or ABC/HR tests, meaning "decode SomeSong.ape, pass it through to that sox command line (trimming the sample, keeping only the first 30 seconds), then encode with lame -V 4" (the ">wav" and ">mp3" are the extensions to use on the output file of the respective command line). [Of course, sox, lame, and mac must be in your path or the abchr directory for this to work].
  • Various stuff. For example, the more detailed ABX logging (including the playback range in the log) that was already present in the special editions used in Roberto's last listening tests. Also, the GUI was redesigned a bit (putting the ABX functionality more to the front, because it's a pretty useful application in itself).
Please note, this has become a pretty complex app, so there are probably some bugs, I didn't catch. I'd be grateful for any feedback.

ABC/HR for Java 0.5a released

Reply #3
Quote
Any hope of adding a XML -> TXT batch result converter? Several people asked for that feature, for readability sake.

Tools->Process Result Files... 

edit: this probably won't work with older result files, though, because I changed the format a bit. I'll see if I can make it backward-compatible.

ABC/HR for Java 0.5a released

Reply #4
Quote
Tools->Process Result Files... 
[a href="index.php?act=findpost&pid=279739"][{POST_SNAPBACK}][/a]


Hrm... it won't work with my Multiformat test result files. Maybe it only works in encrypted results?

 

ABC/HR for Java 0.5a released

Reply #5
Quote
Please note, this has become a pretty complex app, so there are probably some bugs, I didn't catch. I'd be grateful for any feedback.
[a href="index.php?act=findpost&pid=279738"][{POST_SNAPBACK}][/a]


Hehe. Just out of being very mean, I tried to load a config file before running the decoding batch file (I.E, the wavs were not where they should be), and it hung ABC/HR java

ABC/HR for Java 0.5a released

Reply #6
Quote
Hrm... it won't work with my Multiformat test result files. Maybe it only works in encrypted results?

See my edit of the post above. However making it backwards-copmpatible was easier than I thought. I've uploaded a new version which works with the results from your listening tests (I've modified the download links in the first post).

ABC/HR for Java 0.5a released

Reply #7
Quote
See my edit of the post above. However making it backwards-copmpatible was easier than I thought. I've uploaded a new version which works with the results from your listening tests (I've modified the download links in the first post).
[a href="index.php?act=findpost&pid=279753"][{POST_SNAPBACK}][/a]


Excellent. Thanks

I also noticed decrypting key files created by ABC/HR 0.4x won't work. It complains about "I/O Error: Key File could not be opened". Do you plan to add backwards compatibility there, or would it be too much of a hassle?

ABC/HR for Java 0.5a released

Reply #8
Quote
Quote
Please note, this has become a pretty complex app, so there are probably some bugs, I didn't catch. I'd be grateful for any feedback.
[a href="index.php?act=findpost&pid=279738"][{POST_SNAPBACK}][/a]

Hehe. Just out of being very mean, I tried to load a config file before running the decoding batch file (I.E, the wavs were not where they should be), and it hung ABC/HR java[a href="index.php?act=findpost&pid=279745"][{POST_SNAPBACK}][/a]

Yes, I suppose it won't be too difficult to find more of these bugs. I didn't spend much time making the program behave well to "hostile" users ('cos it's.. you know... so damn boring ).

ABC/HR for Java 0.5a released

Reply #9
Quote
I also noticed decrypting key files created by ABC/HR 0.4x won't work. It complains about "I/O Error: Key File could not be opened". Do you plan to add backwards compatibility there, or would it be too much of a hassle?

If you used result files from your listening tests, this is somewhat intentional. The encryption in the special versions I made for your tests is different from that used in the regularly released versions (because the availability of source code would make it a lot easier to forge result files).

ABC/HR for Java 0.5a released

Reply #10
Quote
If you used result files from your listening tests, this is somewhat intentional. The encryption in the special versions I made for your tests is different from that used in the regularly released versions (because the availability of source code would make it a lot easier to forge result files).
[a href="index.php?act=findpost&pid=279767"][{POST_SNAPBACK}][/a]


Ah, makes sense. Thanks for clarifying.

I'll wait until it stabilize more, and then I'll add this new version to RareWares, and announce it

ABC/HR for Java 0.5a released

Reply #11
Quote
I'll wait until it stabilize more, and then I'll add this new version to RareWares, and announce it
[a href="index.php?act=findpost&pid=279768"][{POST_SNAPBACK}][/a]

Great, thanks.

ABC/HR for Java 0.5a released

Reply #12
Very nice.  I rarely hear more than a small click and no dropouts between changes, and the switches happen with very small latency; in short, it is now even better than the native Windows version in this regard -- a remarkable achievement!  Who'd've thunk it possible with Java, eh?

The standalone ABX module doesn't allow one the option of "training" or "testing", which I think would be good.

A complete (but more complex) ABX module would also take into consideration type II error risks, but I think for codec testing, maybe that's an unneccessary complication.  See my 1.1 beta 2 version for what that would add to the ABX screen:

http://ff123.net/abchr/abchr.html

ff123

ABC/HR for Java 0.5a released

Reply #13
Quote
The standalone ABX module doesn't allow one the option of "training" or "testing", which I think would be good.

Yes, I'll probably put that in sometime.

Quote
A complete (but more complex) ABX module would also take into consideration type II error risks, but I think for codec testing, maybe that's an unneccessary complication. See my 1.1 beta 2 version for what that would add to the ABX screen:

Yes, I was aware of your implementation. After all, that's where I copied the idea from  . In the end, I decided against showing (and trying to control) type II error, because I think it can give false impressions. As far as I can see, contrary to type I error, the type II error can only sensibly be calculated, if the user participates. That is, he has to make a reasonable guess about the effect size, and then do his best to complete the ABX test successfully. If the test finishes with a very low type II error this can mean that the user really couldn't hear a difference. But it could also mean that the user just hit the buttons without listening to the samples. Calculation of type II error relies on the assumption that the user plays fair.

So, while an ABX test can effectively prove (with some amount of uncertainty) that the user did hear a difference, it cannot prove that he didn't, and I think displaying the type II error along with the type I error can give the false impression that an ABX test could establish the fact that there's no perceivable difference between two samples.

I don't mean to say that type II error is useless in codec testing, but I think it makes most sense in a situation where we can make a good estimation of effect size and can expect that the users really did serious testing. For example, after a group listening test, effect size can reasonably be taken to be the ratio of people who could hear a difference in a sample, and this can be used to calculate meaningful type II errors for some hypotheses on the data.

Or maybe I got that all wrong? (I don't actually know much about statistics)

ABC/HR for Java 0.5a released

Reply #14
I've noticed some bugs:

• when I restart a test, or start another one, the menu becomes a bit messy. See for example this screenshot: there's two "save test results" command. Currently, I must close and restart the app to avoid this.

• ABX module: when I choose a file for SAMPLE A, the selected file is systematically applied to SAMPLE B. For example, if I want to make SAMPLE A = Sample1, I obtain SAMPLE B = Sample1. I don't know if I'm clear, but I guess that's the easier way to understand is to try on your side

• Not a real bug: You can launch a test with Reference as only file. In other word, a test with nothing to test 

• irritating thing, but maybe intended (in ABX module): If I switch from TEST mode to TRAINING mode, then return back to TEST mode, all my previous trials are erased.



I've performed my recent tests with this alpha release of java ABC/HR, and I never heard any pop or click during the whole test (due to high encoding bitrate, I was very concentrated and therefore highly sensitive to any artifacts, click, noise...). That's a big improvement (previous version of java abc/he were unusable for this kind of tests on my old Duron 800). Thanks a lot for this useful testing software



EDIT: is it really necessary to have two distinct buttons, one for choosing audio files and another to add them in filelist?

ABC/HR for Java 0.5a released

Reply #15
Thank you very much for your extensive testing, guruboolez, it was very helpful.

Quote
when I restart a test, or start another one, the menu becomes a bit messy. See for example this screenshot: there's two "save test results" command. Currently, I must close and restart the app to avoid this.

Fixed.

Quote
ABX module: when I choose a file for SAMPLE A, the selected file is systematically applied to SAMPLE B. For example, if I want to make SAMPLE A = Sample1, I obtain SAMPLE B = Sample1. I don't know if I'm clear, but I guess that's the easier way to understand is to try on your side

Fixed. [Actually, this behaviour was intentional. The problem is, it should not be possible to first do an ABX test "reference vs. sample 1" and then another test "sample 1 vs. reference". So I took the easy way out, and just exchanged the samples in the combo boxes when they were in the wrong order (that is, if you select "Original" for B and then select "Sample 1" as A, it will put Original as A and Sample 1 as B, which is what you described). Now it just counts "sample 1 vs. reference" and "reference vs. sample 1" as the same ABX test.]

Quote
Not a real bug: You can launch a test with Reference as only file. In other word, a test with nothing to test

Fixed.

Quote
irritating thing, but maybe intended (in ABX module): If I switch from TEST mode to TRAINING mode, then return back to TEST mode, all my previous trials are erased.

This was intended, but I can't really figure out a reason anymore, why it shouldn't be allowed to interrupt the "real" ABX test with a training session. Changed.

Quote
is it really necessary to have two distinct buttons, one for choosing audio files and another to add them in filelist?

I admit, this is a bit unintuitive when you just add files as samples (actually, in the previous version there was only one button). However, since it's now possible to add CLI command chains to the filenames (e.g. putting something like "sample.wav | lame397a8 -V 3 %i %o>mp3" in the sample list), I didn't see any other way than to add an extra text field to the dialog.

I changed the links in the first post to point to the fixed version.

Thanks again for your tests, it's very good to know you got through your heavy duty testing without running into all-too serious problems.

ABC/HR for Java 0.5a released

Reply #16
I've also noticed something weird yesterday:
.MP3 files are not recognizsed, but .mp3 are OK.

ABC/HR for Java 0.5a released

Reply #17
Quote
I've also noticed something weird yesterday:
.MP3 files are not recognizsed, but .mp3 are OK.
[a href="index.php?act=findpost&pid=281784"][{POST_SNAPBACK}][/a]

Thats it! I spent a while yesterday trying to figure out why ABC/HR Java won't accept some of my MP3s. 

ABC/HR for Java 0.5a released

Reply #18
Quote
I've also noticed something weird yesterday:
.MP3 files are not recognizsed, but .mp3 are OK.
[a href="index.php?act=findpost&pid=281784"][{POST_SNAPBACK}][/a]

Thanks. Fixed.

ABC/HR for Java 0.5a released

Reply #19
I have a problem with mp3 files. It says the file cannot be decoded. Do I need to install something else?

ABC/HR for Java 0.5a released

Reply #20
Quote
I have a problem with mp3 files. It says the file cannot be decoded. Do I need to install something else?
[a href="index.php?act=findpost&pid=284696"][{POST_SNAPBACK}][/a]


I have the same problem when choosing mp3 files.

ABC/HR for Java 0.5a released

Reply #21
Quote
Quote
I have a problem with mp3 files. It says the file cannot be decoded. Do I need to install something else?
[{POST_SNAPBACK}][/a]


I have the same problem when choosing mp3 files.
[a href="index.php?act=findpost&pid=284729"][{POST_SNAPBACK}][/a]

You need to put the MADplay executable (download from [a href="http://rarewares.org/mp3.html]rarewares[/url]) in the abchr directory or somewhere in your path.

(Or, if you don't like MAD, you can use the settings dialog to configure abchr-java to use the decoder of your choice)

ABC/HR for Java 0.5a released

Reply #22
I put madplay.exe in the abchr directory, but I still get the same error. How do I find out what my path is?

ABC/HR for Java 0.5a released

Reply #23
Quote
I put madplay.exe in the abchr directory, but I still get the same error. How do I find out what my path is?
[a href="index.php?act=findpost&pid=284970"][{POST_SNAPBACK}][/a]

Type "set PATH" on a command prompt.

You could also try starting abchr-java from a command prompt (change to the abchr directory with 'cd "\program files\abchr-java"' [or whatever directory you unzipped it to], then type 'java -jar abchr.jar'). For some errors additional information is printed to the console. If you could post this here, it might help me figure out what's wrong.

ABC/HR for Java 0.5a released

Reply #24
Ok, this is strange. If I install abchr on my desktop (which is in greek if this makes any difference), I get the cannot decode file error upon pressing Start Test (ABX).

If I install it on "C:\", I don't get an error message, but when I try playing the samples I hear no sound.

This is the console output for abchr installed under "C:\"

Code: [Select]
C:\ABCHR\ABCHR>java -jar abchr.jar
Exception in thread "AWT-EventQueue-0"

java.lang.IllegalArgumentException: Line
unsupported: interface SourceDataLine supporting format PCM_SIGNED

44100.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian, and buffers of 88200 to 88200 bytes

       at com.sun.media.sound.PortMixer.getLine(Unknown Source)
       at abchr.audio.PlaybackThread.play(Unknown Source)
       at abchr.gui.ABXControlPanel.playA(Unknown Source)
       at abchr.gui.ABXControlPanel.access$000(Unknown Source)
       at abchr.gui.ABXControlPanel$1.actionPerformed(Unknown Source)
       at abchr.gui.SimpleAction.actionPerformed(Unknown Source)
       at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
       at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
       at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
       at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
       at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
       at java.awt.Component.processMouseEvent(Unknown Source)
       at javax.swing.JComponent.processMouseEvent(Unknown Source)
       at java.awt.Component.processEvent(Unknown Source)
       at java.awt.Container.processEvent(Unknown Source)
       at java.awt.Component.dispatchEventImpl(Unknown Source)
       at java.awt.Container.dispatchEventImpl(Unknown Source)
       at java.awt.Component.dispatchEvent(Unknown Source)
       at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
       at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
       at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
       at java.awt.Container.dispatchEventImpl(Unknown Source)
       at java.awt.Window.dispatchEventImpl(Unknown Source)
       at java.awt.Component.dispatchEvent(Unknown Source)
       at java.awt.EventQueue.dispatchEvent(Unknown Source)
       at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
       at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
       at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
       at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
       at java.awt.EventDispatchThread.run(Unknown Source)



And here's console output of abchr installed on my desktop:

Code: [Select]
C:\Documents and Settings\X\Επιφάνεια εργασίας\abchr\abchr>java -jar abchr.jar
abchr.audio.DecodeFailedException: File C:\Angelic.mp3 could not be decoded.
Call to madplay  failed.
       at abchr.audio.SampleFactory$Decoder.process(Unknown Source)
       at abchr.audio.SampleFactory.createSample(Unknown Source)
       at abchr.gui.ABXPanel$SampleLoader.run(Unknown Source)
       at abchr.gui.ABXPanel$4.construct(Unknown Source)
       at guiutils.SwingWorker$2.run(Unknown Source)
       at java.lang.Thread.run(Unknown Source)
javax.sound.sampled.UnsupportedAudioFileException: File C:\Angelic.mp3 could not be decoded.
Call to madplay  failed.
       at abchr.audio.SampleFactory.createSample(Unknown Source)
       at abchr.gui.ABXPanel$SampleLoader.run(Unknown Source)
       at abchr.gui.ABXPanel$4.construct(Unknown Source)
       at guiutils.SwingWorker$2.run(Unknown Source)
       at java.lang.Thread.run(Unknown Source)


madplay.exe is installed in the same directory as the file abchr.jar. I also put it inside C:\Windows\system32 which is in the PATH, but nothing changed.