Если нужна линейность фейдинга, ставьте полевой транзистор последовательно динамику и, управляя напряжением на затворе (4-битный ковокс из 5 резисторов), меняйте сие балластное сопротивление на 16 градаций.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)