Technique – technic2radio.fr https://technic2radio.fr Le site du broadcast radio Mon, 15 Aug 2022 20:53:36 +0000 fr-FR hourly 1 https://wordpress.org/?v=6.9.4 https://i0.wp.com/technic2radio.fr/wp-content/uploads/2016/04/t2r.png?fit=32%2C32&ssl=1 Technique – technic2radio.fr https://technic2radio.fr 32 32 81899285 Interface audio PCIe et Linux https://technic2radio.fr/interface-audio-pcie-et-linux/ https://technic2radio.fr/interface-audio-pcie-et-linux/#respond Wed, 05 Sep 2018 20:01:14 +0000 https://technic2radio.fr/?p=6377 Lire la suite ...]]>

Lors de la rédaction de l’article « Un boitier universel » j’ai effectué quelques recherches pour lister les différentes cartes sons pour bus PCI express compatibles avec Linux. Elles sont peu nombreuses. Attention, cet article n’est qu’une restitution de mes recherches sur le web, je n’ai pas testé les cartes sons citées. Ont été mises en avant les cartes disposants d’une entrée et d’une sortie stéréo.

Digigram VX222e

Mais on pourrait citer la plupart des cartes sons PCIe de la marque Digigram. Elles ont l’avantage d’avoir un des taux d’échantillonnage les plus élevé : 192kHz
→ https://www.digigram.com/support/vx222e-support/

RME HDSPe AIO

Cette carte dispose de tout ce que l’on attend d’elle : E/S symétriques et 192kHz. Il n’est nul part fait mention sur le site du constructeur mais de nombreux utilisateurs de Ubuntu/Debian la possède et l’utilise.
→ http://www.rme-audio.de/en/products/hdspe_aio.php

AudioScience ASI5211

Toutes les cartes AudioScience fonctionnent avec Linux. Néanmoins, aucune d’elle ne dépasse 96kHz pour la fréquence échantillonnage.
→ http://www.audioscience.com/internet/products/sound_cards/asi5111_5211.htm

ESI Juli@ XTe

Cette carte n’est plus produite. De qualité moindre que les cartes ci-dessus, elle avait l’avantage d’avoir un prix plus accessible. Lors de mes échanges avec l’équipe d’ESI, il a été évoqué qu’une nouvelle version de la Juli@ devrait sortir prochainement, mais pas plus d’informations pour le moment : ni sur les spécificités techniques, ni sur la date de sortie.
→ https://www.esi-audio.com/products/juliaxte/

Celles qu’on aurait aimé qu’elles soient compatibles

Lynx e22

Sa grande sœur, la l22, est compatible mais elle est au format PCI et elle n’est plus distribuée.
→ https://www.lynxstudio.com/products/e22/

Marian AD2

Pas de compatibilité actuellement, mais on aimerait vraiment que cette très bonne carte le soit.
→ http://www.marian.de/en/products/seraph_ad2

 

]]>
https://technic2radio.fr/interface-audio-pcie-et-linux/feed/ 0 6377
Un boitier universel https://technic2radio.fr/un-boitier-universel/ https://technic2radio.fr/un-boitier-universel/#comments Thu, 08 Mar 2018 14:58:19 +0000 https://technic2radio.fr/?p=6203 Lire la suite ...]]> Attention : Cet article sera modifié au fil de l’avancé du projet.

Au fil du temps, le Raspberry Pi a remplacé les ordinateurs volumineux, bruyants et énergivore. Un pour le streaming, un pour les plateaux extérieurs, un pour le décodage et la réception du flux … Les petits boîtiers commencent à s’accumuler et il va falloir trouver une solution plus pérenne.

Mais le Raspberry Pi peut parfois montrer ses limites : puissance, stabilité, stockage … C’est pourquoi plusieurs « versions » sont en réflexion.

Ce n’est qu’à l’état de projet pour le moment mais l’idée est d’échanger sur la création d’un boitier qui rassemblerait tout le nécessaire. Un seul boitier « universel » d’un point de vu hardware mais avec un software différent pour chacun.

En fonction des besoins, on pourrait installer :

Version 1 : à base de Raspberry Pi 3 B+

Liste du hardware :

  • Un  Raspberry Pi 3 B+
  • Une carte son
  • une alimentation
  • un boitier au format rack 1 U

Deux possibilités pour les interfaces audio avec le Raspberry Pi : soit raccordées via les broches GPIO, soit en USB. Pour ce projet, nous allons opter pour une carte au format « extension »

 

Pour le boitier, Farnell propose un rack au format 1U en ABS

Accessoires

Version 2 : à base de carte mère mini-itx

Liste du hardware

Version 3 : à base d’APU2 Pc Engines

Liste du hardware

Ou solution Rackmatrix pré-assemblée APU AMD GX-412TC 

Et vous ? Auriez-vous choisi les mêmes références ? Des proposition d’améliorations du projet ? N’hésitez pas à commenter cet article.

]]>
https://technic2radio.fr/un-boitier-universel/feed/ 4 6203
Darkice avec toutes les librairies sur Raspberry Pi https://technic2radio.fr/darkice-toutes-librairies-raspberry-pi/ https://technic2radio.fr/darkice-toutes-librairies-raspberry-pi/#comments Wed, 10 Jan 2018 14:31:07 +0000 https://technic2radio.fr/?p=6132 Lire la suite ...]]> Dans ce tutoriel, nous allons compiler Darkice pour qu’il puisse diffuser en  AAC, AACplus, MP3 et OGG. L’installation se fera sur un Raspberry Pi 3 avec Raspbian Jessie Lite. Je n’ai pas réussi à diffuser en OPUS, probablement à cause de la configuration de mon serveur Icecast. Et en AAC+, vous ne pourrez régler le bitrate que jusqu’à 64kbps, Darkice n’en prend malheureusement pas en charge le codec Fraunhofer FDK AAC.

Préparation

$ sudo nano /etc/apt/sources.list

