-
> @!!ex © (24.11.08 18:57) [19]
вот только Delphi на девайсе не предусмотрено, интеловского асма он не понимает, проблема заполнения массива HappyBirthday осталась (она и есть сабж)
-
> [20] Petr V. Abramov © (24.11.08 19:10)
сорри, неправильно вопрос понял.
-
> Petr V. Abramov © (23.11.08 03:18) [0]
Я думаю, можно посмотреть этот код (привожу весь, но на covex можно не обращать внимания): (с) Alex Dedusenko - 2:462/37.23 - 10.08.97
program tst;
uses crt;
var
f : file;
b : array [1..64500] of byte;
i : word;
i1: word;
t : byte;
b1: byte;
covox: word;
c : string[2];
spd : word;
begin
if paramcount = 0 then
begin
writeln('Test program for *.WAV (Windows) files.');
writeln;
writeln('Usage:');
writeln(' TST <filename> [C#]');
writeln;
writeln(' <filename> - .WAV File Name,');
writeln(' C# - Covox port number.');
writeln;
writeln('If C# parameter is not specified Internal PC Speaker will be use.');
halt;
end;
if (paramcount > 1) and ((copy(paramstr(2),1,1) = 'C') or (copy(paramstr(2),1,1) = 'c')) then
begin
c:=copy(paramstr(2),2,1);
if c[1] in ['1'..'4'] then
begin
covox:=memw[0:$408+((byte(c[1]) and $f)-1)*2];
end
else
covox:=0;
end
else
covox:=0;
sound(20000); nosound;
t:=port[$61];
assign(f,paramstr(1));
reset(f,1);
blockread(f,b,64500,i);
close(f);
spd:=b[25]+(word(b[26]) shl 8);
spd:=$fffffff div longint(spd);
if covox = 0 then
begin
spd:=spd shr 7;
port[$43]:=0;
for i1:=44 to i do
begin
b1:=b[i1];
asm
mov al,b1
shr al,6
and al,2
out 61h,al
in al,40h
xchg al,ah
in al,40h
xchg al,ah
mov dx,ax
@m1:
xor al,al
out 43h,al
in al,40h
xchg al,ah
in al,40h
xchg al,ah
push dx
sub dx,ax
cmp dx,spd
pop dx
jb @m1
end;
end;
end
else
begin
spd:=spd shr 7;
port[$43]:=0;
for i1:=44 to i do
asm
lea bx,b
mov dx,covox
add bx,i1
dec bx
mov al,[bx]
out dx,al
in al,40h
xchg al,ah
in al,40h
xchg al,ah
mov dx,ax
@m1:
xor al,al
out 43h,al
in al,40h
xchg al,ah
in al,40h
xchg al,ah
push dx
sub dx,ax
cmp dx,spd
pop dx
jb @m1
end;
end;
port[$61]:=t;
end.
Я полагаю, что если перенаправить данные передаваемые на спикер в файл (первый asm блок), то Вы, Петр, получите именно то, что и хотели, собственно массив "частота-длительность". P.S. В код я не особо вникал ;)
-
> [13] Anatoly Podgoretsky © (24.11.08 12:19)
Насчёт нот оно так. Я говорю о произвольном спектре. Если автору нужет кошачий крик, надо ШИМ.
> [17] Труп Васи Доброго © (24.11.08 16:31)
А зачем спектр знать? Он же в звуке не собирается ничего менять.
> [18] Petr V. Abramov © (24.11.08 18:33)
А что там писать. Вот у тебя есть оцифрованный звук из WAV файла например, он представлен в Импулсно-кодовой модуляции (ИКМ), т.е. замерянными через рвные интервалы времени уровнями сигнала. Спектр такого сигнала будет в полосе 1/(T*2) Гц T - длительность интервала, для кота много не надо. Для вывода на спикер, тебе его надо преобразовать в ШИМ. Для кождого отсчёта делаешь очередную выборку из массива, ставишь 1 на порте спикера ждёшь некоторое время пропорциональное уровню, ставишь 0. для полосы 10000 Гц и разрядности 8 бит получится 10000*2^8=25600000 Гц это для оценки быстродействия процессора.
А может на контроллере ЦАП имеется?
-
> [8] AndreyV © (23.11.08 22:49) > Был драйвер под Win3
> [14] iZEN © (24.11.08 14:22) > Был драйвер под Win95, который эмулировал звуковую карту > и пускал все звуки на спикер.
А может и Win95. Ещё был эмулятор Sound Blaster под DOS. И даже работал с некоторыми играми. Он эмулировал только ЦАП, а не ФМ синтезатор.
> для полосы 10000 Гц
Имелось ввиду для частоты квантования 10000 Гц, полоса будет до 5000 Гц, что для кота может даже и лишнее.
-
> [24] AndreyV © (24.11.08 23:30) > до 5000 Гц, что для кота может даже и лишнее.
Прочитал о вокальных данных одомашненых представителей семейства кошачих, оказывается слух 10-80000 Гц и голос может быть за пределами человеческого восприятия. Вот так-то. http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D1%88%D0%BA%D0%B0
-
> AndreyV © (24.11.08 21:00) [23] > А может на контроллере ЦАП имеется?
а хрен его знает, что там имеется, есть Device Basic, в нем есть ф-ции "пищать на такой-то частоте", "заткнуться", и есть что-то типа OnTimer
> Andy BitOff © (24.11.08 20:35) [22]
я правильно понимаю, что приведенный код проигрывает wav через спикер? тогда это интереснее.
-
> Прочитал о вокальных данных одомашненых представителей семейства > кошачих, оказывается слух 10-80000 Гц
слушать будут не кошки, а люди :)
-
> Если автору нужет кошачий крик, надо ШИМ.
автору пофиг, ШИМ или ХАИМ, нужны исходные данные для паршивого качества мяукания в виде "частота-длительность"
-
> [28] Petr V. Abramov © (25.11.08 01:06)
Ну тогда действительно прийдётся сдвигать спектр, это посложнее самого вывода, а вывод остаётся как я описал. Но судя по > [28] Petr V. Abramov © (25.11.08 01:06) > в нем есть ф-ции "пищать на такой-то частоте", "заткнуться", > и есть что-то типа OnTimer
есть ли там такая возможность. Что за девайс такой?
-
> AndreyV © (25.11.08 01:31) [29] > есть ли там такая возможность.
есть. пищит-не-пищит в соответствии с программой, проверено :)
> Что за девайс такой?
терминал сбора данных. сканер штрих-кода с сауной и видеозалом :) девайс достался по наследству, других нет, поэтому про WinCE не травмируйте душу, господа, нет ее там, и линуха там нет, и дос нет. Есть Terminal Basic, для своих задач совсем недурно сделанный :)
-
> [30] Petr V. Abramov © (25.11.08 01:42) > есть. пищит-не-пищит в соответствии с программой, проверено
Ну это может генератр включается/выключается, надо чтобы был доступ к динамику, как на PC сделано.
-
> как на PC сделано.
сделано на Тайване, как на PC не сделано, надо частота-длительность
-
мож ту и спрашивал, вот спрошу в твоем стиле (почти)
а нахрена?
-
а на того, что у терминала счас вырисовывается типы сигналов: -ты молодец, после сканирования того, что надо -ты молодец, но сканируешь не то -оповещение это ессно, можно разрулить на уровне 1-2-3 писка, но: в цехе шумно, считать до трех умеют не все :) ессно, если ниче не нарою, на уровне на уровне "1-2-3 писка" и сделаю, уже готово, но хочется как лучше :))))
-
Возми нотные записи. На молодец - играешь веселую мелодию. Плохиш - траурную. Оповещение - третью. Как от нот перейти к частотам-длительностям написано выше.
-
Petr V. Abramov © (25.11.08 00:24) [26] Да. Так написано, но я не пробовал.
-
> Возми нотные записи. На молодец - играешь веселую мелодию. > Плохиш - траурную. Оповещение - третью.
Procedure BadSound;
begin
Windows.Beep(100,200);
end;
Procedure GoodSound;
begin
WinProcs.Beep(500,200);
end;
Практика показывает, что этого достаточно.
-
> Ega23 © (25.11.08 12:37) [37]
> Windows.Beep(100,200);
НЕТУ WINDOWS У ДЕВАЙСА
-
> НЕТУ WINDOWS У ДЕВАЙСА
А что есть? Управление динамиком есть? Просто ещё на старом добром Turbo Pascal 5.5 я, помнится, "Кан-кан" в заставку программы бипами вставлял.
|