|
14 / 14 / 5
Регистрация: 05.10.2011
Сообщений: 223
|
|
Шумящие биты в WAV23.10.2011, 17:40. Показов 4930. Ответов 15
Метки нет (Все метки)
Вот такой вопросик как писать программу для сохранения собственного сообщение в звуковом файле расширения .WAV
программа должна спрашивать сообщение далее его записывать в фаил формата WAV (подсовываем программе трек с песенкой допустим) программа считывает из WAV файла сообщение и выводит его на экран как вообще такое реализовать?? о.О пробовал такое сделать с картинкой BMP - получилось. там все проще. а тут не могу даже понять как идет формат WAV и где у него "шумящие биты"..
0
|
|
| 23.10.2011, 17:40 | |
|
Ответы с готовыми решениями:
15
Шумящие биты в WAV Ввести целое число A. Инвертировать все биты с 4 по 8, включая эти биты. Вывести результат ... В четных байтах числа в двоичной системе переместить нулевые биты в старшие биты, а в нечетных байтах – в младшие ... |
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
| 24.10.2011, 15:28 | |
|
Что значит "программа считывает из WAV файла сообщение и выводит его на экран"?
Добавлено через 1 минуту Или ты имеешь в виду, что текстовое сообщение нужно "закодировать" в wav файл? Если использовать wav без сжатия, то всё очень просто.
0
|
|
|
Почетный модератор
11553 / 4348 / 452
Регистрация: 12.06.2008
Сообщений: 12,453
|
|
| 24.10.2011, 16:12 | |
|
WAV-файл - это просто набор значений. Например, посмотрим файл \WINDOWS\Media\chimes.wav из WinXP... вначале там идут заголовки RIFF и WAVEfmt ... а следующий 16-ый байт - 0x10. Это и есть количество бит, которым закодировано каждое значение. Это означает, что начиная с блока "data" мы можем брать данные по 16 бит (по 2 байта) и представлять их в виде signed short. И попробуй для каждого такого значения нарисовать точку - ты увидишь что-то вроде синусоиды. Т.е. для нашего файла (у него частота дискретезации 22050 герц) каждое 16-битное значение - это значение звука за текущие 45 микросекунд (1/22050).
В случае с 16-битным файлом всё просто... мы можем относительно безнаказанно менять значение младших байтов. При этом искажение будет не более 1/128. Т.е. теоретически можно записывать свои данные в младший байт каждого 16-битного значения и при этом качество звука не должно сильно пострадать пострадать.
0
|
|
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
||||
| 24.10.2011, 16:28 | ||||
|
Добавлено через 38 секунд Добавлено через 31 секунду
0
|
||||
|
Почетный модератор
11553 / 4348 / 452
Регистрация: 12.06.2008
Сообщений: 12,453
|
||||
| 24.10.2011, 17:22 | ||||
|
0
|
||||
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
||
| 24.10.2011, 17:25 | ||
|
0
|
||
|
14 / 14 / 5
Регистрация: 05.10.2011
Сообщений: 223
|
|||
| 25.10.2011, 16:03 [ТС] | |||
|
// пока что речь о длине сообщения и подобных тонкостях не веду. это все после ... притом качество звука пострадать не должно. Ну или в крайнем случае лишь чуть - чуть. Слышны изменения не должны быть. но в целом. если честно у меня даже нет идеи как реализовать. подскажите пожалуйста
0
|
|||
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|||
| 25.10.2011, 16:11 | |||
Добавлено через 3 минуты Реализацию описал Humanoid. А можно вообще добавить собственный блок и в любом виде в нём сообщение записать.) Тогда пусть хоть в каком формате аудио хранится.)
0
|
|||
|
14 / 14 / 5
Регистрация: 05.10.2011
Сообщений: 223
|
||
| 25.10.2011, 16:16 [ТС] | ||
|
тривиальна?
тут речь точно не про меня)))и если честно я не понимаю в упор какие биты программа должна менять и вообще на что менять? мне нужно будет мое сообщение переводить в 2ю систему и записывать бит за битом? вообще в этом формате PCM/uncompressed данные хранятся в 2й системе или как? вопросы возможно не корректны. но это все просто от незнания как располагаются данные в файле WAV.
0
|
||
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
| 25.10.2011, 16:26 | |
|
Вот формат: http://www.sonicspot.com/guide/wavefiles.html
В блоке "fmt" тебя заинтересует поле "Significant bits per sample", оно указывает разрядность выборки (8,16,24,32 бита на отсчёт). Т.е. тебе нужно будет считывать каждый сэмпл и заменять младший бит на один бит из твоего сообщения. Т.е. на один символ необходимо 8 сэмплов. Таким образом, зная длину сообщения, ты можешь заранее вычислить минимальную длину аудиофайла. Рекомендую в самом начале кодировать длину сообщения, тогда длина аудио может превышать длину сообщения.
0
|
|
|
|
||
| 26.10.2011, 10:51 | ||
|
GBIT, подобные задачи решаются двумя путями 1-й путь - запихиваем нужные нам wav-файлы в ресурсы проекта и когда проигрываем нужный файл, здесь приводил код как проигравать wav из ресурсов Ошибка AfxGetResourceHandle 2-м путём является путь который как я понял вы сами выбрали - т.е директ проигрывание волны через DirectSoundBuffer. Что ж данный метод довольно интересен в плане возможностей, мы сами можем насыпать в буфер битов, и выбрать нужный нам формат и дискретность волны Здесь wav-плеер реализующий именно полный разбор wav-файла на хедер, данные волны и установку буффера в нужный режим согласно хедера txt to wav Не по теме: Проект играет файлы без компрессии, до неё руки не дошли тогда, да и вобще проект писал пытаясь создать свой клавиатурный синтезатор, он кстати получился, но как оказалось потом моя музыка оказалось явно похуже:D чем у Тиесто или Армина, так что лучше пусть они на синтезаторах играют:)
1
|
||
|
14 / 14 / 5
Регистрация: 05.10.2011
Сообщений: 223
|
|||
| 26.10.2011, 17:41 [ТС] | |||
|
-=ЮрА=-, вообще основная идея была в том чтобы запихать свое текстовое сообщение в файл wav, притом чтобы у него размер не поменялся и при прослушивании файла не было никаких ощутимых изменений.
ты же, как я понял подсказываешь мне как сделать проект для воспроизведения wav. это можно и на любом плеере сделать.
0
|
|||
|
Почетный модератор
11553 / 4348 / 452
Регистрация: 12.06.2008
Сообщений: 12,453
|
||||||
| 26.10.2011, 20:48 | ||||||
|
Вот сейчас сварганил такой говнокод на скорую руку... просто что бы показать, в каком направлении можно копать. Допустим, вначале мы прочитали содержимое текстового файла в массив buf... в переменной len хранится общий размер файла. Будем считать, что файл 16-битный.
2
|
||||||
|
Почетный модератор
11553 / 4348 / 452
Регистрация: 12.06.2008
Сообщений: 12,453
|
|
| 27.10.2011, 16:33 | |
|
-=ЮрА=-, со сжатыми не умею работать. Надо либо с алгоритмами сжатия разбираться, либо как-то через кодеки раскодировать.
0
|
|
|
|
|
| 27.10.2011, 16:47 | |
|
Я сам в своё время рыл рыл и тоже остановился на uncompressed wav, ок если сам найду что то поцеплю сюда в топик
Просто тема мне напомнила за времена паяния своего синтезатора и о не решённых тогда проблеммах...
0
|
|
| 27.10.2011, 16:47 | |
|
Помогаю со студенческими работами здесь
16
Написать программу, формирующую по исходному WAV файлу новый WAV файл
Конвертация аудиофайлов WAV -> WAV
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Рецензия / Мнение/ Перевод
https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs
. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|