Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.24;
Скачать: CL | DM;

Вниз

Азбука Морзе   Найти похожие ветки 

 
lota ©   (2004-06-29 20:27) [0]

Подскажите, плиз, по возможности с примерчиком, как в 2000 винде
сформировать телеграфную азбуку морзе через колонки. Можно на е-mail: lota(@)nm.ru.


 
Рыба ©   (2004-06-29 23:24) [1]

Можно найти (или создать) файл wav, и с нужной частотой проигрывать его.


 
lota ©   (2004-07-01 06:05) [2]

Для рыбы
А смогли бы вы написать подобное?
О размере благодарности можно договориться.
lota


 
FilinPro@list.ru   (2004-07-01 16:13) [3]

Смог бы, если бы знал азбуку морзе =)
Ещё проблема, что у меня нет по рукой W2k и что завтра уезжаю в отпуск.. Впрочем, попробую примерчик сваять.


 
Рыба ©   (2004-07-01 16:16) [4]

Ну я человек рассеяный с улицы бассеяной :))
Вместо ника указал мыло..


 
S@shka ©   (2004-07-01 16:23) [5]

Как вариант...
1. Необходимо сопоставление букв - значкам азбуки.
НАпример
А .-
Б -...
и т.д
далее тока, тире - определенный тон.
Определяем массив
в который и занесем тоны
затем с помощью waveAPI открываем устройство вывода и проигрываем
данный массивчик :)


 
Константинов ©   (2004-07-02 22:57) [6]

Тут нет необходимости ворошить API. Достаточно PlaySound

Пример из FAQ

uses  
 MMSystem;  

type  
 TVolumeLevel = 0..127;  

procedure MakeSound(Frequency{Hz}, Duration{mSec}: Integer; Volume: TVolumeLevel);  
 {writes tone to memory and plays it}  
var  
 WaveFormatEx: TWaveFormatEx;  
 MS: TMemoryStream;  
 i, TempInt, DataCount, RiffCount: integer;  
 SoundValue: byte;  
 w: double; // omega ( 2 * pi * frequency)  
const  
 Mono: Word = $0001;  
 SampleRate: Integer = 11025; // 8000, 11025, 22050, or 44100  
 RiffId: string = "RIFF";  
 WaveId: string = "WAVE";  
 FmtId: string = "fmt ";  
 DataId: string = "data";  
begin  
 if Frequency > (0.6 * SampleRate) then  
 begin  
   ShowMessage(Format("Sample rate of %d is too Low to play a tone of %dHz",  
     [SampleRate, Frequency]));  
   Exit;  
 end;  
 with WaveFormatEx do  
 begin  
   wFormatTag := WAVE_FORMAT_PCM;  
   nChannels := Mono;  
   nSamplesPerSec := SampleRate;  
   wBitsPerSample := $0008;  
   nBlockAlign := (nChannels * wBitsPerSample) div 8;  
   nAvgBytesPerSec := nSamplesPerSec * nBlockAlign;  
   cbSize := 0;  
 end;  
 MS := TMemoryStream.Create;  
 with MS do  
 begin  
   {Calculate length of sound data and of file data}  
   DataCount := (Duration * SampleRate) div 1000; // sound data  
   RiffCount := Length(WaveId) + Length(FmtId) + SizeOf(DWORD) +  
     SizeOf(TWaveFormatEx) + Length(DataId) + SizeOf(DWORD) + DataCount; // file data  
   {write out the wave header}  
   Write(RiffId[1], 4); // "RIFF"  
   Write(RiffCount, SizeOf(DWORD)); // file data size  
   Write(WaveId[1], Length(WaveId)); // "WAVE"  
   Write(FmtId[1], Length(FmtId)); // "fmt "  
   TempInt := SizeOf(TWaveFormatEx);  
   Write(TempInt, SizeOf(DWORD)); // TWaveFormat data size  
   Write(WaveFormatEx, SizeOf(TWaveFormatEx)); // WaveFormatEx record  
   Write(DataId[1], Length(DataId)); // "data"  
   Write(DataCount, SizeOf(DWORD)); // sound data size  
   {calculate and write out the tone signal} // now the data values  
   w := 2 * Pi * Frequency; // omega  
   for i := 0 to DataCount - 1 do  
   begin  
     SoundValue := 127 + trunc(Volume * sin(i * w / SampleRate)); // wt = w * i / SampleRate  
     Write(SoundValue, SizeOf(Byte));  
   end;  
   {now play the sound}  
   sndPlaySound(MS.Memory, SND_MEMORY or SND_SYNC);  
   MS.Free;  
 end;  
end;  

// How to call the function:  

procedure TForm1.Button1Click(Sender: TObject);  
begin  
 MakeSound(1200, 1000, 60);  
end;  

Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php

Нужно только немного усложнить цикл записи данных в MemorySteam.

Удачи!


 
Anatoly Podgoretsky ©   (2004-07-02 23:01) [7]

Beep и никаких PlaySound


 
Burich   (2004-07-30 03:42) [8]

Ну вы и живодеры...
Хоть подгоретский сказал про старый добрый спикер...



Страницы: 1 вся ветка

Текущий архив: 2004.10.24;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.041 c
1-1096648518
Justas
2004-10-01 20:35
2004.10.24
Полупрозрачное изображение


1-1096990268
diabolik_krsk
2004-10-05 19:31
2004.10.24
Проблема с объявлением типизированного файла


4-1095862398
nika_ufc
2004-09-22 18:13
2004.10.24
шрифты


1-1097067854
mRodion
2004-10-06 17:04
2004.10.24
Свойства с индексами


14-1096884524
WondeRu
2004-10-04 14:08
2004.10.24
Diamondback (delphi 9) - новая версия!