Versão 6.75.0

Data de lançamento: 2026-09-25

DpdoPlayer

Melhorias

  • O DSD multicanal pode ser distribuído canal a canal por vários dispositivos: um único fluxo DSD é dividido por canais — esquerdo e direito num dispositivo cada, ou seis canais em três, conforme o modo escolhido; o número de dispositivos segue o modo selecionado. O empacotamento DoP passa a existir numa única implementação, garantida por testes de contrato byte a byte.
  • As regras da saída DSD direta (native) ficam explícitas: o que o 1 bit consegue fazer — reordenar ou duplicar canais — continua a sair em direto; o que o 1 bit não consegue — somar, alterar o ganho, silenciar um canal inteiro — é recusado com o motivo indicado, em vez de degradar em silêncio; uma configuração que precise de soma passa automaticamente a decodificação PDM2PCM, e o log diz por quê.
  • Quando o dispositivo não aceita a taxa do portador DoP, o portador desce de escalão conforme a medição: o portador é baixado até ao escalão que o dispositivo aceita de facto, medido e não presumido (conversão de taxa DSD no motor).
  • O material multicanal dobrado em menos canais é normalizado de forma estática em toda a faixa: antes de reproduzir, o pico de todo o material é percorrido e uma única atenuação fixa é aplicada a toda a faixa (nem AGC nem limitador); depois de dobrado, já não corta.
  • Novo interruptor de linha de comando -rig-info: exporta o predefinido resolvido em JSON (o mesmo esquema que o -rig carrega); a interface usa-o para levar o predefinido ao editor.
  • Nova edição macOS: um backend de saída CoreAudio nativo — saída do portador DoP, modo exclusivo (hog) com verificação por releitura, e a capacidade de DSD nativo é medida no dispositivo em vez de fixada; o ponto de entrada do reprodutor de linha de comando e o script de empacotamento DMG vêm com ela.
  • Novo cliente iOS: o motor passa a correr dentro do processo da app (sem subprocesso) e a saída usa DoP por sessão de áudio; o desbloqueio de funcionalidades passa pela compra dentro da app na App Store (IAP); o manifesto de privacidade e as verificações do contrato de submissão vêm incluídos.

Correções

  • Não passava para a faixa seguinte ao terminar uma: ao trocar de faixa numa sessão ALSA os dados eram gravados no estado SETUP, pelo que nada seguia a faixa terminada.
  • O dispositivo ficava ocupado ao mudar de formato ou de taxa de amostragem: agora é libertado antes de reprogramar os parâmetros de hardware, e os formatos que aceitou ficam memorizados.
  • O material multicanal num dispositivo com menos canais interrompia após a dobragem: o formato dobrado era tomado por erro como «o formato mudou»; agora a reprodução continua no formato dobrado.
  • Leitura de capas completada: passam a ser lidos os blocos ID3 embutidos em contentores .wav e .aiff, as etiquetas ID3v2.3 e os tipos de capa escritos por outras ferramentas, bem como os ficheiros .wv / .ape que só levam ID3v2 e não APEv2.

Sem mudanças funcionais no motor nem no empacotador nesta versão.

Versão 6.74.23

Data de lançamento: 2026-09-24

DpdoPlayer

Melhorias

  • O painel de reprodução mostra a capa do álbum: a procura é feita primeiro embutida (SACD ISO /COVER.JPG; DSF/DFF ID3; FLAC bloco PICTURE) e depois como imagem na mesma pasta do áudio (cover.jpg, folder.jpg ou um arquivo com o mesmo nome); a dica indica de onde veio a imagem.
  • Novo campo «Dados de áudio» no painel: taxa de amostragem / profundidade de bits / canais / DSD / DST / duração da própria fonte, não do formato enviado ao dispositivo.
  • Duas barras de nível (esquerda/direita) no painel: mostram o pico do bloco que é realmente gravado no dispositivo; em 0 dBFS ficam vermelhas e permanecem marcadas por 1,5 s, então o clipping é visível de imediato (em pausa voltam ao mínimo).
  • Novos botões de faixa anterior / seguinte: durante a reprodução trocam dentro da mesma sessão (o dispositivo não é fechado nem reaberto); na primeira ou na última faixa ficam desativados e avisam; sem reprodução apenas movem a seleção.
  • Botões − / + ao lado do controle de volume (±5 por toque, repetindo se mantido), enviados pelo mesmo caminho do controle.

Correções

  • Ícones da interface unificados: pausa / anterior / seguinte agora usam a mesma família de símbolos de reproduzir e parar – os caracteres de controle de mídia anteriores eram desenhados pelo sistema como emoji colorido e em algumas fontes nem apareciam.

Versão 6.74.22

Data de lançamento: 2026-09-23

DpdoPlayer

Melhorias

  • A faixa em reprodução é acompanhada na lista: ao reproduzir uma imagem SACD ISO / CUE como uma única sessão contínua, o destaque e o negrito seguem a faixa atual (antes ficavam sempre na primeira linha).
  • «Verificar atualizações…» passou para junto da entrada de licença na barra de status: as três interfaces ficaram iguais e o antigo menu Ajuda foi removido (uma entrada escondida demais não existe).
  • A lista de dispositivos mostra todos os endpoints, inclusive desativados e desconectados: cada linha traz o formato real e a família de endpoints «HQ» é assinalada, facilitando escolher o que pode ser bit-perfect.
  • -start / -end agora são relativos à faixa quando se usa -track: -track 2 -start 0 -end 5 são os segundos 0–5 dessa faixa; fora do intervalo a reprodução é recusada em vez de devolver um trecho cortado.
  • Trocar de faixa na mesma sessão não fecha nem reabre mais o dispositivo de áudio (a troca de faixa dentro de um mesmo disco fica bem mais rápida e a saída DSD não é interrompida): se o formato de saída não muda, o dispositivo já aberto é reutilizado.
  • A pausa agora funciona de verdade na saída DSD (DoP): durante a pausa o player continua enviando silêncio com marcadores DoP, e a reprodução retoma na mesma posição — sem sair do domínio DSD e sem pular adiante.

