Руководство пользователя Kwave

# Руководство пользователя Kwave

Thomas Eschenbacher `<thomas.eschenbacher@gmx.de>`

Перевод на русский язык: Мария Шикунова
Издание 20.07.70 (2020-07-06)

Авторские права © 1998-2000 Martin Wilz

Авторские права © 2020 Thomas Eschenbacher

Юридическое уведомление

Kwave — это простой аудиоредактор на основе KDE Frameworks 5.

Список таблиц

4.1. Таблица перевода кодировки URL-адресов
A.1. Список идентификаторов информации о файле

Список примеров

3.1. Содержимое файла в формате ASCII с одной синусоидальной волной

Глава 1. Введение
Введение

# Глава 1. Введение

Kwave — это простой аудиоредактор на основе KDE Frameworks 5. Его функционал включает в себя:

- пользовательский интерфейс, имеющий три режима работы с открытыми файлами: SDI («В отдельных окнах»), MDI («В отдельных окнах») и во вкладках;

- простые функции копирования, вырезания и вставки;

- многоуровневые отмена и повтор действий;

- маркировка сигналов;

- различные функции записи, включая предварительную запись;

- воспроизведение с использованием подсистем Qt, PulseAudio, ALSA и OSS;

- запись с использованием подсистем PulseAudio, ALSA и OSS;

- импорт и экспорт файлов в формате MP3;

- импорт и экспорт файлов в формате Ogg/Vorbis и Opus;

- импорт и экспорт файлов в формате FLAC;

- некоторые функции анализа, например, сонаграмма;

- использование 24-битной точности для внутренней обработки данных;

- свободный выбор частоты дискретизации;

- поддержка редактирования многоканальных файлов;

- воспроизведение многоканальных аудиофайлов (при необходимости выполняется сведение в моно или стерео режим);

- поддержка подключаемых модулей, расширяющих возможности приложения;

- импорт и экспорт других аудиоформатов с помощью библиотеки audiofile.

Чтобы ознакомиться с тем, что было реализовано и что ещё предстоит сделать, обратитесь к файлам `CHANGES` и `TODO`, включённым в пакет с исходным кодом. Помощь и конструктивная критика всегда приветствуются.

## Ресурсы, посвящённые Kwave

Чтобы связаться с разработчиками, получить дополнительную помощь по использованию Kwave, отправить исправления или отчёт об ошибках, воспользуйтесь следующими ресурсами:

- Домашняя страница проекта

  Для получения информации о новых актуальных выпусках или другой информации об этом проекте обратитесь к домашней странице Kwave.

- Репозиторий Git

  Существует репозиторий Git, размещённый на серверах KDE и на SourceForge, где доступны исходные коды самой свежей версии, находящейся в разработке. Инструкции по получению доступа к репозиторию представлены в документации разработчика в главе о сборке из Git. Кроме того, есть интерфейсы KDE и SourceForge, которые позволяют просматривать источники проекта.

Журнал версий Kwave
Журнал версий Kwave

## Журнал версий Kwave

Проект KWave Martin Wilz основал летом 1998 года, а позднее совместно с другими разработчиками он его развил и усовершенствовал. В ноябре 1999 года Thomas Eschenbacher начал исправлять незначительные ошибки в разных частях проекта, всё больше и больше углубляясь в изучение исходного кода. На сегодняшний день он расширил, переписал и пересмотрел почти все компоненты программы и потратил много времени на её усовершенствование.

Начиная с версии 0.8.0 журнал изменений Kwave больше не включается в это руководство. С полной историей изменений можно ознакомиться по этой ссылке: https://invent.kde.org/multimedia/kwave/-/blob/master/CHANGES, либо с помощью интерфейса Git.

Версия 0.9.0 — это первая версия, исходные коды которой хранятся на серверах KDE (kdereview) и SourceForge, а версия 0.9.1 — первая версия для KDE Frameworks 5.

Глава 2. Основы цифрового аудио
Основы цифрового аудио

# Глава 2. Основы цифрового аудио

В этой главе представлено краткое введение в основы цифровой обработки звука без углубления в детали.

## Аналоговый мир

Прежде всего нужно иметь в виду, что окружающий мир является аналоговым. а компьютеры работают с цифровыми данными. Существует несколько способов преобразования аналогового звукового сигнала в цифровой и наоборот. Поскольку, как правило, преобразование цифровых данных в аналоговые является обратным процессом преобразования аналоговых данных в цифровые, рассматриваться будет только преобразование аналоговых данных в цифровые.

Преобразование звука в биты

Чтобы оказаться в компьютере, аналоговый звук должен быть преобразован в электронный сигнал. Самым простым способом для этого является использование микрофона и усилителя. Такая система, получив звук (изменение давления воздуха) на входе, преобразует его в напряжение электрического тока на выходе. Изменения давления с более высокой амплитудой будут представлены более высоким напряжением на выходе усилителя. Такие выходные данные имеют название «сигнал». А «усилитель» может быть встроен в звуковую карту, обычно оставаясь невидимым для глаз пользователя.

Преобразование в электронный сигнал

На этом этапе электронный сигнал имеет три ограничения, о которых следует помнить:

1. Амплитуда (громкость) ограничена определённым максимальным уровнем из-за того, что электронные устройства (усилители) способны работать только с напряжением в ограниченном диапазоне. Проблема не возникает, если звук не слишком громкий. Если же звук очень громкий, сигнал обрезается, то есть электрический сигнал выходит за возможные пределы, а результат искажается.

2. Диапазон частот также имеет ограничения. Из-за механических ограничений микрофонов и ограниченного частотного диапазона усилителей ограничен и частотный диапазон сигнала. Не существует жёсткой черты, при достижении которой звук начинает внезапно исчезать, но ниже некоторых низких и выше некоторых высоких частот амплитуда сигнала начинает падать всё сильнее и сильнее. Максимальная частота — это ограничение скорости электронного сигнала при подъёме и падении. При использовании высококачественных усилителей и микрофонов возможно расширить границы диапазона частот так, что частоты вне этого диапазона человеческое ухо не сможет уловить. Человек обычно не способен слышать звуки с частотой, превышающей 20 кГц.

3. Сигнал содержит шум. Шум является самым страшным врагом каждого, кто занимается обработкой звука. Шум — это типичный аналоговый эффект, который делает звуковой сигнал «нерезким» и вызывает дефекты звука, он всегда присутствует, и его нельзя устранить. Можно только попытаться использовать высококачественные компоненты, производящие так мало шума, что его невозможно будет услышать. Обычно шум имеет определённую громкость, так что записываемый звук должен быть намного громче. Это называется «отношение сигнал/шум» (ОСШ), и чем его значение выше, тем лучше качество звука. Звуки, имеющие меньшую громкость, чем шум, невозможно услышать.

Оцифровка
Оцифровка

## Оцифровка

Для хранения и воспроизведения аудио на компьютере нужно сначала преобразовать аналоговый звук в цифровые данные. Этот процесс называется оцифровкой. Оцифровка — это преобразование электронного сигнала в последовательность цифровых значений.

Оцифровка электронного сигнала

Преобразование — это регулярное измерение значения электронного сигнала в определённые промежутки времени с получением последовательности их значений, называемых отсчётами (образца). Результаты измерений затем кодируется в цифровые значения.

Дискретизацию возможно производить как в произвольные промежутки времени, так и регулярно с одинаковым интервалом между измерениями. Второй метод используется чаще всего, потому что он намного проще в обращении и работает с постоянной частотой измерения, так называемой частотой дискретизации. Обычная частота дискретизации составляет 8000, 11025, 22050 и 44100 отсчётов в секунду. На практике частота дискретизации также задаётся в единицах измерения частоты, Гц или кГц.

Частота дискретизации ограничивает наивысшую частоту звука, которая может быть сохранена при оцифровке сигнала. Согласно теореме Котельникова, самая высокая записанная частота составляет половину частоты дискретизации, поэтому в данных с частотой дискретизации 44,1 кГц не может содержаться сигналов с частотой более 22 кГц. Чтобы избежать искажения сигнала, звуковая карта пользовательского компьютера уже имеет встроенный фильтр, который отфильтровывает частоты, превышающие половину используемой частоты дискретизации.

Дискретный сигнал

Кодирование отсчёта
Кодирование отсчёта

## Кодирование отсчёта

Результатом процесса цифровой дискретизации является последовательность отдельных цифровых замеров (отсчётов) или выборок сигнала. Один отсчёт — это цифровое представление значения уровня сигнала в определённый момент времени.

Значения отсчётов может быть обработано и закодировано несколькими способами. Самый простой — это линейное кодирование, при котором значение каждого отсчёта непосредственно соответствует значению аналогового сигнала, умноженному на постоянный коэффициент. Этот алгоритм прост в реализации, однако он имеет недостаток: шум становится более слышимым на низких амплитудах, где он искажает сигнал больше всего, и менее слышимым на высоких амплитудах.

Одним из способов уменьшения влияния шума является нелинейное кодирование. Это означает, что низкие амплитуды следует усилить перед обработкой. По мере усиления низких амплитуд их расстояние от шума увеличивается, а качество улучшается. Наиболее распространёнными методами для этого являются кодировки A-Law и U-Law — некоторые стандартизированные кривые логарифмического усиления, используемые в цифровой телефонии (стандарт ITU G.711).

Нелинейное кодирование

Форматы хранения значений отсчётов
Форматы хранения значений отсчётов

## Форматы хранения значений отсчётов

Значения отсчётов могут храниться в различных форматах и с разной разрядностью. Наиболее распространённым вариантом является хранение в целочисленных форматах (с фиксированной запятой), при котором значения сохраняются с помощью фиксированного квантования. В зависимости от того, где определена нулевая линия, отличают целочисленные форматы без знака (только положительные значения, «нулевая линия» находится в середине числового диапазона) и со знаком (положительные и отрицательные значения).

Формат со знаком

Формат без знака

Так как во время квантования теряется некоторая точность, в результате появляется шум, известный как шум квантования. Этот тип шума оказывает большое влияние на сигналы с низкими амплитудами, поэтому этот метод хранения отсчётов не является оптимальным, но он довольно простой и быстро обрабатывается (компьютеры быстро справляются с вычислениями чисел с фиксированной запятой).

Второй способ кодирования набора дискретных цифровых замеров — это использование чисел с плавающей запятой. С числами с плавающей запятой шум распространяется почти равномерно по всем диапазонам амплитуд и имеет преимущества, особенно в кодировании сигналов с низкими амплитудами. Однако этот формат обрабатывается гораздо медленнее (компьютеры намного медленнее обрабатывают числа с плавающей запятой в отличие от обработки целых чисел).

### Примечание

Kwave использует целочисленный формат со знаком с 24-битной точностью, хранящийся в 32-битных целых числах. Такой формат имеет один недостаток, выражающийся в более высоком потреблении памяти при обработке файлов с более низкой точностью (например, 8-битной), однако обработка 32-битных чисел проходит очень быстро и даже позволяет оставлять некоторые ресурсы для внутренних вычислений, поскольку обычно используются только 24 бита.

Глава 3. Использование Kwave
Использование Kwave

# Глава 3. Использование Kwave

Так выглядит главное окно программы Kwave.

## Режим пользовательского интерфейса

В зависимости от личных предпочтений пользователя в Kwave возможно настроить способ работы сразу с несколькими открытыми файлами. Чтобы быстро переключить этот параметр, воспользуйтесь пунктом меню Настройка → Показывать файлы....

Возможно выбирать из трёх режимов:

- Режим отдельных окон (SDI): при использовании данного режима каждый файл будет отображаться в отдельном главном окне.

- Режим вложенных окон (MDI): при использовании данного режима будет открыто только одно главное окно Kwave, но внутри него будет находиться область с вложенными окнами, которые возможно менять в размере, передвигать, располагать каскадом, вертикально или сворачивать.

  Чтобы выбрать нужное окно, воспользуйтесь пунктом меню Окно или переключайтесь между вложенными окнами с помощью комбинации клавиш Ctrl+Tab.

- Режим вкладок: этот режим отображает файлы в отдельных вкладках. Данный режим может быть знаком многим пользователям, так как он используется в большинстве популярных интернет-браузеров.

  Вкладку возможно активировать в пункте меню Окно, либо переключиться на неё с помощью комбинации клавиш Ctrl+Tab.

Командная строка
Командная строка

## Командная строка

### Список файлов или команд

При запуске Kwave из командной строки возможно указать список файлов, которые следует открыть. Сначала будет открыт первый указанный файл, затем все остальные. Каждый файл будет открыт в новом окне или вложенном окне того же экземпляра приложения. При использовании подстановочных знаков возможно открыть сразу большое количество файлов.

