I2S (Inter-IC Sound) — это цифровой протокол передачи звука, который довольно часто используется в современной электронике. I2S не имеет ничего общего с I2C кроме похожего названия, поэтому важно эти протоколы не путать. В рамках сего поста мы постараемся разобраться, на что вообще похож I2S, и как с ним работать.

Ранее мы познакомились с IceStorm, открытым набором инструментов для разработки под FPGA серии Lattice iCE40, а также дешевой отладочной платой iCEstick на базе чипа ICE40HX1K. Кроме того, с использованием IceStorm, iCEstick и языка SystemVerilog нам удалось сделать электронные часы. Сегодня же при помощи тех же инструментов мы попробуем поработать со звуком. Однако на пути к этой благородной цели таится преграда, да не одна!

Операционный усилитель — это интегральная схема, предназначенная для усиления слабого сигнала. Операционные усилители часто используются в различных аудио-устройствах. Например, если вы решите спаять усилитель для высокоомных наушников, вам наверняка понадобится операционный усилитель. Звучит, как что-то полезное. Так давайте же разберемся, как работать с этим хозяйством, на примере конкретного чипа NE5532.

Сегодня существует великое множество VoIP решений — вспомним хотя бы Skype, Hangouts, TeamSpeak. Большая проблема с ними заключается в том, что решения эти закрыты и часто предоставляются исключительно в виде SaaS. Сама по себе закрытость исходного кода не обязательно означает, что продукт плохой. Многие закрытые продукты я использую каждый день. Но при наличии достойной открытой альтернативы я склонен отдавать предпочтение именно ей. Поэтому сегодня мы познакомимся с совершенно замечательным открытым приложением для голосовых звонков Mumble.

В прошлый раз мы научились работать с WAV-файлами. Точнее, мы с вами научились работать с заголовком, а сами данные за нас проиграл кто-то другой. Настало время поработать непосредственно с самими данными, а заодно и попрактиковаться в работе с двухмерной графикой при помощи Java 2D.

В этой заметке будет описана структура WAV-файла, где у него заголовок, где данные, и что они из себя вообще представляют. Кроме того, мы узнаем, как можно воспроизвести WAV-файл на Scala, притом данные для воспроизведения могут браться не только из файлов на диске, но и передаваться по сети или даже генерироваться программой на лету. Но сначала вспомним немного теории.

Как некоторым из вас может быть известно, я имею кое-какой опыт записи подкастов. В частности, недавно мы коллегами закончили записывать первый сезон EaxCast и после майских праздников планируем начать записывать второй. В этой же заметке я хочу поделиться своим скромным опытом в этом, как оказалось, довольно нелегком деле, на случай если кому-то из читателей это интересно.