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

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

19.12.2011, 10:07. Показов 11325. Ответов 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
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 12
15.12.2012, 14:30
Студворк — интернет-сервис помощи студентам
Хорошо, а хоть какую-нибудь оцифровку осей как сделать?
И сетка чтобы была прорисована сразу, а не достраивалась вместе с графиком
0
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
16.12.2012, 01:02
И так мы скоро разработаем аудиоредактор не хуже, чем у фирмы Sony или Steinberg
Теперь сетка появлятся сразу, есть оцифровка, к тому же тепер после нажатия на кнопку Очистить сетка остаётся. (думаю, так будет лучше).
Вложения
Тип файла: zip Проект1.zip (131.4 Кб, 47 просмотров)
1
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 12
16.12.2012, 01:21
Под SONY и равняемся xDD
Здорово сделал
0
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 12
20.12.2012, 00:03
Решил попробать в одну форму слить, не получилось только оси пунктирные 2 отдельно сделать чтоб вот так было

30 60 90 120 150 180
6000
...
0------------------------------------
...
-6000
-------------------------------------
30 60 90 120 150 180
6000
...
0------------------------------------
...
-6000




а у меня :

30 60 90 120 150 180
6000
...

1000
0-------------------------------------
30 60 90 120 150 180
-1000
...

-6000
Вложения
Тип файла: rar Проект1.rar (90.8 Кб, 19 просмотров)
0
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
20.12.2012, 17:42
Это из-за того, что с сеткой нужно было сделать такие же преобразования, как и с графиками. Я доработал.
Ещё есть на что обратить внимание - седьмой аваст при каждом запуске новоскомпелированной программы показывает у меня такое сообщение:
Миниатюры
Из wav файла вывести график на форму  
Вложения
Тип файла: zip Проект1.zip (130.8 Кб, 22 просмотров)
1
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 12
20.12.2012, 19:47
Антивирь нормальный есть на компе, вирусни быть не должно
Ещё вопрос небольшой: как сделать чтоб оцифровка времени сразу появилась(до появления графика)
0
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
21.12.2012, 16:53
Теперь и время появляется сразу, к тому же остаётся после очистки. Ещё бы сделать, чтобы график появлялся сразу, но это не так просто.
Вложения
Тип файла: zip Проект1.zip (130.7 Кб, 48 просмотров)
1
0 / 0 / 0
Регистрация: 26.12.2012
Сообщений: 9
07.01.2013, 01:38
А можно сделать чтобы координаты всех вершин забивались в текстовый файл на первом твоем проекте!!!
0
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
07.01.2013, 02:04
Тут нужно немного уточнить - каких вершин, когда общая громкость звука в отдельных местах поднимается, а потом опускается, или полностью всех пиков графика, учитывая каждое колебание в отдельности?
0
vektor1960
21.10.2013, 10:13
Программа рабочая.
Но очень надо, чтобы получить данные из wav файла
в виде таблицы Exel
Номер семпла - значение лев.к-значение прав.к
График не нужен.
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
21.10.2013, 12:45
А как сделать так чтоб на графике только 1 какая нибудь частота выводилась?)
0
Модератор
10061 / 3906 / 885
Регистрация: 22.02.2013
Сообщений: 5,856
Записей в блоге: 79
21.10.2013, 13:15
Цитата Сообщение от radlif Посмотреть сообщение
А как сделать так чтоб на графике только 1 какая нибудь частота выводилась?)
Если имеется ввиду спектр, то FFT.
Если использовать разложение в комплексный ряд тогда спектр амплитуд можно узнать по формуле A=sqrt(R2+I2)/2, спектр мощности = A2
0
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
21.10.2013, 13:25
Как бы правильнее объяснить, если к примеру сравнить писк комара и звук электродрели
у них разная частота.
Так вот если эти 2 звука записать то как после вывести отдельно, на 1 пикчур
писк комара, на 2 пикчур звук дрели.
Я как то пытался решить данную задачу но кроме графика всех звуков так
не чё и не смог получить ))
0
Модератор
10061 / 3906 / 885
Регистрация: 22.02.2013
Сообщений: 5,856
Записей в блоге: 79
21.10.2013, 13:40
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Цитата Сообщение от radlif Посмотреть сообщение
Как бы правильнее объяснить, если к примеру сравнить писк комара и звук электродрели
у них разная частота.
Так вот если эти 2 звука записать то как после вывести отдельно, на 1 пикчур
писк комара, на 2 пикчур звук дрели.
Я как то пытался решить данную задачу но кроме графика всех звуков так
не чё и не смог получить ))
Частотный анализ, а там уже разделяй, я уже написал FFT (быстрое преобразование Фурье), в сети есть алгоритмы. Для начала можно обычное дискретное преобразование Фурье сделать, если хочешь вникнуть в работу, формулы элементарные.
Вот класс FFT я делал давно, но это без оптимизации.
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
Public Enum FFTType
    FT_DIRECT
    FT_INVERSE