Et supprimer le # devant deb-src (Ctrl+O pour enregistrer et Ctrl+X pour quitter)

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install dh-autoreconf libtool libtool-bin libasound2-dev libfftw3-dev build-essential devscripts autotools-dev fakeroot dpkg-dev debhelper autotools-dev dh-make quilt ccache libsamplerate0-dev libpulse-dev libaudio-dev lame libjack-jackd2-dev libasound2-dev libtwolame-dev libfaad-dev libflac-dev libmp4v2-dev libshout3-dev libmp3lame-dev libopus-dev

Compilation de libfaac

$ mkdir /tmp/build && cd /tmp/build
$ apt-get -b source libfaac0 faac
$ sudo dpkg -i libfaac0_1.28-6_armhf.deb libfaac-dev_1.28-6_armhf.deb faac_1.28-6_armhf.deb
$ cd

Compilation de Libaacplus

$ mkdir src && cd src
$ wget http://tipok.org.ua/downloads/media/aacplus/libaacplus/libaacplus-2.0.2.tar.gz
$ tar -xzf libaacplus-2.0.2.tar.gz
$ cd libaacplus-2.0.2
$ ./autogen.sh --host=arm-unknown-linux-gnueabi --enable-static --enable-shared
$ make
$ sudo make install
$ sudo ldconfig
$ sudo reboot

Compilation et installation de Darkice

$ cd src
$ apt-get source darkice
$ cd darkice-1.2
$ ./configure --with-faac --with-faac-prefix=/usr/lib/arm-linux-gnueabihf --with-opus --with-opus-prefix=/usr/lib/arm-linux-gnueabihf --with-pulseaudio --with-pulseaudio-prefix=/usr/lib/arm-linux-gnueabihf --with-lame --with-lame-prefix=/usr/lib/arm-linux-gnueabihf --with-alsa --with-alsa-prefix=/usr/lib/arm-linux-gnueabihf --with-jack --with-jack-prefix=/usr/lib/arm-linux-gnueabihf --with-aacplus --with-aacplus-prefix=/usr/local --with-samplerate --with-samplerate-prefix=/usr/lib/arm-linux-gnueabihf --with-vorbis --with-vorbis-prefix=/usr/lib/arm-linux-gnueabihf
$ make
$ sudo make install

Configuration de Darkice

$ cd 
$ sudo nano /etc/darkice.cfg

Ajoutez et modifiez le texte suivant, pour l’adapter à votre serveur icecast :

# this section describes general aspects of the live streaming session
[general]
duration         = 0            # duration of encoding, in seconds. 0 means forev$
bufferSecs      = 5            # size of internal slip buffer, in seconds
reconnect       = yes         # reconnect to the server(s) if disconnected

# this section describes the audio input that will be streamed
[input]
# device         = /dev/dsp     # OSS DSP soundcard device for the audio input
device            = plughw:1,0  # OSS DSP soundcard device for the audio input
sampleRate      = 44100       # sample rate in Hz. try 11025, 22050 or 44100
bitsPerSample   = 16            # bits per sample. try 16
channel         = 2                   # channels. 1 = mono, 2 = stereo

# this section describes a streaming connection to an IceCast2 server
# there may be up to 8 of these sections, named [icecast2-0] ... [icecast2-7]
# these can be mixed with [icecast-x] and [shoutcast-x] sections
[icecast2-0]
bitrateMode     = abr           # average bit rate
format          = aac               # format of the stream: ogg vorbis
bitrate         = 128                # bitrate of the stream sent to the server
server          = xx.xx.xxx.xxx   # host name of the server
port            = 8000               # port of the IceCast2 server, usually 8000
password        = xxxx            # source password to the IceCast2 server
mountPoint      = xxxx           # mount point of this stream on the IceCast2 server
name            = Darkice AAC   # name of the stream
description     = Darkice AAC   # description of the stream
url             = https://technic2radio.fr # URL related to the stream
genre           = my own        # genre of the stream
public          = yes           # advertise this stream?

[icecast2-1]
bitrateMode     = cbr           # average bit rate
format          = mp3           # format of the stream: ogg vorbis
bitrate         = 128           # bitrate of the stream sent to the server
server          = xx.xx.xxx.xxx # host name of the server
port            = 8000          # port of the IceCast2 server, usually 8000
password        = xxxx          # source password to the IceCast2 server
mountPoint      = xxxx.mp3      # mount point of this stream on the IceCast2 s$
name            = Darkice MP3   # name of the stream
description     = Darkice MP3   # description of the stream
url             = https://technic2radio.fr # URL related to the stream
genre           = my own        # genre of the stream
public          = yes           # advertise this stream?

Enregistrez et quittez l’éditeur (Ctrl+O puis Ctrl+X)
Vous pouvez maintenant lancer Darkice avec la commande suivante :

$ darkice

Auto start

$ sudo apt-get install daemontools daemontools-run
$ sudo mkdir /etc/service/darkice
$ sudo chmod 2775 /etc/service/darkice
$ sudo touch /etc/service/darkice/run
$ sudo nano /etc/service/darkice/run

Et ajoutez le texte suivant

#!/bin/sh
echo Running service
exec darkice

IP fixe

$ sudo nano  /etc/dhcpcd.conf

Et ajoutez le texte suivant

interface eth0
static ip_address=192.168.1.234/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

Notes et liens

]]>
https://technic2radio.fr/darkice-toutes-librairies-raspberry-pi/feed/ 2 6132
Simulation de diffusion en DAB+ https://technic2radio.fr/simulation-de-diffusion-dab/ https://technic2radio.fr/simulation-de-diffusion-dab/#comments Thu, 04 Jan 2018 12:14:54 +0000 https://technic2radio.fr/?p=6099 Lire la suite ...]]> Depuis l’article sur le Raspberry et la radio, je fouille le net à la recherche d’information dans le but d’écrire un article sur la diffusion en DAB+ et en particulier avec l’utilisation d’un Raspberry Pi. Autant on peut transformer un RPI en micro-émetteur FM (très faible puissance), autant il est impossible de diffuser en DAB+ sans passer par un “module” supplémentaire dont voici la liste :

