Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > музыка в паскале


Автор: armageddon 17.4.2006, 17:35
скиньте пожалуйста ссылки как на музыкальные произвеления набранные на Паскале при помощи модуля crt и процедур sound/delay 

Автор: PEMiKC 17.4.2006, 20:20
Код

uses GraphABC, Sounds, Events;

var snd1: integer;

procedure MouseDown(x,y,mb: integer);
begin
  Circle(x,y,10);
  Circle(x,y,5);
  if mb=1 then
  begin
    RewindSound(snd1);
    PlaySound(snd1)
  end
  else StopSound(snd1);
end;

begin
  snd1:=LoadSound('название.wav');
  OnMouseDown:=MouseDown;
end.
Вот. smile
По нажатию мвши издает звук. 'название.wav'. Ну и ещё рисует круг по нажатию...
 

Автор: Pakshin A. S. 17.4.2006, 20:30
Цитата(armageddon @  17.4.2006,  18:35 Найти цитируемый пост)
на музыкальные произвеления набранные на Паскале 

По-моему нетрудно их написать самостоятельно:
1) Берем ноты... лучше гитарные... Выбираем в них мелодию.
2) Берем табличку - соответсвие нот частотам. Вот и готовы числа для Sound()
3) А вот с паузами придется покалдовать, так как Delay завиит от быстроты компьютера... Но поэксперементировав немного можно обиться нужного... 

Автор: armageddon 17.4.2006, 20:46
 to remiks: 
спасибо, конечно, но прочти мой вопрос!!!(crt, sound, delay..)
to pakshin:
я это и так знаю, мне больше интересна эта таблица, а лучше готовые музыкальные треки.. 

Автор: PEMiKC 18.4.2006, 00:11
Цитата

 to remiks: 
спасибо, конечно, но прочти мой вопрос!!!(crt, sound, delay..)
Могу дать тебе ехе-шник: клаву можно использовать в роли пианино так скажем. При нажимании на разные кнопки клавы - внутренний динамик выдает разные звуки.
ЗЫ Пищит не по-детски...  smile  

Автор: Ozzя 18.4.2006, 08:13
http://pascal.sources.ru/sound/pcspro2.htm 

Автор: Crot 19.4.2006, 04:59
Код

  uses
    crt;

  procedure sound_test;
    const
      mus:array [1..24,1..2] of byte= {номера нот и относительная длительность}
        (( 0,4),( 4,2),( 7,2),(12,1),(12,1),(12,1),
         (12,1),(12,1),(12,1),(12,1),(12,1),(14,1),
         (14,1),(14,1),(14,1),(14,1),(14,1),(14,1),
         (14,1),(16,4),(14,4),(12,2),( 7,2),(12,4));
      first=200; {начальная частота}
      time=2000;   {единичное время}
    var
      i:byte;
  begin
    for i:=1 to 24 do
      begin
       {частота соседних нот отличается в корень 12-той степени из 2}
        sound (round(first*exp(mus[i,1]*ln(2)/12)));
        delay (round(0.9*time*mus[i,2]));
        nosound;
        delay (round(0.1*time*mus[i,2]));
        if (keypressed and (readkey=#27)) {прекращаем по нажатию Ecs}
          then break
      end;
  end;

begin
  sound_test;
end.
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)