Я взят TMediaPlayer.
Обернул его, сделал для Create параметром формат файла (например PCM-22кГц-8бит), создаю временный пустой файл в этом формате, беру его МедиаПлэйером, начинаю писать, в конце записи меняю имя файла на нужное, сохраняю... Все.
Предельно упрощенно.
Но раньше от меня требовалось быстренько дать только 4 функции (Record, Pause, Resume, Stop). Их вызывали снаружи внешней проограммой.
Теперь решили внедрить все в мой объект (как бы диктофон из него сделать).
Теперь мне нужно при Create, начинать слушать Line in карты и заканчивать при Free.
Я пробовал миксер. Не получилось.
Пробовал взять TMediaPlayer.deviceID и посмотреть на него, как в МСДН рекомендуют:
flags := (MCI_WAIT OR MCI_STATUS_ITEM);
mciStatus.dwCallback := 0;
mciStatus.dwTrack := 0;
mciStatus.dwItem := MCI_WAVE_STATUS_LEVEL;
mciResult := MciSendCommand(mpRecorder.deviceID, MCI_STATUS, flags, DWORD(@mciStatus));
ShowMessage(IntToStr(mciStatus.dwReturn));
Выдает постоянное неизменяющееся значение.
Видемо я где-то что-то явно не понимаю и не так делаю.
Блин.
А я пока не сдвинулся...

Мне тут уже и DirectX рекомендовали (DirectShow — IAMCrossBar)
С уважением и признательностью за ответы.
Allock