PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » PureBasic для Windows » PCM Wave в BMP и обратно


PCM Wave в BMP и обратно

Сообщений 1 страница 22 из 22

1

Может кто-нибудь скажет, почему получаемый файл в результате преобразования WAV->BMP  и обратно BMP->WAV трещит в правом канале?
Исходник небольшой. Образец звука в комплекте. Скачать

Отредактировано PSY (05.11.2023 10:44:31)

0

2

Чисто ради интереса, а какой результат Вы ожидали получить в результате такого преобразования?

0

3

Например пропустить bmp файл через фильтры и обратно в wav.
При простом преобразовании туда-обратно звучит также, но в правом канале ещё и треск.

Отредактировано PSY (05.11.2023 18:21:24)

0

4

Извините, конечно, но у меня сразу ассоциации возникли с мемами про "британских учёных".
Ну, типа, новости:
«Британские учёные конвертировали звук в изображение, потом обратно и обнаружили посторонний треск в правом канале. Видный британский учёный, доктор эзотерических наук, профессор-уфолог Джон Вилкинсон рассказал нашему корреспонденту, что это сигнал, который нам пытается передать инопланетная цивилизация. Все силы научной группы брошенный на расшифровку этого сигнала.»

Не могу это развидеть.

П.С.
Ну это же неоспоримый факт - конвертация файлов ЛЮБОГО формата в любой ДРУГОЙ формат не приводит к искажению информации. Подумаешь, фигня какая, звук в изображение.
Поэтому версия, что это попытка другой цивилизации связаться с нами выглядит вполне реалистичной.
Впрочем, допускаю, это искусственный разум, живущий в сети пытается сообщить нам что-то важное.

Сорри.

0

5

После всего этого, в том числе и под влиянием предыдущих подобных тем, моя душа не вынесла, поставил себе подходящую аватарку. Пойду, напьюсь (бутылочка коньяка ждёт). :rain: (жалко, нет смайлика "застрелился", или хотя бы смайлика "напился")

0

6

Ну дык алгоритм простой: 16 битный знаковый в 16-ти битный бесзнаковый и потом в 24-ёх битный с нуля начинающийся. И всё - изображение готово. Но почему трещит вы бы лучше ответили.

0

7

PSY написал(а):

Ну дык алгоритм простой: 16 битный знаковый в 16-ти битный бесзнаковый и потом в 24-ёх битный с нуля начинающийся. И всё - изображение готово. Но почему трещит вы бы лучше ответили.

Алгоритм, как раз, совсем не интересен. Абсолютно не интересен.

Но почему трещит вы бы лучше ответили.

Целых две версии озвучены мною выше.

0

8

PSY
1. Если сигнал моно, то одна и та же волна попадает в оба наушника, проблема наушника/колонки.
2. Чтобы звук был чистый надо идеально попасть в синусоиду, а это фактически невозможно, то есть у линии должен ОДИН идеальный путь, любое отклонение это рассматривание сигнала как сложение гармоник разной частоты, так наш мозг работает при интерпретации сигнала. А значит это будет щелчки и треск и всё что угодно. Это если для правого уха нарисована другая волна, в чём я сомневаюсь и думаю что вы рисуете одну волну и почему она трещит в правом ухе. Там другой динамик и из-за разности в одном треск, может на музыкальный трек это не сказывается, а на нарисованный где происходит резонанс наблюдается такое.

Отредактировано AZJIO (07.11.2023 05:43:43)

0

9

В общем перепишу тогда конвертор так: стерео wav в два моно и потом в два bmp и обратно в два wav моно и в один стерео и сравню что получилось.
При работе с одноканальными файлами - трещит тоже постоянно... По сему всё!

Отредактировано PSY (07.11.2023 10:00:55)

0

10

bmp не предназначен для хранения звука.
Почему бы не сохранить данные в файле как есть без преобразования в картинку?

0

11

Мне интересно было преобразование в изображение, пропускание через фотофильтр и получение звукового результата. Благо битн7ости цвета хватает с лихвой для того чтобы сохранить звук. Ограничение лишь 8192х8192 количество отсчётов.

0

12

