deve ser possível, mas se você concordar com a quantidade produzida é outra história.
Primeiro de tudo, um wav é modulado por código de pulso (pcm), o alto-falante do PC é praticamente uma história on-or-off, então existem 2 opções ... analisar a freqüência que o wav deseja arquivar (vai ser difícil se houver múltiplos frequências ao mesmo tempo) faça o altifalante reproduzir essa frequência, ou viva com o facto de só poder estar ligado ou desligado e apenas ligá-lo ou desligá-lo se os dados no wav atingirem um determinado valor pré-definido. limite de volume / pcm.
também o wav teria um amostrador muito maior do que o hardware do alto-falante provavelmente pode suportar (não tenho certeza disso, mas não ser capaz de definir outras amplitudes além de "tanta tensão quanto a coisa pode suportar" ou "zero" sem nada entre é o maior problema aqui.
agora ... as coisas que você quer examinar no método 1 são ioctl (x, KIOCSOUND, 1193180 / desired-freq-in-hz); com 0 obviamente sendo desligado. KDMKTONE ioctl em um fd em / dev / console parece ter que produzir timbres especificados por um período especificado em jiffies.
mas se você quiser fazer isso corretamente eu peguei a folha de dados do chip que o alto-falante está conectado e resolva o problema diretamente, sem nem me incomodar com / dev / console ou qualquer coisa do linux ... então você pode de fato , basta ligar a tensão ou desligá-la. o que daria um som modulado pcm ... apenas sem qualquer variação de amplitude entre 'alto' e 'nada'.
provavelmente todos os métodos soam como lixo de qualquer maneira ... mas analisando a freqüência primeiro e depois reproduzindo uma freqüência não irá funcionar para música que normalmente contém múltiplas freqüências ao mesmo tempo.
todo o ioctl KIOCSOUND / KDMKTONE parece depender das configurações clocktick no kernel, assim como o estar presente de um / dev / console e um descritor de arquivo para aquele que está sendo aberto também. eles não parecem "apenas endereçar o pino de i / o do chip ao qual o beeper do pc está conectado".
temporizador de interrupção programável (PIT) intel 8259
porta i / o $ 0042 r / w contador PIT 2, cassete & amp; alto-falante (XT, AT, PS / 2)
Basicamente, a abordagem usual seria programá-lo com uma frequência desejada e, em seguida, produziria bips, mas o que você quer é apenas 'on' ou 'off', então basicamente 0hz ou muito baixo hz, então reprogramar o PIT quando os dados de o wav vai de '1' a 0 para desligá-lo novamente ... e assim por diante. lidar com a taxa de amostragem do arquivo wav é de software como qualquer outra coisa. (pegue a média ou simplesmente pule as amostras se ela estiver muito alta - ela é analógica, e você só pode produzir saída digital;)