как в с++builder на рисовать звуковую волну
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
как в с++builder на рисовать звуковую волну - 2009-10-17 13:05:41.526666
|
|
|
dddmitriyy
Сообщений: 12
Оценки: 0
Присоединился: 2008-01-09 09:14:42.636666
|
как в с++builder на рисовать звуковую волну wav файла как аудиредакторах
|
|
|
RE: как в с++builder на рисовать звуковую волну - 2009-10-17 15:30:02.996666
|
|
|
Denaturat
Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
|
в простейшем цифровом представлении, звуковая волна - это нормированное упорядоченное по времени множество значений отклонения мембраны относительно состояния спокойствия (тишины), т.е. для каждого момента времени (его размер определяется частотой дискретизации) имеем некоторое значение в диапазоне (-1.0, 1.0). если не заморачиваться с масштабом и прочими полезными вещами, достаточно просто на каждую координату оси абсцисс выводить по точке, ордината которой будет равна -(высота виджета / 2) * (1.0 + (значение из множества))
|
|
|
RE: как в с++builder на рисовать звуковую волну - 2009-10-17 17:25:00.996666
|
|
|
dddmitriyy
Сообщений: 12
Оценки: 0
Присоединился: 2008-01-09 09:14:42.636666
|
а как именно если можно то кокретный пример
|
|
|
RE: как в с++builder на рисовать звуковую волну - 2009-10-17 17:54:21.986666
|
|
|
Denaturat
Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
|
quote:
ORIGINAL: dddmitriyy а как именно если можно то кокретный пример нельзя http://www.mega-nerd.com/libsndfile/ http://www.functionx.com/bcb/gdi/gdiexamples.htm http://www.cyberforum.ru/cpp-builder/thread50759.html берёшь libsndfile, или любой аналог (по ссылке есть документация), вычитываешь данные из wav-файла, рисуешь на canvas'е. имей в виду, что шкала значений для данных может быть не линейной, а логарифмической (это если в децибелах), в таком случае есть смысл произвести преобразование
|
|
|
RE: как в с++builder на рисовать звуковую волну - 2009-10-17 21:06:40.226666
|
|
|
ХреновыйСтудент
Сообщений: 100
Оценки: 0
Присоединился: 2009-06-30 18:30:40.363333
|
quote:
для каждого момента времени (его размер определяется частотой дискретизации) имеем некоторое значение в диапазоне (-1.0, 1.0) а как определить это значение? я так понимаю шагом квантования? по сути оно должно определяться ацп или требуемым качеством и подгоняться под степень двойки. 32 бита каждое значение?
|
|
|
RE: как в с++builder на рисовать звуковую волну - 2009-10-19 11:31:44.326666
|
|
|
Denaturat
Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
|
quote:
ORIGINAL: ХреновыйСтудент а как определить это значение? я так понимаю шагом квантования? которое из? если в контексте задачи, то в wav-файле оно уже хранится - с учётом метаданных о частоте дискретизации по времени и по значению; остаётся только вычитать quote:
ORIGINAL: ХреновыйСтудент по сути оно должно определяться ацп во время записи - да. wav - это уже оцифрованные данные, это не аналоговый сигнал
|
|
|
RE: как в с++builder на рисовать звуковую волну - 2009-10-19 18:46:32.650000
|
|
|
ХреновыйСтудент
Сообщений: 100
Оценки: 0
Присоединился: 2009-06-30 18:30:40.363333
|
quote:
wav - это уже оцифрованные данные, это не аналоговый сигнал это понятно) quote:
с учётом метаданных о частоте дискретизации по времени и по значению частота дискретизации определяет качество сигнала, его спектр. шаг квантования определяет сколько битов будет описывать каждое значение спектра. Так вот вопрос в том, как определять количество битов. В mp3 есть фреймы, в которых это дело описывается. id3 теги вроде называются. В WAV, я так понимаю из вашего поста, тот же принцип, только форма отображения методанных другая. В midi вроде отдельно инструменты описываются, но не уверен. понимаю что есть гугл, но лень же :(
|
|
|
RE: как в с++builder на рисовать звуковую волну - 2009-10-19 20:32:29.736666
|
|
|
Denaturat
Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
|
quote:
ORIGINAL: ХреновыйСтудент В WAV, я так понимаю из вашего поста, тот же принцип, только форма отображения методанных другая. http://www.mega-nerd.com/libsndfile/api.html#open это если с практической точки зрения http://www.sonicspot.com/guide/wavefiles.html а это - если тебя интересует структура M$ WAV. ну и: quote:
The standard audio file format for CDs, for example, is LPCM-encoded, containing two channels of 44,100 samples per second, 16 bits per sample хотя бывают и исключения
|
|
|
RE: как в с++builder на рисовать звуковую волну - 2009-10-19 21:24:06.143333
|
|
|
ХреновыйСтудент
Сообщений: 100
Оценки: 0
Присоединился: 2009-06-30 18:30:40.363333
|
библиотеку посмотрел. круто. ок, вторая сцыль кстати битая) quote:
16 bits per sample нормально так. (16 . 65536) т.е. quote:
Regardless of whether data in the file is 8, 16, 24 or 32 bit wide, the data will be read as floating point data in the range [-1.0, 1.0]. будут прочитаны как… т.е. это что, я так понимаю один и тот же флоат используется для разного кол-ва бит. почему так плохо?
|
|
|
RE: как в с++builder на рисовать звуковую волну - 2009-10-19 21:30:19.733333
|
|
|
Denaturat
Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
|
quote:
ORIGINAL: ХреновыйСтудент ок, вторая сцыль кстати битая) работает quote:
ORIGINAL: ХреновыйСтудент будут прочитаны как… т.е. это что, я так понимаю один и тот же флоат используется для разного кол-ва бит. почему так плохо? floating point value != float. ну и да, если тебе нужно иначе (а зачем?) можно воспользовать более специализированными библиотеками (или написать свою - для одного формата несжатого wav это будет несложно)
|
|
|
|
|