
Pada awalnya, tujuan dari proyek rumah ini adalah untuk membuat penerima radio internet dari Raspberry Pi. Saya ingin mencari atau mengembalikan beberapa penerima kayu tua, atau setidaknya kasing, meletakkan Raspberry, baterai, blackjack di sana, dan memberikan wifi. Karena kurangnya waktu, semua ini dengan aman dimasukkan ke dalam laci panjang, tetapi, mungkin, saya akan menyadarinya dari waktu ke waktu. Tetapi saya mengerjakan bagian program dari proyek, yang ingin saya bicarakan.
Untuk membuat radio tua sehingga bitrate modern yang jernih akan terdengar dari itu tidak aman, menurut pendapat saya. Begitulah, biar mereka terdengar juga, tetapi akan sangat menyenangkan bagi saya dari radio lama untuk mendengar suara otentik pada saat-saat ketika belum ada konverter denyut nadi, dan unicorn berjalan dengan ceroboh di jalanan. Resep untuk cara menua suara yang saya bayangkan:
- 1 ... 10 μV sinyal yang berguna,
- 0,3 μV gema, dari transmisi yang sama pada frekuensi yang sama, tetapi dari tempat yang berbeda,
- Sinyal 0,2 μV dari stasiun lain menyiarkan pada frekuensi yang sama
- setetes peluit gangguan, tidak perlu lagi, karena menyebalkan,
- 0,1 μV input noise
- bahan rahasia memudar, yaitu memudar dari semua sinyal yang terdaftar, kecuali suara dari sirkuit input, mereka akan melakukan pekerjaan mereka bersama-sama dengan AGC - penyesuaian gain otomatis, sebagai akibatnya salah satu sinyal latar belakang akan muncul secara berkala, seperti halnya di radio asli,
- Nah, secukupnya, potong frekuensi atas.
Dapat dipahami bahwa radio beroperasi pada gelombang sedang, waktu malam, dan sinyalnya berjalan jauh. Daftar ini dapat dilanjutkan tanpa batas waktu, tetapi sumber daya raspberry terbatas, tetapi saya ingin memulai banyak utas dan beralih di antaranya. Karena itu, saya membatasi diri pada hal di atas. Dia mendesain semua ini dalam bentuk server berdasarkan Icecast dan sejumlah utilitas berguna lainnya. Server ini membantu saya menciptakan suasana meriah pada liburan Tahun Baru. Mungkin bermanfaat bagi orang lain.
Prinsip server adalah ini: dua input audio stream yang diambil dari Internet dikonversi ke wav menggunakan ffmpeg, di sini frekuensi sampling dikurangi untuk menghilangkan frekuensi tinggi, serta memudahkan kerja prosesor.
Streaming kemudian melewati prosesor suara dadakan yang ditulis dalam C. Saya meminta spesialis dalam pemrograman sistem untuk tidak banyak menendang saya untuk kemungkinan kesalahan, dalam kehidupan normal saya seorang pengembang web, dan C bagi saya adalah sesuatu seperti versi cepat dari bash. Di sini, setiap sinyal diberi nilai level dengan memperhitungkan fading, sinyal diringkas dengan memperhitungkan level, lalu sinyal total dibagi dengan nilai level total, sehingga AGC disimulasikan, dan volume suara yang diterima akan mendekati konstan.
Aliran output dikodekan oleh oggenc dan, menggunakan ezstream, dikirim ke server Icecast, di mana ia tersedia untuk mendengarkan.
Anda dapat mengkloning proyek dari sini , ada juga instruksi instalasi. Lebih baik untuk menginstalnya terlebih dahulu bukan pada Raspberry, tetapi pada Linux desktop biasa, karena Anda mungkin harus mengotak-atik raspberry dengan perakitan manual dari beberapa komponen. Alih-alih skrip stream-template-1206am, ada skrip dengan stasiun radio favorit saya untuk melindungi mereka dari kemungkinan perilaku, dan hati nurani dari penyesalan, diganti dengan colokan. Alih-alih, pasang streaming audio sesuai selera Anda dan semoga tabung hangat itu menyertai Anda.
Semua liburan bagus dan bahagia!
UPDATE: Atas saran pengguna, Logonoff menambahkan sampel bagaimana ini terdengar ke proyek.