Previously, I’ve picked up several transistors as candidates to be used for noise source for noise generator.
https://gaje.jp/2014/01/14/2915/
I’ve started testing these transistors.
Circuit
I’ve used noise generator circuit of Analog 2.0:
https://gaje.jp/analog20/resources/04_noise_mixer/noise_mixer_sch.svg
Methodology
Conducted blind listening tests. I’ve listened to blindly shuffled pairs of noises. Answered which one has better feeling.
Scripts used for the test are available at:
https://github.com/naokiiwakami/listening_test/tree/007597ac18b4953d1067109a19abb1df4317ad3c
(latest: https://github.com/naokiiwakami/listening_test)
Making test samples
For each candidate transistor,
- Replace the Q1 in the circuit above.
- Record the output with 44.1 kHz 16 bit PCM.
- Cut the sound with 4 second length.
- Adjust the level at -18 dB.
This makes one test sample.
Randomize the samples
Prepare for a list of file names of test samples. Make all pairs of these files in both order (A vs B, and B vs A, for files A and B). Shuffle the pairs randomly. Then test input is ready.
Execution
Wrote a Python script to play pairs of wav files and wait for the listener’s response through keyboard.
The program behaves as follows:
- Beep a 1kHz tone marker.
- Sleep 1 second.
- Play the first sample.
- Sleep 1 second.
- Play the second sample.
- Sleep 1 second.
- Beep two 1khz tone markers.
- Wait for the listener to respond by arrow key. The listener should press left when he/she feels the first is better. Otherwise press right.
- Append the response to the result file.
- Sleep 2 seconds.
- Proceed to next pair.
Results
Counted wins and loses for all comparison.
Here is the result of first round listening tests. I did 4 comparisons for each pair.
$ analysis.py total_result.txt data/1_2SC828.wav 2 {'win': 18, 'lose': 14} data/2_2N5210.wav -16 {'win': 0, 'lose': 32} data/3_BC547 F.wav 4 {'win': 20, 'lose': 12} data/4_BC547 ON.wav 4 {'win': 20, 'lose': 12} data/5_2SC3311.wav 0 {'win': 16, 'lose': 16} data/6_MPSA18.wav 4 {'win': 20, 'lose': 12} data/7_2N4401.wav -1 {'win': 15, 'lose': 17} data/8_2N5087.wav 0 {'win': 16, 'lose': 16} data/9_KSD5041.wav 3 {'win': 19, 'lose': 13}
Note that 2N5210 is the worst and it’s significant. Actually, this transistor did not make enough level of noise, so the output contained hum noise. Since this significance confuses the results, I’ve removed this transistor from the calculation as follows:
$ analysis.py total_result.txt data/2_2N5210.wav data/1_2SC828.wav 0 {'win': 14, 'lose': 14} data/3_BC547 F.wav 2 {'win': 16, 'lose': 12} data/4_BC547 ON.wav 2 {'win': 16, 'lose': 12} data/5_2SC3311.wav -2 {'win': 12, 'lose': 16} data/6_MPSA18.wav 2 {'win': 16, 'lose': 12} data/7_2N4401.wav -3 {'win': 11, 'lose': 17} data/8_2N5087.wav -2 {'win': 12, 'lose': 16} data/9_KSD5041.wav 1 {'win': 15, 'lose': 13}
I have not calculated how significantly different the results are. However, there is some interesting observation. Candidates for noise source were BC547, MPSA18, and KSD5041. They were all positive. I also put several non-candidate transistors for comparison. These were 2N4401, 2N5087 (PNP), and 2N5210. All of them had negative score. This supports my expectation that high Vebo transistors are good for noise source.