Correções

  • Um chiado na primeira reprodução que some no segundo clique: o mecanismo começava antes de ter a configuração de saída final, então a primeira faixa usava o modo anterior; agora a configuração está sempre pronta antes da primeira reprodução.
  • Placas tipo kX: ASIO não detectado: esse driver trava na própria inicialização; a detecção agora roda em processo separado, limitada a 4 segundos — um travamento afeta só esse trecho e o log diz em que passo parou.
  • Não é possível abrir o dispositivo após trocar de faixa (0x800401f0): o COM agora é inicializado por thread, em todos os pontos de chamada.
  • «Dispositivo em uso» ocasional após trocar de dispositivo ou esquema: a espera pelo fim da sessão anterior passou de 3 para 10 segundos com limite, e o orçamento de novas tentativas em exclusivo para cerca de 12 segundos.
  • A redução de multicanal para estéreo é avisada com destaque na interface (com a regra de mixagem e o destino do LFE), em vez de ficar apenas no log.
  • Nomear um dispositivo de saída e ouvir em outro: com dispositivo explícito, o caminho ASIO não assume mais a saída e o log informa a saída real.
  • Não se força mais DoP em dispositivos sem caminho DSD (seria apenas ultrassom ou silêncio): passa a decodificar em PCM, com explicação.
  • Atualização falhada ou cancelada não reinicia mais o programa (antes ficava no ciclo «reiniciar → perguntar de novo → cancelar»).
  • Não aparece mais %s cru no aviso de atualização.
  • O aviso de reserva sobre o layout de setores do SACD ISO aparece uma única vez (antes, milhares de linhas, uma por setor).
  • Corrigidos os estalos durante a reprodução: ao indicar um dispositivo de saída, um equipamento capaz de DSD (DAC USB com DoP=yes) era rebaixado de ASIO nativo para DoP. Agora só se muda o caminho quando o próprio endpoint indicado não tem via DSD; o equipamento compatível mantém o caminho nativo.
  • O buffer exclusivo de DoP agora prefere valores grandes (a partir de 2 s, descendo; medido 80 ms -> 500 ms). Um buffer pequeno gera subalimentações periódicas, que é exatamente o que se ouve como estalos.
  • Nos DAC USB da classe ComTrue/Fosi, o auto passa a usar DoP por padrão: a saída nativa ASIO não produzia som nesses aparelhos (antes o caminho DoP exigia uma variável de ambiente, então o ajuste padrão ficava em silêncio).
  • Os dispositivos de áudio não são mais reenumerados nem sondados na inicialização e durante a reprodução (uma das causas do estalo na inicialização e do estalo ocasional durante a reprodução).
  • Antes de tocar no volume do dispositivo ou trocar de faixa, o buffer de saída é preenchido com silêncio com marcadores DoP: o instante em que o DAC sai do domínio DSD cai sobre silêncio, reduzindo os estalos (em alguns DACs ainda pode ser audível um estalo leve ao alterar o volume durante a reprodução).
  • A escolha explícita da saída native / ASIO não é mais revertida automaticamente para DoP: o caminho de saída escolhido é respeitado (no auto o player continua escolhendo o melhor caminho) e o log informa as consequências conhecidas desse caminho nesta máquina.
  • Corrigido um estalo leve a cada ~0,9 s ao reproduzir algumas imagens SACD ISO antigas de produção própria: nessas imagens alguns setores declaram um comprimento de pacote 3 bytes menor do que o áudio realmente contido (uma sobra no fim do setor); o leitor descartava o setor inteiro como não-áudio. Agora lê exatamente os bytes declarados, portanto não se perde música (as imagens SACD comerciais continuam a ser lidas como antes).
  • Corrigido: a reprodução parava após trocar de faixa em vez de avançar para a seguinte: ao trocar de faixa na mesma sessão, os restos da faixa anterior eram descartados mas o fluxo de saída era parado e nunca reiniciado; as escritas bloqueavam e a reprodução inteira era abortada (um aborto não é reportado como «terminado», por isso parecia que não avançava). Agora o fluxo é reiniciado logo após o descarte; a saída diferencial (vários dispositivos, fase normal/invertida) também foi corrigida (não encaminhava a «re-preparação» aos dispositivos secundários).

Versão 6.74.21

Data de lançamento: 2026-09-23

DpdoPlayer

Melhorias

  • Modelo de sessão exclusiva: a reprodução reserva o dispositivo em modo exclusivo desde o início; ao trocar de faixa o mesmo dispositivo é mantido (reconfiguração no local quando a taxa é a mesma; mudança de taxa e DSD↔PCM tratados conforme as restrições do driver). Só é reaberto ao escolher outro dispositivo ou alterar o perfil de canais, e fechar o programa sempre libera a exclusividade.
  • CUE / SACD ISO agora tocam numa única sessão: o disco inteiro abre o dispositivo uma vez e a troca de faixa não o reabre mais (antes cada faixa iniciava um novo processo e retomava o dispositivo em modo exclusivo).
  • Todas as configurações do painel são lembradas: modo, disposição de canais, perfil de canais, profundidade de bits, modo DoP, chave e ganho do PDM2PCM, crossover e volume são restaurados na próxima abertura.
  • As três interfaces agora verificam atualizações por conta própria: na inicialização é feita uma verificação silenciosa (só avisamos quando existe mesmo uma versão mais recente) e «Ajuda → Verificar atualizações…» faz isso a pedido; o download é verificado por SHA-256 e a atualização substitui os arquivos no local quando a pasta de instalação é gravável, recorrendo ao instalador apenas quando não é (instalação silenciosa no Windows, gestor de pacotes no Linux) e reinicia o programa automaticamente.
  • Problemas de licença agora são diagnosticáveis de imediato: quando a verificação falha, o log lista todos os fatores de hardware da máquina (valores com hash, sem números de série em bruto) e a chave de estado anti-retrocesso, e a linha de comandos ganhou -auth-diag; execute duas vezes e compare para ver qual fator muda.

Correções

  • Trocar de faixa não derruba mais a sessão exclusiva: antes cada troca parava a reprodução (liberando o dispositivo) e reiniciava, de modo que a sessão exclusiva nunca chegava a valer; agora a troca acontece dentro da sessão e o dispositivo não é mais aberto e fechado repetidamente.
  • Duplo clique troca de faixa, clique simples apenas seleciona: antes o duplo clique enviava dois comandos de reprodução.
  • A saída DSD direta não é mais interrompida se falhar ou se o dispositivo recusar essa profundidade de bits: o player passa a decodificação PDM2PCM no mesmo processo (caindo automaticamente para 16 bits quando o dispositivo recusa), sem perder a fila nem a sessão. A decisão de fallback DSD não passa mais para a faixa seguinte: quando o dispositivo não tem caminho DSD, o player muda para decodificação PDM2PCM no local; essa decisão permanecia durante toda a sessão, então ao trocar para uma faixa PCM (FLAC, por exemplo) ela era tratada como DSD e não tocava. Agora o modo de decodificação é redeterminado a cada faixa a partir das configurações da sessão.

  • Exibição de progresso e duração total corrigida: na última faixa ("reproduzir até o fim do arquivo") a duração vinha de um valor sentinela interno e mostrava 31 anos, com a barra saltando para 98%; agora tudo é calculado a partir do fim real do arquivo.

  • O PCM de 24 bits não falha mais em dispositivos que só aceitam S16_LE/S32_LE: se o dispositivo recusa o contêiner de 24 bits, a reprodução reabre com um contêiner de 32 bits - as mesmas amostras deslocadas 8 bits e alinhadas em escala plena, ou seja, totalmente sem perdas (não é redução da profundidade de bits).
  • Start continua a partir da última faixa reproduzida: antes sempre começava pela primeira; só volta à primeira quando esse registro não está mais na lista (lista substituída ou faixa removida).
  • Corrigido «o certificado é válido mas a reprodução é recusada»: a chave do arquivo de estado anti-retrocesso era calculada a partir do conjunto de fatores de hardware disponíveis naquele momento; após uma atualização de firmware ou do sistema que alterasse esse conjunto, um arquivo de estado antigo era considerado «modificado» e a licença era recusada com No valid '.DpdoPlayer.crt' found (o certificado estava perfeitamente válido). A chave já não depende desse conjunto variável, e um arquivo de estado só é tratado como adulterado quando todas as cópias falham na verificação.

Versão 6.74.20

Data de lançamento: 2026-09-21

DpdoPlayer

Melhorias

  • Configurações de canais unificadas (mapeamento dispositivo↔canal + matriz de mixagem + ganho de mixagem): a interface permite escolher um predefinido, editar a matriz 8×8 e carregar/salvar um *.json; a linha de comando -rig aceita um nome de predefinido ou esse mesmo arquivo — uma única configuração controla os dois. Uma configuração inválida (nome de canal desconhecido, ganho fora da faixa, comprimento que não corresponde ao dispositivo) recusa a reprodução, em vez de usar silenciosamente uma matriz errada.
  • Nova varredura medida (-scan): passa todo o material pela configuração atual e informa o pico medido por canal, se há clipping e o ganho de mixagem que deixa exatamente em 0 dBFS. Os picos são apenas lidos — o áudio não é alterado.
  • A saída DSD direta agora suporta reordenação de canais: «qual DAC recebe qual canal» também funciona em native/DoP; uma configuração que precise de mixagem ou mudança de nível passa automaticamente para decodificação PDM2PCM, e tanto o log quanto a ajuda de reprodução explicam o motivo (reproduzir tem prioridade).
  • Mais canais no dispositivo do que na fonte são preenchidos de forma simétrica: estéreo → 4 canais = L,R,L,R; → 5.1 deixa o central e o LFE em silêncio (central fantasma) em vez de copiar a última faixa.
  • O ganho de saída PDM2PCM agora é +6 dB por padrão (mesma sonoridade do PCM); -pdm2pcm-gain 0 desativa.

  • Buffer de reprodução 200 ms → 2000 ms (igual no Windows exclusivo e no Linux): um buffer maior absorve as dezenas de milissegundos em que a thread de alimentação é preemptada; o valor realmente concedido aparece no log ao abrir o fluxo.

  • Lembra a última faixa reproduzida: ao abrir a lista, essa faixa é selecionada e trazida à vista (se foi apagada, o programa informa em vez de saltar para outra).
  • A varredura antes da reprodução agora mostra progresso: fontes DSD/multicanal são varridas antes de tocar; agora informa a cada segundo a porcentagem e os segundos decorridos, com barra de progresso na interface -- acabou a impressão de «parece travado».
  • O mesmo arquivo não é mais varrido de novo: o resultado fica em cache por arquivo (chave: caminho, tamanho, data de modificação e configuração de canais atual), então a segunda reprodução começa quase imediatamente. O cache não altera a saída.
  • modo pairs multi-dispositivo: cada dispositivo recebe um par de canais da fonte, sem alteração (sem inversão) -- uma fonte de 4 canais para 2 DACs, 8 canais para 4, sem dividir em vários comandos.
  • passthrough IEC 61937 (-passthrough): o fluxo DTS é entregue ao receptor/decodificador como quadros IEC 61937 em vez de ser decodificado. Volume, matriz e normalização não participam desta via (alterar um único bit corrompe o fluxo), e o registo de reprodução diz isso. Requer um recetor compatível.
  • Nomes de modos multi-dispositivo unificados: diferencial / BTL / crossover / pairs são todos escolhidos com -mode, e o registo mostra quais canais da fonte cada dispositivo recebe realmente.
  • Formatos sem perdas (APE / WavPack / TTA / ALAC) agora em fluxo, quadro a quadro: álbuns longos deixam de ser decodificados inteiros na memória (medido: um arquivo de 300 segundos cai de cerca de 220–320 MB para cerca de 15 MB) e a reprodução não espera mais o pré-carregamento.
  • A decodificação PDM2PCM (DSD -> PCM) agora é multi-núcleo: material multicanal fica cerca de duas vezes mais rápido, com saída idêntica byte a byte (série e paralelo dão o mesmo resultado).
  • Nova opção «restaurar o volume do dispositivo após a reprodução» (-restore-vol, ou restore_vol=1 no player.conf): se o volume do dispositivo foi alterado, ele volta ao valor anterior quando a reprodução termina. Desativada por padrão.

    Correções

  • O downmix multicanal não descarta mais o central/surround em silêncio: se o dispositivo não aceita todos os canais, eles são dobrados por função conforme BS.775 (LFE excluído) e o clipping é contado e informado no log.
  • Fones Bluetooth e outras saídas do mixer do sistema agora reproduzem no Linux: o áudio Bluetooth fica atrás do mixer do sistema e o player só listava placas de som -- o fone não aparecia, logo não podia ser escolhido (nem tocado). Agora a lista inclui a saída do sistema e cada ponto de saída. Uma saída suspensa é reativada antes da reprodução (a taxa era de cerca de 1/13 do tempo real, o que parecia travamento); o -vol agora define o volume dessa saída e não mexe em outra placa.
  • Os presets de masterização passam a acompanhar os instaladores: o instalador do Windows, o deb/tgz do Linux e a pasta portátil trazem os 6 presets (antes faltavam nos pacotes).
  • DSD com vários dispositivos (diferencial/BTL) não trava mais no meio da reprodução: a capacidade DSD de cada DAC é verificada antes de tocar; se algum não puder, todo o conjunto passa a decodificação PDM2PCM e o registro indica qual (antes abria em DSD e era abortado após um tempo limite de escrita).
  • Quando o dispositivo expõe vários controles de volume de reprodução, agora todos são ajustados ao valor alvo: antes apenas um era ajustado e outro ficava no valor baixo próprio do dispositivo (medido: o segundo controle de um Fosi DS1 ficava 20 dB abaixo) ⇒ o Linux soava bem mais baixo que o Windows. Com a opção de restauração, cada controle volta exatamente ao valor anterior.
  • Duas correções de exatidão byte a byte: a saída multicanal (>2 canais) não traz mais erro de escala de ±1 LSB (agora idêntica byte a byte à fonte); uma faixa curta com limite de tempo não reporta mais falha falsa — o código de saída reflete o resultado real.

