LINUX.ORG.RU

Существует ли текстовый формат звука?

 , text format,


1

2

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

Так вот есть что-нибудь подобное для звука? Я знаю про MusicXML, это не то. Мне нужны не ноты, а что-то вроде WAV в текстовом виде. Пусть с ограничениями на битность, на частоту дискретизации, на число каналов (только моно), но чтобы можно было записать любой звук.

ноты в виде ASCII.

dikiy ★★☆☆☆
()

Зачем? Сохранялку массива чисел в несжатый .wav напишет любой школьник. Далее файл может быть преобразован любым доступным аудиоконвертером во что угодно.

blexey ★★★★★
()

WAV в текстовом виде

http://pastebin.com/ZPpmCjsy - умеет все форматы в текстовый вид. Крайне удобная для парсинга структура выходных данных - всё супер.

Юзать так:

$textaudio < file.wav > file.txa
$textaudio < file.wav | lzop > file.txa.lzo //так почти не сливает ваву 10-20%.

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

Никаких ограничений.

anonymous
()

чтобы можно было записать любой звук

base64 file.wav

Подходит?

no-such-file ★★★★★
()

Храни pcm сигнал в ascii: просто смотришь python wave модуль и пишешь конкретный raw http://www.fmtz.com/misc/raw-audio-file-formats формат (nframes правда не нужен). Можно на том же питоне написать конвертер wav<->ascii, плясать со вторым.

Что-то есть при аудио-приблудах, правда без исходников: http://www.fmjsoft.com/fmt/txt.htm - как идея хранения сойдет (частота, видимо, указана извне).

anonymous
()

Может, стоит попробовать питоновскую библиотеку?

from scipy.io.wavfile import read, write

И можно работать с файлом как с массивом.

Ceiling_QB ★★★★
()

ноты в виде ASCII.
MIDI
Таки MIDI
MIDI же!

Ведь написал же, что мне нужен полноценный звук, а не ноты.

Сохранялку массива чисел в несжатый .wav
http://pastebin.com/ZPpmCjsy - умеет все форматы в текстовый вид.
base64 file.wav
hexdump audio.wav > audio.txt
base64 тогда уж

Это ничего не даст - ведь парсинг такого текста будет ничем не проще парсинга бинарного WAV. Что лишает смысла использования текстового формата.

Храни pcm сигнал в ascii: просто смотришь python wave модуль и пишешь
Может, стоит попробовать питоновскую библиотеку?

Да, именно так и именно с Python я и собирался сделать, в случае, если не найду готового формата.

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

thewizardplusplus
() автор топика
Ответ на: комментарий от anonymous

Ему нужен растр, а не вектор.

anonymous
()

Если прямо семплами записывать с приемлемого качества — 3-5 ASCII символа на семпл, либо 5-9 hex символа, либо 5-10 десятичных, + разделитель (перевод строки, например), 44100-48000 семплов в секунду (то есть строк), на каждый канал — максимум на что сгодится это клик поправить, и то будет очень неудобно по сравнению с waveform. Сам по себе семпл это напряжение, то есть не очень в смысле восприятия звука.

quasimoto ★★★★
()
Последнее исправление: quasimoto (всего исправлений: 1)
Ответ на: комментарий от Deleted

lossless text audio format - не сотвори себе Попова и пророка его Бабушкина...

d_Artagnan ★★
()
Ответ на: комментарий от Falcon-peregrinus

Это будет всего в полтора раза больше исходного файла.... Предлагаю base32 или даже base2, чтобы наверняка.

d_Artagnan ★★
()
Ответ на: комментарий от thewizardplusplus

Это ничего не даст - ведь парсинг такого текста будет ничем не проще парсинга бинарного WAV

Так а чо хотел-то? Непонятно.

Krieger_Od ★★
()
Ответ на: комментарий от anonymous

Ноты имеют строго заданные частоты. Как при помощи нот задать шуршание бумаги, топот игрока или речь? Под полноценным звуком я имел ввиду звук без ограничений.

thewizardplusplus
() автор топика
Ответ на: комментарий от anonymous

Нет, там же тоже про ноты. И вообще цель там другая, мне же нужна просто запись RAW в виде текста для упрощения парсинга.

thewizardplusplus
() автор топика
Ответ на: комментарий от quasimoto

Мне не нужно править звук в виде текста. Моя цель - простой парсинг файла.

thewizardplusplus
() автор топика
Ответ на: комментарий от Krieger_Od

Ну я же специально привёл ссылку на пример подобного формата. Почему бы не посмотреть её?

Вот пример графического файла в формате PPM:

P3
# P3 обозначает, что цвета даны в ascii, 
# затем идут цифры, обозначающие число колонок и рядов (3 колонки и 2 ряда), 
# 255 для максимального значения цвета, 
# затем триплеты RGB 
3 2
255
255 0 0
0 255 0
0 0 255
255 255 0
255 255 255
0 0 0
Парсинг такого формата гораздо проще, чем, например, BMP. Ибо в последнем надо учитывать порядок байт и делать больше проверок.

Для звука можно что-то такое: в первой строке битность семплов, во второй - частота, в третьей - число каналов, в четвёртой - сами семплы:

16
11000
1
000405433450334f43ac34...

Распарсить это можно за три строчки (не считая объявления переменных):

stream >> bits_per_sample >> sample_rate >> channels >> data;
for (size_t i = 0; i < data.size(); i += 2) {
    std::istringstream(data[i] + data[i + 1]) >> raw[i / 2];
}

thewizardplusplus
() автор топика
Ответ на: комментарий от thewizardplusplus

Нет, там же тоже про ноты

по ссылке упоминался csound, в описании которого есть следующая строчка:

Помимо алгоритмов синтеза можно также работать с сэмлами.

anonymous
()
Ответ на: комментарий от thewizardplusplus

надеюсь ты понимаешь почему этот формат до сих пор никто не применяет для редактирования фотографий?

anonymous
()
Ответ на: комментарий от thewizardplusplus

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

Ибо в последнем надо учитывать порядок байт

Разумеется, распознавание чисел из строк это проще и эффективнее.

Распарсить это можно за три строчки

Распарсить любой стандартный контейнер единообразно можно за три строчки с помощью библиотек, например - ffmpeg. К чему ты и прийдёшь, если не являешься клиническим случаем.

Krieger_Od ★★
()
Ответ на: комментарий от Krieger_Od

Он является клиническим случаем. Он эту тему на трёх форумах как минимум поднял, ему везде сказали то же, что и тут, но он не слушает.

anonymous
()

А как же hexdump? С его помощью можно любой формат в текстовый превратить.

Kiborg ★★★
()
Ответ на: комментарий от thewizardplusplus

Парсинг такого формата гораздо проще, чем, например, BMP. Ибо в последнем надо учитывать порядок байт и делать больше проверок.
порядок байт
больше проверок

Датычё. Прям неимоверной тяжести аргумент. Форфан ляпнул?

Для звука можно что-то такое: в первой строке битность семплов, во второй - частота, в третьей - число каналов, в четвёртой - сами семплы:

Зачем, если бинарь намного быстрее и проще распарсить?

Распарсить это можно за три строчки (не считая объявления переменных):

Я конечно понимаю, что тормазное плюсовое говно имеет функционал strchr()«а, но зачем? Это делается одно строчкой для бинаря.

Ты несёшь какую-то херню.

anonymous
()
Ответ на: комментарий от anonymous

СлабО нотами сказать слово «хуй»?

anonymous
()

Но это не аналог wav, да, просто монофонический писк и вибро.

DuMOHsmol
()
Ответ на: комментарий от emulek

именно для этого.

Да ладно, чё спорить то. Ну текстовую инфу он тебе пожмет, а сам звук так не жмется.

(а ТС да, норкоман)

Да просто дикий

vonenij
()

Читаю, все пишут MIDI, MIDI. Толе я чего-то не знаю, толи все отписавшиеся - идиоты

vonenij
()

про текстовые форматы растровой графики

и не только растровой. например COLLADA XML и более оптимизированныйglTF для 3D.

по идее софт для 3D-принтеров должен работать с 3D в открытом формате.

anonymous
()
Ответ на: комментарий от anonymous

на пурбасике

REM The 12 Days of Christmas
PLAY "MNT150L8O2CCL4CL8FFL4FL8EFGAA+GL4A.L8A+L4>CL8D<A+AFL4G"
PLAY "L2F.L8CCL4CL8FFL4FL8EFGAA+GL4A.>CL8<GAL4A+L8AA+L4>CL8D"
PLAY "<A+AFL4GL2F.L8CCL4CL8FFL4FL8EFGAA+GL4A.>CL8<GAL4A+>CL8<G"
PLAY "AL4A+L8AA+L4>CL8D<A+AFL4GL2F.L8CCL4CL8FFL4FL8EFGAA+GL4A."
PLAY ">CL8<GAL4A+>CL8<GAL4A+>CL8<GAL4A+L8AA+L4>CL8D<A+AFL4G"
PLAY "L2F.L8CCL4CL8FFL4FL8EFGAA+GL4A.L2>CL4D<B.L1>CL8C<A+AG"
PLAY "L4FA+DFL8GFEDL4CL8AA+L4>CL8D<A+AFL4GL2F.L8CCCCFFL4FL8E"
PLAY "FGAA+GL2AL8>CC<GAA+GL2>CL4D<B.L1>CL8C<A+AGL4FA+DFL8GF"
PLAY "EDL4CL8AA+L4>CL8D<A+AFL4GL2F.L8CCCCFFL4FL8EFGAA+GL2AL8>C"
PLAY "C<GAA+G>CC<GAA+GL2>CL4D<B.L1>C"

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.