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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2013, 10:56   #1
Yurikus83
 
Аватар для Yurikus83
 
Регистрация: 06.05.2012
Сообщений: 4
По умолчанию сделайть мелодичным звонок на Паскаль

Помогите разобраться как бы сделать звонок более мелодичным
Код:
program lab2;

{$M $1000, 0, 0}
{$N+ $R+}

uses
  Crt, Dos;

const
  Freq = 1000;
  TDur = 2;

var
  OldHandler: Procedure;
  F: Boolean;      
  t, RDur: Integer;       
  R, P, S, E: Word; 

{$F+}
procedure Handler; Interrupt;
begin
  Inc(t); 
  if (t = S) and (not F) then Sound(Freq); 
  if (t >= E) and (not F) then begin
    NoSound; 
    S := t + P;
    E := S + TDur;
  end;
  if (t = R) and (not F) then begin
    NoSound;  
    F := True; 
    Sound(Random(6200)); 
  end;
  if (t mod (R) < R) and F then begin
    NoSound;
    Sound(Random(6200));
  end;
  if (t mod (R + RDur) = 0) and F then begin
    NoSound;
    F := False;
  end;
  Inline($9C);
  OldHandler;
end;
{$F-}

var
  C1, C2, C3, L: Integer; 
  _P, _R: Double;
begin
  Val(ParamStr(1), _P, C1);
  Val(ParamStr(2), _R, C2);
  Val(ParamStr(3), L, C3);
  if (ParamCount <> 3) or (C1 <> 0) or (C2 <> 0) or (C3 <> 0) or (_P < 1) or (_P > 10) or
     (_R < 0.1) or (_R > 5) or (L < 1) or (L > 15) then begin
    WriteLn;
    WriteLn('Неправильно заданы параметры.');
    WriteLn('Должно быть 3 параметра:');
    WriteLn('1-й - период "тиканья" (1..10)');
    WriteLn('2-й - время, через которое должен прозвенеть будильник (0.1 - 5.0 в минутах)');
    WriteLn('3-й - длительность звонка (1..15)');
	WriteLn('Пример: C:/LAB2.exe 1 2 10');
    Halt;
  end;
  RDur := Round(18.2 * L);
  Randomize;
  t := 0;
  F := False;
  P := Round(18.2 * _P);
  R := Round(18.2 * (_R * 60));
  S := 0;
  E := TDur;
  GetIntVec($8, @OldHandler);
  SetIntVec($8, Addr(Handler));
  Keep(0);
end.
можно попробовать использовать этот вариант
Код:
nd;
  end;
  if Thread[2] = Active then begin { Њг§лЄÂ* }
    Inc(tMus);
    if tMus mod musSpeed = 0 then begin
      tMus := 0;
      Nosound;
      Inc(musFreq, 25); { ‡Â*¤Â*Ґ¬ зÂ*бв®вл ®в 50 ¤® 500 б Ї®б⥯ҐÂ*Â*л¬ 㢥«Ёз. }
      if musFreq > 500 then
        musFreq := 50;
      Sound(musFreq);
Может что то другое предложите?????
Yurikus83 вне форума Ответить с цитированием
Старый 15.02.2013, 09:51   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

не смотрел Ваш код (и, соответственно, не слышал, как звучит мелодия).
Но вопрос - чем текущий звонок не мелодичен?
В конце концов, можно вообще, музыку поставить! (поищите посты на форуме о воспроизведении музыки в TurboPascal).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.02.2013, 10:59   #3
Yurikus83
 
Аватар для Yurikus83
 
Регистрация: 06.05.2012
Сообщений: 4
По умолчанию

Я одного понять не могу , что форум мертвый что ли, почему ни кто не отвечает конкретно. Хоть бы подсказали куда и как вставить нужные команды.
В поисковике набирал:воспроизведении музыки в TurboPascal - вообще ноль результатов.
Yurikus83 вне форума Ответить с цитированием
Старый 15.02.2013, 11:26   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, во-первых, поиском пользоваться не всегда получается - иногда надо точно знать, что ты ищешь, чтобы найти..

я имел в виду вот эти сообщения:
вот эта тема воспройзведение музыкальных файлов
и мой пост ТУТ в теме нужна программа со звуком


а во-вторых, Вы же не думаете, что выложив код резидентной программы на древнем ТурбоПаскале под антикварную (читай "мёртвую") операционнку, Вы получите массу ответов и советов?...

Последний раз редактировалось Serge_Bliznykov; 15.02.2013 в 11:30.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.02.2013, 13:38   #5
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Yurikus83 Посмотреть сообщение
Я одного понять не могу , что форум мертвый что ли, почему ни кто не отвечает конкретно.
Потому что:
1. Отсутствует формулировка задачи.
2. Отсутствует конкркетнеый1 вопрос.
3. Вообще непонятно, чего ТС хочет.
s-andriano вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Звонок из строки alt5000 PHP 3 05.12.2011 22:18
Запрос на звонок с сайта Rasita Помощь студентам 1 26.10.2011 11:03
схема:фотодиод и звонок полный баян Помощь студентам 4 04.01.2010 21:10
Входящий звонок на модем _SERGEYX_ Работа с сетью в Delphi 2 25.09.2007 09:22