PSY
Звук это линия, чем светофильтр поможет? Размыть её чтобы не было? Можно сохранить точки-пики и открывать для просмотра на плоскости, нет причин сохранять в BMP, это всё равно линия пиков. Вот mp3DirectCut рисует, но для просмотра нарастания громкости, но не сохраняет в картинку.

0

13

AZJIO написал(а):

Звук это линия, чем светофильтр поможет? Размыть её чтобы не было? Можно сохранить точки-пики и открывать для просмотра на плоскости, нет причин сохранять в BMP, это всё равно линия пиков. Вот mp3DirectCut рисует, но для просмотра нарастания громкости, но не сохраняет в картинку.

Ему не надо вот всё это - пики и прочее. Ему надо двоичные данные которые есть "закодированный звук" записать туда, где должны быть двоичные данные которые есть "закодированное изображение". И получить картинку, где каждый пиксель представляет собой по сути случайные данные (приходит на ум "цветовая какофония"). А потом обратно. Возможно, ещё и светофильтр наложив. Получив таким образом уже звуковую какофонию. Может быть современные сатанисты таким образом демонов вызывают? Не знаю.

0

14

Да, мне нужно чтобы туда-обратно работало, а что дальше делать я уже экспериментировал с левым рабочим каналом... У меня даже исходным файл при открытии в режиме только чтение ReadFile перезатирался тишиною почему-то (при модификации программы для работы с моно звуком).

Отредактировано PSY (10.11.2023 18:06:47)

0

15

PSY написал(а):

Да, мне нужно чтобы туда-обратно работало, а что дальше делать я уже экспериментировал с левым рабочим каналом...

Ну что тут можно сказать... "Продолжайте вести наблюдение" (c)

0

16

PSY
Очень интересная идея преобразовать звуковые данные в графические и наоборот. Мне нравится :)

Как вариант, можно сделать универсальное преобразование любого бинарного файла в звук или в изображение, и наоборот, извлечь данные из звукового или из графического файла в бинарный файл.
В частности, такое преобразование wav -> file -> bmp и bmp -> file -> wav,если его сделать аккуратно и без ошибок, могло бы решить и задачу из этого сообщения: wav -> bmp и bmp -> wav.
Но тогда еще можно было бы таким способом скопировать произвольный файл в формат звука, или изображения, а затем извлечь его снова в файл. Способы использования такого универсального конвертера, если его написать, зависят уже только от фантазии пользователя )

Теперь насчет проблемы "почему после преобразования трещит в правом канале".
Ну, вроде бы исходный звук после такого двойного преобразования имеющейся программой начинает потрескивать в обоих каналах. Понятно, что в области звуковых данных есть отличия от исходного файла, которые можно увидеть в hex редакторе, сравнивая эти файлы, вот звук и искажается. И вообще, хорошо бы правильность преобразования wav -> bmp -> wav оценивать не на слух, а вычисляя хэш-значения (MD5 или SHA-256 и тд), и добиваться, чтобы такое двойное преобразование возвращало бы точно такой же файл (с таким же хэш-значением). Тогда уж точно ничего дополнительно трещать в звуковом файле не будет.

Просматривая алгоритм работы программы в отладчике PureBasic я пока саму ошибку в программе не нашел. С виду все написано лихо и компактно, как и во многих других программах PSY на этом форуме.

Но я обратил, конечно, внимание на то, что PSY копирует поток байтов из звукового файла в графический и наоборот, учитывая их физическую природу: звуковые отсчеты и пиксели, и пересчитывает значения байтов. Хотя нам-то нужно просто аккуратно скопировать поток байтов в области данных из wav в bmp и обратно. В частности, это привело к ненужному разбуханию bmp файла, который становится больше в 3 раза по сравнению с wav (2605370 байт wav файла превращаются в 7829574 байт bmp файла) - видимо, из-за сохранения 2-х байтового значения типа word в трехбайтовую структуру PIXEL и пересчета значений в потоке байтов.

Если ошибку в самом алгоритме программы так никто на этом форуме и не определит, то, может быть PSY стоит просто побайтно скопировать все содержимое области данных из wav файла в область данных bmp файла, не пересчитывая и не преобразовывая их, и не используя копирование структур? Ведь нам-то все равно, как звук будет выглядеть в изображении. Главное, чтобы все байты из звукового файла сохранились точно в области данных bmp и могли бы потом вернуться в формат wav без искажений звука, если, конечно, bmp файл не изменялся в редакторе.