Esta versão inclui melhorias de desempenho no motor (reprodução em fluxo de formatos sem perdas, decodificação PDM2PCM multi-núcleo); o empacotador (DpdoPackSACD) não tem mudanças funcionais.

Versão 6.74.19

Data de lançamento: 2026-09-21

DpdoPlayer

Novos recursos

  • Reprodução DTS / DTS-WAV: o reprodutor agora abre diretamente arquivos .dts e contêineres DTS-in-WAV (núcleo DTS 2.0–5.1, 44,1 / 48 kHz). Em uma saída estéreo a fonte é reduzida por função de canal (central e surround dobrados a −3 dB, LFE excluído); em saída multicanal cada canal vai para o seu dispositivo. Progresso, troca de faixa sem intervalos e modo diferencial multi-dispositivo reutilizam o mesmo caminho de DSD / PCM.

  • A linha de «formatos suportados» da ajuda e do seletor de arquivos agora corresponde ao que o reprodutor abre de fato: SACD ISO, CUE e AIFF incluídos, MP3 / AAC / OGG removidos (nunca suportados). Ao arrastar uma pasta, agora é informado quantos arquivos de áudio não têm decodificador, em vez de ignorá-los em silêncio.

Sem mudanças funcionais no motor nem no empacotador nesta versão.

Versão 6.74.18

Data de lançamento: 2026-09-20

DpdoEngine / DpdoPackSACD / DpdoPlayer

Melhorias

  • A saída de linha de comando e os registos do motor estão agora integralmente em inglês (ajuda, erros e relatórios com o mesmo critério); a saída em chinês no Windows já não sai corrompida; as quatro interfaces gráficas (leitor / empacotador / ferramentas de áudio / registo de licença) são bilingues e seguem o idioma da interface, ou DPDO_LANG=zh|en.
  • Unificação de nomes: o que antes se chamava DSD->PCM passa a chamar-se PDM2PCM (coerente com o nome do projeto PCM2PDM); a opção é -pdm2pcm-gain e a variável de ambiente DPDO_PDM2PCM_GAIN (os nomes antigos já não são aceites).
  • Leitura de imagens SACD ISO: quando o disco realmente não tem títulos por faixa, os nomes são preenchidos como «álbum - artista - número da faixa» em vez do nome do ficheiro.

Corrigido

  • DpdoEngine --log (fir / ns / freq / all) bloqueava ou falhava e produzia um ficheiro vazio - corrigido.
  • O instalador do Windows passou a permitir escolher componentes (leitor / empacotador / ferramentas de linha de comando, todos marcados por omissão).

Licenciamento

Melhorias

  • Reforço do sistema de licenças.

Registro de alterações

Versão 6.74.16

Data de lançamento: 2026-09-15

DpdoPlayer

Corrigido

  • alimentar um endpoint onboard com DoP só produzia chiado — a capacidade de DoP agora é decidida por evidência do próprio dispositivo: conseguir abrir 176400 não significa conseguir decodificar DoP (codecs onboard não têm caminho DSD no hardware). Em endpoints considerados incapazes, -dop force é recusado e a reprodução passa automaticamente para DSD→PCM; uma chave de depuração permite forçar de verdade
  • o chiado/estalo ao encerrar: o drain do WASAPI agora espera uma condição limitada e interrompível em vez de girar ou estimar um atraso (antes os dados em buffer eram descartados, o que causava o estalo); o drain do ASIO e o anel de escrita também não giram mais
  • «abre mas não aceita dados»: o PCM exclusivo não espera mais por evento do dispositivo; se o primeiro fluxo exclusivo após um período ocioso for aceito mas nunca consumir nada, o player descarta, abre outro e continua a reprodução (o critério é a ocupação do buffer, não o relógio de áudio)
  • parar não fazia nada até fechar a GUI: o recuo automático reinicia a reprodução num processo filho, enquanto o comando de parar vai ao stdin do pai e era engolido por ele — agora o filho tem o seu próprio pipe de comandos e o pai apenas encaminha; se parar já foi pressionado, não reinicia. Medido com o mesmo material: encerramento 82 s → 0,15 s

