На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела "Программирование звука"
0) Данный раздел предназначен для обсуждения проблем, возникающих при программировании задач, связанных с записью, обработкой, воспроизведением звука. Перед созданием темы подумайте, не будет ли она уместнее в разделах Разработка и тестирование программ, Наши исходники, а особенно Разовые заказы и подработки
1) На Раздел распространяются все Правила форума.Огромная просьба с ними внимательно ознакомиться.
2) Запрещается давать бессмысленные ответы вроде: "Снеси Мастдай", "ХП рулит", "Поставь Линукс" и т.д.
3) Запрещается создавать темы, в которых Вы намереваетесь получить ссылку на кряки, серийники и т.п. Также запрещено любое обсуждение p2p (peer-to-peer) сетей (BitTorrent, eDonkey и т.д.).
4) Реклама всякого рода пресекается беспощадно.
5) Используйте тэг [CODE] для выделения кода программы (непременно с указанием языка программирования - выбрать из списка. В противном случае бессмысленно!). Уважайте тех, кто будет читать ваш код!
6) Если решение вашей проблемы найдено, то не забываем помечать тему специальной функцией "Вопрос решён". Вам всего лишь требуется при написании последнего ответа поставить одну единственную галочку прямо над формой ответа.
7) Если вы хотите получить совет для конкретной платформы/языка программирования, обязательно укажите их в вопросе

8) Если не прикрепляются/не скачиваются файлы, читаем Не прикрепляется / не скачивается файл. Любые обсуждения в данном разделе проблем с приложением файлов считаются оффтопиком! Со всеми вытекающими.

9) NEW! Уважаемые новички! Мы приветствуем Ваше желание научить всех посетителей раздела правильному программированию. Но огромная просьба, перед тем, как писать поучения в старых (последний ответ - "старее" месяца, а особенно, если вопрошавший не появляется на форуме уже не первый месяц, в чем можно убедиться в его профиле) темах, хорошо подумать, будет ли кому-нибудь, кроме Вас cамих, это интересно. Попытки накрутки количества тематических сообщений за счёт поднятия древних неактуальных тем ("некрофилия") будут наказываться по велению левой пятки модераторского состава (см. пп.12, 13 Правил)



Нарушение Правил может повлечь наказание со стороны модераторов.



user posted imageFAQ Раздела user posted imageПоиск в Разделе user posted imageMSDN Library Online | Ваше мнение о модераторах: user posted imageBarazuk user posted imageRikkie
  
> Графическое отображение спектрограммы
    Ребят приветствую все!
    Говорю сразу, юзал этот вопрос в нэте, ничего дельного не нашел к сожалению. Буду признателен если кто подскажет.
    Необходимо реализовать графическое отображение спектрограммы. То есть сама спектрограмма в виде двумерного массива есть, и необходимо его отрисовать в PaintBox. Никогда не работал с этим компонентом и никак не пойму как градуировку цвета делать в зависимости от значения амплитуды. Помимо этого надо реализовать цифровую вертикальную шкалу частот гармоник спектрограммы. Может кто подсказать или материал какой подкинуть? Может есть уже готовый компонент для отображения спектрограммы?
    Буду очень признателен за любой совет!
      Цитата
      как градуировку цвета делать в зависимости от значения амплитуды

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

      Когда-то я отрисовывал спектрограмму в TChart, тип серии Point. Получалось тормознуто, за счёт того, что при изменении размеров я заново формировал спектрограмму из wave. Ну и точек получалось многовато. Зато в TChart есть функции перевода координат экрана в координаты графика, и наоборот, что удобно для реализации "курсоров", различных режимов измерений "по графику" и пр.
      Выглядело это так:
      Прикреплённый файлПрикреплённый файлSpectrogr.JPG (33,67 Кбайт, скачиваний: 1015)
        Prince подскажите пожалуйста, то что на рисунке это выведено в компонент TChart? Или в TPaintBox реализовано?
          TChart.
            Prince не подскажите по поводу соответствия цветов значениям амплитуды. К примеру есть диапазон амплитуд от 0 до 100. Какой цвет ставить (то есть какой код RGB) в соответствие каждому значению амплитуды из этого диапазона?
              Нет определенного соотвествия. См. пост №2.
              Сообщение отредактировано: Prince -
                Цитата sandro @
                есть диапазон амплитуд от 0 до 100

                В Cool Edit Pro используется примерно такое:
                ExpandedWrap disabled
                      r = 128 + (x - 40) * 4: If r < 0 Then r = 0 Else If r > 255 Then r = 255
                      g = 255 - (100 - x) * 5: If g < 0 Then g = 0
                      b = x * 8: If b > 255 Then b = 255
                Сообщение отредактировано: Mikle -
                  :senile:
                  ExpandedWrap disabled
                    r:=0;b:=0;g:=0;
                    case i of
                    0..24: Begin
                           r:=i*10;
                           end;
                    25..49:Begin
                           r:=250;
                           g:=(i-25)*10;
                           end;
                    50..74:begin
                           r:=250-(i-50)*10;
                           g:=250;
                           b:=i*10;
                           end;
                    75..100:begin
                            g:=250-(i-75)*10;
                            b:=250;
                            end;


                  ExpandedWrap disabled
                    r:=0;b:=0;g:=0;
                    case i of
                    0..49:begin
                          r:=(i)*5;
                          end;
                    50..74:Begin
                           r:=245;
                           g:=(i-50)*5;
                           end;
                    75..98:begin
                           r:=245;
                           g:=round(160*log10(i-69));
                           end;
                    99..100:Begin
                           r:=250;
                           b:=250;
                           g:=250;
                           end;
                    end;



                  ExpandedWrap disabled
                    r:=0;b:=0;g:=0;
                    case i of
                    0..49:begin
                          g:=(i)*5;
                          b:=140;
                          end;
                    50..74:Begin
                           g:=245;
                           b:=120-(i-50)*5;
                           r:=(i-50)*5;
                           end;
                    75..98:begin
                           g:=245;
                           r:=round(160*log10(i-69));
                           end;
                    99..100:Begin
                           r:=250;
                           b:=100;
                           g:=100;
                           end;
                    end;



                  Можно оттенки серого использовать. Ещё "3-х мерную" картинку из отдельных спектров рисовать, линиями. В этом случае амплитуда будет по оси y, как обычно, отображаться, можно дополнительно цвет использовать.
                  Сообщение отредактировано: Prince -
                    Ребят спасибо большое за подсказку!!!
                      Если диапазон будет больше, чем 0..100, то имеет смысл отображать величину в логарифмическом масштабе.
                        Ну я так в общем и делаю, может не совсем корректно:
                        1 - перевожу амплитуды в Дб относительно мат. ожидания амплитуды за всю спектрограмму
                        2 - нормирую значения амплитуд (то есть привожу к диапазону от 0 до 100)
                        3 - отображаю в PaintBox
                        Если руки дойдут обязательно реализую компонент и размещу его здесь, может кому пригодится. Хотя есть хорошие коммерческие компоненты, в частности от ZetLab, но для работы с ним необходим подключенный АЦП их фирмы.
                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                        0 пользователей:


                        Рейтинг@Mail.ru
                        [ Script execution time: 0,0339 ]   [ 20 queries used ]   [ Generated: 23.04.24, 12:46 GMT ]