|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.04.2012, 11:18 | #31 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Давайте начнем с начала. Частота дискретизации - эта та частота, с которой мы "ставим точки на графике".
Надо как-нибудь что-нибудь обозначить. Честно говоря, уже давно не пользовался никакими учебниками, поэтому вводимые мной обозначения могут не совпадать с общепринятыми. Пусть: f - частота звука. w - частота дискретизации. A - амплитуда. i - так мы назовем номер текущего отсчета, который нужно поместить в буфер (по совместительству - она же переменная цикла). В общем случае звук частотой f описывается формулой: y = A*sin(2*Pi*f*t), где: t - время, Pi = 3.14159265. Учитывая, что при частоте дискретизации w на одно измерение приходится 1/w секунды, запишем: t = i/w откуда: y = A*sin(2*Pi*f*i/w) Последний раз редактировалось s-andriano; 29.04.2012 в 11:21. |
30.04.2012, 02:29 | #32 |
Пользователь
Регистрация: 20.03.2012
Сообщений: 47
|
Да, ребят, вы правы: ничерта я не справился с этими частотами....
Сейчас переписываю программу, выложу. Вроде бы разобрался что к чему, но один не отвеченный вопрос все-таки остался. Как допишу, задам его. Но, похоже, что всемогущий s-andriano, ответ уже написал в предыдущем сообщении))) Последний раз редактировалось IgoRek125; 30.04.2012 в 02:33. |
30.04.2012, 05:53 | #33 |
Пользователь
Регистрация: 20.03.2012
Сообщений: 47
|
Спасибо большое, s-andriano. Твоя помощь неизмерима!
А теперь о том самом вопросе. Думал, думал я и как-то напечатал. Получился вот такой текст программы: PHP код:
Как вы могли обратить внимание, на месте, помеченном как есть пик, присутствует переменная d и довольно интересная формула d:=d-(i) . Не пытайтесь отгадать откуда я ее взял: она была подарена мне небесной силой под названием фантазия (слава богу и судьбе, этим я не обделен) , т.е. на самом деле я пытаюсь сформировать определенную формулу, которая дала бы мне вот такой вид синусоиды или амплитуды, совсем я уже запутался что есть что, в общем необходим вот такой вот ее вид: Серая стрелочка справа - это уровень громкости звука. Число 30 000 я взял чисто на угад, ну как будто это самая высокая точка, необходимая мне. Переменная ampl = частота дискретизации поделенная на частоту звука, т.е длительность одного герца частоты звука. А вот как сформировать формулу, я никак не соображу. Мне ясно только, что в ней должны присутствовать переменные d, ampl и i, как единица изменения. Как вот расчитать все зеленые сэмплы (точки), отмеченные синей полосой? P.S: Я не глупый, но пожалуйста, ради всего святого, когда что-то свято-полезное начнете писать, постарайтесь представить, что пишете для глупого самоучки, не понимающего еще ой как много ни в Delphi, ни в жизни. Так что все советы, как сделать лучше, проще или что-то о рисовании на этой диаграме звука приму с радостью и удовольствием. Последний раз редактировалось IgoRek125; 30.04.2012 в 16:44. |
30.04.2012, 07:56 | #34 | |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
Формула для графика будет выглядеть примерно так: Код:
|
|
30.04.2012, 16:38 | #35 |
Пользователь
Регистрация: 20.03.2012
Сообщений: 47
|
StartTime и EndTime - это начало и конец рисования амплитуды,
а MaxAmpl - это мое число 30 000 ? |
30.04.2012, 17:42 | #36 |
Пользователь
Регистрация: 20.03.2012
Сообщений: 47
|
Вот такой вод текст программы получился:
PHP код:
Можно ли как-то побороть эту погрешность? |
30.04.2012, 18:03 | #37 | ||
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
Цитата:
И, по физике явления, такая формула ДОЛЖНА приводить к погрешности, т.к. частота дискретизации не обязана быть кратной частоте сигнала. |
||
01.05.2012, 23:02 | #38 |
Пользователь
Регистрация: 20.03.2012
Сообщений: 47
|
s-andriano, ты меня все больше и больше поражаешь. Кто ты такой?Преподователь вуза? Чем в жизни знимаешься? Создаешь для роботов ПО ? Как ты эту формулу так легко написал мне?!!!
И как мне самому создать подобные формулы, если б я захотел вот такие вот синусоиды??? |
02.05.2012, 00:41 | #39 |
Пользователь
Регистрация: 20.03.2012
Сообщений: 47
|
Буду признателен, если сможешь ответить и на вот этот вопрос
http://programmersforum.ru/showthrea...17#post1032017 |
02.05.2012, 08:06 | #40 | |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
По поводу конструирования функций - тут точного алгоритма нет, и это в какой-то степени искусство. Прежде всего желательно понять, на что похожа функция, которую мы хотим аппроксимировать. Затем подбираются коэффициенты масштабирования и сдвига. Т.е. y = A + B*f(C*x + D) где: y - искомая функция, f - функция, на которую она "похожа", A, D - коэффициенты сдвига, B, C - коэффициенты масштабирования. Это - в простых случаях. В более сложных используется либо полиномиальная аппроксимация либо кусочная интерполяция. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Звук Звууууук Звук ... не рабоает звук.. | Zvuuuuk | Компьютерное железо | 2 | 22.01.2011 17:53 |
Тюнер для гитары в делфи. (Считывать с микрофона звук и выводить какой частоты этот звук). | Серего | Мультимедиа в Delphi | 8 | 12.01.2011 14:39 |
создать стерео звук | FAiver | Мультимедиа в Delphi | 3 | 06.01.2009 11:09 |
звук и делфи, левый правый звук | snusmumric | Win Api | 2 | 29.10.2007 11:10 |
Возможно ли средствами Delphi создать "звук" | V_X | Помощь студентам | 2 | 19.12.2006 18:24 |