Melhorias

  • GUI: a lista de dispositivos mostra sufixos de capacidade (⟨DoP 2x⟩/⟨DoP 1x⟩/⟨DoP não confirmado⟩/⟨só PCM⟩) e uma linha de «o que vai acontecer de fato»; uma entrada «marcar como decodificador DSD» permite marcar um dispositivo não confirmado. O Linux agora usa a mesma avaliação e a mesma lista -dsd-caps do Windows

Versão 6.74.15

Data de lançamento: 2026-09-14

DpdoPlayer

Corrigido

  • fim do giro infinito no drain do ALSA após a reprodução (o processo nunca terminava); ao não conseguir escrever, sem repetições silenciosas infinitas (essa reprodução é encerrada e reportada); a ordem de bits DSD é decidida pelo conteúdo, não pela extensão .iso

DpdoEngine

Corrigido

  • os títulos de faixa/disco dos ISO SACD não ficam mais vazios; problemas de quadros DST são relatados uma vez com resumo final (sem descartes silenciosos nem spam por quadro); arquivos grandes usam offsets de 64 bits (não abandona o seek após 2 GB); uma verificação de memória física livre antes de alocar buffers; a GUI do motor mostra a causa das falhas e sonda a página Sobre de forma assíncrona

Versão 6.74.14

Data de lançamento: 2026-09-14

DpdoEngine

Corrigido

  • três correções do leitor (leitura fora dos limites em WSD / base de 48 kHz e multicanal em SACD / comprimento de dados DSF); a causa real de nomes chineses/japoneses/coreanos não abrirem no Windows (a sonda de informações de mídia usava fopen estreito)

Melhorias

  • a compilação cruzada para Windows agora inclui libFLAC / libmysofa / OpenCL (gravação FLAC, HRIR e aceleração por GPU iguais nas duas plataformas); guardas de valor unificadas em opções numéricas (não engole mais o nome do arquivo de saída); travamentos da pré-visualização da GUI do motor e encerramento de subprocessos corrigidos

Versão 6.74.13

Data de lançamento: 2026-09-13

DpdoEngine

Corrigido

  • --surround não tinha efeito algum; um argumento posicional opcional engolia o nome do arquivo de saída; falhas de --hrtf-load eram silenciosas

Melhorias

  • páginas dedicadas a áudio espacial, surround e tom (HRTF · surround · tom · DSRE)

Versão 6.74.12

Data de lançamento: 2026-09-13

DpdoEngine

Melhorias

  • seletor de modulador com quatro opções e chave --poly independente; novo modo --reverse (DSD→PCM); as saídas DST e DXD são mutuamente exclusivas (combiná-las falha)
  • processamento em lote: pasta de saída + modelo de nomes + formato de saída; formulário de metadados; parâmetros por faixa; sinalizadores de relatório/análise; --stopgain-alpha (atenuação na banda de rejeição); nova página Sobre/Diagnóstico

Versão 6.74.11

Data de lançamento: 2026-09-13

DpdoPlayer

Corrigido

  • fechar ou encerrar à força a GUI faz o player realmente sair do modo exclusivo DSD do DAC (sem processo segurando o dispositivo)

Versão 6.74.10

Data de lançamento: 2026-09-12

DpdoPlayer

Corrigido

  • nome da janela/aplicativo alinhado à GUI do motor — nome correto na barra de tarefas

Melhorias

  • o controle de volume acompanha o volume do sistema (do endpoint) em vez de iniciar em 100

Versão 6.74.9

Data de lançamento: 2026-09-12

DpdoPlayer

Corrigido

  • -dop auto volta por padrão à saída nativa; o DoP passa a ser opt-in explícito
  • corrigida a causa raiz do crash do callback ASIO (autorreferência antes de pronta) + o DSD nativo realmente libera o fluxo exclusivo ao terminar; a troca de faixa envia stop primeiro para encerrar limpo (sem matar o processo)

Versão 6.74.8

Data de lançamento: 2026-09-12

DpdoPlayer

Corrigido

  • Windows: corrigida a causa raiz dos caminhos com caracteres chinês/japonês/coreano; o DoP exclusivo passa a preferir o contêiner 24 bits packed (contêineres de 32 bits ficam mudos em certos DAC); o PCM exclusivo prefere exclusivo na mesma taxa e só cai para compartilhado com aviso

Melhorias

  • -vol unificado como volume de hardware do dispositivo (removida a atenuação por software no host) — idêntico no Linux e Windows

    Versão 6.74.7

Data de lançamento: 2026-09-12

DpdoPlayer

Corrigido

  • -vol não tinha efeito no Windows — os dois backends de saída apenas guardavam o valor sem aplicá-lo; agora ajusta o volume do dispositivo (DAC), e o host nunca aplica ganho por software ao fluxo DSD (sem perdas); sem -vol o volume do dispositivo não é tocado

Melhorias

  • Uma linha de diagnóstico somente leitura na inicialização (volume atual do endpoint) para conferir se -vol realmente age

Versão 6.74.6

Data de lançamento: 2026-09-12

DpdoPackSACD

Corrigido

  • O identificador de volume ISO 9660 agora segue a convenção dos discos reais (DISC1) — antes era SACD ISO; o rótulo UDF continua seguindo --album

Versão 6.74.5

Data de lançamento: 2026-09-12

Geral

Melhorias

  • O número de versão do instalador agora vem da versão do código como fonte única — antes era fixo no script de empacotamento, então um instalador reempacotado carregava um número desatualizado

Versão 6.74.4

Data de lançamento: 2026-09-12

DpdoPlayer