Plus d’infos sur les modules complémentaires : http://wiki.opendigitalradio.org/DAB_hardware

L’objectif de ce tutoriel est de simuler une diffusion en DAB+ : de l’encodage à la simulation de diffusion en passant par le multiplexage.

OpenDigitalRadio

Coté software, je me suis concentré sur la solution open-source : OpenDigitalRadio. J’ai testé l’installation d’OpenDigitalRadio sur un RPI grâce au script très bien documenté sur github : https://github.com/glokhoff/RaspDAB.

Pour le test, j’ai utilisé un RPI 3 avec Raspbian Jessie

Préparation

$ sudo apt-get update
$ sudo nano /boot/config.txt

Ajoutez les deux lignes suivantes :

dtoverlay=pi3-disable-bt
dtoverlay=pi3-disable-wifi

Ajoutez l’utilisateur “odr” et donner lui un mot de passe

$ sudo adduser odr

Puis modifiez les droits de “odr”

$ sudo visudo -f /etc/sudoers

Ajoutez la ligne suivante après “root All=(ALL:ALL) ALL”

odr ALL=(ALL:ALL) ALL

Et rebootez votre Raspberry Pi :

$ sudo reboot

Se connecter en tant qu’utilisateur “odr”

$ su odr
$ cd

Installation de ODR mmbTools d’OpenDigitalRadio

$ sudo nano /etc/apt/sources.list

Supprimez le “#” au début de la ligne commençant par “deb-src”

$ sudo apt-get update

Nous allons utiliser un fork du script initial “Raspdab” disponible sur ce lien : https://github.com/glokhoff/RaspDAB . À la différence du dossier initial, vous aurez tous les fichiers de configuration nécessaire pour la poursuite du tutoriel.

$ git clone https://github.com/LyonelB/RaspDAB.git
$ cd RaspDAB
$ chmod +x raspdab.sh
$ ./raspdab.sh

Appuyez sur “Enter” et allez boire un café, l’installation dure à peu près deux heures … A la fin de l’installation, si vous souhaitez vérifier que ODR-Audienc fonctionnne, vos pouvez ouvrir « l’aide » :

$ odr-audioenc -h

Installation de Supervisor et création des fichiers de configuration

$ cd
$ sudo apt-get install supervisor
$ sudo mv /home/odr/RaspDAB/config /home/odr
$ mkfifo /home/odr/config/mot/radio1.pad /home/odr/config/mot/radio2.pad /home/odr/config/mot/radio3.pad /home/odr/config/mot/radio4.pad

Vous pouvez éditer le fichier de configuration pour modifier l’url de streaming de la « radio1 » avec la commande :

$ sudo nano /home/odr/config/supervisor/enc-radio1.conf

Ajoutez des « liens » à supervisor :

$ sudo ln -s /home/odr/config/supervisor/enc-radio1.conf /etc/supervisor/conf.d/enc-radio1.conf
$ sudo ln -s /home/odr/config/supervisor/enc-radio2.conf /etc/supervisor/conf.d/enc-radio2.conf
$ sudo ln -s /home/odr/config/supervisor/enc-radio3.conf /etc/supervisor/conf.d/enc-radio3.conf
$ sudo ln -s /home/odr/config/supervisor/enc-radio4.conf /etc/supervisor/conf.d/enc-radio4.conf
$ sudo ln -s /home/odr/config/supervisor/mux.conf /etc/supervisor/conf.d/mux.conf
$ sudo nano /etc/supervisor/supervisord.conf

et ajoutez les lignes suivantes :

[inet_http_server]
port = 9100
username = user ; Auth username
password = pass ; Auth password

Pour que les fichiers de configuration soient pris en compte par supervisor :

$ sudo supervisorctl reread
$ sudo supervisorctl update
$ sudo reboot

Rendez-vous sur l’ip de votre raspberry : http://xxx.xxx.x.xxx:9100

Supervisor Statuts

ODR-DabMux

Votre « multiplexeur » est prêt ! Les flux de vos 4 radios sont encodés par ODR-Dabenc et multiplexés par ODR-Dabmux. ODR-Dabenc et ODR-Dabmux sont lancés automatiquement. Vous pouvez controler leurs statuts via supervisor. Vous avez maintenant un seul flux au format ETI contenant les flux audio des radios et leurs data sur le port 18081.

Installation de Dablin

$ sudo apt-get install git gcc g++ cmake
$ sudo apt-get install libmpg123-dev libfaad-dev libsdl2-dev libgtkmm-3.0-dev
$ git clone https://github.com/Opendigitalradio/dablin.git
$ cd dablin
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install
$ cd

Installation de ZMQ ETI Receiver

$ su odr
$ cd
$ cd RaspDAB/dab/mmbtools-aux/zmqtest/zmq-sub
$ make
$ cd

Lecture du flux ETI via DABlin

$ /home/odr/RaspDAB/dab/mmbtools-aux/zmqtest/zmq-sub/zmq-sub 127.0.0.1 18081 | dablin -s 0xF005

Pour lancer DABlin avec l’interface graphique, si votre Raspberry Pi est relié à un écran

$ /home/odr/RaspDAB/dab/mmbtools-aux/zmqtest/zmq-sub/zmq-sub 127.0.0.1 18081 | dablin_gtk -s 0xF005

Sélectionnez une radio à écouter et branchez votre Raspberry a votre chaîne Hifi, vous avez désormais créé un multiplex DAB+ open-source.

DABlin

Sources :

https://groups.google.com/forum/#!topic/crc-mmbtools/etUFcqdZSmc

http://wiki.opendigitalradio.org/Etisnoop

