Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2012, 12:23   #41
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

TC, почитайте - Олег Гордеев. Программирование звука в Windows
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 03.05.2012, 13:47   #42
IgoRek125
Пользователь
 
Регистрация: 20.03.2012
Сообщений: 47
По умолчанию

s-andriano я вот сейчас пытаюсь сделать вот такую амплитуду:
Изображения
Тип файла: jpg Форма Сигнала 3.jpg (10.4 Кб, 117 просмотров)

Последний раз редактировалось IgoRek125; 03.05.2012 в 13:52.
IgoRek125 вне форума Ответить с цитированием
Старый 03.05.2012, 13:50   #43
IgoRek125
Пользователь
 
Регистрация: 20.03.2012
Сообщений: 47
По умолчанию

Вот как представить формулу для расчета Зеленых сэмплов ?
Я так думаю надо разбить ее на три цыкла сначала и расчитать: Первая - от 0 до 30 000, Вторая - от 30 000 до -30 000 (по той формуле, которую ты представил мне ранее) и Третья - от -30 000 до 0.
или как-то можно одной формулой?
IgoRek125 вне форума Ответить с цитированием
Старый 03.05.2012, 13:50   #44
IgoRek125
Пользователь
 
Регистрация: 20.03.2012
Сообщений: 47
По умолчанию

raxp спасибо за книгу! скачав, уже вижу, что она мне ооочень пригодится и понравится))
IgoRek125 вне форума Ответить с цитированием
Старый 03.05.2012, 20:04   #45
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от IgoRek125 Посмотреть сообщение
Вот как представить формулу для расчета Зеленых сэмплов ?
Я так думаю надо разбить ее на три цыкла сначала и расчитать: Первая - от 0 до 30 000, Вторая - от 30 000 до -30 000 (по той формуле, которую ты представил мне ранее) и Третья - от -30 000 до 0.
Правильно думаешь.
Цитата:
или как-то можно одной формулой?
Можно и одной - с использованием функции abs, но из трех кусочков лучше.

PS. Возвращаясь к вопросу о погрешностях, еще раз спрашиваю, чего ты хочешь добиться этой формулой?
ampl:=round(r.wSamplesPerSec/Chastota);

PPS. Еще у меня есть подозрение, что ты подходишь к синтезу звука с неверных позиций.
Ты поделись, зачем тебе все это нужно?
s-andriano вне форума Ответить с цитированием
Старый 04.05.2012, 15:23   #46
IgoRek125
Пользователь
 
Регистрация: 20.03.2012
Сообщений: 47
По умолчанию

Этой формулой я расчитываю длительность одного такого пика, как на рисунках.

Последний раз редактировалось IgoRek125; 04.05.2012 в 18:07.
IgoRek125 вне форума Ответить с цитированием
Старый 04.05.2012, 17:06   #47
IgoRek125
Пользователь
 
Регистрация: 20.03.2012
Сообщений: 47
По умолчанию

s-andriano, скажи свое мнение, правильно ли я расчитал формулы?
PHP код:
If massiv[x,y]=True
               then begin
                  
For i:=0 to round(ampl/3) do begin
                     d
:=round(i*(30000/(ampl/3)));
                     
r.Data.WriteBuffer(d4);
                     
end;
                  For 
i:=0 to round(ampl/3) do begin
                     d 
:= round(30000*(1.0 2.0*(i-0)/((ampl/3)-0)));
                     
r.Data.WriteBuffer(d4);
                     
end;
                  For 
i:=round(ampl/3downto 0 do begin
                     d
:=round(i*(-30000/(ampl/3)));
                     
r.Data.WriteBuffer(d4);
                     
end;
                  
end    
                                  
               
else begin                                
                  
For i:=0 to ampl do begin         
                     d
:=0;                               
                     
r.Data.WriteBuffer(d4);       
                     
end;                                
               
end

Последний раз редактировалось IgoRek125; 04.05.2012 в 17:51.
IgoRek125 вне форума Ответить с цитированием
Старый 04.05.2012, 20:17   #48
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

В код не вникал, но на первый взгляд неправильно:
График условно можно разбить на 4 четверти - в первой сигнал нарастает, затем две - убывает, и в последней - снова нарастает.
А у тебя три участка одинаковой длины.
s-andriano вне форума Ответить с цитированием
Старый 05.05.2012, 02:16   #49
IgoRek125
Пользователь
 
Регистрация: 20.03.2012
Сообщений: 47
По умолчанию

s-andriano, точно, ты прав!, они одинаковой длинны...
Подредактируем)) :
PHP код:
If massiv[x,y]=True 
               then begin 
                  
For i:=0 to round(ampl/4) do begin 
                     d
:=round(i*(30000/(ampl/4))); 
                     
r.Data.WriteBuffer(d4); 
                     
end
                  For 
i:=0 to round(ampl/2) do begin 
                     d 
:= round(30000*(1.0 2.0*(i-0)/((ampl/2)-0))); 
                     
r.Data.WriteBuffer(d4); 
                     
end
                  For 
i:=round(ampl/4downto 0 do begin 
                     d
:=round(i*(-30000/(ampl/4))); 
                     
r.Data.WriteBuffer(d4); 
                     
end
                  
end     
                                   
               
else begin                                 
                  
For i:=0 to ampl do begin          
                     d
:=0;                                
                     
r.Data.WriteBuffer(d4);        
                     
end;                                 
               
end
Только вот остался один вопрос и появился еще один:
Как избавиться от погрешности все-таки?
И откуда у меня появляется лишний сэмпл?
при стыке двух таких пиков, он вдруг вырисовывается, я показал на рисунке знаком вопроса.
Изображения
Тип файла: jpg Форма сигнала 4.jpg (17.1 Кб, 108 просмотров)

Последний раз редактировалось IgoRek125; 05.05.2012 в 02:41. Причина: орфографические ошибки
IgoRek125 вне форума Ответить с цитированием
Старый 05.05.2012, 08:59   #50
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Раз источник погрешности округление, значит нужно избавиться от него.
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Звук Звууууук Звук ... не рабоает звук.. 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