Corrigido

  • A posição de início em DSD (-start / -end) só era alcançável descartando até o limite do bloco em DFF / WSD — desvio medido de cerca de 0,7 ms (30 amostras); agora DSF, DFF e WSD posicionam diretamente, com precisão de amostra
  • As primeiras 31 quadros faltavam após cada início ou salto — a conversão de DSD para PCM emitia amostras antes de o transitório do filtro estar preenchido, deixando uma lacuna de cerca de 0,7 ms no começo; agora os quadros pulados seguem o preenchimento real do filtro
  • Os valores explícitos de -dop eram ignorados (Windows) — -dop native / -dop asio / -dop auto eram engolidos pelo ramo -dop simples colocado à frente e rebaixados silenciosamente para DoP/WASAPI; agora os valores explícitos têm efeito

Melhorias

  • Consulta de capacidades do driver ASIO 2.3 (Windows) — o player pergunta ao driver se ele pode emitir DSD nativo, quantas amostras tem seu buffer interno e se informa quedas, imprimindo uma linha de diagnóstico só quando o ASIO está realmente em uso; conforme o SDK do ASIO, o host não altera prioridades de thread (isso é atribuição do driver)

DpdoPackSACD

Corrigido

  • Identificadores de volume UDF fora da norma escondiam o nome do disco de ferramentas de terceiros — com nome de álbum não ASCII o comprimento da string era gravado em caracteres (a norma exige bytes) e o descritor de volume primário ficava com o número 1 (a norma exige 0); agora igual aos discos reais, e o udftools / 7-Zip lê o nome corretamente

Geral

Melhorias

  • Suíte de regressão ampliada para 30 verificações — incluindo "posição de início em DSD (DSF/DFF/WSD/48k)" e "conformidade do identificador de volume UDF", esta última julgada por implementação independente (udftools), e não pelo nosso próprio código
  • Zero avisos de compilação no Linux e no Windows — os alvos do player também passam pelo portão de avisos

Versão 6.74.3

Data de lançamento: 2026-09-12

DpdoPackSACD

Corrigido

  • As imagens SACD ISO geradas só podiam ser lidas por este programa — o cabeçalho do setor de áudio agora é gravado com os campos de bits do Scarlet Book (informação de quadro de 3 bytes, blocos de áudio fixados em 2016 bytes, pacotes de preenchimento adicionados); ferramentas de terceiros interpretam como um disco real

DpdoPlayer

Corrigido

  • Ruído em escala máxima, ou nenhum som, ao reproduzir discos SACD reais — pacotes que não são de áudio dentro de cada setor eram emendados ao fluxo como áudio, e o caminho DSD para PCM invertia a ordem dos bits uma segunda vez; agora cada setor é validado pela identidade de 2048 bytes e só os pacotes de áudio são usados
  • Ruído sobre a música em discos SACD comprimidos em DST — a ordem dos bits era invertida duas vezes; corrigido
  • -start / -end eram ignorados em silêncio em DSF comuns — sem alternativa quando o seek falhava, as opções não tinham efeito; agora funcionam
  • Recuo silencioso quando um dispositivo estava ocupado — o player agora informa o motivo da ocupação em vez de trocar de dispositivo em silêncio
  • -start / -end não conseguiam apontar para uma faixa dentro de um CUE / SACD ISO — deslocamentos de início funcionam com sequências de faixas (faixa N), e o Windows fica alinhado ao Linux
  • Trocas repetidas de modo com vários dispositivos em modo diferencial / crossover — uma pré-verificação de DSD roda antes da reprodução para evitar alternâncias, e o crossover permanece no domínio PCM

Geral

Melhorias

  • Contrato de opções alinhado entre plataformas (9 → 27 verificações) — opções desconhecidas não são mais atribuídas todas a "somente Windows", e qualquer diferença de forma entre as plataformas reprova a regressão na hora

Versão 6.74.2

Data de lançamento: 2026-09-12

DpdoPlayer

Corrigido

  • A duração total ficava pulando — no Windows a duração total era recalculada a cada atualização (segundos reproduzidos × 100 ÷ porcentagem); dividir dois valores de fontes diferentes fazia o número pular. Agora a duração total vem do motor por faixa (muda apenas ao trocar de faixa) e o tempo reproduzido segue o Linux (duração × progresso).

Melhorias

  • A regressão passa a 27 verificações — incluídos o protocolo de progresso com contrato de opções entre plataformas e o smoke sem tela da GUI: desvio de opções, GUI que não inicia ou traduções perdidas falham na hora.

Versão 6.74.1

Data de lançamento: 2026-09-12

DpdoPlayer

Novo

  • Validação de licença — verifica .DpdoPlayer.crt na inicialização (vinculado ao HWID da máquina); sem licença válida a reprodução é recusada e o HWID é exibido; licença revogada fica registrada localmente, portanto também é recusada sem conexão
  • Barra de status de licença na GUI — mostra de relance licenciado, não licenciado, revogado ou certificado de outra máquina; sem licença exibe o HWID com cópia em um clique

DpdoPackSACD

Corrigido

  • O CUE não abria no Windows (nenhuma faixa utilizável) — nomes de arquivo em chinês e caminhos de rede UNC agora são abertos com caracteres largos; fins de linha CRLF não entram mais nos nomes
  • Script de compilação obsoleto — build.sh agora encaminha para o CMake raiz em vez de manter sua própria lista de fontes, inevitavelmente obsoleta

Licenciamento

  • As ferramentas de emissão suportam o produto player — o ToolID do certificado do player foi adicionado, .DpdoPlayer.crt já pode ser emitido

Geral

Corrigido

  • Diferencial, BTL e crossover digital do Windows falhava em silêncio — a saída não é mais tomada pelo ASIO
  • Semântica de linha de comando alinhada entre plataformas — 7 diferenças corrigidas (incluindo o critério DSD do Linux)
  • Use-after-free concorrente em ponteiros do backend, acesso fora dos limites da thread de controle — primeiro passo das correções do modelo de threads
  • Travamento na segunda reprodução, GUI esquecia a seleção de DAC — corrigido
  • Progresso e duração por faixa do SACD ISO — semântica da contagem de amostras do leitor corrigida
  • Contrato de blocos DST, blocos curtos fora dos limites, falso fim de arquivo — corrigido

Versão 6.74

Data de lançamento: 2026-09-12

  • Versão de marcação (conteúdo integrado na 6.74.1)

Versão 6.73.1

Data de lançamento: 2026-09-09

DpdoPlayer

Novo

  • A versão Windows agora produz som — backend WASAPI real com MinGW mais o front-end de reprodução libPlayer

Corrigido

  • Caminhos não ANSI (coreano, japonês, DBCS) — linha de comando com caracteres largos, abertura de arquivos com caracteres largos, log em UTF-8
  • Conversão de formato de saída — não há mais desalinhamento quando o formato de mixagem do WASAPI em modo compartilhado difere do formato do arquivo
  • Limitação de reprodução — se a decodificação for muito mais rápida que o tempo real, a gravação segue o ritmo de consumo do dispositivo
  • Corrida da thread principal — não consulta mais antes de a thread de reprodução iniciar, evitando falso fim

Aplicativos de desktop

  • As duas GUIs Qt (DpdoAudioTools, DpdoPackSACD GUI) passam a integrar o instalador do Windows
  • A antiga interface GTK3 é aposentada e o Qt assume integralmente; a linha de GUI do motor passa a se chamar DpdoAudioTools

Versão 6.73

Data de lançamento: 2026-09-09

Novo

  • DpdoAudioTools (GUI de conversão Qt6) — edição de bandas de EQ com curva de resposta, presets de masterização e gerenciador de presets, pré-visualização de forma de onda e espectro, página de gravação (CD e DSD)
  • DpdoPlayer GUI (interface de reprodução Qt6) — lista de reprodução, seleção de vários dispositivos e de modo, progresso e volume, log

Corrigido

  • A cadeia de compilação das GUIs Qt liga libstdc++/libgcc dinamicamente; curva de EQ não aparecia — corrigido

Versão 6.72.1

Data de lançamento: 2026-09-07

DpdoPackSACD GUI

Novo

  • Interface gráfica para o empacotador (Linux e compilação cruzada para Windows) — os artefatos vão direto para release/linux e release/windows
  • Chinês e inglês conforme o idioma do sistema — traduções embutidas no executável

Corrigido

  • Correções da auditoria de interface (sobreposição de layout, conteúdo oculto ao reduzir a janela)

Versão 6.72

Data de lançamento: 2026-09-07

  • Versão de organização técnica: todos os avisos do compilador eliminados, código redundante e renomeações de diretórios, changelog e números de versão do site sincronizados; sem novidades visíveis

Versão 6.71

Data de lançamento: 2026-09-02

  • Versão de fechamento de estabilidade: corrigida a corrida de ocupação do dispositivo; as demais funções foram publicadas na entrada 6.70.0

Versão 6.70.0

Data: 2026-09-01

DpdoEngine

Correções

  • Preenchimento final do gravador DSF/DFF — na saída DSD16/32, os blocos residuais do final (silêncio 0x69) são preenchidos automaticamente e o cabeçalho alinhado por blocos, eliminando truncamentos e artefatos finais

DpdoPlayer

Novos recursos

  • Reprodução de Korg WSD — reproduz arquivos .wsd gerados pelo DpdoEngine 6.68.1+ (detecta a assinatura 1bit, analisa as áreas General/DataSpec, saída nativa WSD em toda a cadeia)
  • Reprodução com decodificação em tempo real DSD → PCM (-pcm [rate]) — reproduz DSD mesmo em DAC sem suporte nativo: Pdm2Pcm decodifica em tempo real para PCM; rate 0 = automático (DSD/64 ou DSD/32); combinado com -pcm-bits 16|24|32 (padrão 24-bit + modelagem de ruído) melhora significativamente a audição
  • Suporte à leitura WSD (lado do mecanismo) — DSDReader/Pdm2Pcm agora decodificam DSF / DFF / WSD

Correções

  • 12 correções de auditoria — -dev sem argumento não lê mais fora de argv; lógica de reprodução DoP DSD128+ corrigida (DSD64→Solution1, DSD128/256→Solution2); arquivos >256MB passam automaticamente para streaming (proteção OOM); bloqueio para a corrida entre threads do mixer; verificações de limites nos cabeçalhos DSF/DFF; removida a correspondência ampla pkill -f alsa; o modo BTL agora avisa e volta para STANDARD; tempo limite de 5 s em espera ativa CoreAudio, etc.
  • Correção de intercalação/ordem de bits DoP DSD128 — a saída do Solution2 agora usa ordem intercalada ALSA (antes L/R invertidos); o Solution2 respeita is_MSB (DFF não é mais invertido por engano); a detecção DSD64 usa dsd_sampling_frequency_base (corrige o falso positivo de 3072000 Hz da família 48k)
  • Removidos todos os catch(...) silenciosos — os 11 catch(...) agora imprimem e.what(); erros não são mais engolidos
  • Consistência dos backends — AlsaBackend 24-bit unificado para S24_3LE, coincidindo com a saída do PlayerEngine; o fallback de redução de frequência WASAPI agora registra um aviso

Ferramentas

Novos recursos

  • Modo de verificação deep-spectrum do thdn (--deep) — comprimento FFT coerente + remoção de tom LSQ twofold + média de Welch + estatística do piso de ruído; aritmética de precisão DD, FFT de comprimento arbitrário de Bluestein, janela Blackman-Harris de 7 termos; validado de forma cruzada com o fft_app.py de referência (DSD64 2k–15k mediana −194,2 dB)

Versão 6.69.0

Data: 2026-08-31

DpdoEngine