https://github.com/mpbraendli/mmbtools-aux/tree/master/zmqtest/zmq-sub

]]>
https://technic2radio.fr/simulation-de-diffusion-dab/feed/ 1 6099
Carte son broadcast https://technic2radio.fr/carte-son-broadcast/ https://technic2radio.fr/carte-son-broadcast/#comments Wed, 02 Aug 2017 14:10:21 +0000 https://technic2radio.fr/?p=5899 Lire la suite ...]]> Vous utilisez quoi comme carte son pour vos applications broadcast ?

Je suis en veille permanente sur les cartes sons USB pour mes différents projets, en particulier ceux avec un Raspberry Pi, et voici mes critères :

  • Le moins possible de boutons de réglages (gain, volume, équalisation, …). La carte son est souvent branchée entre une console de mixage et un ordinateur ou un Raspberry Pi. La console dispose déjà des réglages nécessaires.
  • Juste ce qu’il faut d’entrées/sorties : bien souvent une paire d’entrées et de sorties suffisent.
  • Si possible des entrées symétriques avec un niveau « ligne » sur fiches Jack 6.35 ou XLR

Si l’on croise l’ensemble de ces critères, il ne nous reste pas beaucoup de choix. Je propose une liste des produits correspondant à mes critères. Je n’ai pas pris en compte la qualité des préamplis des cartes sons, je vous laisse vous référer aux spécifications techniques de chacune en suivant les liens vers les sites des constructeurs.

Symétrique (Balanced)

Yellowtec PUC2 : C’est l’interface audio numérique qui me semble la plus intéressante. Elle regroupe l’ensemble des critères et elle dispose également d’une entrée et d’une sortie AES/EBU.

ARX USB I/O : Simple, efficace et robuste. Juste le nécessaire.

Asymetrique (Unbalanced)

ESI U24XL : C’est un très bon rapport qualité/prix. Elle dispose d’entrées/sorties au format Jack 6.35, d’un boîtier en métal robuste et d’un bonne qualité audio. Seul bémol, son taux d’échantillonnage est faible : 24bits/48kHz.

ESI MAYA44 USB+ : 4 entrées, 4 sorties sur fiches RCA. Conçu dans le même type de boîtier que l’U24XL

Entrée OU sortie en symétrique

Peavey USB-P : Seulement deux sorties mais en symétrique et en XLR. Parfait si l’on souhaite raccorder un ordinateur à une console de mixage

Autres

Behringer UCA 202 : Très accessible au niveau tarif, peu encombrante, elle permet de se lancer, par exemple, dans des projets avec un Raspberry Pi sans se ruiner

Power P-USB450 :  Ce modèle n’est plus fabriqué. On est loin de la qualité des cartes sons d’ARX ou Yellowtec, mais elle disposait d’entrées sur fiches combo (Jack TRS ou XLR) , d’un boîtier en métal et d’une simple sortie stéréo sur fiches RCA. Très accessible au niveau tarif, elle est « plug and play » et très bien reconnue sous Linux.

iConnectAUDIO2+ et ConnectAudio2/4 : Hormis son (gros) potentiomètre rotatif, elles regroupent l’ensemble des critères. Annoncées avec des entrées/sorties symétriques et un prix relativement correct, ces interfaces titillent ma curiosité. Elles sont compatibles Mac OS, Windows et Linux, de plus le mixage du signal interne peut se faire grâce à l’écran tactile.

Et vous, vous utilisez quoi comme carte son ? 

]]>
https://technic2radio.fr/carte-son-broadcast/feed/ 9 5899
[Tuto] Liquidsoap + Raspberry Pi via Opam https://technic2radio.fr/tuto-liquidsoap-raspberry-pi-via-opam/ https://technic2radio.fr/tuto-liquidsoap-raspberry-pi-via-opam/#comments Mon, 31 Jul 2017 16:01:14 +0000 https://technic2radio.fr/?p=5887 Lire la suite ...]]> Ce tutoriel fait suite à un précédent post sur l’installation de Liquidsoap sur Raspberry Pi, afin d’encoder un flux audio et le transmettre à un serveur Icecast. Ce second tuto indique comment installer Liquidsoap en passant par Opam (un gestionnaire de paquet pour OCaml, un langage informatique). L’avantage de cette installation c’est qu’elle permet d’obtenir la dernière version de Liquidsoap.

Pour l’écriture de ce tutoriel, j’ai bénéficié de l’aide de d’autres utilisateurs de Liquidsoap via la mailing-list. Je tiens à remercier Nicholas pour le partage de son tutoriel  ainsi que Romain Beauxis (contributeur de Liquidsoap) pour son aide.

Pour ce tutoriel, nous avons utilisé le matériel suivant :

Pré-configuration

Pour commencer, il faut télécharger l’image de Raspbian Jessie : https://www.raspberrypi.org/downloads/raspbian/
Une fois téléchargé et décompressé, nous passons par Etcher pour transférer l’image sur la carte SD.
Une fois la carte SD inséré dans le Raspberry Pi et que tout est branché, on commence par tout mettre à jour :

$ sudo apt update && sudo apt -y upgrade && sudo apt -y dist-upgrade

Liquidsoap

On commence par installer Opam et M4, indispensable avant d’initialiser Opam

$ sudo apt-get install opam m4

Puis, nous allons créer l’utilisateur « liquidsoap » que nous allons ajouter au groupe « audio »

$ sudo adduser liquidsoap
$ sudo adduser liquidsoap audio

Il vous sera demandé de créer un mot de passe pour l’utilisateur.
On change d’utilisateur et on modifie le dossier dans lequel on se trouve

$ su liquidsoap
$ cd ~

Pour la suite, le terminal risque d’indiquer des erreurs, elles n’ont aucune incidence sur le fonctionnement de Liquidsoap.
Il faudra répondre positivement (y) lors de la demande pour la mise à jour de .bashrc

$ opam init
$ exit
$ su liquidsoap
$ opam update
$ opam install depext

Attention à ne PAS accepter l’installation des paquets à l’étape suivante
→ il faut répondre « n »