Например, следующая команда запускает Kwave и открывает все звуковые файлы, являющиеся частью звукового оформления freedesktop XDG, в новом или вложенном окне:

    % kwave /usr/share/sounds/freedesktop/stereo/*.ogg

Также возможно передать Kwave текстовые команды, закодированные в качестве специального адреса URI[1], это будет подробнее описано далее.

### Тип графического интерфейса

Параметр `--gui=`SDI`|`MDI`|`TAB`` запускает Kwave в одном из трёх возможных режимов графического интерфейса: SDI, MDI или во вкладках.

### Параметры инструментария Qt

Вдобавок к списку файлов также возможно указать список параметров инструментария Qt, например, `-qwindowgeometry` для указания размера и/или расположения первого окна Kwave и/или `-display` для открытия приложения на отдельном экране.

Например, следующая команда запускает окно Kwave с такими параметрами: ширина — 600 пикселов, высота — 400 пикселов, правая граница окна расположена на расстоянии 30 пикселов от правого края экрана, верхняя граница окна расположена на расстоянии 0 пикселов от верхнего края экрана.

    % kwave --disable-splashscreen -qwindowgeometry 600x400-30+0

### Действия при запуске программы

Параметр `--disable-splashscreen` отключает заставку, которая появляется при запуске Kwave. Этот параметр может пригодиться, когда требуется запустить Kwave с помощью сценария.

Параметр `--iconic` запускает Kwave в виде значка. Это может быть полезно, когда требуется запустить приложения без взаимодействия с графическим интерфейсом, например, при запуске с помощью сценария. Этот параметр также отключает заставку при запуске.

Параметр `--logfile=`kwave.log`` записывает в файл последовательность действий сеанса Kwave. Это полезно для отладки, такой файл может потребоваться для отправки сообщения об ошибке.

[1] universal resource identifier, унифицированный идентификатор ресурса

Открытие и сохранение файлов
Открытие и сохранение файлов

## Открытие и сохранение файлов

Открытие файлов в Kwave аналогично той же операции в большинстве приложений; возможно

- указать список файлов в командной строке при запуске Kwave,

- открыть пустое окно Kwave (например, через пункт меню Файл → Создать... (Ctrl+W)) и добавить файл с помощью функции перетаскивания,

- открыть файл через пункт меню Файл → Открыть (Ctrl+O),

- открыть один из последних недавно открытых файлов через пункт меню Файл → Последние файлы,

- сохранить текущий файл через пункт меню Файл → Сохранить (Ctrl+S),

- сохранить текущий файл под другим именем через пункт меню Файл → Сохранить → Сохранить как... (Shift+Ctrl+S),

- сохранить каждую разделённую маркерами часть в отдельный файл через пункт меню Файл → Сохранить → Блоки...,

- сохранить только текущее выделение через пункт меню Файл → Сохранить → Выделение....

### Поддерживаемые форматы файлов

Kwave поддерживает следующие форматы файлов:

- Предпочитаемым форматом файлов для приложения Kwave является `.wav`. Этот формат распространён в других операционных системах, а также часто используется в рабочей среде Plasma.

- Вторым по популярности форматом, поддерживаемым Kwave, является «ASCII». Этот формат поддерживает как экспорт, так и импорт данных. Обратите внимание, что файлы, сохраняемые в этом формате, имеют очень большой размер. Подробнее этот формат будет рассмотрен далее.

- Импорт `.mp3` и `.mp2` доступен через библиотеку libmad для декодирования MP3, id3lib для декодирования меток ID3 и lame для кодирования.

- Импорт и экспорт Ogg/Vorbis (`*.ogg`). Для получения более подробной информации посетите сайт https://www.xiph.org.

- Импорт и экспорт FLAC (`*.flac`). Для получения более подробной информации посетите сайт https://xiph.org/flac/.

- Также возможно импортировать файлы в таких форматах как `*.8svx` (формат Amiga IFF/8SVX), `*.au` (NeXT, Sun Audio), `*.aiff` (формат Audio Interchange), `*.avr` (формат Audio Visual Research), `*.caf` (формат Core Audio), `*.nist` (формат NIST SPHERE), `*.sf` (формат Berkeley, IRCAM, Carl), `*.smp` (формат Sample Vision), `*.snd` (NeXT, Sun Audio), `*.voc` (формат Creative Voice) и других с помощью модуля audiofile.

### Работа с форматом .wav

Лучший способ работы с форматами, отличными от поддерживаемых Kwave, — это использование внешних программ-конвертеров. Хороший набор инструментов для этих целей и полезная документация есть в пакете SoX.

В будущем планируется поддержка импорта и экспорта фильтров для большего количества форматов и, возможно, фильтр, который будет использовать определённый пользователем сценарий с вызовом внешнего фильтра, чтобы программа могла читать и/или записывать данные в форматах, поддержка которых не предусмотрена в `SoX`.

### Формат файлов ASCII

Формат файлов ASCII удобен в использовании в научных и образовательных целях. Из-за его простой структуры возможно либо написать простые файлы с помощью текстового редактора, либо использовать входные данные другого приложения и преобразовать их в ASCII. Поскольку формат действительно простой, при написании конвертера не должно возникать никаких проблем, а большинство научных приложений даже имеет свой собственный формат ASCII для экспорта данных.

Формат ASCII достаточно прост и руководствуется следующими правилами:

1. В начале файла располагается блок свойств, по одному свойству на строку.

2. Каждая строка со свойствами начинается с символов `##`.

3. После блока свойств находится список мгновенных значений уровня сигнала (отсчётов), по одному отсчёту на строку. При использовании нескольких каналов отсчёты разделяются запятыми.

4. Строки могут заканчиваться символом возврата каретки и/или символом перевода строки (поэтому поддерживаются файлы DOS). Но при сохранении файлы всегда будут содержать символ перевода строки в конце каждой строки.

5. Пустые строки и символы после `#` рассматриваются как комментарии и игнорируются.

6. Значения должны быть заданы в формате целых чисел со знаком в пределах диапазона 24 бит, то есть в формате хранения внутренних данных Kwave.

7. Всё, что следует после символа `#` (кроме строк свойств, смотрите выше), будет рассматриваться как комментарий и игнорироваться. Пустые строки также будут проигнорированы.

Далее приведён пример простого файла в формате ASCII, который представляет собой синусоидальную волну с одиннадцатью заданными мгновенными значениями уровня аналогового сигнала (отсчётами):

Пример 3.1. Содержимое файла в формате ASCII с одной синусоидальной волной

    ## 'rate'=44100
    ## 'tracks'=2
    ## 'bits'=16
    ## 'length'=11
    ## 'Date'='2013-11-09'
    ## 'Software'='Kwave-0.8.11 for KDE 4.11.3'
      5930496,   5930496 #            0
            0,   8388352 #            1
     -5930752,   5930496 #            2
     -8388608,         0 #            3
     -5930752,  -5930752 #            4
            0,  -8388608 #            5
      5930496,  -5930752 #            6
      8388352,         0 #            7
      5930496,   5930496 #            8
            0,   8388352 #            9
     -5930752,   5930496 #           10
    # EOF

Создание нового файла
Создание нового файла

## Создание нового файла

Чтобы создать новый пустой файл, воспользуйтесь пунктом меню Файл → Создать....

При создании нового файла возможно выбрать частоту дискретизации, разрешение в битах и количество дорожек. По умолчанию будет использоваться формат «.wav», но его позже возможно изменить в процессе сохранения файла.

Длительность нового сигнала может быть установлена по времени (часы, минуты, секунды) или по количеству отсчётов. Кроме того, сигнал можно выбрать относительно наиболее возможной длины, ограниченной доступной памятью, а также внутренним лимитом Kwave (2 ГБ).

Запись
Запись

## Запись

Kwave способен записывать аудиоданные из различных источников с любой частотой дискретизации, форматами сэмплов и другими режимами, которые поддерживает оборудование пользователя. В текущей версии приложение Kwave записывает данные с помощью устаревшего звукового интерфейса OSS и, начиная с версии 0.7.4, более современного и мощного интерфейса ALSA, который предпочтителен для ядер Linux, начиная с версии 2.6.

Для начала записи воспользуйтесь пунктом меню Файл → Записать звук.

Ниже представлен снимок экрана диалогового окна записи звука Kwave, в котором отображена первая страница с управлением записью звука. Как и в большинстве диалоговых окон Kwave здесь доступны всплывающие подсказки.

Здесь представлены следующие элементы управления:

- Предварительная запись: если активирована эта функция и запущена запись, Kwave записывает данные во внутренний буфер, вмещающий несколько секунд аудиоданных. Если ещё раз нажать кнопку Запись звука ( ), начнётся настоящая запись, а данные предыдущей записи будут сохранены. Это полезно, например, если пользователь хочет записать свою любимую песню с радио, но он слишком поздно осознал, что песня началась. В таком случае он всё ещё может нажать кнопку записи и получить начало песни из тех данных, что Kwave уже предварительно записал, то есть начало песни всё равно окажется на записи.

- Время записи: если требуется ограничить по времени продолжительность записи, воспользуйтесь этой функцией и выберите время в часах, минутах и секундах. Если эта опция не включена, запись звука будет продолжаться, пока не будет нажата кнопка Остановить запись ().

- Начать в: устанавливает дату и время начала записи. Обратите внимание, что если указанное время уже прошло, запись начнётся немедленно.

- Активация записи: если эта опция включена, запись начнётся только если громкость достигнет определённой границы, которую возможно установить от 0% до 100% относительно самой высокой громкости входного сигнала. Это полезно, если нужно избежать запись первоначальной тишины. (Подсказка: используйте эту опцию вместе с функцией предварительной записи, описанной выше, чтобы записать несколько секунд до срабатывания начала полноценной записи; это позволит не пропустить начальное нарастание громкости).

- Кнопка Создать() активна только в том случае, когда запись не ведётся или уже завершена. Эта кнопка удаляет содержимое текущего файла и начинает запись сначала.

- Кнопка Остановить запись () активна, когда выполняется запись, предварительная запись, или Kwave ожидает активации записи по уровню громкости. Останавливает запись при нажатии.

- Кнопка Приостановить () активна, когда выполняется запись или предварительная запись. При первом нажатии на неё запись будет приостановлена, и кнопка начнёт мигать. Если нажать на кнопку ещё раз, она перестанет мигать, и запись начнётся немедленно, без активации по уровню громкости.

- Кнопка Запись звука () начинает запись звука и/или предварительную запись в зависимости от подключённых функций:

  1. Если не используется ни предварительная запись, ни активация записи по уровню громкости, запись начинается сразу же после нажатия кнопки записи.

  2. Если предварительная запись не используется и установлена активация записи по уровню громкости, то при первом нажатии на кнопку Kwave дождётся достижения нужного уровня громкости и только после этого начнёт запись звука. Чтобы начать запись немедленно, снова нажмите соответствующую кнопку.

  3. Если включена предварительная запись, то первое нажатие запускает только предварительную запись, а второе нажатие запускает настоящую запись звука.

Воспроизведение
Воспроизведение

## Воспроизведение

В зависимости от параметров сборки Kwave может воспроизводить звуки одним из следующих способов:

- ALSA (Advanced Linux Sound Architecture, продвинутая звуковая архитектура Linux): пришла на смену OSS, поддерживает больше функций и оборудования. Возможны конфликты с другими приложениями, как у OSS, но проблема решается с помощью модуля «dmix».

- OSS (Open Sound System, открытая звуковая система): самая старая реализация звуковой подсистемы для Linux, поддерживает монофонический и стереофонический выход. Устарела c Linux 2.6, но всё ещё широко распространена. Может конфликтовать с другими приложениями для работы со звуком; использование OSS возможно только в одном приложении (одновременное использование в нескольких приложениях не поддерживается).

Перед первым запуском воспроизведения следует обратить внимание на диалоговое окно конфигурации:

В текущей версии Kwave поддерживает только воспроизведение 8-битного и 16-битного звука с монофоническим и стереофоническим выводом через интерфейс OSS. Более широкую поддержку режимов воспроизведения и оборудования возможно получить при использовании интерфейса ALSA.

Если в звуковом файле используется больше или меньше каналов, чем позволяет воспроизведение, все каналы будут смешаны во время воспроизведения. Например, если есть файл с тремя звуковыми дорожками, и используется режим стерео для воспроизведения, левый канал будет воспроизводить дорожку 0 (верхнюю) и половину дорожки 1 (среднюю), правый канал будет воспроизводить половину дорожки 1 (среднюю) и дорожку 2 (нижнюю).

Для получения плавного воспроизведения без прерываний необходимо также установить соответствующий размер буфера. Если возникли проблемы с прерыванием воспроизведения, следует увеличить размер буфера, однако чем выше это значение, тем больше будет задержка между воспроизводимым звуком и отображением позиции воспроизведения на панели сигнала.

В диалоговом окне настройки параметров воспроизведения также предусмотрена кнопка для воспроизведения простого тестового звука. Должен быть слышен тон частотой 440 Гц, который будет последовательно воспроизводиться всеми динамиками, одним за другим.

После настройки параметров воспроизведения возможно использовать элементы управления воспроизведением в главном окне Kwave или через пункт меню Воспроизведение, а также с помощью комбинаций клавиш:

- Воспроизведение → Запустить (P): запускает воспроизведение текущего выделения с его начала или всего файла с текущей позиции курсора, если не было ничего выделено. Проигрывается только один раз.

- Воспроизведение → Запустить в цикле: аналогично предыдущему, но воспроизведение будет зациклено.

- Воспроизведение → Приостановить (Пробел): приостанавливает воспроизведение на текущей позиции. Доступно только при запущенном воспроизведении.

- Воспроизведение → Продолжить (Пробел): продолжает воспроизведение с места приостановки. Доступно только в том случае, если воспроизведение приостановлено.

- Воспроизведение → Остановить (Esc): останавливает воспроизведение и возвращает к началу выделения.

Свойства файла
Свойства файла

## Свойства файла

Kwave обрабатывает часть хранящейся в аудиофайле метаинформации, пытаясь импортировать и экспортировать как можно больше данных. Например, если пользователь импортирует MP3-файл с метками ID3, то при экспорте в Wave-файл он получит возможность сохранить эту информацию. Если возникнет риск потери метаинформации при сохранении, то будет показано предупреждение.

Метаданные возможно просматривать и менять с помощью пункта меню Правка → Свойства файла.... Также возможно менять параметры файла, в частности формат сэмплов, разрешение и способ сжатия.

Изменение масштаба и навигация
Изменение масштаба и навигация

## Изменение масштаба и навигация

В Kwave предусмотрено несколько способов масштабирования и навигации с использованием комбинаций клавиш, пунктов меню, кнопок панели инструментов и мыши. Ниже приведён обзор использования всех этих функциональных возможностей.

### Увеличение и уменьшение масштаба

- увеличить масштаб: увеличивает масштаб, чтобы можно было рассмотреть больше деталей. Увеличивает на масштабирующий множитель 3.

  - пункт меню / комбинация клавиш: Вид → Увеличить масштаб (Ctrl++)

  - кнопка на панели инструментов:

- уменьшить масштаб: уменьшает масштаб, чтобы скрыть некоторые детали.

  - пункт меню / комбинация клавиш: Вид → Уменьшить масштаб (Ctrl+-)

  - кнопка на панели инструментов:

- масштаб по выделению: увеличивает таким образом, чтобы текущее выделение заполнило всю текущую область просмотра.

  - пункт меню / комбинация клавиш: Вид → Масштаб по выделению (Ctrl+Пробел)

  - кнопка на панели инструментов:

- вместить весь сигнал в окно: увеличивает так, чтобы весь звуковой сигнал отображался в текущем окне.

  - пункт меню: Вид → Вместить весь сигнал в окно

  - кнопка на панели инструментов:

- масштаб 100%: масштабирует так, чтобы один сэмпл был представлен одним пикселом на экране.

  - пункт меню: Вид → Масштаб 100%

  - кнопка на панели инструментов:

- выбрать предустановленный масштаб: позволяет выбрать масштаб с помощью раскрывающегося списка на панели инструментов.

### Прокрутка влево и вправо

- перейти к позиции: открывает диалоговое окно для ввода позиции, к которой нужно переместить текущую область просмотра.

  пункт меню / комбинация клавиш: Вид → Перейти к позиции... (Ctrl+G)

- к началу: прокручивает текущую область просмотра к началу сигнала.

  пункт меню / комбинация клавиш: Вид → Начало (Ctrl+Home)

- до конца: прокручивает текущую область просмотра до конца сигнала.

  пункт меню / комбинация клавиш: Вид → Конец (Ctrl+End)

- предыдущая страница: прокручивает до позиции прямо перед текущей областью просмотра (влево).

  пункт меню / комбинация клавиш: Вид → Предыдущая страница (PgUp)

  кнопка на панели инструментов:

- next page: прокручивает до позиции прямо после текущей области просмотра (вправо).

  пункт меню / комбинация клавиш: Вид → Следующая страница (PgDn)

  кнопка на панели инструментов:

- прокрутить вправо: прокручивает до конца сигнала на 1/3 длины текущей области просмотра.

  пункт меню / комбинация клавиш: Вид → Прокрутить вправо (Стрелка вправо)

  кнопка на панели инструментов:

- прокрутить влево: прокручивает к началу сигнала на 1/3 длины текущей области просмотра.

  пункт меню / комбинация клавиш: Вид → Прокрутить влево (Стрелка влево)

  кнопка на панели инструментов:

### Использование панели общего просмотра

В главном окне Kwave есть небольшая обзорная панель всего сигнала над горизонтальной полосой прокрутки главного окна. Этот обзор предоставляет также и некоторые функциональные возможности для навигации:

- одиночный щелчок левой кнопкой мыши: перемещает текущую область просмотра к указанной позиции.

- двойной щелчок левой кнопкой мыши: перемещает текущую область просмотра к указанной позиции и увеличивает масштаб.

- двойной щелчок левой кнопкой мыши с нажатой кнопкой Shift: перемещает текущую область просмотра к указанной позиции и уменьшает масштаб.

### Вертикальное масштабирование

Чтобы масштабировать текущую область просмотра вертикально, зажмите клавишу Alt и прокрутите колесо мыши в нужную сторону.

Выделение элементов
Выделение элементов

## Выделение элементов

Kwave позволяет выделить непрерывный диапазон сэмплов, а также любую комбинацию каналов (если редактируется многоканальный файл). При выделении диапазона сэмплов (временной диапазон) все последующие команды будут ограничены этим диапазоном, а при снятии выделения с канала ввод команд не повлияет на изменение его содержимого.

### Выбор каналов

Выбрать или отменить выбор канала довольно просто. Нажмите на круглый индикатор в левой части сигнала, чтобы переключить его состояние:

зелёный индикатор означает «включено», тогда как

красный индикатор означает «выключено»

### Примечание

Примечание: Если канал не выбран, он не будет слышен во время воспроизведения!

### Выбор сэмплов

При выборе диапазона сэмплов в Kwave значения будут выделены включительно. Это значит, что первый и последний выбранные сэмплы включены в выделение и будут использоваться в последующих действиях. Поэтому, даже если был выбран не целый диапазон, а всего один сэмпл, выбор никогда не будет «пустым»; например при использовании опции «удалить» выделенный (пусть это и не отображается) сэмпл будет удалён.

Проще всего выделить диапазон сэмплов с помощью мыши, как и в любом другом приложении: зажмите левую кнопку мыши в позиции, где должен начинаться выделенный диапазон, а затем, удерживая её, перетащите мышь и отпустите кнопку в позиции, на которой выделение диапазона должно быть завершено.

Если требуется отрегулировать или переместить начало или конец выделения, переместите курсор к началу или концу выделения, пока он не изменится со стандартного на стрелки влево-вправо, а затем зажмите левую кнопку мыши и отрегулируйте выделение.

Также возможно расширить или сжать выделение до определённой точки, удерживая нажатой клавишу Shift и одновременно щёлкнув на нужный фрагмент левой кнопкой мыши. В зависимости от того, какая граница ближе, левая или правая граница выделения будет установлена на новую позицию. Если не было ничего выбрано, выделение будет установлено в самое начало.

Есть также некоторые функции доступные через меню и некоторые комбинации клавиш:

- выделить целый сигнал: Правка → Выделить... → Всё (Ctrl+A);

- выделить диапазон: Правка → Выделить... → Диапазон... (R);

- текущая видимая область: Правка → Выделить... → Видимая область (V);

- следующий блок сэмплов, начиная с конца текущего выделения и с той же длительностью: Правка → Выделить... → Следующий (Shift++);

  (Подсказка: воспользуйтесь клавишей «+» на цифровой клавиатуре.)

- предыдущий блок сэмплов, заканчивая началом текущего выделения и с той же длительностью: Правка → Выделить... → Предыдущий (Shift+-);

  (Подсказка: воспользуйтесь клавишей «-» на цифровой клавиатуре.)

- снять все выделения: Правка → Выделить... → Ничего (N);

- расширить выделение до начала сигнала (первый сэмпл): Правка → Выделить... → До начала (Shift+Home);

- расширить выделение до конца сигнала (последний сэмпл): Правка → Выделить... → До конца (Shift+End);

- расширить текущее выделение влево и вправо до следующей отметки (или начала/конца сигнала, если её нет), начиная с текущего положения курсора: Правка → Выделить... → Расширить до ближайших отметок (E);

- выбрать область между следующими двумя отметками, которые находятся справа от текущего выделения или до конца сигнала: Правка → Выделить... → Между следующими отметками (Ctrl+Shift+N);

- выбрать область между предыдущими двумя отметками, которые находятся справа от текущего выделения или до конца сигнала: Правка → Выделить... → Между предыдущими отметками (Ctrl+Shift+P).

Буфер обмена
Буфер обмена

## Буфер обмена

В приложении используется буфер обмена Plasma. Это позволяет обмениваться аудиоданными между разными окнами Kwave. Возможно также обмениваться данными между Kwave и другими приложениями для обработки звука, в зависимости от их способности использовать буфер обмена Plasma.

При копировании данных в буфер обмена через функцию `копирования` для форматирования данных в соответствии с RFC 2361 в Kwave используется тип MIME `audio/vnd.wave`, который также является известным форматом `wav`. При вставке из буфера обмена в Kwave поддерживаются все форматы данных, доступные в качестве формата для импорта файлов, например, Ogg/Vorbis, FLAC и так далее.

Перетаскивание
Перетаскивание

## Перетаскивание

Kwave поддерживает протокол перетаскивания KDE Frameworks «Drag and Drop». Это позволяет открывать файлы посредством их перетаскивания из окна Dolphin, Konqueror или из рабочего стола в окно Kwave.

Обратите внимание, что если поместить файл в окно Kwave, которое уже содержит открытый файл, то сначала будет закрыт текущий открытый файл, а затем в этом же окне откроется файл, который был перемещён. Чтобы избежать этого, откройте новое пустое окно Kwave.

Также возможно выбрать диапазон сэмплов и перетащить их в окно Kwave. По умолчанию операция перетаскивания выполняется в режиме «переместить», когда выделение удаляется из оригинального места и вставляется в место перетаскивания. При нажатии клавиши Ctrl перетаскивание будет производиться в режиме «копировать».

Глава 4. Автоматизация и поддержка сценариев Kwave
Автоматизация и поддержка сценариев Kwave

# Глава 4. Автоматизация и поддержка сценариев Kwave

Начиная с первой версии, Kwave использует встроенный текстовый командный язык. Этот командный язык используется приложением для обработки меню, управления графическим интерфейсом и встроенными эффектами, а также для вызова модулей. Команды будут описаны далее в разделе Список команд.

## Общий синтаксис

- Все команды состоят из имени команды и необязательного списка параметров в круглых скобках, в зависимости от команды.

- Допустимыми символами для имён команд являются буквы, цифры и двоеточие. Команды чувствительны к регистру и всегда должны быть прописаны в нижнем регистре.

- Параметры в списке параметров разделяются запятой.

- Числовые параметры могут быть заданы как числа с фиксированной, либо как числа с плавающей запятой, где запятая используется в качестве разделителя дробной части.

- Параметры строки автоматически обрезаются (то есть, все пробелы в начале и конце строк удаляются). Если требуется их оставить, следует заключить их в двойные кавычки ("). Если параметры строки содержат специальные символы (например, «,», «;», «#» или «\»), эти специальные символы должны быть экранированы символом «\».

- Несколько команд можно объединять в список команд с использованием символа «;» в качестве разделителя.

Пример:

    fileinfo(Comments,"Это \"пример\" комментария.")

Этот пример состоит из команды fileinfo() и имеет два параметра: ключевое слово `Comments` и текст «`"Это \"пример\" комментария."`».

Использование командной строки
Использование командной строки

## Использование командной строки

В дополнение к параметрам командной строки, перечисленным в разделе Командная строка, которые используются для запуска Kwave в виде значка или без заставки при запуске, возможно передавать в командной строке текстовые команды, закодированные в специальном формате URI.

`kwave:`команда`[?`параметр`[,`параметр` ...] ]`

Правила преобразования текстовой команды Kwave в действующий URI следующие:

- URI начинается со слова `kwave`, за которым следует символ «:» и имя команды.

- Если для команды были указаны параметры, они должны быть добавлены после имени команды с символом «?» в качестве разделителя.

- Несколько параметров возможно добавить с использованием «,» в качестве разделителя.

- Все специальные символы в именах команд и параметрах должны быть преобразованы в URL. Ниже представлена таблица перевода кодировки:

  Таблица 4.1. Таблица перевода кодировки URL-адресов

  оригинал | кодировка |  | оригинал | кодировка |  | оригинал | кодировка |  | оригинал | кодировка
  --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
  (пробел) | `%20` |  | ( | `%28` |  | : | `%3A` |  | \ | `%5C`
  ! | `%21` |  | ) | `%29` |  | ; | `%3B` |  | ] | `%5D`
  " | `%22` |  | * | `%2A` |  | < | `%3C` |  | ^ | `%5E`
  # | `%23` |  | + | `%2B` |  | = | `%3D` |  | _ | `%5F`
  $ | `%24` |  | , | `%2C` |  | > | `%3E` |  | ` | `%60`
  % | `%25` |  | - | `%2D` |  | ? | `%3F` |  | { | `%7B`
  & | `%26` |  | . | `%3E` |  | @ | `%40` |  | | | `%7C`
  ' | `%27` |  | / | `%2F` |  | [ | `%5B` |  | } | `%7D`
  |  |  |  |  |  |  |  |  | ~ | `%7E`

Файлы сценариев Kwave
Файлы сценариев Kwave

## Файлы сценариев Kwave

### Общая структура

Сценарий Kwave содержит список строк, в котором каждая строка может быть:

- одной командой,

- списком команд, объединённых символом «;»,

- комментарием,

- отметкой,

- либо пустой строкой, содержащей только пробел.

### Комментарии и пустые строки

Все символы после «#» (за исключением тех, которые используются в кавычках или при выделении) рассматриваются как комментарии и будут игнорироваться.

Строки, содержащие только пробелы или комментарии, также игнорируются.

### Завершение

Сценарий Kwave завершается либо после успешного выполнения всех команд без ошибок, либо после того, как команда выдаёт код ошибки. Специальной команды для прекращения выполнения сценария не существует. Если требуется реализовать возможность завершить сценарий, возможно использовать команду «msgbox(``текст``)». Это отобразит окно сообщения с двумя кнопками OK (которая позволит сценарию продолжить работу) и Отмена (которая выдаёт код ошибки и останавливает сценарий).

### Отметки

Строки, состоящие только из идентификатора, за которым следует символ «:», считаются отметками. На них впоследствии можно будет ссылаться в сценарии с помощью специального ключевого слова GOTO [2] , что позволяет продолжать выполнение сценария с позиции этой отметки (смотрите пример ниже).

Строка с отметкой не должна ничего содержать (кроме комментариев или пробелов) после «:».

Пример:

    start:  # <= это отметка
                        # какое-то действие...
                        msgbox(ещё раз?)
                        GOTO start

[2] Примечание: Не следует путать ключевое слово «GOTO» с текстовой командой «goto (``позиция``)» !

Список команд
Список команд

## Список команд

### Алфавитный указатель

### a

about_kde
add_track

### c

clipboard_flush
close
continue
copy
crop
cut

### d

delayed
delete
delete_track
dump_metadata

### e

label:edit
expandtolabel

### f

fileinfo
forward

### g

goto

### i

insert_at
insert_track

### l

label:add
label:delete
loadbatch
loop

### m

menu
msgbox

### n

newsignal
next

### o

open
openrecent

### p

paste
pause
playback_start
plugin
plugin:execute
plugin:setup
prev

### q

quit

### r

redo
redo_all
reenable_dna
reset_toolbars
revert
rewind

### s

save
saveas
saveselect
select_gui_type
select_track:all
select_track:invert
select_track:none
select_track:off
select_track:on
select_track:toggle
selectall
selectnext
selectnextlabels
selectnone
selectprev
selectprevlabels
selecttoleft
selecttoright
selectvisible
start
stop
sync

### u

undo
undo_all

### v

view:scroll_end
view:scroll_left
view:scroll_next
view:scroll_next_label
view:scroll_prev
view:scroll_prev_label
view:scroll_right
view:scroll_start
view:zoom_all
view:zoom_in
view:zoom_normal
view:zoom_out
view:zoom_selection

### w

window:activate
window:cascade
window:click
window:close
window:minimize
window:mousemove
window:next_sub
window:prev_sub
window:resize
window:screenshot
window:sendkey
window:tile
window:tile_vertical

``

a
a

## a

### about_kde

#### Синтаксис: about_kde()

Отображает диалоговое окно о сообществе KDE.

### add_track

#### Синтаксис: add_track()

Добавляет новую дорожку после существующих.

#### Смотрите также

insert_track()

c
c

## c

### clipboard_flush

#### Синтаксис: clipboard_flush()

Удаляет текущее содержимое буфера обмена (может освободить часть памяти).

### close

#### Синтаксис: close()

Закрывает текущий файл. Если графический интерфейс работает в режиме MDI или в режиме вкладок, также закроется соответствующее вложенное окно.

#### Смотрите также

open(`имя_файла`), quit()

### continue

#### Синтаксис: continue()

Соответствует кнопке Продолжить на панели инструментов и позволяет продолжить воспроизведение, если оно приостановлено.

#### Смотрите также

pause()

### copy

#### Синтаксис: copy()

Копирует содержимое текущего выделения в буфер обмена. Если ничего не выделено, команда не выполняется, и содержимое буфера обмена остаётся неизменным. В буфер обмена копируется только содержимое выбранных в данный момент дорожек.

#### Смотрите также

paste()

### crop

#### Синтаксис: crop()

Обрезает сигнал до текущего выделения, удаляя всё, что находится перед ним и после него. Влияет на все дорожки. Если ничего не выделено, команда не выполняется.

### cut

#### Синтаксис: cut()

Копирует содержимое текущего выделения в буфер обмена и удаляет его из сигнала. Если ничего не выделено, команда не выполняется, и содержимое буфера обмена остаётся неизменным. В буфер обмена копируется только содержимое выбранных в данный момент дорожек, но содержимое выделения удаляется из всех дорожек.

d
d

## d

### delayed

#### Синтаксис: delayed(`миллисекунды`, `команда`)

Выполняет `команду` после заданной задержки. Обратите внимание, что команда выполняется асинхронно по истечению заданного времени. Возможно создать очередь из нескольких команд, в которой задержки будут происходить относительно последней команды в очереди. Эта команда предназначена для помещения команд в очередь при создании снимков экрана для документации.

#### Параметры

`миллисекунды`: | количество целых миллисекунд ожидания перед выполнением команды
`команда`: | команда, включающая в себя параметры, которые должны быть выполнены после заданной задержки

#### Смотрите также

sync(), window:resize(), window:click(), window:sendkey(), window:close(), window:screenshot()

### delete

#### Синтаксис: delete()

Удаляет текущий выделенный диапазон сэмплов. Если ничего не выделено, команда не выполняется. Влияет на все дорожки.

### delete_track

#### Синтаксис: delete_track(`индекс`)

Удаляет дорожку, определяемую по её индексу (начиная с нуля). Если дорожки с заданным индексом не существует, то эта команда выдаёт ошибку.

#### Параметры

`индекс`: | индекс дорожки для удаления, начиная с 0

### dump_metadata

#### Синтаксис: dump_metadata()

Выводит список всех записей метаданных к консоли для диагностических целей. (Доступно только в том случае, если Kwave был собран с параметром `WITH_DEBUG`).

e
e

## e

### expandtolabel

#### Синтаксис: expandtolabel()

Расширяет текущее выделение до отметок слева и справа от границ текущего выделенного фрагмента. Если граница выделения уже находится на отметке, она останется неизменной. Если слева или справа от текущего выделенного фрагмента нет отметки, то выделение будет расширено до начала или конца файла.

f
f

## f

### fileinfo

#### Синтаксис: fileinfo(`индекс`)

Устанавливает новое значение для записи информации о файле.

#### Параметры

`ключевое слово`: | ключевое слово записи
`значение`: | значение записи

### forward

#### Синтаксис: forward()

Соответствует кнопке Вперёд на панели инструментов. Если воспроизведение выполняется в данный момент, оно перематывается вперёд на 1/10 видимого диапазона. Если воспроизведение не выполняется, то производится то же самое действие, что и при команде view:scroll_right().

#### Смотрите также

view:scroll_right(), rewind()

g
g

## g

### goto

#### Синтаксис: goto(`позиция`)

Устанавливает курсор в заданное положение и отображает его в текущей области просмотра. После этого выделение имеет нулевую длительность.

#### Параметры

`позиция`: | позиция в сэмплах, которая определяет место для перехода

i
i

## i

### insert_at

#### Синтаксис: insert_at(`позиция`)

Вставляет содержимое буфера обмена в заданную позицию, аналогичную команде paste(). Если буфер обмена в данный момент пуст, эта команда не выполняется.

#### Параметры

`позиция`: | позиция в сэмплах, которая определяет место для вставки

#### Смотрите также

paste()

### insert_track

#### Синтаксис: insert_track(`индекс`)

Вставляет новую дорожку с заданным индексом, используя текущие параметры длительности и частоты дискретизации сигнала. Если индекс больше или равен текущему количеству дорожек, данные будут добавлены к последней дорожке, что аналогично команде add_track(). Индекс всех существующих дорожек после заданного индекса будет увеличен на единицу.

#### Параметры

`индекс`: | индекс дорожки для вставки, начиная с 0

#### Смотрите также

add_track()

l
l

## l

### label:add

#### Синтаксис: label:add(`позиция`[,`текст`])

Добавляет новую отметку в указанную позицию. Если указанная позиция уже содержит отметку, команда не выполняется. Отметке возможно присвоить необязательное описание.

#### Параметры

`позиция`: | позиция в сэмплах, которая определяет место для вставки отметки
`текст`: | текст описания (необязательно)

### label:delete

#### Синтаксис: label:delete(`индекс`)

Удаляет отметку, определяемую по её индексу (начиная с нуля), или все отметки при использовании специального значения -1 в качестве индекса. Если отметки с заданным индексом не существует, то эта команда не выполняется.

#### Параметры

`индекс`: | индекс отметки для удаления, начиная с 0 или -1 для удаления всех отметок

### label:edit

#### Синтаксис: label:edit(`индекс`)

Открывает диалоговое окно, в котором пользователь может редактировать положение и описание отметки, которая определяется по её индексу (начиная с нуля). Если отметки с заданным индексом не существует, то команда не выполняется.

#### Параметры

`индекс`: | индекс отметки для редактирования, начиная с 0

### loadbatch

#### Синтаксис: loadbatch(`имя_файла`)

Открывает файл сценария Kwave и обрабатывает содержащиеся в нём команды. Использует содержимое текущего открытого файла или текущего главного окна, если не загружено ни одного файла.

#### Параметры

`имя_файла`: | имя сценария kwave, включающее в себя путь и расширение

### loop

#### Синтаксис: loop()

Соответствует кнопке Запустить в цикле на панели инструментов. Запускает воспроизведение (если оно ещё не запущено) и зацикливает его.

#### Смотрите также

playback_start()

m
m

## m

### menu

#### Синтаксис: menu (`команда`, `путь`, [`горячая_клавиша`], [`идентификатор`])

Это очень мощная команда, которая используется для добавления нового пункта меню или для внесения изменений в существующий пункт. Она определяет, какая команда будет выполняться при активации пункта меню, какой значок будет отображаться в меню и какая клавиша будет использоваться для его активации. Каждый пункт меню может быть отключён или скрыт, ему может быть присвоен уникальный идентификатор, либо он может быть присоединён к группе меню.

Обычно потребности в этой команде при выполнении сценариев Kwave не возникает.

#### Параметры

`команда`: | Текстовая команда (включая параметры) или список команд, которые будут выполняться при выборе пункта меню. Если в пункте меню отсутствует соответствующая команда (например, если это вложенное меню, а не пункт меню), следует воспользоваться специальной командой ignore().

`путь`:

Путь в иерархии меню с использованием символа «/» в качестве разделителя уровней иерархии. Последняя часть пути может быть дополнительной командой, которая изменяет некоторые свойства элемента меню (смотрите далее). Последняя часть пути (не являющаяся дополнительной командой), создаёт пункт меню, а части перед ней — пункт главного меню или вложенное меню, которые ведут к нему. Пункты главного меню или вложенного меню создаются автоматически при создании пункта меню, вручную их создавать не требуется.

`горячая_клавиша`:

Битовая маска, состоящая из комбинации предопределённых клавиш и модификаторов, объединённых символом «+». Клавишей может быть цифра, буква верхнего регистра или функциональная клавиша («F1»-«F12»), или любое другое название клавиши, относящееся к классу Qt «`QKeySequence`», включая имена клавиш для определённых действий (например, «`::Copy`». Типичными модификаторами являются «`SHIFT`», «`ALT`» и «`CTRL`».

`идентификатор`: | Уникальный идентификатор, который может быть использован приложением для определения этого пункта меню или меню/вложенного меню. Допустимы только буквы верхнего регистра, цифры и символ «`_`», а начинаться идентификатор должен с символов «`ID_`». Необходимо следить за тем, чтобы один и тот же идентификатор не использовался дважды.

#### Дополнительные команды

#checkable: | Присваивает пункту меню возможность установки и снятия флажка, чтобы его можно было включить или выключить.
#disabled: | Отключает меню, вложенное меню или пункт меню.
#enabled: | Включает меню, вложенное меню или пункт меню.
#exclusive(`группа`): | Добавляет пункт меню в эксклюзивную `группу` (одну из широкого диапазона). Группа, указанная в качестве параметра, не должна использоваться для каких-либо других целей. За раз в этой группе возможно выбрать только один пункт.

#group(`список`):

Добавляет меню, вложенное меню или пункт меню к одной или нескольким группам, чтобы приложение могло включать или отключать несколько пунктов меню без необходимости в знании всех их уникальных идентификаторов. Несколько групп могут быть переданы в виде списка с символом «`,`» в качестве разделителя. Имена групп должны начинаться с символа «`@`». Предопределены следующие группы:

@CLIPBOARD:

  Активируется только когда буфер обмена не пустой.

@LABELS:

  Активируется только если текущий сигнал содержит хотя бы одну отметку.

@NOT_CLOSED:

  Активируется только когда текущий сигнал не закрыт (сигнал может быть пустым или с нулевой длительностью).

@SELECTION:

  Активируется только когда выделение не пустое (выделено более одного сэмпла).

@SIGNAL:

  Активируется только когда какой-либо загруженный сигнал не пустой или имеет нулевую длительность.

#hidden: | Скрывает меню, вложенное меню или пункт меню.
#icon(`имя`): | Назначает значок пункту меню. `Имя` значка должно соответствовать файлу значка (без пути и расширения), установленному в системе или в Kwave.

#listmenu(`идентификатор`,`команда`):

Вставляет заполнитель для списка пунктов меню к вложенному меню. Уникальный `идентификатор`, указанный в этой дополнительной команде, используется для добавления, удаления или очистки списка пунктов меню. Параметр `команда` должен содержать «`%1`» в качестве параметра, который будет заменён текстом пункта меню, когда команда будет активирована. Эта дополнительная команда внутренне используется для списка последних файлов, дорожек или списка окон.

#separator: | Добавляет разделитель во вложенное меню.

### msgbox

#### Синтаксис: msgbox(`текст`)

Отображает окно сообщения с определённым `текстом` и двумя кнопками OK (не выдаёт ошибку) и Отмена (выдаёт код ошибки). Эту команду возможно использовать для того, чтобы получить возможность прервать выполнение сценария.

#### Параметры

`текст`: | Сообщение, которое будет отображаться в окне сообщения, должно содержать вопрос, на который возможно ответить с помощью кнопок OK или Отмена.

n
n

## n

### newsignal

#### Синтаксис: newsignal(`сэмплы`, `частота`, `биты`, `дорожки`)

Создаёт новый сигнал с заданными значениями длительности в `сэмплах`, `частоте` сэмплов в секунду (число с плавающей запятой), числа `битов` на сэмпл и количества `дорожек`. Чтобы рассчитать длительность в сэмплах, умножьте желаемую длину в секундах на частоту дискретизации.

#### Параметры

`сэмплы`: | Длительность сигнала в сэмплах.
`частота`: | Частота дискретизации в сэмплах в секунду.
`биты`: | Количество битов на сэмпл, значение не должно быть нулевым, допустимы значения от 8 до 32.
`дорожки`: | Количество дорожек

### next

#### Синтаксис: next()

Соответствует кнопке Следующий на панели инструментов. Если воспроизведение в данный момент выполняется, происходит переход к следующей отметке. Если воспроизведение не запущено, происходит процесс, аналогичный команде view:scroll_next_label().

#### Смотрите также

view:scroll_next_label(), prev()

o
o

## o

### open

#### Синтаксис: open([`имя_файла`])

Открывает файл, который может быть либо звуковым файлом, либо сценарием Kwave. Если имя файла не указано, то откроется диалоговое окно, в котором можно выбрать существующий файл. В зависимости от режима графического интерфейса, файл будет открыт либо во вложенном окне (режим MDI или режим вкладок) либо в новом главном окне (режим SDI, если что-то уже загружено).

#### Параметры

`имя_файла`: | имя файла, включающее в себя путь и расширение

#### Смотрите также

close()

### openrecent

#### Синтаксис: openrecent(`имя_файла`)

Эта команда практически аналогична команде open(), однако она предназначена для внутреннего использования для списка недавно открытых файлов в меню Файл+Последние файлы. Для этой команды параметр `имя_файла` является обязательным.

#### Параметры

`имя_файла`: | запись списка недавно открытых файлов

#### Смотрите также

open()

p
p

## p

### paste

#### Синтаксис: paste()

Заменяет выделение содержимым буфера обмена. Если буфер обмена пуст, команда не выполняется. Частота дискретизации вставленных данных будет скорректирована для того, чтобы соответствовать частоте дискретизации текущего сигнала, если это необходимо. Процесс выполняется только для включённых дорожек, остальные остаются без изменений. Обратите внимание, что это может привести к временно́му сдвигу между включёнными и отключёнными дорожками. Если количество дорожек данных буфера обмена отличается от количества включённых дорожек, то данные будут микшированы для равномерного распределения по всем выбранным дорожкам.

#### Смотрите также

copy()

### pause

#### Синтаксис: continue()

Соответствует кнопке Приостановить на панели инструментов и позволяет приостановить воспроизведение, если оно в данный момент выполняется, или продолжить, если оно в данный момент приостановлено.

#### Смотрите также

continue()

### playback_start

#### Синтаксис: playback_start()

Соответствует кнопке Начать на панели инструментов и позволяет начать воспроизведение, если оно в данный момент приостановлено.

### plugin

#### Синтаксис: plugin(`имя`, [`параметр` ...])

Запускает модуль с необязательным списком параметров. Если список параметров не задан, будет вызвана функция настройки модуля с использованием параметров предыдущего вызова или параметров по умолчанию в качестве входных данных (обычно показывает диалог настройки, в зависимости от модуля). Для ознакомления с описанием различных модулей, обратитесь к главе о подключаемых модулях.

#### Параметры

`имя`: | (внутреннее) имя модуля Kwave
`параметр`: | список параметров, распознаваемых модулем (необязательно)

#### Смотрите также

plugin:execute(), plugin:setup()

### plugin:execute

#### Синтаксис: plugin:execute(`имя`, [`параметр` ...])

Аналогично команде plugin(), но без вызова функции настройки модуля, если параметры не были определены.

#### Параметры

`имя`: | (внутреннее) имя модуля Kwave
`параметр`: | список параметров, распознаваемых модулем

### plugin:setup

#### Синтаксис: plugin:setup(`имя`, [`параметр` ...])

Вызывает функцию настройки модуля с необязательным списком параметров. Если список параметров не задан, в качестве входных данных будут использоваться параметры предыдущего вызова или параметры по умолчанию. Обычно отображается диалог настройки в зависимости от модуля. Для ознакомления с описанием различных модулей, обратитесь к главе подключаемых модулей.

#### Параметры

`имя`: | (внутреннее) имя модуля Kwave
`параметр`: | список параметров, распознаваемых модулем (необязательно)

### prev

#### Синтаксис: prev()

Соответствует кнопке Предыдущий на панели инструментов. Если воспроизведение в данный момент выполняется, оно возвращается к предыдущей отметке или к началу выделения. Если воспроизведение не запущено, происходит действие, аналогичное команде view:scroll_prev_label().

#### Смотрите также

view:scroll_prev_label(), next()

q
q

## q

### quit

#### Синтаксис: quit()

Закрывает текущее главное окно и все вложенные окна. В режиме SDI действует так же, как и команда close().

#### Смотрите также

close()

r
r

## r

### redo

#### Синтаксис: redo()

Соответствует кнопке Повторить на панели инструментов и повторяет последнюю операцию, отменённую командой undo().

#### Смотрите также

undo()

### redo_all

#### Синтаксис: redo_all()

Аналогично команде redo(), но отменяет столько операций, сколько возможно.

#### Смотрите также

undo()

### reenable_dna

#### Синтаксис: reenable_dna()

В некоторых окнах сообщений предусмотрена функция отключения повторного появления («Не задавать больше этот вопрос»). Эта команда снова включает повторное появление таких окон.

### reset_toolbars

#### Синтаксис: reset_toolbars()

Сбрасывает на значения по умолчанию все параметры панели инструментов, такие как расположение, размер иконок и расположение текста.

### revert

#### Синтаксис: revert()

Возвращает текущий загруженный файл в последнее сохранённое состояние, отменяя все несохранённые изменения.

### rewind

#### Синтаксис: rewind()

Соответствует кнопке Назад на панели инструментов. Если воспроизведение в данный момент выполняется, оно возвращается назад на 1/10 видимого диапазона. Если воспроизведение не выполняется, то производится то же самое действие, что и при команде view:scroll_left().

#### Смотрите также

view:scroll_left(), forward()

s
s

## s

### save

#### Синтаксис: save()

Соответствует кнопке Сохранить на панели инструментов. Сохраняет текущий файл, если в нём имеются изменения. Если файлу ещё не было присвоено имя (например, файл, который только что был создан и не имеет названия), эта команда выполняется по такому же принципу, как и команда saveas().

#### Смотрите также

saveas()

### saveas

#### Синтаксис: saveas([`имя_файла`])

Сохраняет текущий открытый файл под заданным именем. Если в качестве параметра не указано имя файла, появится диалоговое окно для выбора каталога и ввода имени файла.

#### Параметры

`имя_файла`: | имя файла для сохранения (необязательно)

### saveselect

#### Синтаксис: saveselect()

Соответствует команде save(), но вместо всего файла сохраняет только текущий выбранный диапазон и активные дорожки.

#### Смотрите также

save()

### select_gui_type

#### Синтаксис: select_gui_type(`режим`)

Позволяет выбрать один из трёх режимов графического интерфейса пользователя: SDI, MDI или режим вкладок. Обратите внимание, что это изменение сразу же вступит в силу.

#### Параметры

`имя_файла`: | имя режима, доступны три варианта: «SDI», «MDI» или «во вкладках».

### select_track:all

#### Синтаксис: select_track:all()

Отмечает все дорожки как «включённые». Это аналогично команде select_track:on() для всех существующих дорожек.

#### Смотрите также

select_track:on()

### select_track:invert

#### Синтаксис: select_track:all()

Инвертирует состояние всех дорожек, отмеченных как «включённые». Это аналогично команде select_track:toggle() для всех существующих дорожек.

#### Смотрите также

select_track:toggle()

### select_track:none

#### Синтаксис: select_track:none()

Отмечает все дорожки как «отключённые». Это аналогично команде select_track:off() для всех существующих дорожек.

#### Смотрите также

select_track:off()

### select_track:off

#### Синтаксис: select_track:off(`индекс`)

Отключает одну дорожку, чтобы на неё не повлияло большинство операций.

#### Параметры

`индекс`: | индекс дорожки, начинающийся с нуля

### select_track:on

#### Синтаксис: select_track:on(`индекс`)

Включает одну дорожку, чтобы на неё повлияли все операции.

#### Параметры

`индекс`: | индекс дорожки, начинающийся с нуля

### select_track:toggle

#### Синтаксис: select_track:toggle(`индекс`)

Включает дорожку, если она в данный момент отключена, либо выключает дорожку, если она в данный момент включена.

#### Параметры

`индекс`: | индекс дорожки, начинающийся с нуля

### selectall

#### Синтаксис: selectall()

Выделяет диапазон всего сигнала, от первого до последнего сэмпла.

### selectnext

#### Синтаксис: selectnext()

Выделяет диапазон сэмплов, которые начинаются сразу после текущего выделения, при этом используется длительность, соответствующая этому выделению. Выбор автоматически обрезается к концу сигнала. Например: если были выделены сэмплы от 1000 до 1019, то результатом будет выделение сэмплов от 1020 до 1039.

#### Смотрите также

selectprev()

### selectnextlabels

#### Синтаксис: selectnextlabels()

Выделяет диапазон сэмплов между двумя отметками после текущего выделения. Если ничего не выбрано, происходит выделение от начала сигнала до первой отметки. Если же выделен какой-нибудь фрагмент, левая граница нового выделения будет расположена на позиции первой отметки после выделения (или последней отметки, если справа от выделения нет других отметок), а правая граница нового выделения будет расположена на позиции первой отметки после левой границы нового выделения (или на конце сигнала, если её нет). Если отметок нет, команда выдаёт ошибку.

#### Смотрите также

selectprevlabels()

### selectnone

#### Синтаксис: selectnone()

Сбрасывает выделение до нулевой длительности.

### selectprev

#### Синтаксис: selectprev()

Выделяет диапазон сэмплов, который начинается сразу перед текущим выделением, при этом используется длительность, соответствующая этому выделению. Выбор автоматически обрезается к началу сигнала. Например: если были выделены сэмплы от 1000 до 1019, то результатом будет выделение сэмплов от 980 до 999.

#### Смотрите также

selectnext()

### selectprevlabels

#### Синтаксис: selectprevlabels()

Выделяет диапазон сэмплов между предыдущими двумя отметками перед текущим выделением. Если ничего не выбрано, происходит выделение от начала сигнала до первой отметки. Если же выделен какой-нибудь фрагмент, правая граница нового выделения будет расположена на позиции первой отметки относительно начала выделения (или первой отметки, если слева от выделения нет других отметок), а левая граница нового выделения будет расположена на позиции первой отметки после правой границы нового выделения (или в начале сигнала, если её нет). Если отметок нет, команда выдаёт ошибку.

#### Смотрите также

selectnextlabels()

### selecttoleft

#### Синтаксис: selecttoleft()

Устанавливает начало выделения на начало сигнала, при этом конец текущего выделения остаётся неизменным.

#### Смотрите также

selecttoright()

### selecttoright

#### Синтаксис: selecttoright()

Устанавливает конец выделения на конец сигнала, при этом начало текущего выделения остаётся неизменным.

#### Смотрите также

selecttoleft()

### selectvisible

#### Синтаксис: selectvisible()

Выбор диапазона сэмплов, отображающихся в текущем окне.

### start

#### Синтаксис: start()

Соответствует кнопке Воспроизведение на панели инструментов и начинает воспроизведение с начала выделения или продолжает воспроизведение с места, где оно было приостановлено.

#### Смотрите также

stop()

### stop

#### Синтаксис: stop()

Соответствует кнопке Остановить на панели инструментов и останавливает воспроизведение, если оно в данный момент идёт.

#### Смотрите также

start()

### sync

#### Синтаксис: sync()

Ожидает завершения всех команд, запущенных асинхронно. Если в очереди команд нет команд для отложенного выполнения, эта команда не будет выполняться.

#### Смотрите также

delayed()

u
u

## u

### undo

#### Синтаксис: undo()

Соответствует кнопке Отменить на панели инструментов и отменяет последнюю операцию.

#### Смотрите также

redo()

### undo_all

#### Синтаксис: undo_all()

Соответствует команде undo(), но отменяет столько операций, сколько возможно.

#### Смотрите также

undo()

v
v

## v

### view:scroll_end

#### Синтаксис: view:scroll_end()

Прокручивает текущую область просмотра до конца сигнала.

#### Смотрите также

view:scroll_start()

### view:scroll_left

#### Синтаксис: view:scroll_left()

Прокручивает текущую область просмотра на 1/10 от текущего видимого диапазона к началу сигнала. При достижении начала сигнала видимая область будет начинаться с нулевым отступом.

#### Смотрите также

view:scroll_right()

### view:scroll_next

#### Синтаксис: view:scroll_next()

Прокручивает текущую область просмотра к концу сигнала в текущем видимом диапазоне.

#### Смотрите также

view:scroll_prev()

### view:scroll_next_label

#### Синтаксис: view:scroll_next_label()

Прокручивает вправо и показывает следующую отметку, находящуюся в области просмотра. Если справа от текущей позиции нет отметки, то прокручивать будет до конца сигнала.

#### Смотрите также

view:scroll_prev_label()

### view:scroll_prev

#### Синтаксис: view:scroll_prev()

Прокручивает текущую область просмотра по направлению к началу сигнала в текущем видимом диапазоне

#### Смотрите также

view:scroll_next()

### view:scroll_prev_label

#### Синтаксис: view:scroll_prev_label()

Прокручивает влево и показывает следующую отметку, находящуюся в области просмотра. Если слева от текущей позиции нет отметки, то прокручивать будет до начала сигнала.

#### Смотрите также

view:scroll_next_label()

### view:scroll_right

#### Синтаксис: view:scroll_right()

Прокручивает текущую область просмотра на 1/10 от текущего видимого диапазона к концу сигнала. При достижении конца сигнала видимая область заканчивается.

#### Смотрите также

view:scroll_left()

### view:scroll_start

#### Синтаксис: view:scroll_start()

Прокручивает текущую область просмотра к началу сигнала.

#### Смотрите также

view:scroll_end()

### view:zoom_all

#### Синтаксис: view:zoom_all()

Регулирует масштаб таким образом, чтобы весь сигнал был виден в текущей области просмотра.

### view:zoom_in

#### Синтаксис: view:zoom_in([`позиция`])

Увеличивает масштаб (в сэмплах на пиксел) на 30%, чтобы обеспечить более детальный просмотр. Если указан параметр `позиция`, приложение старается сделать так, чтобы указанное положение было расположено в центре панели просмотра после масштабирования. Если позиция не указана, центр панели будет находиться в центре текущей области просмотра. Максимальный масштаб ограничен наибольшим значением в пять сэмплов на ширину области просмотра.

#### Параметры

`позиция`: | позиция в сэмплах для центрирования просмотра (начинается с нуля, необязательно)

#### Смотрите также

view:zoom_out()

### view:zoom_normal

#### Синтаксис: view:zoom_normal()

Устанавливает масштаб в один пиксел на сэмпл (масштаб 1,0) и сохраняет предыдущий центр области просмотра.

### view:zoom_out

#### Синтаксис: view:zoom_out([`позиция`])

Уменьшает масштаб (в сэмплах на пиксел) на 30%, чтобы обеспечить общий просмотр. Если указан параметр `позиция`, приложение старается сделать так, чтобы указанное положение было расположено в центре панели просмотра после масштабирования. Если позиция не указана, центр панели будет находиться в центре текущей области просмотра. Максимальный масштаб ограничен количеством сэмплов в сигнале и шириной области просмотра.

#### Параметры

`позиция`: | позиция в сэмплах для центрирования просмотра (начинается с нуля, необязательно)

#### Смотрите также

view:zoom_in()

### view:zoom_selection

#### Синтаксис: view:zoom_selection()

Корректирует область просмотра (масштаб и начало видимой области) так, чтобы она соответствовала текущему выделению. Команда не выполняется, если ничего не выделено.

w
w

## w

### window:activate

#### Синтаксис: window:activate(`заголовок`])

Вызывает вложенное окно, определяемое `заголовком` основного окна. Если вложенное окно свёрнуто, то оно будет восстановлено. Доступно только в режиме MDI или в режиме вкладок. Эту команду внутренне использует меню Окно.

#### Параметры

`заголовок`: | название вложенного окна, которое должно быть активировано

### window:cascade

#### Синтаксис: window:cascade()

Располагает каскадом все вложенные окна, когда приложение находится в режиме MDI. Все свёрнутые вложенные окна не будут восстановлены.

### window:click

#### Синтаксис: window:click(`класс`, `x`, `y`)

Отправляет событие нажатия мыши в окно с указанным `классом`. Событие будет отправлено только в первое окно с заданным классом, поэтому перед выполнением команды следует убедиться, что открыт только один экземпляр данного окна.

#### Параметры

`класс`: | имя класса окна
`x`: | положение x относительно левой границы окна (в пикселах)
`y`: | положение y относительно верхней границы окна (в пикселах)

### window:close

#### Синтаксис: window:close(`класс`)

Закрывает окно с указанным `классом`. Будет закрыто только первое окно с заданным классом, поэтому перед выполнением команды следует убедиться, что открыт только один экземпляр данного окна.

#### Параметры

`класс`: | имя класса окна

### window:minimize

#### Синтаксис: window:minimize

Сворачивает текущее активное вложенное окно в режиме MDI или текущее активное окно в режиме SDI или в режиме вкладок.

### window:mousemove

#### Синтаксис: window:resize(`класс`, `x`, `y`)

Отправляет событие перемещения курсора к окну с указанным `классом`. Событие будет отправлено только в первое окно с заданным классом, поэтому перед выполнением команды следует убедиться, что открыт только один экземпляр данного окна.

#### Параметры

`класс`: | имя класса окна
`x`: | положение x относительно левой границы окна (в пикселах)
`y`: | положение y относительно верхней границы окна (в пикселах)

### window:next_sub

#### Синтаксис: window:next_sub()

Активирует следующее вложенное окно в режиме MDI или в режиме вкладок. Если следующее вложенное окно свёрнуто, оно будет восстановлено.

### window:prev_sub

#### Синтаксис: window:prev_sub()

Активирует предыдущее вложенное окно в режиме MDI или в режиме вкладок. Если предыдущее вложенное окно свёрнуто, оно будет восстановлено.

### window:resize

#### Синтаксис: window:resize(`класс`, `ширина`, `высота`)

Изменяет размер окна с указанным `классом`, и присваивает ему новую `ширину` и `высоту`. Изменение будет применено только к первому окну с заданным классом, поэтому перед выполнением команды следует убедиться, что открыт только один экземпляр данного окна.

#### Параметры

`класс`: | имя класса окна
`ширина`: | новая ширина окна (в пикселах)
`высота`: | новая высота окна (в пикселах)

### window:screenshot

#### Синтаксис: window:screenshot(`класс`, `имя_файла`)

Делает снимок экрана окна с указанным `классом`, и сохраняет его в файл. Будет произведён снимок только первого окна с заданным классом, поэтому перед выполнением команды следует убедиться, что открыт только один экземпляр данного окна. В текущей версии выбор формата снимков не предусмотрен, все снимки сохраняются в формате `*.png`.

#### Параметры

`класс`: | имя класса окна
`имя_файла`: | имя файла для сохранения снимка экрана, должно иметь расширение `*.png`

### window:sendkey

#### Синтаксис: window:sendkey(`класс`, `код_клавиши`)

Отправляет событие нажатия и отпускания клавиши в окно с указанным `классом`. Событие будет отправлено только в первое окно с заданным классом, поэтому перед выполнением команды следует убедиться, что открыть только один экземпляр данного окна.

#### Параметры

`класс`: | имя класса окна
`код_клавиши`: | посылаемый код клавиши, который должен использовать тот же синтаксис, что используется для настройки параметров меню.

#### Смотрите также

Описание параметра `горячая_клавиша` команды menu().

### window:tile

#### Синтаксис: window:tile()

Располагает все вложенные окна рядом, когда приложение находится в режиме MDI с использованием некоторых схем Plasma. Все свёрнутые вложенные окна не будут восстановлены.

### window:tile_vertical

#### Синтаксис: window:tile_vertical()

При работе приложения в режиме MDI располагает все вложенные окна вертикально. Все свёрнутые вложенные окна не будут восстановлены.

Глава 5. Модули
Модули

# Глава 5. Модули

## Справочник модулей

### Алфавитный указатель

### a

about (О программе Kwave)
amplifyfree (Усиление)

### b

band_pass (Полосовой фильтр)

### c

codec_ascii (Кодек ASCII)
codec_audiofile (Кодек Audiofile)
codec_flac (Кодек FLAC)
codec_mp3 (Кодек MP3)
codec_ogg (Кодек Ogg)
codec_wav (Кодек WAV)

### d

debug (Функции отладки)

### e

export_k3b (Экспорт в проект K3b)

### f

fileinfo (Сведения о файле)

### g

goto (Перейти к позиции)

### i

insert_at (Вставить в)

### l

lowpass (Фильтр низких частот)

### n

newsignal (Новый сигнал)
noise (Генератор шума)
normalize (Нормализатор)
notch_filter (Режекторный фильтр)

### p

pitch_shift (Высота тона)
playback (Воспроизведение)

### r

record (Запись)
reverse (Реверс)

### s

samplerate (Преобразование частоты дискретизации)
saveblocks (Сохранение блоков)
selectrange (Выделение диапазона)
sonagram (Сонаграмма)
stringenter (Ввод команды)

### v

volume (Громкость)

### z

zero (Генератор тишины)

``

about (О программе Kwave)
about (О программе Kwave)

## about (О программе Kwave)

Внутреннее имя:

  `about`

Тип модуля:

  Графический интерфейс пользователя

Описание:

  Отображает окно с несколькими вкладками, включая следующую информацию:

  - общая информация о приложении

  - авторы, помощники и правообладатели

  - все доступные модули, включая их версии и авторов

  - информация о команде переводчиков

  - информация об авторских правах и лицензировании

amplifyfree (Усиление)
amplifyfree (Усиление)

## amplifyfree (Усиление)

Внутреннее имя:

  `amplifyfree`

Тип модуля:

  эффект

Описание:

  Усиливает текущий выбор с помощью кривой, состоящей из набора координат и метода интерполяции. Координаты на оси времени, а также на оси амплитуды должны варьироваться между 0,0 и 1,0.

Параметры
  `операция`

    Внутреннее имя, для обработки действий отмены или повтора. Возможные значения:

    ключевое слово | описание
    --- | ---
    fade in | нарастание, кривая от 0,0/0,0 до 1,0/1,0
    fade out | затухание, кривая от 0,0/1,0 до 1,0/0,0
    fade intro | вступительное нарастание, секундная пауза, а затем нарастание
    fade outro | завершающее затухание, первое затухание, а затем секундная пауза
    amplify free | определяемая пользователем кривая

  `интерполяция`

    Возможные значения типов интерполяции:

    ключевое слово | описание
    --- | ---
    linear | Линейная
    spline | Сплайн
    n-polynom | Многочлен n-й степени
    3-polynom | Многочлен 3-й степени
    5-polynom | Многочлен 5-й степени
    7-polynom | Многочлен 7-й степени
    sample_hold | Интерполяция и экстраполяция

  `кривая`

    Разделённый запятыми список пар координат, варьирующихся между 0,0 и 1,0, отсортированные по временной оси (по возрастанию), начинающиеся со времени 0,0 и заканчивающиеся временем 1,0.

band_pass (Полосовой фильтр)
band_pass (Полосовой фильтр)

## band_pass (Полосовой фильтр)

Внутреннее имя:

  `band_pass`

Тип модуля:

  эффект

Описание:

  Применяет простой полосовой фильтр к текущему выделению. Полосовой фильтр пропускает определённый диапазон частот вокруг центральной частоты и отфильтровывает частоты, которые находятся ниже или выше центральной частоты более чем на половину пропускной способности фильтра.

  Фильтру присвоен уровень оценки 2, и он реализован в соответствии с алгоритмом, описанным в книге «An introduction to digital filter theory», автор которой является Julius O. Smith, и на основе нормализованной версии алгоритма Мура.

Параметры:
  `частота`

    Центральная частота фильтра в Гц, должна быть ниже половины частоты дискретизации файла.

  `пропускная способность`

    Пропускная способность фильтра в Гц.

codec_ascii (Кодек ASCII)
codec_ascii (Кодек ASCII)

## codec_ascii (Кодек ASCII)

Внутреннее имя:

  `codec_ascii`

Тип модуля:

  кодек

Поддерживаемые форматы файлов:

  Описание: | Аудио в формате ASCII
  Расширения файла: | `*.ascii`
  Типы MIME: | `audio/x-audio-ascii`

Поддерживаемые метаданные:

  (все известные элементы информации о файле, подробнее в разделе Сведения о файле)

codec_audiofile (Кодек Audiofile)
codec_audiofile (Кодек Audiofile)

## codec_audiofile (Кодек Audiofile)

Внутреннее имя:

  `codec_audiofile`

Тип модуля:

  кодек [только импорт]

Поддерживаемые форматы файлов:

  Описание: | Формат Amiga IFF/8SVX
  Расширения файла: | `*.8svx` | `*.iff`
  Типы MIME: | `audio/x-8svx`

  Описание: | NeXT, Sun Audio
  Расширения файла: | `*.au`, `*.snd`
  Типы MIME: | `audio/basic`

  Описание: | Сжатый формат Audio Interchange
  Расширения файла: | `*.aifc`
  Типы MIME: | `audio/x-aifc`

  Описание: | Формат Audio Interchange
  Расширения файла: | `*.aif`, `*.aiff`
  Типы MIME: | `audio/x-aiff`

  Описание: | Формат Audio Visual Research
  Расширения файла: | `*.avr`
  Типы MIME: | `audio/x-avr`

  Описание: | Формат Core Audio
  Расширения файла: | `*.caf`
  Типы MIME: | `audio/x-caf`

  Описание: | Формат Berkeley, IRCAM, Carl Sound
  Расширения файла: | `*.sf`
  Типы MIME: | `audio/x-ircam`

  Описание: | Формат NIST SPHERE
  Расширения файла: | `*.nist`
  Типы MIME: | `audio/x-nist`

  Описание: | Формат Sample Vision
  Расширения файла: | `*.smp`
  Типы MIME: | `audio/x-smp`

  Описание: | Формат Creative Voice
  Расширения файла: | `*.voc`
  Типы MIME: | `audio/x-voc`

Поддерживаемые метаданные:

  (отсутствует)

codec_flac (Кодек FLAC)
codec_flac (Кодек FLAC)

## codec_flac (Кодек FLAC)

Внутреннее имя:

  `codec_flac`

Тип модуля:

  кодек

Поддерживаемые форматы файлов:

  Описание: | FLAC аудио (Free Lossles Audio Codec)
  Расширения файла: | `*.flac`
  Типы MIME: | `audio/x-flac`

Поддерживаемые метаданные:

  Date, Name, Version, Album, Track, Author, Performer, Copyright, License, Organization, Subject, Genre, Source, Contact, ISRC, Software, Engineer, Base Quality

codec_mp3 (Кодек MP3)
codec_mp3 (Кодек MP3)

## codec_mp3 (Кодек MP3)

Внутреннее имя:

  `codec_mp3`

Тип модуля:

  кодек

Поддерживаемые форматы файлов:

  Описание: | Аудио в формате MPEG layer III
  Расширения файла: | `*.mp3`
  Типы MIME: | `audio/x-mp3`, `audio/mpeg`s

  Описание: | Аудио в формате MPEG layer II
  Расширения файла: | `*.mp2`
  Типы MIME: | `audio/x-mp2`, `audio/mpeg`

  Описание: | Аудиов формате MPEG layer I
  Расширения файла: | `*.mp1`, `*.mpg`, `*.mpga`
  Типы MIME: | `audio/x-mpga`, `audio/mpeg`

Поддерживаемые метаданные:

  Album, Annotation, Author, CD, CDS, Comments, Commissioned, Contact, Copyright, Date, Genre, ISRC, Length, License, Medium, Name, Organization, Performer, Software, Technician, Track, Tracks, Version

codec_ogg (Кодек Ogg)
codec_ogg (Кодек Ogg)

## codec_ogg (Кодек Ogg)

Внутреннее имя:

  `codec_ogg`

Тип модуля:

  кодек

Поддерживаемые форматы файлов:

  Описание: | Формат Ogg Opus
  Расширения файла: | `*.opus`
  Типы MIME: | `audio/ogg`, `application/ogg`, `audio/opus`

  Описание: | Формат Ogg Vorbis
  Расширения файла: | `*.ogg`
  Типы MIME: | `audio/ogg`, `audio/x-ogg`, `application/x-ogg`, `audio/x-vorbis+ogg`

Поддерживаемые метаданные:

  Album, Author, Contact, Copyright, Date, Engineer, Genre, ISRC, License, Name, Organization, Performer, Software, Source, Subject, Track, Base Quality, Version,

codec_wav (Кодек WAV)
codec_wav (Кодек WAV)

## codec_wav (Кодек WAV)

Внутреннее имя:

  `codec_wav`

Тип модуля:

  кодек

Поддерживаемые форматы файлов:

  Описание: | Формат WAV
  Расширения файла: | `*.wav`
  Типы MIME: | `audio/x-wav`, `audio/vnd.wave`, `audio/wav`

Поддерживаемые метаданные:

  Album, Annotation, Archival location, Author, CD, Comments, Commissioned, Contact, Copyright, Date, Engineer, Genre, ISRC, Keywords, License, Medium, Name, Organization, Performer, Product, Software, Source, Source form, Subject, Technician, Track, Version,

debug (Функции отладки)
debug (Функции отладки)

## debug (Функции отладки)

Внутреннее имя:

  `debug`

Тип модуля:

  функция

Описание:

  Обеспечивает работу различных встроенных команд, полезных для отладки и создания сценариев Kwave. Эти функции доступны только через главное меню, если Kwave был собран в режиме отладки (с параметром CMAKE_WITH_DEBUG).

Команды:

  window:click, window:close window:mousemove, window:resize, window:screenshot, window:sendkey

export_k3b (Экспорт в проект K3b)
export_k3b (Экспорт в проект K3b)

## export_k3b (Экспорт в проект K3b)

Внутреннее имя:

  `export_k3b`

Тип модуля:

  функция

Описание:

  Сохраняет все разделы между маркерами в отдельный файл и создаёт файл проекта K3b. После успешной записи всех файлов результат можно записать на компакт-диск с помощью приложения K3b. Это полезно для разделения файла записи, состоящего из нескольких частей, разделённых отметками, чтобы впоследствии записать компакт-диск с несколькими дорожками, включая текстовые метаданные, которые будут извлечены из описаний к отметкам.

  (На внутреннем уровне этот модуль использует модуль saveblocks (Сохранение блоков).)

Параметры:
  `имя файла`

    Имя файла проекта K3b, будет использоваться в качестве основы имени для всех файлов.

  `шаблон`

    Шаблон, который будет использоваться для определения названия дорожки и имени исполнителя на отметке в начале раздела. Он поддерживает следующие подстановочные знаки, которые будут заменены соответствующим содержимым при создании текстовых метаданных для компакт-диска:

    шаблон | описание
    --- | ---
    [%artist] | Будет заменено именем артиста, исполнившего соответствующий блок, или альтернативно именем автора.
    [%title] | Будет заменено заголовком блока, который определяется описательным текстом отметки в начале блока. Если текстовый фрагмент окажется пустым, приложение обратится к названию файла (более подробная об информации о файле в разделе «Имя»). Если и названия файла не существует, приложение обратится к базовому имени файла, описанному выше.

    Пример: «`[%title] ([%artist])`» определит автора «`Бетховен`» и название «`Симфония No. 5`» из строки «`Симфония No. 5 (Бетховен)`.

  `только выделение`

    значение | описание
    --- | ---
    0 | Сохранить все секции целого файла.
    1 | Сохранить только секции в пределах текущего выделения. Если ничего не выбрано, будет сохранён весь файл.

  `экспорт в папку`

    Определить место, в которое будут сохраняться блоки.

    значение | описание
    --- | ---
    0 | Сохранить в том же месте, что и файл проекта K3b
    1 | Сохранить во вложенную папку в расположении файла проекта K3b с использованием в качестве базы имя проекта и добавляя расширение «`.dir`».

  `политика замены`

    Определить место, с которого должна начаться нумерация.

    значение | описание
    --- | ---
    0 | Всегда начинать с индекса 1 с риском перезаписать существующие файлы.
    1 | Продолжать после индексирования самого высокого порядкового номера, который уже существует, это позволяет избежать перезаписи существующих файлов.

fileinfo (Сведения о файле)
fileinfo (Сведения о файле)

## fileinfo (Сведения о файле)

Внутреннее имя:

  `fileinfo`

Тип модуля:

  Графический интерфейс пользователя

Описание:

  Открывает диалоговое окно для просмотра и изменения параметров метаданных открытого файла. Для более подробной информации обратитесь к разделу Свойства файла данного руководства.

goto (Перейти к позиции)
goto (Перейти к позиции)

## goto (Перейти к позиции)

Внутреннее имя:

  `goto`

Тип модуля:

  функция

Описание:

  Отображает диалоговое окно с возможностью установки текущей позиции выделения на новое значение, либо по времени в миллисекундах, либо по позиции в сэмплах, либо по проценту от длительности текущего файла.

Команды:

  goto

Параметры:
  `режим`

    значение | описание
    --- | ---
    0 | позиция, заданная в миллисекундах
    1 | позиция, заданная в сэмплах
    2 | позиция, заданная в процентах от длительности файла

  `позиция`

    позиция для перехода, заданная в миллисекундах, сэмплах или процентах от длительности файла в зависимости от параметра `режим`.

insert_at (Вставить в)
insert_at (Вставить в)

## insert_at (Вставить в)

Внутреннее имя:

  `insert_at`

Тип модуля:

  функция

Описание:

  Аналогично модулю goto (Перейти к позиции), но показывает диалоговое окно с возможностью вставки текущего содержимого буфера обмена в заданную позицию, указанную либо в миллисекундах, либо в позиции в сэмплах, либо в процентах от длительности текущего файла.

Команды:

  insert_at

Параметры:
  `режим`

    значение | описание
    --- | ---
    0 | позиция, заданная в миллисекундах
    1 | позиция, заданная в сэмплах
    2 | позиция, заданная в процентах от длительности файла

  `позиция`

    позиция, в которую вставляются данные буфера обмена, указанная в миллисекундах, сэмплах или процентах от длительности файла, в зависимости от параметра `режим`.

lowpass (Фильтр низких частот)
lowpass (Фильтр низких частот)

## lowpass (Фильтр низких частот)

Внутреннее имя:

  `lowpass`

Тип модуля:

  эффект

Описание:

  Применяет простой фильтр нижних частот до текущего выделения. Фильтр низких частот пропускает частоты ниже граничной частоты и отфильтровывает частоты, находящиеся выше.

  Фильтр имеет уровень оценки 2, и он реализован на основе алгоритма, описанного в работе «The manifold joys of conformal mapping, applications to digital filtering in the studio», автором которой является James A. Moorer (Журнал «Journal of applied engineering science», часть 31, выпуск 11, Ноябрь 1983 года).

Параметры:
  `частота`

    Граничная частота фильтра нижних частот в Гц

newsignal (Новый сигнал)
newsignal (Новый сигнал)

## newsignal (Новый сигнал)

Внутреннее имя:

  `newsignal`

Тип модуля:

  функция

Описание:

  Отображает диалоговое окно для создания нового файла. Более подробная информация доступна в разделе Создание нового файла этого руководства.

Команды:

  newsignal

noise (Генератор шума)
noise (Генератор шума)

## noise (Генератор шума)

Внутреннее имя:

  `noise`

Тип модуля:

  эффект

Описание:

  Добавляет некоторое количество белого шума к текущему выделению. Мощность шума можно установить от 0 (никакого шума, оригинал остаётся неизменным) до 1 (полная замена оригинала шумом).

Параметры:
  `уровень`

    Уровень шума, значение всегда должно быть с плавающей запятой, больше нуля и не больше единицы.

  `режим`

    значение | описание
    --- | ---
    0 | Введите значение шума в процентах от амплитуды, от 0 до 100.
    1 | Введите значение шума в децибелах, от -21 дБ до 0 дБ.

normalize (Нормализатор)
normalize (Нормализатор)

## normalize (Нормализатор)

Внутреннее имя:

  `normalize`

Тип модуля:

  эффект

Описание:

  Нормализует уровень громкости текущего выделения. Используется в случаях, когда уровень громкости сигнала слишком низкий или слишком высокий.

  Алгоритм был позаимствован из проекта normalize, автором которого является Chris Vaill.

notch_filter (Режекторный фильтр)
notch_filter (Режекторный фильтр)

## notch_filter (Режекторный фильтр)

Внутреннее имя:

  `notch_filter`

Тип модуля:

  эффект

Описание:

  Применяет режекторный фильтр к текущему выделению. Режекторный фильтр пропускает определённый диапазон частот вокруг центральной частоты и отфильтровывает частоты, которые находятся ниже или выше центральной частоты более чем на половину ширины полосы пропускания фильтра.

  Данный модуль используется для фильтрации одиночных частот, искажающих сигнал.

  Фильтру присвоен уровень оценки 2, и он реализован в соответствии с алгоритмом, описанным Juhana Sadeharju .

Параметры:
  `частота`

    Центральная частота фильтра в Гц, должна быть ниже половины частоты дискретизации файла.

  `пропускная способность`

    Пропускная способность фильтра в Гц.

pitch_shift (Высота тона)
pitch_shift (Высота тона)

## pitch_shift (Высота тона)

Внутреннее имя:

  `pitch_shift`

Тип модуля:

  эффект

Описание:

  Модуль изменения высоты тона модифицирует сигнал, корректируя скорость воспроизведения данных с сохранением начальной длительности. Возможно выбрать относительную скорость либо в коэффициенте от 1/10 до 5, либо в процентах от 1% до 400% от исходной скорости.

  Коэффициент скорости ниже 1,0 понижает тон сигнала (низкий голос, состаривает голоса), коэффициент 1,0 ничего не меняет, а коэффициент выше 1,0 повышает тон сигнала (высокий голос).

  Реализация основана на работе авторов Jeff Tranter и Stefan Westerfeld.

Параметры:
  `скорость`

    Коэффициент изменения скорости, число с плавающей запятой от 0,001 и 4,0.

  `частота`

    Частота, внутренне используемая фильтром, измеряется в Гц и должна иметь значение между 2,0 и 10,0.

  `режим`

    значение | описание
    --- | ---
    0 | Введите значение скорости в виде коэффициента от 1/10 до 5.
    1 | Введите значение скорости в процентах от 1 до 400.

playback (Воспроизведение)
playback (Воспроизведение)

## playback (Воспроизведение)

Внутреннее имя:

  `playback`

Тип модуля:

  функция

Описание:

  Отображает диалоговое окно для настройки параметров воспроизведения. Более подробная информация доступна в разделе Воспроизведение этого руководства.

Параметры:
  `способ воспроизведения`

    Метод воспроизведения, подробнее: `PlayBackParam.h`.

  `устройство воспроизведения`

    Строка, которая определяет устройство или канал воспроизведения. Значение зависит от способа воспроизведения.

  `каналы`

    Количество каналов, используемых для записи. В текущей версии поддерживается только 1 (моно) или 2 (стерео).

  `битов на сэмпл`

    Количество битов на сэмпл для воспроизведения должно быть 8, 16, 24 или 32. Зависит от метода воспроизведения и используемого устройства.

  `размер буфера`

    Определяет размер буфера воспроизведения, используемого в качестве степени для вычисления реального размера буфера по формуле 2^n. Например, установка значения 16 даст размер буфера 2^16 = 64 КБ.

record (Запись)
record (Запись)

## record (Запись)

Внутреннее имя:

  `record`

Тип модуля:

  функция

Описание:

  Отображает диалоговое окно для настройки параметров записи и выполнения записи. Более подробная информация доступна в разделе Запись этого руководства.

Параметры:
  `способ записи`

    Способ записи, подробнее: `RecordParams.h`.

  `предварительная запись включена`

    Включить или выключить предварительную запись (1, если включено, 0, если выключено).

  `время предварительной записи`

    Количество секунд для предварительной записи.

  `ограничение времени записи`

    Включить или отключить ограничение времени записи (1 — если ограничено, 0 — если не ограничено).

  `время записи`

    Длительность записи в секундах

  `использование времени начала`

    Включение или отключение начального времени (1 — если используется, 0 — если не используется).

  `время начала`

    Дата и время начала записи в формате ISO.

  `использование уровня громкости звука для активации записи`

    Включить или выключить использование уровня громкости звука для активации записи (1 — если используется, 2 — если не используется).

  `уровень громкости звука для активации записи`

    Уровень громкости звука для активации записи в процентах.

  `устройство записи`

    Строка, определяющая записывающее устройство.

  `каналы`

    Количество каналов, используемых для записи.

  `частота дискретизации`

    Частота дискретизации в сэмплах в секунду.

  `сжатие`

    Способ сжатия для хранения сэмплов.

  `формат сэмпла`

    Формат сэмпла, используемый для их хранения, подробнее в разделе о форматах сэмпла.

  `битов на сэмпл`

    Количество битов на сэмпл для записи, возможные значения: 8, 16, 24 или 32.

  `число буферов`

    Определяет количество буферов, используемых для записи.

  `размер буфера`

    Определяет размер буфера записи, используемого в качестве степени для вычисления реального размера буфера по формуле 2^n. Например, установка значения 16 даст размер буфера 2^16 = 64 КБ.

Альтернативные параметры:
  `прямой режим модуля записи`

    Может использоваться как отдельный параметр для настройки модуля. Возможны следующие значения:

    значение | описание
    --- | ---
    format | Открыть диалоговое окно записи и выбрать вкладку Формат.
    source | Открыть диалоговое окно записи и выбрать вкладку Источник.
    start_now | Открыть диалоговое окно записи и начать запись.

reverse (Реверс)
reverse (Реверс)

## reverse (Реверс)

Внутреннее имя:

  `reverse`

Тип модуля:

  эффект

Описание:

  Этот простой эффект выполняет инверсию текущего выделения.

samplerate (Преобразование частоты дискретизации)
samplerate (Преобразование частоты дискретизации)

## samplerate (Преобразование частоты дискретизации)

Внутреннее имя:

  `samplerate`

Тип модуля:

  эффект

Описание:

  Изменяет частоту дискретизации текущего выделения или всего сигнала.

Параметры:
  `новая частота`

    Новая частота дискретизации в сэмплах в секунду (значение с плавающей запятой).

  `режим` (необязательно)

    Если этот параметр используется и установлено значение «`all`», то этот эффект будет применён ко всему сигналу. Если значение параметра не установлено, эффект будет применён только к текущему выделению.

saveblocks (Сохранение блоков)
saveblocks (Сохранение блоков)

## saveblocks (Сохранение блоков)

Внутреннее имя:

  `saveblocks`

Тип модуля:

  функция

Описание:

  Сохраняет все разделы между маркерами, каждый в отдельный файл. Каждому файлу присваивается имя, которое можно настроить с помощью шаблона, который содержит имя исходного файла, индекс и количество разделов.

  Также шаблон имени файла может содержать косую черту в качестве разделителя элементов пути, что позволяет сохранять разделы в различных вложенных каталогах. Все пробелы рядом с такими разделителями пути удаляются без вывода предупреждения, чтобы избежать создания имён каталогов, которые начинаются или заканчиваются пробелами.

Параметры:
  `имя`

    Имя оригинального файла, будет использоваться в качестве базового имени для всех файлов

  `шаблон`

    Шаблон, который будет использоваться для создания имён файлов. Он может содержать следующие подстановочные символы, которые будут заменены соответствующим содержимым при создании окончательного имени файла:

    шаблон | описание
    --- | ---
    [%nr] | Будет заменено текущим индексом файла для сохранения.
    [%count] | Будет заменено количеством разделов, которые будут сохранены.
    [%total] | Будет заменено индексом последнего файла для сохранения.
    [%filename] | Будет заменено базовым именем файла, без пути и расширения.
    [%fileinfo{`ключевое слово`}] | Будет заменено содержимым файла с информацией, определяемой `ключевым словом`. Чтобы ознакомиться со списком всех доступных ключевых слов, перейдите к разделу Сведения о файле.
    [%title] | Будет заменено заголовком блока, который определяется описательным текстом отметки в начале блока. Если текстовый фрагмент окажется пустым, приложение обратится к названию файла (более подробная об информации о файле в разделе «Имя»). Если и названия файла не существует, приложение обратится к базовому имени файла, описанному выше.

    Все числовые подстановочные знаки могут также содержать числовой аргумент после «`%`» и идентификатор для ограничения количества цифр. Если перед числом указать `0`, то в числе будут использованы начальные нули. Если ноль не указан, будут использованы начальные пробелы.

    Например: `[%04nr]` создаст число от 0001 до 9999.

  `режим нумерации`

    Определить место, с которого должна начаться нумерация.

    значение | описание
    --- | ---
    0 | Продолжать после индексирования самого высокого порядкового номера, который уже существует, это позволяет избежать перезаписи существующих файлов.
    1 | Всегда начинать с индекса 1 с риском перезаписать существующие файлы.

  `только выделение`

    значение | описание
    --- | ---
    0 | Сохранить все секции целого файла.
    1 | Сохранить только секции в пределах текущего выделения. Если ничего не выбрано, будет сохранён весь файл.

selectrange (Выделение диапазона)
selectrange (Выделение диапазона)

## selectrange (Выделение диапазона)

Внутреннее имя:

  `selectrange`

Тип модуля:

  функция

Описание:

  Отображает диалоговое окно для выбора диапазона сэмплов. Возможно установить начало и продолжительность выделения, указав время в миллисекундах, сэмплах или в процентах к общей длительности воспроизведения файла.

Параметры:
  `режим запуска`

    Определяет единицы, в которых будет указано начало выделения.

    значение | описание
    --- | ---
    0 | миллисекунды
    1 | сэмплы
    2 | процент от длительности файла

  `режим диапазона`

    Определяет единицы, в которых указывается длительность выделения. Для получения списка допустимых к использованию единиц измерений обратитесь к параметру `режим запуска`.

  `начало`

    Начало выделения, в миллисекундах, сэмплах или процентах от длительности файла в зависимости от параметра `режим диапазона`.

  `длительность`

    Длительность выделения, в миллисекундах, сэмплах или процентах от длительности файла в зависимости от параметра `режим диапазона`.

sonagram (Сонаграмма)
sonagram (Сонаграмма)

## sonagram (Сонаграмма)

Внутреннее имя:

  `sonagram`

Тип модуля:

  функция

Описание:

  Обрабатывает текущее выделение и создаёт на основе полученных данных сонаграмму. Сонаграмма — это визуальная оценка сигнала по временной оси (ось X), частоте (ось Y) и интенсивности звука (цвет).

Параметры:
  `Точки БПФ`

    Количество точек быстрого преобразования Фурье (БПФ), целое число от 4 до 32767, которое определяет разрешение по частоте.

  `оконная функция`

    Оконная функция, используемая для расчёта БПФ, поддерживает следующие значения:

    значение | описание
    --- | ---
    none | без оконной функции
    hamming | окно Хемминга
    hanning | окно Хэннинга
    blackman | окно Блэкмана
    triangular | Треугольное окно

  `использовать цвета`

    Если установлено ненулевое значение, использовать цвета. Если установлено нулевое значение, для отображения интенсивности будут использованы оттенки серого.

  `отслеживать изменения`

    Если задано ненулевое значение, то сонаграмма будет обновляться при изменении обрабатываемой области. Если значение равно нулю, в таком случае сонаграмма не будет обновляться.

  `следовать за выделением`

    Ещё не реализовано, используйте нулевое значение для этого параметра.

stringenter (Ввод команды)
stringenter (Ввод команды)

## stringenter (Ввод команды)

Внутреннее имя:

  `stringenter`

Тип модуля:

  функция

Описание:

  Открывает небольшое диалоговое окно, позволяющее ввести текстовую команду для Kwave. Более подробная информация содержится в разделе Список команд данного руководства.

Параметры:
  `набор параметров` (необязательно)

    Текст, отображающийся в поле ввода диалогового окна. Этот параметр является необязательным, если текст отсутствует, то поле ввода диалогового окна будет пустым при запуске.

volume (Громкость)
volume (Громкость)

## volume (Громкость)

Внутреннее имя:

  `volume`

Тип модуля:

  эффект

Описание:

  Этот модуль позволяет изменить громкость текущего выделения с использованием постоянного коэффициента. В существующем диалоговом окне возможно ввести этот коэффициент в формате числового множителя с плавающей запятой в диапазоне от 0,10 до 10,0, процентного значения от 1 до 1000 или в децибелах от -21 до +21.

  Если звук слишком тихий, укажите коэффициент больше 1,0 (процентное значение больше 100 или значение больше 0 дБ), если слишком тихий — коэффициент меньше 1,0 (процентное значение меньше 100 или значение меньше 0 дБ).

Параметры:
  `коэффициент`

    Значение с плавающей запятой для коэффициента усиления

  `режим`

    значение | описание
    --- | ---
    0 | коэффициент
    1 | проценты
    1 | децибел

zero (Генератор тишины)
zero (Генератор тишины)

## zero (Генератор тишины)

Внутреннее имя:

  `zero`

Тип модуля:

  эффект

Описание:

  Этот модуль имеет два режима работы. При использовании без каких-либо параметров он стирает текущее выделение, и перезаписывает его тишиной. При использовании с двумя параметрами он вставляет некоторое количество тишины в начале текущего выделения.

Параметры:
  `режим длительности`

    Определяет единицы измерения, в которых будет указана длительность вставленной тишины

    значение | описание
    --- | ---
    0 | миллисекунды
    1 | сэмплы
    2 | процент от длительности файла

  `длительность`

    Длительность вставленной тишины, указанная в миллисекундах, сэмплах или процентах от длительности файла в зависимости от параметра `длительности`.

Глава 6. Вопросы и ответы
Вопросы и ответы

# Глава 6. Вопросы и ответы

6.1. Что требуется для компиляции Kwave?
6.2. Какие звуковые карты поддерживает Kwave?
6.3. Почему Kwave потребляет больше памяти, чем это можно было ожидать, учитывая размер открытого файла?
6.4. Какие звуковые форматы поддерживает Kwave?
6.5. Что делать, если у меня есть файлы с форматом, не поддерживаемым Kwave?
6.6. Почему во время воспроизведения возникают ошибки?
6.7. Почему воспроизведение идёт, но я ничего не слышу?
6.8. Что делать, если некоторые файлы воспроизводятся вдвое медленнее?
6.9. Что делать, если воспроизведение иногда нарушается и прерывается?
6.10. Почему воспроизведение не прекращается сразу после нажатия кнопки «Остановить воспроизведение»?
6.11. Поддерживается ли ALSA?
6.12. Работает ли воспроизведение с разрешением 18, 20, 24 или 32 бит или с более чем двумя каналами?

6.1. | Что требуется для компиляции Kwave?
| Информация предоставлена в документации разработчика.
6.2. | Какие звуковые карты поддерживает Kwave?
| Для работы Kwave не требуется специальная звуковая карта. Достаточно поддержки звуковой карты со стороны операционной системы, так как Kwave использует интерфейс драйвера звуковой подсистемы с помощью OSS или ALSA.
6.3. | Почему Kwave потребляет больше памяти, чем это можно было ожидать, учитывая размер открытого файла?
| Причина этого заключается в том, что Kwave внутренне сохраняет все сэмплы в 32-битных целых числах. Это упрощает приложение и делает его быстрее и немного надёжнее. Таким образом, если вы загружаете 8-битный файл размером примерно в 1 МБ, будет потреблено около 4 МБ. Может быть, в будущем это изменится...
6.4. | Какие звуковые форматы поддерживает Kwave?
| В текущей версии Kwave поддерживает .wav-файлы с 8, 16 и 24 битами на сэмпл с любым количеством каналов (включая моно и стерео). Кроме того, приложение может импортировать все типы файлов, которые поддерживает библиотека libaudiofile, а также некоторые другие форматы, такие как Ogg/Vorbis и MP3.
6.5. | Что делать, если у меня есть файлы с форматом, не поддерживаемым Kwave?
| Если вы работаете с другим форматом, вы можете преобразовать его в формат .wav. Хороший набор инструментов для этого и полезная документация находятся в пакете SoX.
6.6. | Почему во время воспроизведения возникают ошибки?

Возможно, вы выбрали комбинацию скорости воспроизведения и размера сэмпла, которая не поддерживается вашим звуковым драйвером и/или звуковым оборудованием. Для начала попробуйте воспроизведение с 8 битами на сэмпл и монофонический вывод, это всегда срабатывает. Затем попробуйте увеличить количество битов на сэмпл и установите стереофонический вывод и так далее. Обратите внимание, что некоторые значения скорости воспроизведения вообще не поддерживаются некоторыми звуковыми аппаратными средствами.

6.7. | Почему воспроизведение идёт, но я ничего не слышу?
| Возможно, вы забыли увеличить громкость канала воспроизведения. Kwave не может менять громкость воспроизведения.
6.8. | Что делать, если некоторые файлы воспроизводятся вдвое медленнее?
| Попробуйте выбрать другое устройство воспроизведения звука.
6.9. | Что делать, если воспроизведение иногда нарушается и прерывается?
| Следует увеличить размер буфера воспроизведения, чтобы получить более «плавное» воспроизведение (это также немного замедляет реакцию управления воспроизведением).
6.10. | Почему воспроизведение не прекращается сразу после нажатия кнопки «Остановить воспроизведение»?
| Причина этого заключается в том, что звуковой драйвер уже получил некоторые данные воспроизведения от Kwave в тот момент, когда вы нажали кнопку остановки воспроизведения. Уменьшите размер буфера воспроизведения, и приложение будет реагировать быстрее (но вероятность возникновения прерываний повысится).
6.11. | Поддерживается ли ALSA?
| Да, начиная с версии 0.7.4 для воспроизведения и записи.
6.12. | Работает ли воспроизведение с разрешением 18, 20, 24 или 32 бит или с более чем двумя каналами?
| Это возможно через интерфейс ALSA, начиная с версии 0.7.4.

Глава 7. Авторские права и лицензия
Авторские права и лицензия

# Глава 7. Авторские права и лицензия

Kwave

Авторские права на программу в 1998-2000 гг.: Martin Wilz `(martin AT wilz.de)`

Авторские права на программу с 2000 г.: Thomas Eschenbacher `(thomas.eschenbacher AT gmx.de)`

Для получения полного списка авторов и лицензий всех файлов обратитесь к файлу `LICENSES`, который включён в пакет с исходным кодом. Существует также файл под названием `AUTHORS`, в котором перечислены все авторы и участники Kwave.

Авторские права на документацию, 2020: Thomas Eschenbacher `(thomas.eschenbacher AT gmx.de)`

Перевод на русский язык: Мария Шикунова`(translation-team AT basealt.ru)`

Этот документ распространяется на условиях GNU Free Documentation License.

Программа распространяется на условиях лицензии GNU General Public License.

## Основные авторы

- Martin Wilz `(martin AT wilz.de)`

  создатель проекта, активный разработчик в 1998-2000 годах

- Thomas Eschenbacher `(thomas.eschenbacher AT gmx.de)`

  сопровождающий с 2000 года, основная разработка

Основные участники
Основные участники

## Основные участники

- Aurelien Jarno `(aurel32 AT debian.org)`

  сборка debian, патчи

- Carlos R `(pureacetone AT gmail.com)`

  перевод на испанский

- David Flogeras `(dflogera AT nbnet.nb.ca)`

  модуль режекторного фильтра

- Gilles Caulier `(caulier.gilles AT free.fr)`

  интернационализация, перевод на французский язык, заставка при запуске, бета-тестирование

- Pavel Fric `(pavelfric AT seznam.cz)`

  перевод на чешский

- Ralf Waspe `(rwaspe AT web.de)`

  модули «Помощь» и «О программе»

- Sven-Steffen Arndt `(ssa29 AT gmx.de)`

  домашняя страница, перевод на немецкий язык

Второстепенные авторы, правообладатели и другие лица
Второстепенные авторы, правообладатели и другие лица

## Второстепенные авторы, правообладатели и другие лица

- Aaron Holtzman `(aholtzma AT ess.engr.uvic.ca)`

  libkwave/cpu_accel.cpp

- Bertrand Songis `(bsongis AT gmail.com)` [устарело]

  обновление французского перевода, замена запатентованного кода libaudiofile, ошибка debian 419124

- Carsten Lohrke `(carlo AT gentoo.org)`

  svn r2163, патч для определения libaudiofile

- Chris Vaill `(chrisvaill AT gmail)`

  основы кода для модуля нормализации

- David Faure `(faure AT kde.org)`

  cmake/FindAlsa.cmake

- Diederick de Vries `(diederick76 AT gmail.com)`

  создание пакетов Crux Linux

- Espen Sand `(espen AT kde.org)` + Mirko Boehm `(mirko AT kde.org)`

  K3AboutContainer, основа KwaveAboutContainer

- Everaldo Coelho `(contact AT everaldo.com)`

  тема значков Crystal http://www.everaldo.com/crystal/

- Jaroslav Kysela

  части plugins/playback/PlayBack-ALSA.cpp

- Jeff Tranter

  части plugins/pitch_shift/PitchShiftFilter.{h,cpp}

- Juhana Sadeharju `(kouhia AT nic.funet.fi)`

  plugins/band_pass/BandPass.{h,cpp}, plugins/lowpass/LowPassFilter.cpp, plugins/notch_filter/NotchFilter.{h,cpp}

- Kurt Roeck `(Q AT ping.be)`

  svn r1370, исправление ошибки debian bug#288781, компиляция на amd64

- Mark Donohoe (KDE) `(donohoe AT kde.org)`

  некоторые значки и графические изображения для панели инструментов и графического интерфейса

- Martin Hinsch `(vidas AT sourceforge.net)`

  класс Matrix

- Matthias Kretz `(kretz AT kde.org)`

  cmake/FindAlsa.cmake

- Miguel Freitas

  части libkwave/memcpy.c

- Richard Laerkaeng, `(richard AT goteborg.utfors.se)`

  cmake/FindOggVorbis.cmake

- Rik Hemsley `(rik AT kde.org)`

  счётчик уровня

- Stefan Westerfeld `(stefan AT space.twc.de)`

  части plugins/pitch_shift/PitchShiftFilter.{h,cpp}

- Joerg-Christian Boehme `(joerg AT chaosdorf.de)`

  plugins/record/Record-PulseAudio.cpp plugins/record/Record-PulseAudio.h

- Sebastian Trueg `(trueg AT k3b.org)`, Gustavo Pichorim Boiko `(gustavo.boiko AT kdemail.net)`, Michal Malek `(michalm AT jabster.pl)`

  части plugins/export_k3b/K3BExportPlugin.cpp

Благодарности
Благодарности

## Благодарности

- Martin Kuball `(makube AT user.sourceforge.net)`

  бета-тестирование

- Jorge Luis Arzola `(arzolacub AT gmx.de)`

  создание пакетов SuSE Linux

- Michael Favreau `(michel.favreau AT free.fr)`

  создание пакетов Arch Linux

- T.H.F. Klok и Cedric Tefft

  сопровождающие библиотеки id3lib

- Robert Leslie `(rob AT mars.org)`

  автор библиотеки декодирования mp3 mad

- Robert M. Stockmann `(stock AT stokkie.net)`

  создание пакетов для Mandrake / x86_64

- Erik de Castro Lopo `(erikd AT zip.com.au)`

  автор библиотеки sndfile

- Michael Pruett `(mpruett AT sgi.com)`

  автор библиотеки audiofile

Приложение A. Сведения о файле
Сведения о файле

# Приложение A. Сведения о файле

Таблица A.1. Список идентификаторов информации о файле

Ключевое слово |  | Описание
--- | --- | ---
Album |  | Название альбома, если источником является альбом, в котором есть дополнительные медиафайлы.
Annotation |  | Общие сведения о файле или теме файла. Если комментарий состоит из нескольких предложений, каждое из них следует заканчивать точкой. Не используйте символы новой строки.
Archival location |  | Указывает, где хранится тема файла.
Author |  | Имя автора исходной темы файла. Пример: «ван Бетховен, Людвиг»
Lower Bitrate |  | Нижний предел битового потока VBR.
Bitrate Mode |  | Режим битрейта (ABR, VBR, CBR и так далее)
Bitrate |  | Номинальный битрейт аудиопотока в битах в секунду
Upper Bitrate |  | Верхний предел битового потока VBR.
Bits per Sample |  | Количество битов на сэмпл.
CD |  | Номер CD, если источником является альбом, в котором несколько CD-ROM
CDS |  | Номера CD, если источником является альбом, в котором несколько CD-ROM
Commissioned |  | Физическое или юридическое лицо, заказавшее тему файла.
Comments |  | Общие сведения о файле или теме файла. Если комментарий состоит из нескольких предложений, каждое из них следует заканчивать точкой. Не используйте символы новой строки.
Compression |  | Режим сжатия аудиоданных для экономии дискового пространства.
Contact |  | Контактная информация авторов или распространителей дорожки. Это может быть интернет-ссылка, адрес электронной почты, физический адрес фирмы-производителя.
Copyright |  | Перечень сведений об авторских правах на файл. Если владельцев прав несколько, их следует перечислить через через точку с запятой и пробел. Пример: «Авторские права: Сообщество Linux, 2002»
Copyrighted |  | Указывается, защищён ли файл авторским правом.
Date |  | Указывает дату создания темы файла. Пример: «2001-12-24».
Engineer |  | Имя инженера звукозаписи, работавшего над файлом. Если инженеров несколько, разделите их имена точкой с запятой и пробелом.
Estimated Length |  | Ожидаемая длительность файла в сэмплах
Filename |  | Имя открытого файла
File Size |  | Размер файла в байтах
Genre |  | Жанр или стиль оригинального произведения. Примеры: «классика», «поп»
ISRC |  | ISRC-номер дорожки; подробные сведения об ISRC-номерах доступны на странице http://isrc.ifpi.org/.
Keywords |  | Список ключевых слов, относящихся к файлу или теме файла.
Labels |  | Список отметок и маркеров.
Length |  | Длительность файла в сэмплах.
License |  | Информация о лицензировании, например, «Все права защищены», «Любое использование разрешено», адрес страницы условий лицензирования или «С указанием авторства — С сохранением условий» («распространяется на условиях международной лицензии Attribution-ShareAlike 4.0. Для получения дополнительной информации посетите сайт https://creativecommons.org/licenses/by-sa/4.0/») и так далее.
Medium |  | Описание оригинальной темы файла, места его записи. Пример: «оркестр»
Mime Type |  | Тип MIME, соответствующий формату файла
Emphasis |  | Режим Еmphasis
Layer |  | Слой MPEG: I, II или II
Mode Extension |  | Расширение режима MPEG (только для совмещённого стерео)
Version |  | Версия MPEG: 1, 2 или 2.5
Name |  | Название темы файла. Пример: «Симфония № 6, op. 68 («Пасторальная»)»
Opus Frame Length |  | Длительность фрейма Opus в миллисекундах (может принимать значения 2,5, 5, 10, 20, 40 или 60 миллисекунд)
Organization |  | Название организации, выпустившей дорожку (то есть «звукозаписывающая компания»)
Original |  | Указывает, является ли файл оригиналом или копией.
Performer |  | Исполнитель(и) произведения. Для классической музыки это могут быть дирижер, оркестр, солисты. Для аудиокниги это может быть диктор, начитавший текст.
Private |  | Указывается, является ли тема конфиденциальной.
Product |  | Имя или название продукта, для которого предназначался файл. Пример: «Аудиоколлекция Linux»
Sample Format |  | Формат, используемый для хранения оцифрованных аудио сэмплов. Пример: «32-bit IEEE Floating-Point (число одинарной точности с плавающей запятой)»
Sample Rate |  | Количество сэмплов в секунду
Software |  | Название пакета программного обеспечения, использованного для создания файла. Пример: «Kwave v0.6.4-1»
Source |  | Имя человека или название организации, предоставившей исходную тему файла. Пример: «Исследование хаотичных звуков»
Source form |  | Исходная форма оцифрованного материала. Примеры: «пластинка / винил / 90 об/мин», «кассета / Audio DAT», «плёнка / CrO2 / 60 мин»
Subject |  | Описание темы файла. Пример: «Птичьи голоса ранним утром»
Technician |  | Техник, оцифровавший файл темы. Пример: «Торвальдс, Линус»
Track |  | Дорожка CD, если источником был CD-ROM.
Tracks |  | Количество дорожек CD, если источником был CD-ROM.
Channels |  | Определяет количество каналов сигнала.
Base Quality |  | Базовое качество сжатия в режиме VBR
Version |  | Может использоваться для различения разных версий дорожек с одинаковыми названиями внутри одной коллекции (например, сведения о ремиксе)