Тема: Як видати та зчитати звук лінукс?
Доброго дня!
Роблю програму для радіомодема для Ubuntu 16.04.
Що таке радіомодем, див. в інтернеті. Радіомодем - це якби передача цифрових даних через радіопередавач. Є готові модеми, є саморобні. Саморобні приєднуються до "шарманок", тобто нелегальних радіопередавачів.
Але головна роль при створенні такого модема - це правильне і швидкісне перетворення нулів та одиниць в якийсь сигнал, який має бути переданий на цю шарманку.
Люди роблять з КОМ-портом, проте у мене немає ком-шнура і я не можу це зробити.
Я не знайшов нічого простішого, аніж передавати тональний сигнал напряму через аудіовихід ноутбука, замість мікрофона шарманки.
Тобто, програма на комп’ютері має генерувати тональний сигнал і передавати на мікофонний вхід шарманки. Далі, цей сигнал передається шарманкою в ефір.
До іншого компа має бути підключений радіоприймач, аудіовихід якого має бути ввіткнутий в мікрофонний вхід компа. На цьому компі має стояти така ж програма, яка має розшифровувати тональний сигнал в нулі і одиниці.
Я спеціально подивився, моя звукова карта підтримує до 148000 гц на виході (до 148 кГц), тобто це межа, на якій передаються дані.
А далі - С та С++. Потрібно в режимі реального часу, 148 тисяч разів на секунду формувати і видавати сигнал на звукову карту. Навіть якщо використовувати буфер, то хоча б 1000 разів на секунду. Тут може справитися тільки програмна передача звуку. Тому, будь-які зовнішні програми, запуск яких забирає багато часу (для цього модему мені не потрібен суперкомп), ві-па-да-ють! Тільки програмна передача.
Я знайшов, що мені потрібно передавати звук за допомогою відкриття файлу /dev/dsp і записування в нього інформації. Проте, на моєму компі цього файлу немає.
https://en.wikipedia.org/wiki/Open_Sound_System
Пізніше, я знайшов, що цей файл доспутний тільки в Убунту нижче 10.04, а починаючи з цієї версії, файл було прибрано.
Я гуглив де тільки міг впродовж 3-х днів на англійській, російській та англійських мовах і не знайшов жодної відповіді без використання сторонніх бібліотек, які не можуть так швидко передавати сигнал, як напряму.
А як приймати звук, я взагалі не знайшов, навіть для старих версій лінукс. Прошу допоможіть.