$ opam depext taglib mad lame vorbis cry pulseaudio liquidsoap
$ exit
$ sudo apt-get install libmp3lame-ocaml-dev libtaglib-ocaml-dev libalsa-ocaml-dev libpulse-ocaml-dev libmad-ocaml-dev libcry-ocaml-dev libvorbis-ocaml-dev libogg-ocaml-dev libopus-ocaml-dev
$ su liquidsoap
$ opam install lame pulseaudio mad alsa taglib cry opus liquidsoap
$ exit

Liquidsoap est maintenant installé ! 

Configuration

Il nous reste à configurer Liquidsoap et d’ajouter les informations nécessaires : choix de l’encodage, adresse et port du serveur, informations du flux …

$ sudo ln -s /home/liquidsoap/.opam/system/bin/liquidsoap /usr/bin/liquidsoap
$ sudo mkdir /etc/liquidsoap
$ sudo nano /etc/liquidsoap/radio.liq

Exemple de fichier radio.liq

#!/usr/bin/liquidsoap
set("log.file.path", "/tmp/basic-radio.log")

stream = input.alsa(device="plughw:1,0")
output.icecast(%mp3(bitrate=128, samplerate=44100, ),
host="XX.XX.XXX.XXX",
port=8000,
password="XXXX",
mount="radio.mp3",
url="https://technic2radio.fr",
name="technic2radio",
genre="Music",
description="Test Liquidsoap",
public=false,
fallible=true,
stream)

Attention à la valeur indiquée pour « plughw », il s’agit de savoir quelle carte son utiliser. Vous pouvez lancer la commande « arecord -l » pour savoir quelle carte son utiliser.

Puis on termine la configuration

$ sudo chmod +x /etc/liquidsoap/radio.liq
$ sudo touch /tmp/basic-radio.log
$ sudo chown -R pi /tmp/basic-radio.log

Pour démarrer le flux, il suffit de lancer la commande et de se rendre à l’adresse du flux

$ /etc/liquidsoap/radio.liq
]]>
https://technic2radio.fr/tuto-liquidsoap-raspberry-pi-via-opam/feed/ 16 5887
[Test] Ethernet Broadcaster https://technic2radio.fr/test-ethernet-broadcaster/ https://technic2radio.fr/test-ethernet-broadcaster/#respond Thu, 04 May 2017 12:16:06 +0000 https://technic2radio.fr/?p=5686 Lire la suite ...]]> Présentation

L’Ethernet Broadcaster est un petit système embarqué utilisé pour transmettre ou recevoir un flux audio sur une connexion Internet ou sur un réseau LAN. La carte a une taille compacte, les dimensions sont seulement de 60 x 56 mm et sa hauteur est inférieure à 20mm. La carte peut être utilisée comme module ou insérée dans une boîte à partir desquels sont sortis les connecteurs audio, électriques et Ethernet.

L’Ethernet Broadcaster peut fonctionner comme un « client » intégré pour diffuser le signal audio numérique transmis par IP. Il s’agit d’un  périphérique conçu pour prendre en charge l’ audio compressé MPEG-1 Layer 3 et Ogg Vorbis . L’encodage et le décodage ont lieu en temps réel par le processeur DSP et le signal de sortie est à la fois en forme numérique (USB) et analogique (mini-jack). Toutes ces fonctionnalités vous permettent de connecter rapidement et sans effort un système audio à Internet. Développé avec la pensée de la facilité d’ utilisation , l’Ethernet Broadcaster peut être géré par un navigateur Web standard, à partir de: PC, PDA, Smartphone, etc..

Caractéristiques

  • Codage et décodage audio en temps réel MPEG-1, MPEG-3 et Ogg Vorbis;
  • Taux d’échantillonnage supporté : 32 kHz, 44,1 kHz et 48 kHz;
  • Prise en charge de tous les débits standard : CBR ou VBR;
  • 4 LED à l’avant pour un diagnostic rapide;
  • 3 boutons-poussoirs programmables par l’utilisateur (prochainement)
  • Connecteur hôte USB pour le stockage;
  • Annonceur d’adresse IP au démarrage ou détectable via BroadcasterDiscovwerer.jar
  • Statique ou DHCP assignant automatiquement les paramètres réseaux;
  • Installation facile via un navigateur Web standard (HTML5 et javascript sont requis);
  • UPnP pour une découverte facile dans les réseaux locaux;
  • Flux TCP / IP compatible Shoutcast / Icecast;
  • Sortie audio analogique (1 x jack 3,5 mm);
  • Entrée audio analogique (1 x jack 3,5 mm);
  • Connecteur Ethernet RJ-45.

Connexion

On commence par relier l’Ethernet Broadcaster au réseau via la prise RJ45, on alimente et lance l’utilitaire BroadcasterDiscovwerer.jar afin de découvrir l’ip de la carte :

Il nous reste plus qu’à accéder à l’IP indiqué (dans notre cas : 192.168.1.203) via le navigateur web de notre choix :

l’administration de la carte est protégé par un identifiant et un mot de passe, les valeurs par défaut vous sont indiquées sur la page d’accueil. Vous pouvez modifier ces valeurs via l’onglet « Authentification ».

Icecast Source client

Le test portera sur la transmission audio vers un serveur Icecast/Shoutcast via l’Ethernet Broadcaster. Dans l’onglet « Stream », on commence par choisir le mode « IceCast or ShoutCast Source Transmitter  (client mode) » dans la section « Stream modality »

Difficile de faire plus clair ?

