Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Media";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.03 c
1-1097402705
acsoft
2004-10-10 14:05
2004.10.24
Не вкладывать в EXE иконку.


1-1097475322
goliath
2004-10-11 10:15
2004.10.24
Замена курсора средствами CLX


14-1096719488
antonn
2004-10-02 16:18
2004.10.24
Опять игра...


14-1096630008
Delirium
2004-10-01 15:26
2004.10.24
Читаем подпись под фотографией


1-1097482169
serg!
2004-10-11 12:09
2004.10.24
Hint для любой ячейки TDBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский