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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2012, 16:21   #11
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

http://programmersforum.ru/showthrea...t=84661&page=2
http://programmersforum.ru/showthread.php?t=165991
http://programmersforum.ru/showthread.php?t=141990
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 08.04.2012, 20:10   #12
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от IgoRek125 Посмотреть сообщение
Вот нашел интересный текст программы в интернете.
Насколько я понял, программа генерит белый шум, промодулированный синусоидой.
Тебе просто нужно поместить в GetData свои данные.
s-andriano вне форума Ответить с цитированием
Старый 09.04.2012, 21:03   #13
IgoRek125
Пользователь
 
Регистрация: 20.03.2012
Сообщений: 47
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Насколько я понял, программа генерит белый шум, промодулированный синусоидой.
Тебе просто нужно поместить в GetData свои данные.
Спасибо, попробу)
IgoRek125 вне форума Ответить с цитированием
Старый 24.04.2012, 01:39   #14
IgoRek125
Пользователь
 
Регистрация: 20.03.2012
Сообщений: 47
По умолчанию

Может, хоть кто литературу знает, где может быть про это написано?
IgoRek125 вне форума Ответить с цитированием
Старый 24.04.2012, 07:51   #15
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

А про что "про это"?
Я бы начал с того, что погуглил по "формат WAV файла" и "PCM".
Если это окажется непонятным, то, по-видимому, пробелы в теории - тогда читать монографии типа "Акустика", "Электроакустические преобразователи", "Цифровая обработка сигналов" и т.п.
Написание любой вменяемой программы кроме умения программировать подразумевает некоторое знакомство с основами предметной области, к которой относится программа.
Например, нельзя написать физический движок, не зная физики, нельзя уверенно работать с 3D-графикой, не зная аналитической геометрии, нельзя работать со звуком, не зная акустики.
s-andriano вне форума Ответить с цитированием
Старый 25.04.2012, 17:01   #16
IgoRek125
Пользователь
 
Регистрация: 20.03.2012
Сообщений: 47
По умолчанию

А какой парамерт отвечает за высоту звука?
IgoRek125 вне форума Ответить с цитированием
Старый 26.04.2012, 13:16   #17
IgoRek125
Пользователь
 
Регистрация: 20.03.2012
Сообщений: 47
По умолчанию

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

PHP код:
   ZvukData Record                  {?AIE AAIIUO}
      
wSamplesPerSec Cardinal;      {?anoioa}
      
wAvgBytesPerSecCardinal;      {?aciaea?aiai aeiea}
      
wBitsPerSample WORD;          {aeoiinou 8}
      
wChannels      WORD;          {eaiaeu}
      
Data           TMemoryStream; {iannea aaiiuo}
      
end;
                                                                 {
Caanu ia naiii aaea oieuei ?aiee oi?iaoa}

   
TWaveHeaderChank packed record  //Caaieaie (?aie) oi?iaoa 
      
wFormatTag     Smallint;
      
wChannels      WORD;
      
wSamplesPerSec Cardinal;
      
wAvgBytesPerSecCardinal;
      
wBlockAlign    WORD;
      
wBitsPerSample WORD;
      
wcbSize        WORD;
      
end;


..........................................................................


Function 
WriteWave(FileName AnsiStringdata ZvukData) : WORD;
var
   
f             TFileStream;
   
wFileSize     Cardinal;
   
wChankSize    Cardinal;
   
ID            : array[0..3of Char;
   
Header        TWaveHeaderChank;
Begin
   f
:=nil;
   Try
      
:= TFileStream.Create(FileNamefmCreate);
      
f.Seek(0soFromBeginning);
      
Header.wFormatTag     := 1;
      
Header.wChannels      := data.wChannels;
      
Header.wSamplesPerSec := data.wSamplesPerSec;
      
Header.wBlockAlign    := data.wChannels * (data.wBitsPerSample div 8);
      
Header.wAvgBytesPerSec:= data.wSamplesPerSec Header.wBlockAlign;
      
Header.wBitsPerSample := data.wBitsPerSample;
      
Header.wcbSize        := 0//iao aiiieieoaeuiiai aeiea

      
ID := 'RIFF';
      
f.WriteBuffer(ID4);
      
wFileSize := 0;       //iiea ia ecaanoai
      
f.WriteBuffer(wFileSize4);
      
ID := 'WAVE';
      
f.WriteBuffer(ID4); //Caienu eaaioeoeeaoi?a oi?iaoa

      
ID := 'fmt ';
      
f.WriteBuffer(ID4);                  //Caienu eaaioeoeeaoi?a ?aiea oi?iaoa
      
wChankSize := SizeOf(Header);
      
f.WriteBuffer(wChankSize4);              //Caienu ?acia?a ?aiea
      
f.WriteBuffer(HeaderSizeOf(Header)); //Caienu ?aiea oi?iaoa

      
ID := 'data';
      
f.WriteBuffer(ID4);                  //Caienu ?aiea aaiiuo
      
wChankSize := data.Data.Size;          //Caienu ?acia?a ?aiea
      
f.WriteBuffer(wChankSize4);          //Caienu aaiiuo
      
data.Data.Seek(0soFromBeginning);
      
f.CopyFrom(data.Datadata.Data.Size);

      
f.Seek(SizeOf(ID), soFromBeginning);     //Iiene caiene ?acia?a oaeea
      
wFileSize := f.Size SizeOf(ID) - SizeOf(wFileSize);
      
f.Write(wFileSize4);                   //Caienu ?acia?a oaeea - caaieiaie
   
except
      f
.Free;
      
end;
      
   
end;






procedure TForm1.Button7Click(SenderTObject);        {aaia?aoee wav aaiiuo a Delphi}
var
   
x,y,liniyainteger;        {aey oeeea caiieiaiey ianneaa aaiiuo caoea}
   
rZvukData;                {ii eaaa yoi e ?aie aaiiuo e aaiiua???}
   
dSmallInt;
begin
   
try
      
with r do begin                {wiht io?ai eeou aey oiai. ?oiau iinoiyiii ia ienaou roeia eiiaaa iaeaa?aao iaienaiea i?ia?aiiu}
         
wSamplesPerSec:=Chastota;
         
wBitsPerSample:=8;
         
wChannels:=1;
         
Data:=TMemoryStream.Create;
         
Data.Seek(0,soFromBeginning);   {?oi y yoei Seek e aai ia?aiao?aie aaea?, y ia iiieia?. A?iaa anoaa ia?aei ia?aie aaeieou aaiiuo}
         
end;
      
liniya:=-1;
      For 
y:=0 to Image1.Height-do begin
         
For x:=0 to Image1.Width-do begin
            
If massiv[x,y]=True then begin
               liniya
:=liniya+1;
               
d:=500;                       ///aeaeii yoi aunioa caoea a aaoeaaeao
               
r.Data.WriteBuffer(d1);
               
end
            
else begin
               d
:=-128;
               
r.Data.WriteBuffer(d1);
               
end;
            
end;
         
end;

////////////////// ooieoey nicaaiea naiiai caoea, e nio?aiaiea aai ia aene! 
      
WriteWave(FileNamer);

   finally
      
r.Data.Free;        {i?enoea iaiyoe eiiiu?oa?a}
      
end;
   
ShowMessage('..... Oaee aeaaiiieo?ii nicaai! .....');
   
end
IgoRek125 вне форума Ответить с цитированием
Старый 26.04.2012, 19:38   #18
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

В коде ковыряться лень. В 3 раза - маловероятно, а в два - если что-то напутали с заголовком либо заполнением массивов.
Я бы посоветовал начинать с одноканального 8-разрядного звука. Когда добьетесь адекватного воспроизведения, постепенно сначала увеличте разрядность до 16, а потом и количество каналов до 2.

PS. 8-разрядный звук представляется беззнаковыми величинами со смещением.
s-andriano вне форума Ответить с цитированием
Старый 27.04.2012, 00:15   #19
IgoRek125
Пользователь
 
Регистрация: 20.03.2012
Сообщений: 47
По умолчанию

s-andriano, благодарю тебя за сосет, но вот беда: ведь именно как ты и сказал, я и сделал)), что и видно на коде. ... Вроде все правильно сделал, перепроверил, пересмотрел двадцать раз, но потом до меня дошло: я когда проверяю откомпелированную программу, у меня там вводятся такие данные, что частота = 90 Герц, и только поэтому видимо плеер, через который я проигрывал звук (вообще-то редактор Sound Forge 8.0)) ), и который создавала в конечной работе моя программа, ускорял автоматически при проигрывании.
Но если установить частоту 180 или выше, то все будет чики пуки)))...

Быть может посоветуете лучше, как заполнять массив данных ?, высота звука там должна зависить от частоты? иначе у меня там такие интересные звуки получаются)), то колонки не в состоянии на такой частоте выдать звук, т.е он вроде и есть, но его я не слышу)))) , да в принцепи там всякое получается разное, если поэксперементировать с переменной d
В коде видно, что я на обум ввел число 500. Но как должна выглядеть формула, если конечно эта переменная должна зависить от частоты. С другой стороны я и вовсе иногда не буду слышать звук, потому что исход работы программы (генерируемый wav файлик) зависит от массива данных. Как никак я не амплитуду сделал, а просто раскидал точки данных в два ряда.
IgoRek125 вне форума Ответить с цитированием
Старый 27.04.2012, 20:14   #20
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Вообще-то у звуковой системы компьютера есть определенные характеристики. И никто не гарантирует, что что-то будет работать, если выйти за пределы допустимых границ.
Минимальная гарантированно поддерживаемая частота дискретизации 11025 Гц. Собственно, эту величину можно получить, если дать системе запрос о поддерживаемых форматах. Соответственно, ниже делать не рекомендуется.
Опять же, непонятно, зачем нужен звук, которого не слышно.

Высота звука и частота - это одно и то же.

Я, честно говоря, не понимаю такого метода работы: что-то поменять и посмотреть, что из этого получится. Практика показывает, что ничего хорошего не получается. Если что-то делаешь, то нужно четко представлять, что именно хочешь получить, и какими средствами этого можно добиться.
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