формы представления звуковой информации
компьютер, имеющий звуковую плату, микрофон и акустическую систему, позволяет кодировать (оцифровывать), сохранять и воспроизводить звуковую информацию.
программы для работы со звуком можно условно разделить на две группы: программы-секвенсоры и программы, ориентированные на цифровые технологии записи звука — звуковые редакторы. midi-секвенсоры предназначены для создания и аранжировки музыки. кроме обычного сочинения музыки эффективное использование секвенсора требует от композитора-аранжировщика специальных инженерных знаний.
с звуковых редакторов звуковые файлы можно редактировать: добавлять голоса или музыкальные инструменты, а также разнообразные эффекты.
существуют программы распознавания речи, появляется возможность компьютером при голоса.
звук — это волна с изменяющейся амплитудой и частотой в диапазоне от 20 гц до 20 кгц. чем больше амплитуда, тем громче звук, чем больше частота, тем выше тон.
микрофон превращает звуковую волну в электрический сигнал, а звуковая плата кодирует его, превращая в последовательность нулей и единиц. точность преобразования определяется разрешающей способностью преобразователя (8 бит — 256 уровней, 16 бит — 65 536 уровней, 24 бита — 16 777 216 уровней) и числом преобразований (выборок) за 1 с — частотой дискретизации. (рис.)
при частоте 8 кгц качество оцифрованного звука соответствует радиотрансляции, а при частоте 44,1 кгц — звучанию аудио-cd. студийное качество достигается при 96 или 192 кгц.
разрешение умножим на число выборок за 1 с и на время:
16 • 20 000 • 2 = 640 000 бит = 80 000 байт = 78 кбайт.
закодированный таким образом звуковой фрагмент может быть сохранен в формате .wav.
в таблице размеры звуковых файлов длительностью звучания 1 с (в килобайтах) при различных разрешениях звуковой карты и частотах дискретизации. для стереозвука размер файла удваивается.
частота дискретизации, кгцразрешение8 бит16 бит24 бит65 53616 777 2167,81315,62523,43823,43846,87570,31344,143,06686,133129,19946,87593,750140,62593,750187,500281,250var
a : array of integer;
n, i, last : integer;
begin
read (n);
setlength (a, n);
for i := 0 to n - 1 do
read (a[i]);
last := 0;
for i := 0 to n - 1 do
if a[i] <> 0 then
begin
a[last] := a[i];
inc (last);
end;
setlength (a, last);
for i := 0 to last - 1 do
write (a[i], ' ');
end.
Суть такова. Имеем динамический массив. Считали массив, так как динамический, то от нуля все. Установили последнюю свободную ячейку 0. Идем по массиву и ищем ненулевое значение. Как только нашли, пишем его в свободную ячейку и увеличиваем занчение свободной ячейки на 1. При этом наши данные не затираются. После окончания всех операций в last лежит длина массива.
Статитечкий массив.
var
a : array [1..100] of integer;
n, i, last : integer;
begin
read (n);
for i := 1 to n do
read (a[i]);
last := 1;
for i := 1 to n do
if a[i] <> 0 then
begin
a[last] := a[i];
inc (last);
end;
dec (last);
for i := 1 to last do
write (a[i], ' ');
end.