Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Звук через системный динамик, Что то у меня код не робит... 
:(
    Опции темы
andrey_post
  Дата 24.3.2004, 06:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 23.12.2003
Где: Екатеринбург

Репутация: нет
Всего: нет



Пытаюсь вывести звук через динамик, написал процедуру:

Код

procedure TForm1.Sound(Frequency, Duration: Integer);
asm
cmp  Win32Platform, VER_PLATFORM_WIN32_NT
jne  @@9X
push  edx
push  eax
call  Windows.Beep
ret
@@9X:
push  ebx
push  edx
mov  bx,  ax
mov  ax,  34DDh
mov  dx,  0012h
cmp  dx,  bx
jnc  @@2
div  bx
mov  bx,  ax
in   al,  61h
test  al,  3
jnz  @@1
or   al,  3
out  61h, al
mov  al,  0B6h
out  43h, al
@@1:
mov  al,  bl
out  42h, al
mov  al,  bh
out  42h, al
call  Windows.Sleep
in   al,  61h
and  al,  0FCh
out  61h, al
@@2:
pop  ebx
end;

Вызывается так:
Код

Sound(13,10);

Но звук не слышу... может подскажете в чем дело?

--------------------
И что бы там не происходило, не стоит воспринимать жизнь слишком всерьёз, всё равно нам из неё живыми не выбраться!!!
PM MAIL WWW ICQ   Вверх
Петрович
Дата 24.3.2004, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: 25
Всего: 55



Под XP такое работать не будет.


--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
andrey_post
Дата 24.3.2004, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 23.12.2003
Где: Екатеринбург

Репутация: нет
Всего: нет



Я прогу врубаю в Win2000 и Win98. не там и там не робит. mad.gif
--------------------
И что бы там не происходило, не стоит воспринимать жизнь слишком всерьёз, всё равно нам из неё живыми не выбраться!!!
PM MAIL WWW ICQ   Вверх
PILOT
Дата 24.3.2004, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: нет
Всего: 54



Кинь мыло (в личные сообщения) я тебе вышлю описания всех портов компьютера.
А если хочешь расскажу принцип воспроизведения на динимаке музыки.

СУВ.
Добавлено @ 10:18
Да и кстати, если задаешь большее время процедура выполняется дольше?


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
Proximo_RZN
Дата 24.3.2004, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 16.3.2004
Где: Рязань

Репутация: нет
Всего: нет



Sound(13,10);
Frequency = 13 - не маленькая ли частота что-бы что-то слышать?

Поменяй 13 на что-то большее и все запашет!
Проверено на Sound(130, 10) Delphi 5 + Win2k

Это сообщение отредактировал(а) Proximo_RZN - 24.3.2004, 11:52
PM MAIL ICQ   Вверх
andrey_post
Дата 24.3.2004, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 23.12.2003
Где: Екатеринбург

Репутация: нет
Всего: нет



PILOTIK, вот мыло [email protected]
Добавлено @ 12:59
Поменял, 30 на 130 все равно не хочет...
чувствую в другом проблема... bored.gif
--------------------
И что бы там не происходило, не стоит воспринимать жизнь слишком всерьёз, всё равно нам из неё живыми не выбраться!!!
PM MAIL WWW ICQ   Вверх
Proximo_RZN
Дата 25.3.2004, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 16.3.2004
Где: Рязань

Репутация: нет
Всего: нет



Ого! Знаешь какая интересная штука получилась:
функция описана как procedure TForm1.Sound(Frequency, Duration: Integer);
Т.е. она член класса TForm.

Но!!! Если функцию описать как procedure Sound(Frequency, Duration: Integer); и не заставлять ее быть методом класса TForm, то все работает!!! ПРОВЕРИЛ САМ ТОЛЬКО-ЧТО!

Точно не знаю, но видимо когда передаются параметры методу класса, то они передаются как-то по странному. Вот РАБОЧИЙ код:

Цитата

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }

  public
    { Public declarations }

  end;

var
  Form1: TForm1;

implementation

// твоя функция, но не член класса TForm1
procedure Sound(Frequency, Duration: Integer);
asm
cmp  Win32Platform, VER_PLATFORM_WIN32_NT
jne  @@9X
push  edx
push  eax
call  Windows.Beep
ret
@@9X:
push  ebx
push  edx
mov  bx,  ax
mov  ax,  34DDh
mov  dx,  0012h
cmp  dx,  bx
jnc  @@2
div  bx
mov  bx,  ax
in   al,  61h
test  al,  3
jnz  @@1
or   al,  3
out  61h, al
mov  al,  0B6h
out  43h, al
@@1:
mov  al,  bl
out  42h, al
mov  al,  bh
out  42h, al
call  Windows.Sleep
in   al,  61h
and  al,  0FCh
out  61h, al
@@2:
pop  ebx
end;

{$R *.DFM}

// нажимаешь на кнопку - слышишь звук
procedure TForm1.Button1Click(Sender: TObject);
begin
  Sound (130, 100);
end;

end.


Это сообщение отредактировал(а) Proximo_RZN - 25.3.2004, 09:36
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0772 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.