Не нравится мне современная тенденция развития программных средств. Создаются какие-то монстры. Если разобраться, то передача и прием звука по сети интернет не такая уж и сложная задача. Есть АЦП и ЦАП, есть интернет, есть какая то графика для отображения программы. В своей Windows версии «Шарманки» я старался делать как можно проще. Работа со звуком с самой первичной виндусовой библиотекой, без всяких там DirectX и прочих оберток. Графика в WinAPI, изначальная философия Windows. Работа по сети - самая стандартная библиотека TCP/IP. Поэтому программа получилась более или менее компактной по сравнению с другими аналогичными программами. Попытался сделать версию под Linux, для начала в консольной версии. Что то получилось, но другая философия работы со звуком, отсутствие единого стандарта звука позволяет использовать эти наработки только для конкретных железок, в основном в микрокомпьютерах. Raspberry PI, OrangePi, и в основном для своего личного употребления. И уже заметны сложности, была изначально очень простая для понимания библиотека OSS, но теперь она осталась в современных версиях Linux только в режиме эмуляции. ALSA уже более сложная библиотека, со своей большой философией, вроде бы на ней у меня работает «Шарманка», но на прием нормально, а на передачу какие то непонятные задержки звука идут. И пока разобраться не могу. PULSE AUDIO даже не стал подробно изучать, еще более запутанная система, со своей сложной философией. Попытался изучить направление мобильных устройств. Тут вообще засада на засаде. Для программирования коммерческих продуктов, если заплатить за более юзабельный инструмент программиста, то это возможно, но делать что то мелкое для себя, как Шарманка, уже не рентабельно. Для маленькой программы на маленькой железки надо иметь программисту современный «шустрый» компьютер, с большим экраном. Программа получается уже очень далека от таких железок как АЦП и ЦАП. Если ли брать Андроид, то и выполняться она уже будет на какой то виртуальной машине. Вообще современная философия подразумевает, что современные программисты должны писать программы под какие то виртуальные системы, со своими хозяевами, которые будут определять как ты должен программу создавать, как ты ее будешь распространять и желательно так, что продукт был коммерческий, и что бы все зарабатывали, включая посредников, что бы была по крайней мере реклама. А программа твоя на конкретной железке работает все медленнее и медленнее, потому что среда в которой она работает (тот же Андроид, или Браузер) уже переписана под современное железо а на твоем старом она уже жутко тормозит. Тут недавно задумался как организовать прямую связь через интернет со своей мамой. Телефонные переговоры разоряют жутко. Стандартная схема через WhatsApp, как положено не работает, с большим трудом научил маму пока что только отвечать на входные звонки, и то через раз. Первая же эксплуатация совпала с каким то глюком на серверах WhatsApp, разговор проходил только в одну сторону. Подумал, а как все упростить, уж сколько с этим звуком разбираюсь. А что если сделать все на уровне обычного телефона, самый стандартный как раньше стояли в квартирах. Зазвонил, поднял трубку и разговариваешь. Хочешь сам позвонить, поднял трубку, пошли гудки вызова, с той стороны звенит телефон, подняли трубку – разговариваешь. Первым инструментом был выбран для реализации микрокомпьютер OrangePi, стоит 15 долларов у китайцев, он должен поместиться в телефонный аппарат. У него есть полноценная звуковая карта, правда микрофон уже распаян на плате микрокомпьютера, но его можно выпаять, а к контактам подвести микрофон с телефонной трубки. Уже проведены положительные эксперименты с библиотекой ALSA, пока что при работе на себя наблюдается непонятная для меня задержка звука где то то секунду, полторы. Можно и так применять, в Шарманки люди общаются иногда и с большей задержкой, но считаю что для телефонного разговора это многовато. Что интересно, если юзаю версию под OSS и запускаю через эмулятор алсы aoss ./telefon, то все работает как надо. А вот напрямую в ALSA делаю что то не так. Пока безуспешно ломал голову над решением этой проблемы, с помощью своего коллеги обратил внимание на микроконтроллеры. Они оказывается далеко шагнули с тех времен как я с ними впервые ознакомился. Для экспериментов взял самый простой Arduino Uno. Блин, какое счастье, прямая работа с железом без всяких философских оберток. У Arduino Uno есть 10 битный АЦП, решил начать эксперименты хотя бы со входным звуком. Сделал прерывание 10000 раз в секунду, усилил сигнал с микрофона до уровня АЦП, передал через Ethernet модуль по протоколу UDP на контрольную программу под Windows и получил приемлемое для телефонных разговоров качество звука. По крайней мере вход звука реализован. Надо только сделать опорное напряжение для АЦП не 5 вольт а поменьше, как раз для микрофонного усилителя. Arduino Uno это позволяет сделать. Если приделать ЦАП, то можно и выход звука проработать. Если не хватит ресурса Arduino Uno, можно поюзать Arduino Mega. Uno у китайцев стоит 3 доллара, Mega 9 долларов. Можно задействовать микроконтроллер STM32, там есть версии и с АЦП и ЦАП, и опять же у китайцев стоит не дорого. Вот это я понимаю возможности. После кнопки RESET работа восстанавливаться через пару секунд. И все это без огромных программных посредников в виде операционных систем, эмуляторов и библиотек со своей сложной философией. Так что если появиться новая шарманка, то скорее всего она будет работать на микроконтроллере, а не на мобильном телефоне.