Il ne reste plus qu’à compléter les champs :

  • Transmits to : Icecast server, Shoutcast server
  • Remote address : l’adresse IP de votre serveur Icecast/Shoutcast
  • Remote resource (Path) : point de montage précédé du « / »
  • Remote port : port
  • Username : l’identifiant de connexion au serveur Icecast/Shoutcast
  • Password : mot de passe de connexion au serveur Icecast/Shoutcast
  • Name : nom de la radio (optionnel)
  • Description : description de votre radio (optionnel)
  • Genre : genre de la radio (optionnel)
  • Radio WEB site : url du site web de la radio (optionnel)
  • Auto connection : connexion automatique au démarrage
  • Reconnection attempts : nombre de tentatives de connexion au serveur avant abandon
  • Reconnection delay : temps d’attente entre deux tentatives de connexion
  • Connection timeout : temps d’attente lors de la tentative de connexion avant de considérer la connexion expirée
  • Source input : « Analog Line-In » ou  » USB Files »
  • Manual Input Gain : réglage manuel de l’amplification du signal d’entré
  • Maximum autogain (AGC) : réglage de l’auto-gain, cette fonction est désactivé si le réglage manuel n’est pas à 0.
  • Encoding format : « MP3 » ou « Ogg Vorbis »
  •  Samplerate : 8000, 16000, 32000, 44100 ou 48000 Hz
  • Bitrate : 32, 64, 96, 128, 160, 192, 256, 320 kbps
  • Channels : Joint stéréo (common AGC), Dual channel (separate AGC), left channel, right channel, mono downmix
  • Bitrate mode : Variable bitrate (VBR), Constant bitrate (CBR)

On enregistre et on applique (Save and Apply) et on se dirige maintenant vers l’onglet « Status »

On clique sur « Connect » et si la configuration est conforme, le message « Status: Line-In Streaming » devrait apparaître  en haut de l’interface web.

A noter que l’Ethernet Broadcaster peut être utilisé pour différentes applications. Le choix se fait via l’interface dans l’onglet « Stream » et dans la section « Stream modality » :

  • Unicast receiver (TCP client)
  • Broadcast receiver (UDP client)
  • Unicast transmitter (TCP server)
  • Broadcast transmitter (UDP client)
  • Local player (from USB)

  

 

Vu la simplicité de paramétrage, nous n’avons pas jugé nécessaire de détailler  les tests des autres fonctions.

Actuellement, les 3 boutons poussoirs ne sont pas programmable mais des fonctions leur sont attribués par défaut :

  • bouton gauche/droite : augmenter/baisser le volume lorsque l’Ethernet Broadcaster est en lecture (receiver)
  • bouton central : démarrer/arrêter la connexion

 

On a aimé

  • une interface web agréable
  • la multitude d’options
  • la simplicité de paramétrage
  • le format compact
  • son petit prix (environ 78€, sans boitier ni alimentation)

On aurait aimé

  • une meilleure connectique pour les entrées/sorties audio analogique (RCA, Jack 6.35 ou XLR)
  • la prise en charge du format Opus
  • de nombreux réglages et options sont disponibles (Balance, Bass enhancement, Bass frequency, Treble enhancement, Treble frequency) pour la sortie audio mais il n’y a qu’un réglage du gain pour l’entrée.

Remerciements

Merci à Luca Pascarella, développeur de l’Ethernet Broadcaster, et à Boris de Futura Group Srl pour la mise à disposition de la carte et pour leur écoute.

Plus d’infos

]]>
https://technic2radio.fr/test-ethernet-broadcaster/feed/ 0 5686
Titre en cours et Raspberry Pi https://technic2radio.fr/titre-cours-raspberry-pi/ https://technic2radio.fr/titre-cours-raspberry-pi/#comments Wed, 26 Oct 2016 15:13:14 +0000 https://technic2radio.fr/?p=5381 Lire la suite ...]]> Vous souhaitez afficher le titre en cours de diffusion de votre radio sur TuneIn ? de créer un flux Twitter qui créera un post pour chaque titre diffusé ? Cet article énumère les solutions et scripts qui vont vous permettre de le faire. A noter que si vous n’avez pas de Raspberry Pi, vous pouvez utiliser un ordinateur avec Ubuntu ou Debian. Nous allons seulement utiliser le Cron de la machine pour « pousser » le titre en cours vers la plateforme que l’on souhaite alimenter.

Tunein

Pour TuneIn, il faudra avant tout demander une clé et un ID partenaire, pour cela il faudra également que vous ayez déjà ajouté votre flux à la plateforme. Si ce n’est pas déjà fait, vous devrez remplir ce formulaire : http://tunein.com/syndication/new/?IsBroadcaster=true

Une fois que vous avez ajouté votre radio et obtenu la clé et l’ID partenaire, vous avez deux solutions :

  • Soit votre logiciel d’automation radio envoie les données (titre et artiste en cours) vers votre Icecast (Version 2.4 minimum). Vous avez donc une url du type http://nomdelaradio.com:8000/status-json.xsl . Il ne vous reste plus qu’à télécharger ce script : https://github.com/Nomy/tunein-air-api-php/blob/master/tunein-cron.php et à modifier les champs dans les sections « TuneIn API settings » et « Get data from IceCast2 status-json.xsl ».
  • Soit votre logiciel d’automation radio envoie les données vers un script php hébergé sur votre site web qui va générer une url de la forme : http://nomdelaradio.com/title.html. Il ne vous reste plus qu’à télécharger ce script : https://github.com/Nomy/tunein-air-api-php-url/blob/master/tunein-cron.php et à modifier les champs dans les sections « TuneIn API settings » et « Get data in Plain Text from URL »

Il faudra ensuite uploader (via ftp) votre fichier tunein-cron.php sur serveur web afin d’obtenir une url du type http://nomdelaradio.com/tunein-cron.php

C’est maintenant que le Raspberry Pi rentre en jeu. Plutôt que d’utiliser un ordinateur bruitant, gourmand et volumineux nous allons utiliser un Raspberry Pi.

Ouvrez le terminal et tapez :

$ crontab -e

Si c’est la première fois que vous entrez cette ligne de commande, vous devrez choisir un éditeur (nano, vim …). Nano vous sera recommandé. Une fois le fichier ouvert, il suffit d’ajouter la ligne suivante, en prenant soin de modifier « http://nomdelaradio.com » :

* * * * * for i in 0 1 2 3 ; do wget http://nomdelaradio.com/tunein-cron.php -O /dev/null & sleep 15; done

Ctrl+O pour enregistrer puis Ctrl+X pour fermer l’éditeur.

Votre Raspberry Pi enverra donc des requêtes toutes les 15 secondes vers votre fichier tunein-cron.php qui se chargera te mettre à jour les informations (Titre et Artiste) sur la page TuneIn de votre radio. Il ne vous reste plus qu’à vous rendre sur TuneIn et de laisser le Raspberry pi faire son travail.

Merci à Nomy pour ces deux scripts !

Twitter

Le script utilisé dans ce tutoriel prend en charge les serveurs Shoutcast et Icecast. Nous partons du principe que avez un compte Twitter, vous allez devoir ensuite enregistrer une API via http://dev.twitter.com/apps/new afin d’obtenir les informations suivantes : « Consumer key token », « Consumer secret token », « Access Token » et « Access Token Secret »

Il faudra ensuite télécharger l’ensemble des fichiers présents sur ce dépôt Github : https://github.com/dlnetworks/twittercast puis modifier le fichier en fonction de votre serveur (shoutcast_v1.php, shoutcast_v2.php ou icecast.php) en ajoutant les informations de votre serveur de streaming ainsi que pour votre API Twitter.

Si vous préférez utiliser une autre « source » pour récupérer le titre (exemple : http://nomdelaradio.com/titre.html) vous pouvez utiliser ce script :
https://github.com/dlnetworks/twittercast/issues/4#issuecomment-257041933

Nous uploadons les fichiers sur notre serveur web afin d’obtenir une url du type : http://nomdelaradio.com/twittercast/icecast.php . Attention à bien modifier les droits du fichier et à mettre la valeur 755 pour que tout fonctionne.

Comme pour TuneIn, nous allons utiliser le Cron du Raspberry Pi pour envoyer des requêtes régulières au fichier php hébergé sur notre serveur.

$ crontab -e

Et on ajoute la ligne suivante :

*/3 * * * * wget http://nomdelaradio.com/twittercast/icecast.php

Votre Raspberry Pi enverra ainsi des requêtes toutes les 3 minutes au script icecast.php qui créera un nouveau tweet à chaque fois que les informations (titre et artiste) changerons.

]]>
https://technic2radio.fr/titre-cours-raspberry-pi/feed/ 5 5381
OpenOB – Liaison IP par Raspberry Pi https://technic2radio.fr/openob-liaison-ip-par-raspberry-pi/ https://technic2radio.fr/openob-liaison-ip-par-raspberry-pi/#comments Wed, 21 Sep 2016 10:19:14 +0000 https://technic2radio.fr/?p=5329 Lire la suite ...]]> On a régulièrement besoin de pouvoir transmettre du son d’un point A à un point B, lorsque l’on fait un plateau extérieur ou pour relier le studio au site de l’émetteur, le tout avec un temps de délais le plus faible possible. Pour cela vous pouvez utiliser deux Raspberry Pi avec des cartes sons externes et le logiciel OpenOB.

Pour ce tutoriel, j’ai utilisé le matériel suivant :

Attention, le tutoriel est à suivre en partant d’une installation « fraîche » de Raspbian Stretch Lite

OpenOB – Open Audio over IP for Broadcasters

OpenOB est un logiciel audio sur IP conçu pour les broadcasters, les techniciens radio et les intégrateurs systèmes. Le logiciel a été conçu et développé par James Harrison.

Le but du projet est de fournir un cadre simple pour configurer et gérer des liaisons à faible délai audio entre les appareils sur des réseaux IP standard, avec une API de programmation conviviale pour une intégration facile dans d’autres projets.

Source :

Je tenais avant tout à remercier Clod Y-Us pour avoir partager en commentaire sur la page facebook le fait de pouvoir réaliser des liaisons via OpenOB ainsi que Casa36 pour son tuto sur radios-fr.com et ses échanges en messages privés.

Installation :

Nous commençons par mettre à jour le RPI :

$ sudo apt-get update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade

Puis on installe les paquets nécessaires pour OpenOB :

$ sudo apt-get -y install python-gst-1.0 gstreamer1.0-plugins-ugly gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-alsa python-gobject python-redis redis-server python-pip

Il faut maintenant configurer le serveur Redis ( l’installation et la configuration de redis-server n’est nécessaire que sur le recepteur ) :

$ sudo sed -i.bak 's/bind 127.*/bind 0.0.0.0/' /etc/redis/redis.conf && sudo service redis-server restart 

Nous pouvons maintenant installer OpenOB :

$ sudo pip install OpenOB

Réception :

Il faut d’abord lancer la machine qui doit recevoir le signal. La commande se compose ainsi : openob « IP de la machine qui émet » « nom de la machine qui reçoit » « nom de la liaison » rx

Nom de la machine qui reçoit : On peut mettre ce que l’on veut, dans l’exemple, j’ai indiqué « recepteur »

Nom de la liaison : On peut mettre ce que l’on veut, dans l’exemple, j’ai indiqué « transmission ». Attention a bien mettre le même nom sur les deux machines

$ openob 192.168.1.109 recepteur transmission rx -a alsa -d hw:1,0 

Emission :

Nous pouvons maintenant lancer la commande sur le RPI qui diffusera. La commande se compose ainsi : openob « IP de la machine qui émet  » « nom de la machine qui émet » « nom de la liaison » tx « IP de la machine qui reçoit »

  • IP de la machine qui émet : 192.168.1.109 (cette IP est a modifier en fonction de votre configuration)
  • Nom de la machine qui émet  : On peut mettre ce que l’on veut, dans l’exemple, j’ai indiqué « emetteur »
  • Nom de la liaison : j’ai indiqué « transmission », comme sur le RPI qui reçoit.
$ openob 192.168.1.109 emetteur transmission tx 192.168.1.161

La commande me renvoie l’erreur suivante :

WARNING - Waiting for audio interface/caps

Nous allons lancer la commande arecord -l pour faire un point sur la carte son que l’on souhaite utiliser :

