Comments 49
А Half Life 2 это не Half Life? :)
Я прошел все части и все фановские дополнения Half Life, можно, конечно, делить на версии, но для меня, например, это одна вселенная Half Life.
Ну и статья ведь не об этом, правда?
Ну и, справедливости ради, движок Source — это дальнейшее развитие GoldSrc, используемое в первой части.
А жанры всех этих игр — шутеры.
Теперь я знаю кто будет работать на комбайнов :))))
А за статью плюсанул бы, жаль что не могу, люди хабра не любят правду.
Спасибо!
В оригинальном Half-Life были похожие звуки у военных, но они не такие интересные.Это самое возмутительное заявление, что я видел сегодня. Звуки у них крайне интересны.
В оригинальной Half-Life радиопереговоры военных — это не просто записанные заранее предложения, которые наговорил актёр. В игру встроен синтезатор речи. В файлах есть записи только отдельных слов, каждое записано в виде обычной речи и крика. Из них игра собирает реплики. Движок может менять тональность каждого из отдельных слов или целой реплики. От другой игры 1998 года такого ожидать было бы трудно, но это ведь Half-Life, где даже у тараканов есть игровой ИИ.
уточню:
Во офф. дополнения типа blueshift, и фановские, доступные тогда, когда играл.
Причём пошёл далеко не все — некоторые не понравились совсем. А из всех допов больше всего понравился именно blueshift, хотя это и офф.
Целая игра вальвов — дота 2 была всего лишь картой для варкрафт 3, созданной айсфрогом. Для меня до сих пор загадка, почему близзард даже не пытались ничего с этим сделать, емнип по лицензии имея права на эту карту, название, прототипы героев и тп.
Беги, сейчас набигут более сложные комментаторы.
(«Беги, дядя Митя, беги...» (с) ) Не все так страшно.
Другое дело, что просто люди не знают, что такое настоящий звук в настоящем боевом радиоканале при использовании ларингофонов. В игре, конечно, звук получен с помощью цифровой обработки, но он достаточно близок к тому, что происходит в эфире на самом деле, особенно если мы в диапазоне радиостанции начинаем сигнал шифровать. А тоновые сигналы — я их наслушался в начале 2000-х в такси, когда все ездили с радиостанциями и в начале передачи и в конце передачи радиостанция передавала тональный сигнал, который для диспетчера идентифицировал водителя.
И у меня звук радиостанций в HL не вызвал какого-то особого восторга или удивления. В такси начала 2000-х, конечно, из радиостанции звук не такой рафинированный, и ларингофоны никто не использовал. И шифрования не было. Но достаточно близко и похоже по звучанию.
PS: я тоже не знаю, как оно на самом деле звучит в боевых условиях, но когда где-нибудь в горах и на пределе, или реальные переговоры летчиков из 70-х во время воздушного боя, все это можно послушать в ютюбе. Хотя чисто со звуком при использовании ларингофонов — проблема. Как ни пытался, находятся исключительно длинющщие занудные обзоры про то, что «для надевания на шею нужно растянуть пружинную дугу, занести это за голову, надеть на шею» (как объяснение этого можно растянуть на 20 минут???)… И ни одного образца звука «на той стороне» при использовании такого микрофона.
И ни одного образца звука «на той стороне» при использовании такого микрофона.
Автор тоже не стал демонстрировать конечный результат.
Геральда как то мало, можно же переговоры на видео заснять на минутку.
Хотя чисто со звуком при использовании ларингофонов — проблема
Не очень понял о чем речь, но, на всякий случай, купить для экспериментов на какой нибудь околооружейной барахолке танковый шлемофон с ларингофонами и наушниками можно совсем недорого. Было бы желание. Там даже радиостанцию танковую можно прикупить :)
реальные переговоры летчиков из 70-х во время воздушного боя, все это можно послушать в ютюбе
Не обязательно 70-х, можно и вполне современных, причём в изобилии.
В боевых действиях не участвовал, но на учениях наслушался.
Если речь про андроид, и тел рутованный, то для осуществления вашей мечты нужно всего-лишь закинуть файлы со звуком в формате ogg в папку /root/system/media/audio/ui и перегрузить телефон. Никакое приложение писать не нужно.
Почему пропадать — там смешиваются сэмплы и откуда должны взяться щелчки?
Они не пропадают, а смешиваются с предыдущими. Щелчки при старте/окончании оцифровки лечатся на ходу рампингом.
Запись:
- получили байт с АЦП
- взяли байт по указателю записи, сложили его с полученным с АЦП байтом, разделили на 2, сделали &0xFF
- положили этот байт по указателю записи
- увеличили указатель записи
- если указатель вышел за размер буфера — обнулили его
Чтение:
- взяли байт по указателю чтения
- отправили его в PWM
- увеличили указатель на чтение
- если указатель вышел за размер буфера — обнулили его
Т.е. смешивание идет непрерывно. Грубо говоря, если длины буфера не хватает — полезный сигнал просто начинает затухать. Никаких щелчков и потерь кусков быть не должно. Ну или я что-то не понимаю.
Чтобы не быть голословным — мы болтали вдвоем и на одной скорости и на убыстренной и на замедленной — никаких щелчков и вообще проблем (насколько это может давать радиостанция) не было слышно. Среднее время одного вещания — т.е. нажали PTT — говорим — отжали PTT было около 5 секунд.
Рампинг (медленное возрастание/затухание до нужного уровня) используется только при начале передачи и ее окончании после Roger Beep.
Как-то так.
А вот при ускорении получается обратный эффект. Там вы будете повторять эти ваши записанные сэмплы по два раза. Просто при таком алгоритме не может быть иначе.
Начало воспроизведения и окончание — это вы все правильно делаете, но это не проблема. Вы их не слышите скорее всего потому, что частота воспроизведения и так маленькая, плюс вы еще фильтром срезаете верхние частоты.
Все оставшиеся в буфере 450 семплов уже никогда не будут воспроизведены, т.к. их будут перезаписывать новые данные
Вот это не понял — там же не перезаписываются данные никогда, они всегда накладываются на то, что уже есть (т.е. миксуются со старыми данными) и в любом случае попадут на выход.
Ну т.е. скажем в буфере лежит 1, 2, 3, предположим они перезаписываются с самого начала данными 4, 5, 6 => тогда в буфере окажутся данные (1+4)/2, (2+5)/2, (3+6)/2, затем они воспроизведутся.
Т.е. с моей точки зрения единственное, чем многократное прохождение чревато — затуханием старого сигнала.
Поправьте, если не так. Если можно — с примером.
Как пример потери информации: например наш полезный сигнал — синусоида, которая за время записи буфера проходит половину периода (на самом деле любое количество периодов с половинкой, главное — смена фазы на противоположную). Первый круг мы прошли и записали половину периода синусоиды, а при втором прохождении мы усредняем её с противофазной второй половинкой. Второе кольцо мы получим тишину.
Ощутимое затухание возникнет, если скорость записи более чем в два раза выше, чем скорость воспроизведения. Тогда от некоторых участков данных останется 1/4 амплитуды (или меньше).
а с тем, который был круг назад
а так вообще будет просто эхо…
При таком способе воспроизведения и такой величине задержки эха не будет. Для этого требуется переписывать отдаваемые данные + иметь гораздо большую задержку.
Для этого требуется переписывать отдаваемые данныезачем их переписывать? если складывая с прошлыми это и есть эхо.
иметь гораздо большую задержку.на сколько большую?
эхо это любая задержка больше 0.
Складывается он с предыдущим, но не так, как делается для эха или реверберации — тут наложение будет лишь части сигнала. Объяснить это на пальцах сложно. Можете попробовать программно сэмулировать такое и потом открыть в редакторе звука — будет понятно. В качестве доказательства послушайте приведённый здесь пример работы — там нет эха.
Складывается он с предыдущим, но не так, как делается для эха или реверберации — тут наложение будет лишь части сигнала.да как не так-то? если скорости совпадают — будет именно сложение с сигналом задержанным на 450 отсчетов. если не совпадают то с какой-то периодичностью или 450 отсчетов повторно будет проиграно или будет пропущено.
Объяснить это на пальцах сложно.давайте уже исходники :)
Можете попробовать программно сэмулировать такое и потом открыть в редакторе звукаа можно открыть исходный звук ресемплировать до 9КГц и добавить эхо с 50мс задержкой.
В качестве доказательства послушайте приведённый здесь пример работы — там нет эха.или его не слышно за искажениями. такое себе доказательство. вы либо что-то упускаете, либо это искажения наложены шимом.
но судя по ютубчику шим на тиньке нормально играет.
Но было бы интересно, чем это все чревато? Что за искажения га слух будет при оцифровке?
Я как бы не всамделишный сварщик: ) Т.е. я больше программист, чем электронщик.
Пытался понять как работает кольцевой буфер, но не осилил. За секунду получаем 8900 байт (если АЦП восьмиразрядное), а буфер всего 450 байт. То есть буфер на 50.5 миллисекунд. Как же это всё работает?!
Что если реализовать этот пример на плате STM32F4 discovery? Там и памяти больше и mems микрофон и аппараьный dac припаяны.
А лучше вообще использовать аппаратный аудиокодек. Например wm8731. Тогда не надо будет mems pdm расшифровывать.
Ну это будет стрельба межконтинентальной пушкой по воробьям, но работать, естественно, будет.
Зато конструктив будет надежнее. Все компоненты твердотельные. Любой обладатель платы STM32F4DISCOVERY сможет попробовать вашу прошивку.
https://www.st.com/en/evaluation-tools/stm32f4discovery.html
Ностальгия по Half Life — создаем приставку для радиостанции для получения голоса и звука окончания в стиле комбайнов