Sobre o projeto
TastyTunes é um aplicativo de desktop que atua como um controle remoto para players de rede da Cambridge Audio construídos sobre a plataforma StreamMagic. O README lista os modelos suportados como Evo 75/150, CXN100 e CXN (V2), MXN10, AXN10, EXN100, Edge NQ e 851N, com desenvolvimento e testes diários realizados em um Evo 150. O app funciona localmente, comunica-se com o streamer através da própria rede do usuário e não requer conta ou serviço de nuvem.
Instaladores são publicados para macOS 11+ (universal, assinado e notarizado), Windows 10+ (um único instalador assinado cobrindo x64 e arm64) e Linux (AppImage x64 ou arm64, incluindo Raspberry Pi OS de 64 bits). Ao iniciar, o app descobre dispositivos StreamMagic na rede via SSDP, e um endereço IP pode ser inserido manualmente se a descoberta não encontrar nada. Um modo de demonstração executa todo o aplicativo contra um streamer virtual integrado e duas bibliotecas de exemplo, sem a necessidade de hardware.
A seção Now Playing apresenta a arte do álbum em tamanho grande sobre um fundo desfocado, detalhes da faixa, emblemas de formato para codec, taxa de amostragem, profundidade de bits, lossless e MQA, e um indicador de qualidade de sinal cujos estados diferem em forma e cor. Um modo de exibição em tela cheia, um mini player sem moldura sempre no topo e um painel opcional na barra de menus ou bandeja do sistema são oferecidos junto com a janela principal.
O recurso de biblioteca agrupa todos os servidores de mídia UPnP locais e o armazenamento USB do streamer em visualizações de Artistas, Álbuns e Faixas, apoiado por um índice local reconstruível que suporta pesquisa instantânea em todas as fontes. A filtragem e a ordenação abrangem gênero, década, formato, faixa dinâmica e a distinção entre álbuns e coletâneas. O manuseio de álbuns mantém convidados em destaque em seus lugares, agrupa coletâneas sob Various Artists, mostra divisores de disco para conjuntos de múltiplos discos e recolhe box sets de vários volumes atrás de um seletor de volume. Artes ausentes podem ser preenchidas a partir do Cover Art Archive.
Além da reprodução da biblioteca, existem favoritos, playlists armazenadas localmente baseadas na definição do conteúdo, uma fila com multisseleção e reordenação por arrasto, os 99 slots de preset do streamer (recuperáveis por teclas numéricas, cada um podendo ter seu próprio volume), um EQ de sete bandas com tilt e balanço, troca de fonte e navegação no diretório radio-browser.info com categorias de gênero e década. Letras sincronizadas vêm do LRCLIB e são destacadas linha por linha; clicar em uma linha salta para ela. Biografias de artistas e fatos sobre álbuns são extraídos do MusicBrainz e Wikipedia, com links de atribuição.
A análise de áudio lê arquivos de servidores de mídia locais para desenhar uma forma de onda na barra de busca e sob a arte, e para calcular um valor de faixa dinâmica seguindo o procedimento TT-DR do banco de dados DR, que então se torna uma opção de filtro e ordenação na Biblioteca. Um log limitado de reproduções recentes e um registro de audição gravado como arquivos JSON Lines anuais rastreiam o que foi tocado e por quanto tempo; ambos podem ser limpos ou desativados. O scrobbling do ListenBrainz envia a audição apenas após o tempo real de reprodução e tenta novamente envios que falharam.
A automação inclui timers de suspensão de 15 minutos a duas horas ou ao fim da faixa, com fade-out de volume opcional, e agendas por dia da semana que podem despertar o dispositivo para um preset com fade-in ou enviá-lo para standby.
Um servidor MCP opcional, desligado por padrão, expõe as capacidades do app para agentes de IA locais, como Claude Code ou Claude Desktop, cobrindo reprodução e volume, presets e fontes, biblioteca e rádio, favoritos, tom e EQ, timers de suspensão, o registro de audição e análise de áudio. Ferramentas de edição são separadas e desativadas até serem ligadas, e os agentes herdam o limite de volume da UI, salvaguardas de energia e alternadores de conexão. O README também mostra um exemplo de rest_command do Home Assistant que chama o endpoint MCP sem integrações extras.
O projeto documenta exatamente qual tráfego de rede sai da máquina: nada é enviado para controle do streamer ou navegação na biblioteca além da rede local, enquanto letras, contexto de artista e álbum, arte de álbum ausente, verificação de atualização e busca de rádio são alternáveis, e o scrobbling fica desligado até que um token seja adicionado. Não há analytics, telemetria ou sistema de contas, e um console de requisições mais um console de tráfego bruto do streamer estão integrados.
A stack é Electron com electron-vite, React 19, TypeScript, Tailwind CSS v4 e Zustand, com o processo principal lidando com E/S do dispositivo via SSDP e o WebSocket SMOIP do streamer. O streamer é tratado como a única fonte da verdade: comandos são enviados, o estado é devolvido e a interface é renderizada a partir desse retorno. O projeto é lançado sob a GNU General Public License v3.0, com desenvolvimento em um branch develop e CI executando verificações de typecheck, ESLint e Prettier.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.