**** Liste des Périphériques Matériels CAPTURE ****
carte 1: U24XL [U24XL], périphérique 0: USB Audio [USB Audio]
 Sous-périphériques: 1/1
 Sous-périphérique #0: subdevice #0

Dans mon cas, j’utilise une carte son externe USB. Il faut ajouter dans la commande une information pour préciser quelle carte on veut utiliser : hw:1,0. Ce qui nous donne :

$ openob 192.168.1.109 emetteur transmission tx 192.168.1.161 -d hw:1,0

Erreur ! ça ne fonctionne pas, il semble y avoir un problème avec Alsa :

AL lib: (WW) alc_initconfig: Failed to initialize backend "pulse"
AL lib: (EE) alsa_open_capture: Could not open capture device 'default': No such file or directory

On ajoute « -a alsa » dans la commande :

$ openob 192.168.1.109 emetteur transmission tx 192.168.1.161 -a alsa -d hw:1,0 

Victoire ! Tout fonctionne, le son sort du RPI qui reçoit.

]]>
https://technic2radio.fr/openob-liaison-ip-par-raspberry-pi/feed/ 19 5329
Audio Injector – Carte son pour Raspberry Pi https://technic2radio.fr/audio-injector-carte-raspberry-pi/ https://technic2radio.fr/audio-injector-carte-raspberry-pi/#comments Fri, 16 Sep 2016 15:33:50 +0000 https://technic2radio.fr/?p=5313 Lire la suite ...]]> Si vous me suivez sur les réseaux (Facebook, Twitter ou Instagram) vous êtes déjà au courant que j’ai récemment reçu un colis de la part de Flatmax, l’entreprise qui a développé une carte son pour le Raspberry Pi : Audio Injector Soundcard for Raspberry Pi

Rappel des spécifications de la carte :

  • Headphones: 50 mW max power into 16 ohm and 30 mW max power into 32 Ohm headphones (check the updates to see more)
  • Driver : ALSA
  • Latency: As low as 0.54 ms in or out (that is 540 microseconds !)
  • Linux : Already integrated into the Raspberry Pi kernel. If you have an older version of the kernel, simply run « rpi-update » if you need to. Edit /boot/config.txt and set dtoverlay=audioinjector-soundcard
  • DAC and ADC : 96 kHz, 32 bit audio.
  • Analog Voltage : 3.3 V rail to rail. Separate linear supply to reduce noise.
  • GPIO : Standard 40 Pin header, broken out above the add on card to accept more add on cards and hats.

Sitôt reçu, sitôt branché :

audio-injector-raspberry-pi

Pour que la carte soit reconnue par le RPI (Raspberry Pi) je me suis rendu sur leur forum : http://www.flatmax.org/phpbb/ et suivi les instructions.

Méthode graphique : souris + clavier + écran sur RPi

Télécharger le paquet .deb : audio.injector.scripts_0.1-1_all.deb.tar.gz

Décompressez-le et lancez son installation en double cliquant sur le fichier .deb

En passant par le terminal : connecté en SSH au RPi

$ wget https://technic2radio.fr/wp-content/uploads/audio.injector.scripts_0.1-1_all.deb.tar.gz
$ tar zxvf audio.injector.scripts_0.1-1_all.deb.tar.gz
$ sudo dpkg -i audio.injector.scripts_0.1-1_all.deb

Lancer la configuration

Ouvrez un terminal et entrez la commande suivante :

$ audioInjector-setup.sh

Le script va mettre à jour le RPI (en lançant rpi-update) puis modifier le fichier /boot/config.txt pour que la carte soit reconnue (dtoverlay=audioinjector-wm8731-audio). Le RPI va ensuite redémarrer pour prendre en charge la nouvelle carte son.

On vérifie :

pi@raspberrypi:~ $ arecord -l
**** Liste des Périphériques Matériels CAPTURE ****
carte 0: audioinjectorpi [audioinjector-pi-soundcard], périphérique 0: AudioInjector audio wm8731-hifi-0 []
 Sous-périphériques: 1/1
 Sous-périphérique #0: subdevice #0

Lors de mes échanges avec l’équipe de Flatmax, je leur avait fait part de ma volonté de recevoir la carte sans micro. Nous allons donc configurer la carte pour que les entrées/sorties RCA soient actives par défaut (une autre commande existe pour choisir le micro par défaut)

$ alsactl --file /usr/share/doc/audioInjector/asound.state.RCA.thru.test restore

Un petit tour sur le mixeur Alsa :

$ alsamixer

capture-du-2016-09-16-17-24-28

Tout semble ok, si nous souhaitons activer ou non des pistes, il suffit de se déplacer via les flèches ←→ et de cliquer sur la touche « m » de votre clavier.

J’ai réalisé quelques tests en m’appuyant sur les précédents tuto consacrés au RPI. Les premiers essais ont été très concluants, c’est très agréable de pouvoir régler les volumes d’entrée et de sortie via les potentiomètres. Elle permet  d’avoir une sortie casque de qualité, du moins de bien meilleure qualité que celle présente sur le RPI. Avec le RPI configuré pour « streamer » un flux, j’ai rencontré principalement une erreur concernant le buffer, je reviendrai prochainement dessus

Si vous souhaitez acquérir l’Audio Injector Sound Card :

Amazon : https://www.amazon.co.uk/Audio-Injector

Ebay : http://www.ebay.com.au

>>> Mise à jour <<<<

En janvier 2017, l’équipe de Flatmax Studio a lancé un nouveau projet : une carte son multichannel avec 6 entrées et 8 sorties : L’Octo Sound Card !

 

Carte son pour @raspberrypifoundation : 6 entrées et 8 sorties ! Par Flatmax Studios #soundcard #Octo #RaspberryPi #audio

Une publication partagée par technic2radio (@technic2radio) le

]]>
https://technic2radio.fr/audio-injector-carte-raspberry-pi/feed/ 2 5313