|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.01.2013, 11:38 | #1 |
Форумчанин
Регистрация: 15.06.2010
Сообщений: 740
|
Вопрос про обработку WAV (касетная запись в бинарь)
Приветствую!
Пытаюсь сделать программу для перевода кассетной программы (стандарт IBM cassette tape) в бинарный файл. Более подробно описано здесь: http://www.brutman.com/Cassette_Wave...Waveforms.html Вкратце суть такова: данные пишутся битами (1,0). Если полярность успевает сменится с отрицательной на положительную за 1 миллисекунду - то это единичный бит. Если не успевает - то нулевой. Казалось бы, что может быть проще? Работаю с WAV файлами 8 bit, mono, 22-44Khz. По вышеприведенной ссылке есть тестовая запись в MP3, я конверчу ее в WAV 44Khz, 8 bit, mono. Открываю в audacity и вижу такую картину: Картинка изумительная, читается глазами: 1111 0000 1011 001 .Теперь беру свою прогу. Читаю в массив shortint всю WAV, и пытаюсь нарисовать так: PHP код:
Вопрос: что я вижу? Где моя красивенькая синусойда?
Чтобы понять рекурсию, сперва нужно понять рекурсию.
|
22.01.2013, 12:37 | #2 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
надеюсь в массив грузишь чистые аудиоданные без wav заголовков?
Не стесняемся, плюсуем!
|
22.01.2013, 12:45 | #3 |
Форумчанин
Регистрация: 15.06.2010
Сообщений: 740
|
Ессесно...
Чтобы понять рекурсию, сперва нужно понять рекурсию.
|
22.01.2013, 13:30 | #4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
Можно больше кода?
У меня тот же артефакт возникает при переходе через 0. Тестовый код: Код:
-1 превращается в 255. Чтобы вывелось правильно (у меня): Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 22.01.2013 в 13:34. |
22.01.2013, 14:03 | #5 |
Форумчанин
Регистрация: 15.06.2010
Сообщений: 740
|
Я много думал над этим, но я все равно решительно не понимаю ничего.
Значит по коду : буффер, куда грузится весь файл: Код:
Далее загрузка файла: Код:
Рисую приблизительно так: Код:
Чтобы понять рекурсию, сперва нужно понять рекурсию.
|
22.01.2013, 14:34 | #6 | |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
Я ошибся ввиду плохого знания формата wav.
Волна хранится беззнаково. Вот так у меня рисуется синусоида: Код:
Пожалуйста Цитата:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 22.01.2013 в 14:54. |
|
22.01.2013, 14:51 | #7 |
Форумчанин
Регистрация: 15.06.2010
Сообщений: 740
|
Точно! Вот спасибо добрый человек, а то я себе уже голову второй день ломаю )) Как всегда все оказывается банально просто.
Чтобы понять рекурсию, сперва нужно понять рекурсию.
|
22.01.2013, 14:57 | #8 | |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
Цитата:
byte 0..255 , а синус -1.. 1 вот и получается что пытаешься -127 в байт засунуть надо заранее отраничивать диапазон, а не боротся с последствиями for i := 1 to 100 do mas[i] := 128+round(127 * sin(pi*i/10));
Не стесняемся, плюсуем!
|
|
22.01.2013, 15:00 | #9 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
Slym, это было сделано специально, исходя из предположения, что в pcm формате нижние части синусоиды хранятся в дополнительном коде, но это оказалось не так.
(Код может быть абсолютно неграмотным, т.к. стояла цель - получить в кратчайшие сроки прототип, выдающий такой же или близкий результат к скриншоту Tronixа)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 22.01.2013 в 15:15. |
23.01.2013, 13:34 | #10 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Тему не читал, но, вдруг еще не нашли: в 8-разрядном формате используются беззнаковые данные, при этом паузе соответствует значение 127 или 128.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вопрос про запись данных в файл. | pinkiller | Общие вопросы C/C++ | 4 | 05.01.2012 15:57 |
Вопрос про MaskEdit и воиспроизведение *.wav | Deis | C++ Builder | 4 | 20.04.2011 20:07 |
Вопрос про воиспроизведение *.wav | Deis | Помощь студентам | 3 | 18.03.2011 17:43 |
Вопрос про MaskEdit и воиспроизведение *.wav в C++ Builder 6 | Deis | Помощь студентам | 0 | 11.03.2011 22:33 |
Вопрос про обработку исключений | Ok-ei | Общие вопросы C/C++ | 17 | 19.08.2009 22:49 |