SpotMeter - Controle De Volume Do Spotify Com Volume Ambiente.
by ThiagoS93 in Circuits > Microsoft
501 Views, 0 Favorites, 0 Comments
SpotMeter - Controle De Volume Do Spotify Com Volume Ambiente.
O SpotMeter controla o volume do Spotify de acordo com o volume do som ambiente.
Para possibilitar isso foi implementado um medidor de volume de áudio (VU) utilizando a API Windows Runtime AudioGraph. Além da integração com o Spotify pela sua Web Api.
Para compilar este projeto é necessário o Visual Studio 2017 com o pacote de UWP. Para execução é necessário um dispositivo com Windows 10 ou Windows 10 IoT, um microfone e acesso à internet (para comunicação com o Spotify).
O medidor de volume cria um grafo de áudio com nó de entrada para ser associado ao dispositivo de captura de áudio padrão. E um nó de saída que será utilizado para processar o volume de áudio.
Os nós deste grafo são configurados para trabalhar com o codec PCM com 1 canal à 44.1 kHz e 32 bits por amostra. Isso resulta num sinal mais simples para ser processado e com uma resolução adequada para captar os ruídos do ambiente.
O volume é calculado como a média do valor absoluto de todas amostras quantificadas durante um segundo.
Como o propósito da captura é apenas calcular o volume, o grafo não é configurado para trabalhar em baixa latência e pode receber frames de áudio com tamanhos irregulares.
O frames de áudio são os buffers o que a AudioGraph trafega entre os nós. Por padrão esses frames têm 10ms que seriam 441 amostras com a configuração realizada.
Apresentação
Obter O Projeto No GitHub
O projeto pode ser obtido no GitHub em:
Compilar O Projeto
Ao compilar as dependências serão restauradas automaticamente pela IDE.
Caso deseje compilar numa configuração diferente (a padrão é x86 que é adequada para testes em desktop ou máquinas virtuais, a maior parte dos dispositivos IoT requer a compilação em ARM). É importante verificar se a opção de código não seguro está marcada.
A classe AudioMonitor utiliza leitura direta a memória para receber os frames de áudio.
Deploy Remoto
Para o deploy numa máquina remota ou dispositivo IoT é necessário utilizar a opção remoto.
Para dispositivos IoT geralmente é utilizada a autenticação Universal. Já dispositivos desktop usam a opção Windows.
Integração Com O Spotify
Para integração com o Spotify é necessário gerar um OAuth token com a permissão user-modifi-playback-state no endereço:
https://developer.spotify.com/web-api/console/put-...
O token gerado deve ser informado no campo de chave e o monitor de áudio pode ser iniciado.
Controles Da Interface
- Spotify Key: Receberá a chave que será gerada no próximo passo e permite a integração com o Spotify.
- Volume: Apresenta o volume atual que será configurado no player. O volume é ajustado em + ou - 1% por segundo conforme a distância entre o volume atual e o nível atual de ruído.
- Min noise level: Volume mínimo de de ruído necessário para iniciar os ajustes de volume. Valor padrão 0 para considerar qualquer ruído para iniciar os ajustes.
- Max noise level: Volume máximo considerado para ao realizar os ajustes, qualquer leitura acima deste nível será considerada como 100% de ruído. Como a leitura de volume é o valor médio das amostras, a leitura de volume raramente dá uma saída maior que 70%. O valor padrão é 70% para extrapolar as leituras normais para 100% de volume.
- Current noise level: Demonstra o nível atual de ruído computado pelo medidor de volume de áudio.
- Delta volume to noise tolerance: Define a diferença mínima entre a leitura de ruído e o volume atual para que sejam realizados ajustes de volume.
- Start monitor: Dispara o medidor de volume de áudio e quando os parâmetros anteriores são atendidos também o ajuste do volume no Spotify.