Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Мультимедиа
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.12.2013, 11:16
lkz_07 lkz_07 вне форума
Новичок
 
Регистрация: 12.03.2011
Сообщения: 50
Репутация: 10
По умолчанию Воспроизвести сигнал

Имеется например сигнал:
1 сек, пауза 1 сек, 2 сек.
графически типа:
_|-|_|--|_

как его записать в массив и воспроизвести в колонках с определенной частотой?

Использовать Beep и sleep (delay) нельзя.
Ответить с цитированием
  #2  
Старый 23.12.2013, 12:14
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от lkz_07
Имеется например сигнал:
1 сек, пауза 1 сек, 2 сек.
графически типа:
_|-|_|--|_

как его записать в массив и воспроизвести в колонках с определенной частотой?

Использовать Beep и sleep (delay) нельзя.
Не думаю что с записью в массив может быть проблема.
А воспроизвести любой звук можно с помощью стандартных API-функций waveOutOpen, waveOutWrite и т.д. Пример на Delphi смотри здесь: http://www.delphisources.ru/pages/so...generator.html
Ответить с цитированием
  #3  
Старый 23.12.2013, 12:25
lkz_07 lkz_07 вне форума
Новичок
 
Регистрация: 12.03.2011
Сообщения: 50
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
Не думаю что с записью в массив может быть проблема.
А воспроизвести любой звук можно с помощью стандартных API-функций waveOutOpen, waveOutWrite и т.д. Пример на Delphi смотри здесь: http://www.delphisources.ru/pages/so...generator.html

Пример этот я видел (используется отдельный поток - и он кстати, когда переношу в свой проект - при воспроизведении виснет форма - хотя я использовал для эксперимента sleep может поэтому).
Я так и не пойму как записать в массив и воспроизвести например с помощью библиотеки BASS?

Если массив записать так:
mass: array of integer;

mas:=[1000, 1000, 2000]; - второе число это пауза, как программа поймет, что тут нужно остановиться на мгновенье?
Ответить с цитированием
  #4  
Старый 23.12.2013, 12:27
lkz_07 lkz_07 вне форума
Новичок
 
Регистрация: 12.03.2011
Сообщения: 50
Репутация: 10
По умолчанию

А если так:

mas:=[1000, -1000, 2000]; - отрицательное число, значит задержка - выключение звука на заданное время (мс).
Тогда как воспроизвести этот массив?
Ответить с цитированием
  #5  
Старый 23.12.2013, 12:32
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от lkz_07
А если так:

mas:=[1000, -1000, 2000]; - отрицательное число, значит задержка - выключение звука на заданное время (мс).
Тогда как воспроизвести этот массив?
Для задания задержки/паузы просто выводи в звуковую карту тишину (т.е. неизменный уровень сигнала).
Ответить с цитированием
  #6  
Старый 23.12.2013, 12:38
lkz_07 lkz_07 вне форума
Новичок
 
Регистрация: 12.03.2011
Сообщения: 50
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
Для задания задержки/паузы просто выводи в звуковую карту тишину (т.е. неизменный уровень сигнала).

Как я понял нужно 2 массива?

массив длительности сигнала:
mass_d := [1000, 1000, 2000];

массив самого сигнала:
mass_s := [1, 0, 1];
Ответить с цитированием
  #7  
Старый 23.12.2013, 12:44
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от lkz_07
Как я понял нужно 2 массива?

массив длительности сигнала:
mass_d := [1000, 1000, 2000];

массив самого сигнала:
mass_s := [1, 0, 1];
А под сигналом вообще что понимается? Там градаций уровня сигнала будет побольше чем просто 0 и 1.
Ответить с цитированием
  #8  
Старый 23.12.2013, 12:51
lkz_07 lkz_07 вне форума
Новичок
 
Регистрация: 12.03.2011
Сообщения: 50
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
А под сигналом вообще что понимается? Там градаций уровня сигнала будет побольше чем просто 0 и 1.

Для начала пусть будет сигнал с постоянной амплитудой. получится что то вроде пищъалки
Ответить с цитированием
  #9  
Старый 23.12.2013, 13:00
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от lkz_07
Для начала пусть будет сигнал с постоянной амплитудой. получится что то вроде пищъалки
Амплитуды недостаточно - ещё нужно знать частоту.
Если амплитуда будет постоянная, и условиться, что отрицательные значения будут обозначать паузу, то достаточно и одного массива. Ну и должна быть известна частота сигнала.
Ответить с цитированием
  #10  
Старый 23.12.2013, 13:02
lkz_07 lkz_07 вне форума
Новичок
 
Регистрация: 12.03.2011
Сообщения: 50
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
Амплитуды недостаточно - ещё нужно знать частоту.
Если амплитуда будет постоянная, и условиться, что отрицательные значения будут обозначать паузу, то достаточно и одного массива. Ну и должна быть известна частота сигнала.

Пусть частота сигнала (тон) тоже будет постоянной например 1000 гц
Ответить с цитированием
  #11  
Старый 23.12.2013, 13:02
lkz_07 lkz_07 вне форума
Новичок
 
Регистрация: 12.03.2011
Сообщения: 50
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
Амплитуды недостаточно - ещё нужно знать частоту.
Если амплитуда будет постоянная, и условиться, что отрицательные значения будут обозначать паузу, то достаточно и одного массива. Ну и должна быть известна частота сигнала.

Частота дискретизации звук. карты - 41 кгц

Последний раз редактировалось lkz_07, 23.12.2013 в 13:05.
Ответить с цитированием
  #12  
Старый 23.12.2013, 13:14
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от lkz_07
Пусть частота сигнала (тон) тоже будет постоянной например 1000 гц
Цитата:
Сообщение от lkz_07
Частота дискретизации звук. карты - 41 кгц
Значит все исходные данные есть. Осталось слегка подправить тот пример и будет работать как надо.
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
lkz_07 (24.12.2013)
  #13  
Старый 23.12.2013, 15:29
lkz_07 lkz_07 вне форума
Новичок
 
Регистрация: 12.03.2011
Сообщения: 50
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
Значит все исходные данные есть. Осталось слегка подправить тот пример и будет работать как надо.

Буду Вам благодарен за этот пример.

Последний раз редактировалось lkz_07, 24.12.2013 в 13:06.
Ответить с цитированием
  #14  
Старый 24.12.2013, 14:52
lkz_07 lkz_07 вне форума
Новичок
 
Регистрация: 12.03.2011
Сообщения: 50
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
Значит все исходные данные есть. Осталось слегка подправить тот пример и будет работать как надо.

А как подправить? Может у меня получиться?
Ответить с цитированием
  #15  
Старый 24.12.2013, 15:10
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Радость

Цитата:
Сообщение от lkz_07
Может у меня получиться?
должно, по идее...
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:15.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter