RTL FM Player

Programa para ouvir rádio FM estéreo usando Imagem de um sintonizador USB compativelsintonizador RTL-SDR, com funções de gravação e TimeShift.
Compatível com Linux e Windows.

A função de gravação salva o áudio que está sendo tocado em arquivo Wav, a função TimeShift permite voltar o tempo alguns minutos para escutar novamente o que estava passando na rádio.

É um programa muito simples, mas muito leve. Não possui interface gráfica, os comandos são diretamente pelo teclado.

Na internet você encontra estes sintonizadores facilmente pelo nome de RTL SDR, são baratos e funcionam diretamente pela porta USB. Eles foram criados para sintonizar TV digital da Europa, mas usando um driver alternativo ele vira um sintonizador genérico.

 

Instalação

Linux

Primeiro é necessário desabilitar o driver dvb_usb_rtl28xxu do kernel:

cd /etc/modprobe.d/
sudo gedit ban-rtl.conf

Neste arquivo que está sendo criado, adicione esta linha:

blacklist dvb_usb_rtl28xxu

Reinicie.
Agora plugue o sintonizador USB e execute em um terminal como root o programa ./rtl_fm_player

Windows

No Windows é necessário instalar um driver alternativo pelo programa Zadig.
Entre no site https://zadig.akeo.ie/ e baixe e execute o Zadig.

1- Ao abrir, clique em Options -> List All Devices
2-
Então escolha na lista "Bulk-in, interface (interface 0)"
    (ou "RTL2838U****" se aparecer)
3- Deixe selecionado o driver "WinUSB"
4- Clique no botão "Install Driver"
    (ou "Replace Driver")

Tela do Zadig

Obs.: Volte a executar o Zadig se o programa parar de encontrar o sintonizador. O Windows adora reinstalar o driver padrão sem avisar.

 

Uso

Se o sintonizador foi encontrado e está funcionando, basta apertar as teclas W ou S para alterar a frequência até sintonizar uma rádio. Ou então aperte a tecla T e digite a frequência diretamente. Aperte a tecla A para voltar no tempo e ouvir novamente os últimos minutos.

Use a tecla R para gravar o que está saindo pelo alto-falante, incluindo se a função TimeShift estiver em uso. Portanto é possível voltar alguns minutos para gravar o que estava passando na rádio. Aperte R novamente para terminar a gravação. Um arquivo Wav será criado na mesma pasta do programa, fique de olho no espaço em disco pois estes arquivos são grandes. Converta eles em Mp3 com um programa externo para diminuir o seu tamanho.

 

Download

Faça o download das versões compiladas ou do código-fonte aqui:

https://github.com/rafaelferrari0/rtl_fm_player/releases

 

Como surgiu a ideia

Faz muuuuito tempo na época das antigas placas de captura de TV analógica, eu utilizava um programa que permitia escutar rádio FM, gravar as músicas, e tinha uma função muito boa chamada TimeShift.

Esta função permitia "voltar no tempo" escutando a programação da rádio de alguns minutos atrás, e eu usava isto direto quando a música era boa e queria escutar novamente, e depois adiantava o tempo quando passava uma música ruim, ou péssima, ou algo que não pode ser chamado de música. Com o avanço da tecnologia não foi mais possível utilizar este tipo de placa e o programa, eles se tornaram obsoletos e incompatíveis.

Mas com a popularização do sintonizador RTL-SDR, agora todos podiam ter um receptor que funciona através de um computador e por um preço camarada. As funções dependem do software utilizado para sintonizar.

Procurei muito algum software para ouvir rádio FM estéreo e o que chegou perto foi o SDRSharp, que é ótimo e funciona em toda a faixa de frequências com diversos tipos de modulação. Mas é muito pesado e não é amigável para quem vai apenas escutar rádio FM.

Até que encontrei um projeto chamado rtl_fm_streamer que é apenas um código baseado no rtl_fm, mas permite sintonizar rádio em estéreo e transmitir pela rede. Como eu não tinha muita coisa para fazer em Abril de 2020 comecei a alterar seu código, corrigi alguns bugs, adicionei uma biblioteca para direcionar o áudio na saída de som, implementei as funções de gravação e timeshift, e assim surgiu isto:

Imagem do Saltimbanco
Imagem do Saltimbanco

 

História e mais detalhes

Nos anos 80 já se pesquisava sobre rádios com o hardware extremamente simples, onde a grande parte da funcionalidade era processada por software. Nesta tecnologia a demodulação, filtragem e os demais processamentos do sinal são feitos por software, muito prático pois é possível sintonizar vários tipos de sinal sem precisar trocar de sintonizador, bastava alterar o software. Mas não existia nada muito prático até então. Mas lá pelo ano de 2010, Eric Fry começou a fuçar nas entranhas de um sintonizador barato de TV digital DVB que usava o chip RTL2832U e Roklobsta já discutia com ele sobre suas funcionalidades, dois anos depois Antti Palosaari descobriu mais detalhes do funcionamento e amadureceu a ideia de um sintonizador barato e acessível, e Osmocom que já estava trabalhando em algo parecido começou com os primeiros códigos práticos.

Todo o código-fonte deste projeto "RTL FM Player" é aberto e gratuito, pode ser obtido na minha página do GitHub. Lá contem instruções para compilar o código em Linux e Windows. Não se esqueça de dar crédito aos autores anteriores e manter o código aberto, este software recebeu contribuições de vários autores, a lista completa está no código-fonte.

O hardware do sintonizador é extremamente simples, possui um sintonizador e um misturador que então passa por um A/D de 8 bits que digitaliza este sinal em quadratura. Este é um formato apropriado para ser processado matematicamente, é um sinal onde o valor em determinado instante do tempo é representado por um número complexo de 2 partes (parte real e parte imaginária). O software usa a CPU do computador para fazer o processamento deste sinal, e por isto este tipo de sintonizador é chamado de SDR pois é um "rádio definido por software".

O uso da CPU pelo RTL FM Player pode ser alto se comparado com programas normais, mas é bem menos que os outros como o SDRSharp. A memória RAM utilizada é quase toda para a função de TimeShift, que é um buffer circular.

 

Licensas

O software aqui listado tem código-fonte aberto de acordo com a GNU General Public License v2.0
Uma cópia da licença pode ser obtida na página GitHub deste projeto.
O Software é fornecido "como está", sem garantia de qualquer tipo, expressa ou implícita

 

Créditos

Autor do projeto RTL Fm Streamer
Autores do projeto RTL_FM
Eric Fry
Roklobsta (rtlsdr.org)


Voltar

>    © 2020 Rafael Ferrari (RafaelBF)   >    rafa.eng.br   >    email