Комментарии 24
Там же распарсить оригинальную структуру заголовка и нормально обработать файл можно десятью строками кода — в любом случае для корректной обработки надо иметь в виду как минимум BitsPerSample и BlockAlign. Да и размер чанка данных после обработки неплохо бы привести к корректному значению.
Читайте (и принимайте к сведенью) спецификации
Божечки. pip install soundfile
Страсть велосипедить — это вредная привычка, нужно себя от нее отучать.
P.S.:
Ну, я решил, что ничего страшного: программу я писал на C, так что за безопасность можно было особенно не переживать.Стойкое ощущение, что автор над собой иронизирует.
Ну а чо, пару значений поменять. Жаль копий не сделал.
Это была боль.
Чуть ли не 10 лет назад разрабатывал примитивный автопилот для автомобиля. Ну он должен был ездить по определенной площадке с хорошо известными препятствиями. Всё бы ничего, но на самом въезде в площадку был бетонный блок, который системой зрения не распознался… Никто не пострадал, кроме самой платы, которую пришибло отлетевшим аккумулятором (никого не было в машине по понятным причинам, а кнопки аварийной остановки развались при нажатии, это было фиаско).
В свое время писал GUI для работы с лазерной установкой. Пока отлаживали, пару раз были случаи, когда человек лезет смотреть как отработал лазер, открывает крышку, а лазер — не выключен. Усугубляло дело то, что использовали лазер с невидимой глазу длиной волны. Несчастных случаев с глазами, к счастью, избежали. В итоге выяснили, что контроллер лазера почему-то иногда не отрабатывает команду выключения. Стали посылать ее несколько раз, чтоб уж наверняка.
Для такого в команде нужен железячник.
А откуда и зачем железячник в команде программистов?
Железячник у нас был, и концевики мы использовали — для страховки ухода механического привода на упоры, за пределы. Но лазер был отдельным готовым модулем, и у него был свой контроллер, аппаратного доступа к которому у нас не было, только программный.
РИТЭГ?
Рубите питание при открывании, это дешевле, чем инвалидность по зрению.
Или я неправ?
Лазер — твердотельный. Питание лазера — да, отдельное — в здоровом таком блоке питания, содержащем также и контроллер. Насколько я помню, там даже не было входов для подключения сигнала аварийного отключения питания, только красная кнопка отключения на самом блоке. Так что подключить свое отключение было проблематично.
Но вы, абсолютно правы, конечно, безопасность и здоровье — главное, о чем надо заботиться. Сейчас сам удивляюсь, насколько по раздолбайски мы делали. Когда потом поставили лазер видимого диапазона, то невооруженным (но уже защищенным) глазом увидели, насколько неистерпимо яркие блики появляются на стенах по всему помещению при включении лазера — а это уже отраженный свет.
Но вы же в защитных очках туда лезли?
Вначале отлаживающий железо очков не одевал, мы не понимали опасность лазера для глаз. Тем более — невидимого. Хотя, когда его включали без крышки, то ощущение песка в глазах появлялось у всех присутствующих в помещении. Но к счастью, опасность, быстро осознали, и стали пользоваться защитой. Но для меня тогда был шок, что такая виртуальная сущность, как программа, может что-то натворить в реальном мире.
А у меня было что мой код на DSP не отключил в нужный момент усилитель мощности, транзисторы отгорели и немного обожгли мне палец. Таки причинил боль своим кодом.
Мастерил фотовспышку с питанием от сети. Контроллер делал на AVR. Где-то накосячил с dead time между выключением зарядного транзистора и импульсом на поджигание лампы, в итоге лампа зажглась с открытым транзистором. Токоограничивающий резистор ватт на 10 испарился и улетел хлопьями в потолок. Физических повреждений я не получил, но моральная травма от собственной криворукости до сих пор побаливает.
Практическая рекомендация — прочитать и не забывать закон Мерфи
А вы когда-нибудь причиняли себе физическую боль собственным кодом?