End Enum
Dim Rcoef(13) As Single, Icoef(13) As Single
Public Function FFT(Rdat() As Single, Idat() As Single, N_ As Long, Ft_Flag As FFTType) As Boolean
    Dim LogN As Long, i As Long, j As Long, N As Long, K As Long, io As Long, ie As Long, in_ As Long, nn As Long
    Dim ru As Single, iu As Single, rtp As Single, itp As Single, rtq As Single, itq As Single, rw As Single, _
        iw As Single, sr As Single
    If N_ > 16384 Or N_ < 1 Then Exit Function
    If Not ((Not ((N_) And ((N_) - 1))) And ((N_) > 1)) Then Exit Function
    LogN = Log2(N_)
    If LogN < 2 Or LogN > 14 Then Exit Function
    If Ft_Flag <> FT_DIRECT And Ft_Flag <> FT_INVERSE Then Exit Function
    nn = N_ \ 2
    ie = N_
    For N = 1 To LogN
        rw = Rcoef(LogN - N)
        iw = Icoef(LogN - N)
        If Ft_Flag = FT_INVERSE Then iw = -iw
        in_ = ie \ 2: ru = 1: iu = 0
        For j = 0 To in_ - 1
            For i = j To N_ - 1 Step ie
                io = i + in_
                rtp = Rdat(i) + Rdat(io)
                itp = Idat(i) + Idat(io)
                rtq = Rdat(i) - Rdat(io)
                itq = Idat(i) - Idat(io)
                Rdat(io) = rtq * ru - itq * iu
                Idat(io) = itq * ru + rtq * iu
                Rdat(i) = rtp: Idat(i) = itp
            Next
            sr = ru
            ru = ru * rw - iu * iw
            iu = iu * rw + sr * iw
        Next
        ie = ie \ 2
    Next
    j = 1
    For i = 1 To N_ - 1
        If i < j Then
            io = i - 1: in_ = j - 1
            rtp = Rdat(in_): itp = Idat(in_)
            Rdat(in_) = Rdat(io)
            Idat(in_) = Idat(io)
            Rdat(io) = rtp
            Idat(io) = itp
        End If
        K = nn
        Do While K < j
            j = j - K
            K = K \ 2
        Loop
        j = j + K
    Next
    If Ft_Flag = FT_INVERSE Then FFT = True: Exit Function
    rw = 1 / N_
    For i = 0 To N_ - 1
        Rdat(i) = Rdat(i) * rw
        Idat(i) = Idat(i) * rw
    Next
    FFT = True
End Function
Private Function Log2(ByVal Value As Long) As Long
    Dim N As Long, R As Long, O As Long
    If Value <= 0 Then Log2 = -1: Exit Function
    R = Value
    Do Until R <= 1
        N = N + 1
        O = R Mod 2
        If O > 0 Then Log2 = -1: Exit Function
        R = R \ 2
    Loop
    Log2 = N
End Function
Private Sub Class_Initialize()
    Dim N As Long, vRcoef As Variant, vIcoef As Variant
    vRcoef = Array(-1#, 0#, 0.707106781186547 _
          , 0.923879532511287, 0.98078528040323, 0.995184726672197 _
          , 0.998795456205172, 0.999698818696204, 0.999924701839145 _
          , 0.999981175282601, 0.999995293809576, 0.999998823451702 _
          , 0.999999705862882, 0.999999926465718)
    vIcoef = Array(0#, -1#, -0.707106781186547 _
         , -0.38268343236509, -0.195090322016128, -9.80171403295606E-02 _
         , -0.049067674327418, -2.45412285229122E-02, -1.22715382857199E-02 _
         , -6.1358846491544E-03, -3.0679567629659E-03, -1.5339801862847E-03 _
         , -7.669903187427E-04, -3.834951875714E-04)
    For N = 0 To 13
        Rcoef(N) = vRcoef(N)
        Icoef(N) = vIcoef(N)
    Next
End Sub
1
Модератор
10061 / 3906 / 885
Регистрация: 22.02.2013
Сообщений: 5,856
Записей в блоге: 79
21.10.2013, 13:53
Лучший ответ Сообщение было отмечено как решение

Решение

Вот я как-то делал счетчик хлопков, сделал только реакцию на ВЧ составляющую. Ну на хлопки реагирует, а если по столу бить то уже нет, также если шипеть в микрофон также реагирует, только если не рычать в него
Миниатюры
Из wav файла вывести график на форму  
Вложения
Тип файла: rar Счетчик хлопков.rar (3.9 Кб, 45 просмотров)
3
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
21.10.2013, 14:00
Цитата Сообщение от The trick Посмотреть сообщение
Вот я как-то делал счетчик хлопков, сделал только реакцию на ВЧ составляющую. Ну на хлопки реагирует, а если по столу бить то уже нет, также если шипеть в микрофон также реагирует, только если не рычать в нег
Пример хороший, вот ток дирекс 8 сейчас скачать проблема
Как скорость на мегафоне дадут буду разбирать)
0
Модератор
10061 / 3906 / 885
Регистрация: 22.02.2013
Сообщений: 5,856
Записей в блоге: 79
21.10.2013, 14:01
Цитата Сообщение от radlif Посмотреть сообщение
ример хороший, вот ток дирекс 8 сейчас скачать проблема
Скачай dx8vb.dll
0
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
21.10.2013, 16:19
The trick, Сможешь прокомментировать свой класс FFT, что он принимает, что возвращает.
0
Модератор
10061 / 3906 / 885
Регистрация: 22.02.2013
Сообщений: 5,856
Записей в блоге: 79
21.10.2013, 16:51
Цитата Сообщение от radlif Посмотреть сообщение
The trick, Сможешь прокомментировать свой класс FFT, что он принимает, что возвращает.
Почитай про FFT тогда поймешь, там все стандартно
0
0 / 0 / 0
Регистрация: 01.02.2015
Сообщений: 3
01.02.2015, 17:55
Опан, а можешь показать пример как сделать децибельную шкалу для wav файла?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.02.2015, 17:55

Как вывести график на форму
Здравствуйте. Прошу мне помочь. У меня в курсовой одним из заданий является написать программу в 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 форме вывести двумерный график этого...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru