O problema é que, como alsactl não termina até você forçá-lo a terminá-lo, a saída armazenada em buffer não pode ser gravada no arquivo, porque isso é feito após o comando ter terminado sua execução.
Você pode forçar o stdout de alsactl a ser armazenado em buffer de linha e, portanto, ser redirecionado imediatamente após cada linha de saída usando stdbuf :
stdbuf -oL alsactl monitor > outputfile