Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/50: Рейтинг темы: голосов - 50, средняя оценка - 4.54
2 / 2 / 0
Регистрация: 19.12.2011
Сообщений: 17

Из wav файла вывести график на форму

19.12.2011, 10:07. Показов 11317. Ответов 46

Студворк — интернет-сервис помощи студентам
Очень нужна помощь, на форме есть кнопки нужно чтобы по нажатию кнопки выводился график из wav файла. файл примерно длительностью 1 сек (не важно вообщем то какой). главное чтобы выводился график и чтобы на нем можно было смотреть значения, если он при этом еще и динамический будет то вообще идеально.
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.12.2011, 10:07
Ответы с готовыми решениями:

Не могу вывести график и сохранить формат wav
= wavread ('c:\1\1.wav'); spec = abs (fft(s)); spec = spec (1:end/2); freq = (fs/2)*(1:length(spec))/length(spec); plot (freq,...

Рисовать график wav файла с зумом по времени - на чем?
Задача - есть моно wav файл, надо сделать его визуализацию во временнОй области с прокруткой и изменением масштаба по времени в широких...

Вывести график функции на форму.
Иследовать функцию. y^2=x^4/(x^2-1). Протабулировать её в интервале, который вводиться с клавиатуры, вывести результат в таблицу, вывести...

46
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
01.02.2015, 18:43
Студворк — интернет-сервис помощи студентам
Значит, шкала в децибелах - это прежде всего шкала логарифмической зависимости от амплитуды, т. е. если мощность звука возрастает в столько-то раз, то это вызывает увеличение на столько-то децибел. А мощность звука, в свою очередь имеет квадратическую зависимость от амплитуды, так, как увеличили мы. скажем, амплитуду в 1.5 раза - на выходе усилителя возросло напряжение в 1.5 раза и во столько же возрасла сила тока. В итоге звуковая мощность выросла в 2.25 раза.
Во вложении есть таблица, переводящая амплитуду в децибелы. (Источник - Децибел, как единица сравнения уровня двух различных величин сигналов) Там же и точная формула для расчёта, но мне не хочется по новой дерзать школьный учебник.
В таблице видно, что с изменением амплитуды в 2 раза, количество децибел меняется на 3 децибела, так что удобней всего шкалу в децибелах построить так, чтобы с каждым децибелом амплитуда увеличивалась в корень третьей степени из двух по сравнению с предыдущим значением.
Миниатюры
Из wav файла вывести график на форму  
0
Модератор
10061 / 3906 / 885
Регистрация: 22.02.2013
Сообщений: 5,856
Записей в блоге: 79
02.02.2015, 00:29
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Option Explicit
 
Private Sub Form_Load()
    Dim dat()   As Single
    Dim index   As Long
    
    ReDim dat(5000)
    
    Me.Scale (0, 0)-(UBound(dat), -160)
    Me.AutoRedraw = True
    ' Рисуем шкалу
    For index = Me.ScaleTop To (Me.ScaleHeight - Me.ScaleTop) Step -10
        Me.Line (0, index)-Step(Me.ScaleWidth, 0), &HC8C8C8
        Me.CurrentX = 0: Me.CurrentY = index: Me.Print Format(IIf(index < -80, -160 - index, index), "0 db")
    Next
    
    ' В примере заполняем пилой, в реальности берем отсчеты из файла
    ' и приволим их к диапазону от -1 до +1
    ' Пила линейно возрастает по амплитуде
    For index = 0 To UBound(dat)
        dat(index) = ((index Mod 300) / 150 - 1) * (index / (UBound(dat) + 1))
    Next
    
    ' Выводим в логарифмическом масштабе
    Me.ForeColor = vbRed
    For index = 0 To UBound(dat)
        If index Then Me.Line -(index, GetLogAmp(dat(index))) Else Me.PSet (index, GetLogAmp(dat(index)))
    Next
    
End Sub
 
Private Function GetLogAmp(ByVal Value As Single) As Single
    Dim tmp As Single
    
    tmp = Abs(Value)
    If tmp < 0.0001 Then tmp = 0.0001
    
    If Value > 0 Then
        GetLogAmp = Log(tmp) / 0.115129254649702
    Else
        GetLogAmp = -Log(tmp) / 0.115129254649702 - 160
    End If
    
End Function
На данном графике хорошо будут видны и громкие звуки и очень очень тихие, основная площадь как раз занимают тихие звуки (-30..-80db)
Миниатюры
Из wav файла вывести график на форму  
0
0 / 0 / 0
Регистрация: 01.02.2015
Сообщений: 3
02.02.2015, 09:43
The trick, спасибо

Добавлено через 34 минуты
почему то у вас шкала немного по другому выглядит,вот как должна
https://www.cyberforum.ru/atta... 1422859494
Миниатюры
Из wav файла вывести график на форму  
0
Модератор
10061 / 3906 / 885
Регистрация: 22.02.2013
Сообщений: 5,856
Записей в блоге: 79
02.02.2015, 19:13
Цитата Сообщение от Анаконда_Мира Посмотреть сообщение
почему то у вас шкала немного по другому выглядит,вот как должна
Потому что у меня логарифмический масштаб, а на рисунке линейный.
0
0 / 0 / 0
Регистрация: 01.02.2015
Сообщений: 3
03.02.2015, 07:16
Цитата Сообщение от The trick Посмотреть сообщение
Потому что у меня логарифмический масштаб, а на рисунке линейный.
а на рисунке(в частности у меня) тоже логарифмический,тогда про какой рисунок идет речь?
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
03.02.2015, 07:33
Цитата Сообщение от Анаконда_Мира Посмотреть сообщение
почему то у вас шкала немного по другому выглядит
Может потому что там не реальный звук, а "пила" ?
' В примере заполняем пилой,
0
Модератор
10061 / 3906 / 885
Регистрация: 22.02.2013
Сообщений: 5,856
Записей в блоге: 79
03.02.2015, 17:33
Цитата Сообщение от Анаконда_Мира Посмотреть сообщение
а на рисунке(в частности у меня) тоже логарифмический,тогда про какой рисунок идет речь?
У тебя масштаб линейный (разница сигнала в 2 раза соответствует разнице высот графика в 2 раза), у меня логарифмический. У тебя шкала логарифмическая, у меня тоже. На рисунке из-за того что у меня логарифмический масштаб шкала выглядит как линейная.
Для того чтобы перевести децибелы в разы (чтобы сделать такую шкалу как у тебя на рисунке):
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Option Explicit
 
 
Private Sub Form_Load()
    Dim dat()   As Single
    Dim index   As Long
    
    ReDim dat(5000)
    
    Me.Scale (0, 1)-(UBound(dat), -1)
    Me.AutoRedraw = True
    
    ' Øêàëà
    Dim var As Variant
    
    For Each var In Array(0, -3, -6, -12, -18, -1300)
        Me.Line (0, FromDb(var))-Step(Me.ScaleWidth, 0)
        Me.CurrentX = 0: Me.Print Format(var, "0 db")
        Me.Line (0, -FromDb(var))-Step(Me.ScaleWidth, 0)
        Me.CurrentX = 0: Me.Print Format(var, "0 db")
    Next
    
    '  ïðèìåðå çàïîëíÿåì ïèëîé, â ðåàëüíîñòè áåðåì îòñ÷åòû èç ôàéëà
    ' è ïðèâîëèì èõ ê äèàïàçîíó îò -1 äî +1
    ' Ïèëà ëèíåéíî âîçðàñòàåò ïî àìïëèòóäå
    For index = 0 To UBound(dat)
        dat(index) = ((index Mod 300) / 150 - 1) * (index / (UBound(dat) + 1))
    Next
    
    ' Âûâîäèì â ëèíåéíîì ìàñøòàáå
    Me.ForeColor = vbRed
    For index = 0 To UBound(dat)
        If index Then Me.Line -(index, dat(index)) Else Me.PSet (index, dat(index))
    Next
    
End Sub
 
Private Function FromDb(ByVal db As Single) As Single
    FromDb = 10 ^ (db / 20)
End Function
Миниатюры
Из wav файла вывести график на форму  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.02.2015, 17:33

Как вывести график на форму
Здравствуйте. Прошу мне помочь. У меня в курсовой одним из заданий является написать программу в Visual Basic 2008 express edition таким...

Вывести на форму таблицу и график функции y=e^(x-2)/tg(x-2)
нужно алгортм, программный код, список управляющих элементов Я в этом вообще не шарю, помогите

Вывести на форму таблицу и график функции
Здравствуйте. Есть функция: y = exp(x-2)+x^2+3. Необходимо вычислить значение функции в заданном интервале, вывести результат в...

Открыть файл формата WAV, воспроизвести его и отобразить график амплитуды и времени этого сигнала (файла), а также спектр сигнала
Здравствуйте ! Помогите пожалуйста с программой на Delphi 7. Не могу написать программу которая по нажатию вкладки ОТКРЫТЬ в меню...

На форму вывести двумерный график по массиву, записанному в текстовом файле
Ребята помогите!!! У меня есть файл, допустим txt-файл с массивом из чисел. И мне надо в c++ builder форме вывести двумерный график этого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
47
Ответ Создать тему
Новые блоги и статьи
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru