5. From First Prototype to GUI Version 2
After the first working version, the next important feedback was about control and usability. My professor suggested that instead of playing sound files from REAPER tracks, it would be better to use plug-ins that generate the sound directly. This made sense for the project because the sound sources are sine tones. If the tones are generated inside the plug-in chain, the system becomes cleaner and more repeatable.
He also asked for more detailed and semi-controllable parameters in the GUI. This led to the second GUI version. I think this version is much stronger than the first one. It has room selection, source layouts, custom source count, editable source positions, presets, and listener movement. It feels more like a small research tool than only a technical test.
In the setup screen, the user can choose between different room scales and source layouts such as mono, stereo, quad and octagon. There is also a custom mode where the number of sources can be changed. This is important because the system should not only demonstrate one fixed setup. It should allow repeatable variations.
The GUI also includes a physical direct-sound mode. This is the mode used for the project results. It follows the free-field pressure relationship where each doubling of distance gives about minus 6.02 dB. Earlier versions had an exaggerated mode for demonstration, but after feedback it became clear that this should not be presented as scientifically valid. The scientific part of the project should remain with the physical direct-sound calculation.
This second interface version also made the system easier to explain. The user first configures the room and sources, then enters the listening mode. That structure matches the project logic: define the experiment, then listen by moving. It also makes the system more useful for future comparisons, because a setup can be repeated instead of improvised each time.
The GUI was a big part of the project for me personally. It was where the technical system became something visible and usable. It also gave me a reason to learn more Python and PyGame. I started with only basic Python knowledge, and the project pushed me to build something I would not have built otherwise.
At this stage, the project became much more coherent. It had a clear interface, a calculation model, a REAPER chain, and a future research direction.