Кроме этого, стоит сохранить в изображении еще и подписи в конце wav файла после области звуковых данных, если они там будут (а они есть в файле "образец.wav"). Иначе исходный файл wav и восстановленный wav из файла bmp будут отличаться, и их хэш-значения не будут совпадать, даже если их области данных будут идентичными.

0

17

Smitis
PSY
А насчет того, зачем вообще нужно заниматься таким странным делом: преобразовывать звук в изображение и изображение в звук.
Можно придумать много вариантов использования такого преобразования, насколько уж хватит фантазии у человека. Один из вариантов PSYуже назвал.

Например, возможен еще такой вариант использования этого алгоритма.
Преобразование картинки в звук, может быть, позволит, после возможной некоторой обработки исходного изображения, помочь ориентироваться в пространстве слепому человеку. Во всяком случае, можно было бы попробовать это сделать, используя текст программы от PSY и дорабатывая ее.

Практически в каждом городе, где мы живем, есть общества слепых. Да и сами мы после долгих занятий за компьютерами тоже находимся, может быть, в этой зоне риска.
И можно представить себе слепого человека с вебкамерой или со смартфоном и в наушниках, который по звукам, созданным из картинок с камеры, сможет хоть как-то дополнительно ориентироваться в окружающем мире, отличить по звуку свет от тьмы, а может быть и определить цвета окружающих предметов, если они будут звучать по разному, или даже попытаться распознавать на слух предметы или изображения, может быть и с экрана компьютера.

Это, конечно, только один из потенциально возможных вариантов использования идеи PSY, но и он может оказаться довольно полезным.

Отредактировано Nemo3001 (17.12.2023 03:43:38)

0

18

PSY написал(а):

Мне интересно было преобразование в изображение, пропускание через фотофильтр и получение звукового результата

На самом деле интересно, что некоторые обработки изображения практически полностью сохраняют исходную мелодию - вроде автоконтраста, или увеличения резкости, которые, видимо, в основном изменяют амплитуду звука (увеличивают значения байтов), а некоторые обработки изображения, вроде размытия, как и ожидалось, больше приближают результат к белому шуму после преобразования изображения снова в звук.

А вот идея с ориентацией по звуку, сделанному из изображения, судя по всему потребует доработки, когда программа сама обработает картинку и только потом создаст для незрячего пользователя звуковой файл, более понятный ему, чем напрямую передавать ему малоразборчивый звуковой шум, где сложно различить цвета и детали изображения с исходной картинки.
Но, все равно, программный код от PSY в этом сообщении в значительной его части можно будет использовать в готовом виде и дорабатывать его по потребности.

0

19

Nemo3001 написал(а):

Если ошибку в самом алгоритме программы так никто на этом форуме и не определит

Там нечего определять. Он, по своему обыкновению, облажался в "алгоритме" преобразования. Это, как говорится, видно невооружённым взглядом.

Nemo3001 написал(а):

И можно представить себе слепого человека с вебкамерой или со смартфоном и в наушниках, который по звукам, созданным из картинок с камеры, сможет хоть как-то дополнительно ориентироваться в окружающем мире, отличить по звуку свет от тьмы, а может быть и определить цвета окружающих предметов, если они будут звучать по разному, или даже попытаться распознавать на слух предметы или изображения, может быть и с экрана компьютера.

Вспомнился старый юмористический рассказ, о том, как мужик мечтал выйти в интернет, но у него не было модема. Поэтому он звонил по номеру провайдера и свистел в трубку, имитируя звук соединения. И однажды случайно законнектился на скорости 2400...
Главное, слепым про преобразование изображения в звук не рассказывайте. А то они решат, что Вы над ними издеваетесь. И будут правы.

0

20

Нет уж. трещит только во правом канале.

0

21

PSY написал(а):

Нет уж. трещит только во правом канале.

Срочно нужно добиться, чтобы трещало и в левом канале.

0

22

Нет. я не алкаш... чтобы так закончить начатое. Но лучше всего конечно изучить - почему же трещит только в одном канале при преобразованиях данных.

0


Вы здесь » PureBasic - форум » PureBasic для Windows » PCM Wave в BMP и обратно