
Au départ, l'objectif de ce projet à domicile était de créer un récepteur radio Internet à partir du Raspberry Pi. Je voulais trouver ou restaurer un vieux récepteur en bois, ou au moins un étui, y mettre une framboise, une batterie, un blackjack et lui donner un wifi. En raison du manque de temps, tout cela a été mis en sécurité dans un long tiroir, mais, peut-être, je m'en rendrai compte au fil du temps. Mais j'ai fait la partie programme du projet, dont je veux parler.
Faire une vieille radio pour que des débits modernes limpides en sonnent n'est pas comme il faut, à mon avis. Autrement dit, laissez-les sonner aussi, mais il serait doublement agréable pour moi de la vieille radio d'entendre le son authentique de ces temps où il n'y avait pas encore de convertisseurs d'impulsions et où les licornes se promenaient allègrement dans les rues. La recette pour vieillir un son que j'imagine:
- Signal utile 1 ... 10 μV,
- Écho de 0,3 μV, de la même transmission à la même fréquence, mais d'un endroit différent,
- Signal 0,2 μV d'une autre station diffusant à la même fréquence
- une goutte de sifflet d'interférence, plus nécessaire, car ennuyeux,
- Bruit d'entrée 0,1 μV
- l'ingrédient secret est la décoloration, c'est-à-dire la décoloration de tous les signaux répertoriés, à l'exception du bruit des circuits d'entrée, ils feront leur travail avec l'AGC - ajustement automatique du gain, à la suite duquel l'un des signaux de fond viendra périodiquement au premier plan, comme c'est le cas dans la vraie radio,
- Eh bien, au goût, coupez les fréquences supérieures.
Il est entendu que la radio fonctionne sur des ondes moyennes, le soir et que le signal voyage loin. La liste peut être continuée indéfiniment, mais les ressources de la framboise sont limitées, et je veux démarrer de nombreux threads et basculer entre eux. Par conséquent, je me suis limité à ce qui précède. Il a conçu tout cela sous la forme d'un serveur basé sur Icecast et un certain nombre d'autres utilitaires utiles. Ce serveur m'aide à créer une ambiance festive lors des vacances du Nouvel An. Peut-être utile à quelqu'un d'autre.
Le principe du serveur est le suivant: deux flux audio d'entrée provenant d'Internet sont convertis en wav à l'aide de ffmpeg, ici la fréquence d'échantillonnage est réduite afin de supprimer les hautes fréquences, ainsi que de faciliter le travail du processeur.
Les flux passent ensuite par un processeur de son impromptu écrit en C. Je demande aux spécialistes de la programmation système de ne pas trop me botter pour d'éventuelles erreurs, dans la vie normale, je suis développeur web, et pour moi, c'est comme une version rapide de bash. Ici, chaque signal se voit attribuer une valeur de niveau en tenant compte de l'évanouissement, les signaux sont additionnés en tenant compte des niveaux, puis le signal total est divisé par la valeur de niveau totale, ainsi l'AGC est simulé, et le volume du son reçu sera approximativement constant.
Le flux de sortie est codé par oggenc et, en utilisant ezstream, est envoyé au serveur Icecast, où il devient disponible pour l'écoute.
Vous pouvez cloner le projet à partir d'ici , il y a aussi des instructions d'installation. Il est préférable de l'installer d'abord non pas sur Raspberry, mais sur Linux de bureau ordinaire, car vous devrez peut-être bricoler avec Raspberry avec l'assemblage manuel de certains composants. Au lieu du script stream-template-1206am, il y avait un script avec mes stations de radio préférées pour les protéger contre un éventuel habraeffet, et la conscience contre les remords, remplacé par des bouchons. Au lieu de cela, mettez des flux audio à votre goût et que le son chaud du tube soit avec vous.
Toutes bonnes et bonnes vacances!
MISE À JOUR: Sur les conseils de l'utilisateur, Logonoff a ajouté un exemple de la façon dont cela sonne au projet.