Получение полной информации из заголовка Wav-файла
-
- interested
- Сообщения: 3
- Зарегистрирован: 18 окт 2021, 21:58
- Версия LabVIEW: 2012
- Благодарил (а): 2 раза
- Контактная информация:
Получение полной информации из заголовка Wav-файла
Приветствую, перед мной стоит задача цифровой обработки Wav-файла (прочитать заголовок, заполнить массив порцией отсчетов, после чего произвести обработку, результат записать в другой Wav- файл). Возникают вопрос как лучше читать Wav-файл чтобы получить доступ к его заголовку и отсчетам? Для начала я использую стандартные блоки “Input File” -> “Sound File Info”. “Sound File Info” – позволяет прочитать частоту дискретизации и некоторые другие данные, но меня интересует заголовок полностью (не включая строковые обозначения “RIFF”, “WAVE”). После попытки расширения “Call library function Node в стандартном блоке получаю некорректные данные. Информацию из заголовка пытаюсь поместить в “Bundle By Name” с помощью “Call library function Node”. Если мой подход к решению данной задачи неверен прошу направить на правильный путь. В дополнение прикрепляю структуру заголовка написанную на C++.
На скриншоте 3 показано содержимое стандартного блока, красным обведено то, что сделал я.
На скриншоте 3 показано содержимое стандартного блока, красным обведено то, что сделал я.
-
- professor
- Сообщения: 3407
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Получение полной информации из заголовка Wav-файла
Если вы уверены, что заголовок именно такой (что вообще говоря не правда), то создайте кластер с теми же типами данный и прочитайте его из файла стандартными функциями: file open->read binary file
Пару лет назад читал базовыми функциями, всё реально, но заголовок может содержать гораздо больше данных, чем у вас описано, стандарт это позволяет
Возможно, я по этой статье разбирал
Не стоит открывать "звуковой" файл, если планируете читать бинарные данные. Можно открыть-прочитать заголовок-закрыть-открыть как звук.Пару лет назад читал базовыми функциями, всё реально, но заголовок может содержать гораздо больше данных, чем у вас описано, стандарт это позволяет
Возможно, я по этой статье разбирал
-
- interested
- Сообщения: 3
- Зарегистрирован: 18 окт 2021, 21:58
- Версия LabVIEW: 2012
- Благодарил (а): 2 раза
- Контактная информация:
Re: Получение полной информации из заголовка Wav-файла
Спасибо за Ваш ответ! Файл которые я использую содержит заголовок, который я указал (есть готовая программа на c++). Возникает вопрос, как интерпретировать массив символов char? На данный момент заменяю последовательность из четырех символов char одним Int элементом в кластере размером 4байта.
- Вложения
-
- ReadFromBinaryFile.vi
- (9.52 КБ) 49 скачиваний
-
- files.rar
- Файл, который я использую
- (1.39 МБ) 49 скачиваний
-
- StructureWavFiles.ctl
- (5.97 КБ) 53 скачивания
Последний раз редактировалось Apollo 20 окт 2021, 19:03, всего редактировалось 3 раза.
-
- professor
- Сообщения: 3407
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
-
- interested
- Сообщения: 3
- Зарегистрирован: 18 окт 2021, 21:58
- Версия LabVIEW: 2012
- Благодарил (а): 2 раза
- Контактная информация:
Re: Получение полной информации из заголовка Wav-файла
Не совсем понимаю, как это можно сделать в кластере. Нужно же-как то указать, что только 4 символа должны записаться в строку, а остальные биты дальше распределиться по остальным элементам кластера.
-
- assistant
- Сообщения: 119
- Зарегистрирован: 06 май 2015, 22:24
- Версия LabVIEW: 2014, 2018
- Благодарил (а): 1 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Получение полной информации из заголовка Wav-файла
Чем Вас не устраивает прочитать Sound File Read Simple, сразу получив доступ к отчетам, а после обработки произвести обратную операцию?
Сам для управления вибростендом таким занимался когда-то. Что там такого важного содержится в заголовке, что необходимо для решения Вашей задачи?
Сам для управления вибростендом таким занимался когда-то. Что там такого важного содержится в заголовке, что необходимо для решения Вашей задачи?
-
- professor
- Сообщения: 3407
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Получение полной информации из заголовка Wav-файла
Так просто это не получится, потому что нет заголовка-длины, поэтому система не знает длину строки, придётся руками читать и преобразовывать
-
- interested
- Сообщения: 3
- Зарегистрирован: 18 окт 2021, 21:58
- Версия LabVIEW: 2012
- Благодарил (а): 2 раза
- Контактная информация:
Re: Получение полной информации из заголовка Wav-файла
У меня стоит задача изменения частоты дискретизации методом Sinc-интерполяции. Я беру исходный файл преобразовываю заголовок (при изменении частоты я должен произвести перерасчет некоторых полей заголовка). После произвожу обработку отсчетов с учетом новой частоты.Alex Dem писал(а): ↑20 окт 2021, 22:11 Чем Вас не устраивает прочитать Sound File Read Simple, сразу получив доступ к отчетам, а после обработки произвести обратную операцию?
Сам для управления вибростендом таким занимался когда-то. Что там такого важного содержится в заголовке, что необходимо для решения Вашей задачи?
Последний раз редактировалось Apollo 20 окт 2021, 23:08, всего редактировалось 1 раз.
-
- assistant
- Сообщения: 119
- Зарегистрирован: 06 май 2015, 22:24
- Версия LabVIEW: 2014, 2018
- Благодарил (а): 1 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Получение полной информации из заголовка Wav-файла
Если задание состоит в том, что нужно обязательно редактировать заголовок, тогда понятно.
https://forums.ni.com/t5/Example-Code/R ... anguage=en
https://forums.ni.com/t5/Example-Code/R ... anguage=en
-
- interested
- Сообщения: 3
- Зарегистрирован: 18 окт 2021, 21:58
- Версия LabVIEW: 2012
- Благодарил (а): 2 раза
- Контактная информация:
Re: Получение полной информации из заголовка Wav-файла
Наконец-то удалось считать строковые данные из заголовка. А как быть с unsigned long(unsigned short), удалось найти, что если преобразовывать типы данных U8->U32 (I8->I32), то могут быть потеряны значения?
-
- professor
- Сообщения: 3407
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Получение полной информации из заголовка Wav-файла
Если преобразовывать именно так (от меньшего к большему), то потерь не будет.
Не понял, зачем сумма четырёх значений?
-
- interested
- Сообщения: 3
- Зарегистрирован: 18 окт 2021, 21:58
- Версия LabVIEW: 2012
- Благодарил (а): 2 раза
- Контактная информация:
Re: Получение полной информации из заголовка Wav-файла
Пытаюсь объединить 4 отдельно прочитанных байта, в одну переменную типа unsigned long.
Последний раз редактировалось Apollo 21 окт 2021, 21:16, всего редактировалось 1 раз.
-
- professor
- Сообщения: 3407
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Получение полной информации из заголовка Wav-файла
А что мешает прочитать правильно?
Если это именно ОДНО значение, то так вы его не получите.
Сумма, это именно сумма, а не последовательная склейка. Грубо говоря
01,02,03,04, нужно число 01020304 = 1020304
А у вас 01+02+03+04 = 10
Но надо делать с учётом расположения байт.
-
- interested
- Сообщения: 3
- Зарегистрирован: 18 окт 2021, 21:58
- Версия LabVIEW: 2012
- Благодарил (а): 2 раза
- Контактная информация:
Re: Получение полной информации из заголовка Wav-файла
На изображении 11 видно, что ровно 4 значения содержаться между двумя строками, которые состоят из 4 элементов. На 12 картинке сопоставлены значения из программы на с++. Значения для строк “RIFF” и “WAWE” совпадает полностью. Почему-то некорректно преобразует значение между двумя строками. Должно быть 1974532 (изображение 12), но имею значение, которое обозначено на картинке 13.
-
- professor
- Сообщения: 3407
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Получение полной информации из заголовка Wav-файла
Ключевое слово "с учётом расположения байт"
Собирайте в обратном порядке, или разверните массивПоскольку формат WAV-файла пришел от операционной системы Windows, в которой традиционно использовались процессоры Intel, все значения данных формата хранятся как Little-Endian, т. е. самый младший значащий байт идет первым.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 16 Ответы
- 580 Просмотры
-
Последнее сообщение Artem.spb
-
- 4 Ответы
- 586 Просмотры
-
Последнее сообщение Sergey Puzanov
-
- 2 Ответы
- 472 Просмотры
-
Последнее сообщение IvanLis
-
- 10 Ответы
- 2373 Просмотры
-
Последнее сообщение PAG
-
- 2 Ответы
- 676 Просмотры
-
Последнее сообщение seromax