The old one was able to find "MICROPHONE" as component type, the new one is not.
The short answer is that XP and earlier exposed audio devices in a totally different way to Vista and later. SoundGet pre-v1.1.10 reflected how the old system works, whereas SoundGet v1.1.10+ (when not in XP compatibility mode) reflects how the new system works.
In the old system, MICROPHONE probably means the microphone input component of your audio hardware.
In the new system, playback (e.g. Speakers) and recording (e.g. Microphone) are represented as two completely independent "devices". To control the recording volume, you adjust the MASTER volume of the recording device. MICROPHONE should mean a subunit whose source is the microphone, but if the device you've selected is a playback
device, it will probably adjust the volume of microphone feedback through the speakers.
In either system, I think it really depends on whoever designed your audio drivers.
When you use the old API on a new OS, one of two things happen:
- By default, the OS pretends to do what you ask but really only changes the settings of your own process. (Larry Osterman explains why.)
- If your process is running in XP compatibility mode, the OS tries to behave as if you were running XP. Exactly what the OS does is a mystery to me, but in my experience it is usually lacking some components/controls and heavily dependent on your audio drivers.
I'd have to assume you were either running in XP compatibility mode or running on XP or earlier, otherwise your script should not have worked.
You can't be running in XP compatibility mode anymore, because if you were, you would get the old behaviour (because AutoHotkey thinks you're running it on XP!). Unless you're actually on a different computer now, or have installed a different OS.
When I use the soundcard analysis script with AutoHotkey.exe set to run in XP-compatibility mode, I get this:
MASTER MUTE Off 1
LINE VOLUME 0.00 1
LINE MUTE Off 1
WOW. On my system, the old API does not even support retrieving the master volume
. (This is probably related to the fact that my hardware is very new.)
With the new API, there are 5 devices - actually corresponding to two outputs (analog and optical) and three inputs (front mic, rear mic and rear line in). The first device ("Speakers") has "Microphone" and "FrontMic" subunits which SoundGet represents as MICROPHONE and MICROPHONE:2.
However, these MICROPHONE components control the volume of sound feeding back through my speakers. They do not control the recording volume; for that, there is a totally separate "device".
Is the "device number" the number displayed in the "Mixer" column of the sound analyzing script?
SoundGet doesn't have a "Mixer" parameter; it has a "DeviceNumber" parameter. But yes, it's the same thing.
Looking at the image above, yes, it seems that the microphone is there as "N/A" and also as "MASTER", mixer number 9.
So does adjusting the MASTER component (or omitting the ComponentType parameter) have the desired effect?
I try to answer your questions as good as I can:
I only asked one question, and it was to help you
decide which part of my post was relevant to your situation.