Novos recursos

  • Modelador de ruído de alta ordem SOS-EF (--sos-ef) — topologia SOS em cascata + realimentação de erro exata, eliminando a explosão de coeficientes do NS13/NS15; ruído na banda de aproximadamente −143 dBFS (DSD64) na ordem 15, com suporte a qualquer ordem ímpar (3–31), projeto automático + estabilização pelo critério de Lee
  • Saída no formato WSD — suporte à saída direta de arquivos Korg WSD (.wsd); cabeçalho fixo + área de texto + DSD entrelaçado por canal (MSB-first), compatível com AudioGate / ffmpeg / Audacity

Correções

  • Normalização da profundidade de bits de leitura no wav/flac — bug de amplificação de material de 16 bits ×2 e de 24 bits ×256 (divisor errôneo na conversão s32), que afetava a qualidade de conversão de todas as entradas de 16/24 bits
  • Auditoria de estabilidade CIFB — corrigido o risco do fallback 0.79, diagnóstico em tempo de compilação adicionado

Versão 6.68.1

Data: 2026-08-26

DpdoEngine

Novos recursos

  • Saída no formato WSD — suporte à saída direta de arquivos Korg WSD (.wsd); cabeçalho fixo + área de texto + DSD entrelaçado por canal (MSB-first), compatível com AudioGate / ffmpeg / Audacity
  • Modelador de ruído de alta ordem SOS-EF (--sos-ef) — topologia SOS em cascata + realimentação de erro exata, eliminando a explosão de coeficientes do NS13/NS15; ruído na banda de aproximadamente -143 dBFS (DSD64) na ordem 15, com suporte a qualquer ordem ímpar (3–31), projeto automático + estabilização pelo critério de Lee

Correções

  • Normalização de profundidade de bits na leitura wav/flac — bug de amplificação de material de 16 bits ×2 e de 24 bits ×256 (divisor incorreto na conversão s32), afetando a qualidade da conversão de todas as entradas de 16/24 bits

Versão 6.68.0

Data: 2026-08-07

DpdoEngine

Alterações

  • Dpdo DSP — módulos DSP integrados unificados sob o nome Dpdo DSP; conteúdo sincronizado nos 10 idiomas
  • Correção de linkagem estática — GetLogicalProcessorInformationEx agora linkado estaticamente; removido o aviso de cast na carga dinâmica

Site

  • Site multilíngue (9 subdomínios de idioma) e melhorias de SEO/GEO

Versão 6.67.0

Data: 2026-08-04

DpdoEngine

Novos recursos

  • Gravação em streaming (gravar e converter) — conversão em tempo real durante a gravação; nenhuma segunda passada de conversão necessária
  • Precisão dupla completa de 64 bits — pipeline DSP atualizado para precisão dupla em toda a cadeia (nível industrial/audiófilo/competição)

Melhorias

  • Auditoria profunda de código — três rodadas de auditoria corrigidas (detecção de estouro de buffer circular, defesa OOM, etc.)
  • Gates de qualidade nível competição — builds -Wall -Wextra sem avisos
  • Otimizações de desempenho — FIR/modelagem de ruído compartilham pool de threads (sem tempestades de criação), coeficientes transpostos alinhados 32B, detecção de picos serializada, caminho rápido SoftLimiter
  • Alinhamento de parâmetros do DpdoAudioTools — totalmente alinhado com DpdoEngine

Versão 6.66.6

Data: 2026-08-04

DpdoEngine

Alterações

  • Migração do parsing de argumentos para CLI11 — todos os parâmetros passados separadamente como --param value; corrigidos 3 bugs de «engolir» argumentos (incl. --eq / --eq-precut)
  • Testes unitários da cadeia de efeitos — adicionados à linha de build
  • Correção de ponteiro selvagem no GUI — botões de atalho do create_main_window empacotados antes da criação de vbox

Versão 6.66.0

Data: 2024-12-30

DpdoEngine

Novos recursos

  • Modelagem de ruído IIR de ordem 11 — além de 3/5/7/9
  • Renderização HRTF — áudio espacial 3D para fones
  • Saída DXD — 352,8 kHz/24 bits
  • Modelagem psicoacústica (--psy)
  • Parâmetros adaptativos (--adaptive)
  • Aceleração OpenCL
  • Limitador de antecipação (--lal)
  • Filtro anti-clipping (--apo)
  • Expansor estéreo
  • Presets de masterização — Classical/Pop/Jazz
  • DSP Dpdo — graves, agudos, EQ, crossfeed
  • 8 tipos de dither — TPDF, POW-R, Lipshitz…
  • Normalização LUFS — ITU-R BS.1770
  • ReplayGain
  • Compressão DST
  • Gravação DSD nativa
  • Modo pipe (--pipe)
  • Estatísticas (--stats)
  • Espectrograma (--spectrogram)
  • Conversão inversa (--reverse)
  • Presets de usuário (--preset-*)
  • Relatórios de análise (--pdfrp, --noise-profiling)
  • Metadados — conjunto completo
  • Correção auto-pan
  • Equalizador
  • Saturação harmônica — 5 tipos

Melhorias

  • Série E em precisão dupla
  • Multithreading otimizado
  • Arquivos > 4 GB
  • Estabilidade DST

Correções

  • Estabilidade nos limites do shaper
  • Alinhamento de metadados DFF
  • Enumeração de dispositivos OpenCL

DpdoPackSACD

  • Criação SACD ISO completa
  • Metadados: álbum, artista, capa, gênero, ano, gravadora, compositor, regente
  • Importação CUE
  • Dpdo DSD Disc (DVD-R/RW)
  • Código de barras (EAN/UPC) e ISRC
  • SACD multicanal

DpdoPlayer

  • Reprodução DSD nativa (DSF/DFF)
  • Seleção de dispositivo (-dev)
  • Distribuição de canais (-layout)
  • Modos: standard, differential, BTL
  • DoP: auto/force/native
  • Volume (-vol)
  • Streaming de baixa latência (-stream)
  • Entrada pipe

Problemas conhecidos

  • IIR de ordem 11 lento em CPUs antigas — OpenCL recomendado
  • Arquivos DST a descomprimir em DSF em alguns players de terceiros
  • macOS: configuração manual do nome para alguns USB DAC