Структура данных о волновой форме, устройство для хранения данных о волновой форме, способ сохранения данных о волновой форме, устройство для извлечения данных о волновой форме, способ извлечения данных о волновой форме и электронный музыкальный инструмент
WAVEFORM DATA STRUCTURE, WAVEFORM DATA STORAGE DEVICE, WAVEFORM DATA STORING METHOD, WAVEFORM DATA EXTRACTING DEVICE, WAVEFORM DATA EXTRACTING METHOD AND ELECTRONIC MUSICAL INSTRUMENT

ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ
Область техники, к которой относится изобретение
[01] Настоящее изобретение относится к структуре данных о волновой форме, устройству для хранения данных о волновой форме, способу сохранения данных о волновой форме, устройству для извлечения данных о волновой форме, способу извлечения данных о волновой форме и электронному музыкальному инструменту для монтажа кадров различных размеров в зависимости от музыкальных тонов (типов волновой формы).
EУровень техники
[02] Известны технологии образования волновой формы с использованием структур сжатых данных, которые могут быть распакованы с помощью простых конфигураций. Например, в качестве технологии этого вида в документе JP-B-3826870 раскрыта технология сохранения сжатых данных о волновой форме в кадрах, имеющих фиксированный размер, и приписывания области вспомогательной информации и области данных к фиксированным местам в каждом кадре, и сохранения вспомогательной информации и сжатых данных о волновой форме, соответственно, в этих областях.
[03] В соответствии с этой технологией даже в случае, когда количества битов сжатых сэмплов в данных о волновой форме различаются, размер областей данных не изменяется. Поэтому количество сжатых сэмплов в данных о волновой форме, которые могут быть сохранены в одном кадре, изменяется в зависимости количества битов сжатых сэмплов в данных о волновой форме, подлежащих сохранению. Поскольку начальные положения кадров расположены с регулярными интервалами адресов памяти, то поэтому даже в случае, когда количества битов сжатых сэмплов в данных о волновой форме различаются, управление адресами становится легким и тем самым становится возможной распаковка данных при использовании простой конфигурации.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[04] Однако технологии, раскрытой в документе JP-B-3826870, присущи следующие проблемы.
[05] (а) Если размер кадра является фиксированным, то хотя управление адресами становится легким (становится возможным распаковка сжатых сэмплов при использовании простой конфигурации, но в случае, когда количество битов на каждый сэмпл соседних кадров не изменяется, информация заголовка (вспомогательная информация) повторяется, а области памяти для информации заголовка используются непроизводительно.
[06] (b) Чтобы восстановить данные, необходимо заранее иметь доступ к информации заголовка и извлекать ее отдельно от операции последовательного считывания данных. Однако при частом обращении к информации заголовка, когда используется память, которая является доминирующей, при последовательном обращении уменьшается количество данных, которые могут быть переданы.
[07] (с) Если задается небольшой размер кадра, то в случае, когда волновая форма изменяется быстро, можно эффективно преобразовывать данные в ответ на изменение волновой формы; тогда как в случае, когда волновая форма изменяется крайне редко, количество бесполезной избыточной информации заголовка возрастает.
[08] (d) Если большой размер кадра задается на основании максимального значения чисел битов различных потоков данных, имеющих различные длины, то в случае, когда волновая форма изменяется быстро, возрастает количество кодовых бит партии сэмплов волновой формы, имеющих различные длины в битах.
[09] Проблемы от (а) до (d), описанные выше, можно кратко выразить следующим образом: существует проблема, заключающаяся в том, что невозможно задавать различные размеры кадров в зависимости от музыкальных звуков (видов волновых форм).
[10] Настоящее изобретение было сделано с учетом описанных выше обстоятельств, и задача настоящего изобретения заключается в обеспечении структуры данных о волновой форме, устройства для хранения данных о волновой форме, способа извлечения данных о волновой форме и электронного музыкального инструмента, в котором можно задавать различные размеры кадров в зависимости от музыкальных звуков (видов волновых форм).
[11] Структура данных о волновой форме включает в себя множество типов кадров, имеющих различные размеры данных. Каждый из множества типов кадров включает в себя область вспомогательной информации и область данных. Область вспомогательной информации включает в себя область для сохранения данных об общей эффективной длине в битах отрезка сэмплов волновой формы и область для сохранения идентификатора для идентификации одного из множества типов кадров. Область данных представляет собой область для сохранения извлекаемых сэмплов волновой формы, которые извлекаются из сэмплов волновой формы на основании общей эффективной длины в битах. Количество извлекаемых сэмплов волновой формы определяется на основании общей эффективной длины в битах.
[12] Устройство для хранения данных о волновой форме включает в себя блок определения, блок хранения вспомогательной информации и блок хранения сэмплов волновой формы. Блок определения определяет один из по меньшей мере первого и второго кадров на основании изменения эффективных длин в битах индивидуальных сэмплов волновой формы, подлежащих сохранению. Заданное количество сэмплов волновой формы, подлежащих сохранению в первом кадре, отличается от заданного количества сэмплов волновой формы, подлежащих сохранению во втором кадре. В блоке хранения вспомогательной информации сохраняются данные атрибутов кадра, включающие в себя общую эффективную длину в битах сэмплов волновой формы и тип кадра для идентификации одного из первого и второго кадров в области вспомогательной информации первого или второго кадра, определяемого блоком определения. В блоке хранения сэмплов волновой формы сохраняются сэмплы волновой формы в области данных первого или второго кадра, определяемого блоком определения, на основании заданного количества сэмплов волновой формы в соответствии с общей эффективной длиной в битах из данных атрибутов кадра, сохраняемых в области вспомогательной информации.
[13] В способе сохранения данных о волновой форме, устройства для хранения данных о волновой форме, устройство для хранения данных о волновой форме выполнено с возможностью определения одного из по меньшей мере первого и второго кадров на основании изменения эффективных длин в битах индивидуальных сэмплов волновой формы, подлежащих сохранению, при этом количество сэмплов волновой формы, подлежащих сохранению в первом кадре, отличается от количества сэмплов волновой формы, подлежащих сохранению во втором кадре; сохранения данных атрибутов кадра, включающих в себя общую эффективную длину в битах сэмплов волновой формы и тип кадра для идентификации одного из первого и второго кадров, в области вспомогательной информации определенного первого или второго кадра; и сохранения как многочисленных сэмплов волновой формы, так и некоторого количества сэмплов в соответствии с общей эффективной длиной в битах данных атрибутов кадра, сохраняемых в области вспомогательной информации, в области данных определенного первого или второго кадра.
[14] Устройство для извлечения данных о волновой форме обладает доступом к запоминающему устройству, имеющему структуру данных о волновой форме. Устройство для извлечения данных о волновой форме включает в себя блок образования адресных данных, блок извлечения и блок назначения кадра. Блок образования адресных данных образует адресные данные на основании общей эффективной длины в битах, считываемой из области вспомогательной информации назначенного кадра, сохраняемого в запоминающем устройстве. Блок извлечения извлекает сэмплы волновой формы из области данных назначенного кадра в соответствии с адресными данными, образованными блоком образования адресных данных. Блок назначения кадра назначает следующий кадр, подлежащий извлечению после извлечения сэмплов волновой формы блоком извлечения.
[15] В способе извлечения данных о волновой форме, связанном с устройством для извлечения данных о волновой форме, устройство для извлечения данных о волновой форме выполнено с возможностью доступа к запоминающему устройству, имеющему структуру данных о волновой форме. Способ извлечения данных о волновой форме включает в себя образование адресных данных на основании данных о длине в битах, считываемых из области вспомогательной информации назначенного кадра, сохраняемого в запоминающем устройстве; извлечение сэмплов волновой формы из области данных назначенного кадра в соответствии с образованными адресными данными; и назначение следующего кадра, подлежащего извлечению после извлечения сэмплов волновой формы.
[16] Электронный музыкальный инструмент включает в себя запоминающее устройство, устройство для извлечения данных о волновой форме, блок ввода исполнительных характеристик музыкального инструмента, блок обработки и звукообразующий блок. Запоминающее устройство имеет структуру данных о волновой форме. Блок ввода исполнительских характеристик музыкального инструмента образует информацию об исполнительских характеристиках музыкального инструмента в соответствии с операциями воспроизведения. Блок обработки выполняет процесс инструктирования образованием музыки в соответствии с операциями воспроизведения и процесс управления устройством для извлечения данных о волновой форме, чтобы устройство для извлечения данных о волновой форме извлекало необходимые сэмплы волновой формы из запоминающего устройства в ответ на процесс инструктирования. Звукообразующий блок образует музыкальный звук на основании данных о волновой форме, получаемых при декомпрессии сэмплов волновой формы, отбираемых из устройства для извлечения данных о волновой форме.
[17] В соответствии с настоящим изобретением можно реализовать структуру данных о волновой форме, устройство для хранения данных о волновой форме, устройство для извлечения данных о волновой форме, способ извлечения данных о волновой форме и электронный музыкальный инструмент, в котором можно задавать различные размеры кадров в зависимости от музыкальных звуков (видов волновых форм).
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[18] На чертежах:
фиг. 1 - структурная схема, иллюстрирующая конфигурацию устройства 100 для хранения данных о волновой форме согласно варианту осуществления настоящего изобретения;
фиг. 2А - карта памяти, иллюстрирующая конфигурацию рабочей памяти, которая включена в блок 13 определения;
фиг. 2В - вид, иллюстрирующий примеры сэмплов волновой формы, которые сохраняются в строке ʺwav[]ʺ;
фиг. 3 - вид, иллюстрирующий содержание таблицы 512sampleno[];
фиг. 4 - вид, иллюстрирующий содержание таблицы 256sampleno[];
фиг. 5 - блок-схема последовательности операций, иллюстрирующая функцию блока 13 определения, который образован аппаратным обеспечением, выполняющим операции программного обеспечения;
фиг. 6А - вид, иллюстрирующий пример конфигурации 512-байтного кадра;
фиг. 6В - вид, иллюстрирующий пример конфигурации 256-байтного кадра;
фиг. 7 - вид, иллюстрирующий пример, в котором исходные данные W о волновой форме звука фортепиано сжаты и сохранены в кадрах;
фиг. 8 - структурная схема, иллюстрирующая конфигурацию устройства 150 для извлечения данных о волновой форме; и
фиг. 9 - структурная схема, иллюстрирующая конфигурацию электронного музыкального инструмента 200, который включает в себя устройство 150 для извлечения данных о волновой форме.
ПОДРОБНОЕ ОПИСАНИЕ
[19] Ниже варианты осуществления настоящего изобретения будут описаны с обращением к сопровождающим чертежам. На фиг. 1 представлена структурная схема, иллюстрирующая общую конфигурацию устройства 100 для хранения данных о волновой форме согласно варианту осуществления настоящего изобретения. В представленном варианте осуществления будет описан пример использования сжатия данных типа АДИКМ (ADPCM). АДИКМ представляет собой сокращенное наименование адаптивной дифференциальной импульсно-кодовой модуляции. Однако настоящее изобретение не ограничено ею и можно использовать сжатие любого другого вида, такое как кодирование с линейным прогнозированием (КЛП).
[20] На фиг. 1 блок 1 сжатия данных о волновой форме состоит из вычитающего средства 10, сумматора 11 и блока 12 прогнозирования адаптивной дифференциальной импульсно-кодовой модуляции. В вычитающем средстве 10 элемент P(n) данных прогнозирования вычитается из элемента W(n) исходных данных о волновой форме, в результате чего получается разность в виде элемента E(n) данных об ошибках прогнозирования. В сумматоре 11 элемент P(n) данных прогнозирования добавляется к элементу E(n) данных об ошибках прогнозирования и сумма подается на блок 12 прогнозирования адаптивной дифференциальной импульсно-кодовой модуляции. В блоке 12 прогнозирования адаптивной дифференциальной импульсно-кодовой модуляции при использовании адаптивной прогнозирующей модели образуются элемент P(n) данных прогнозирования и коэффициент прогнозирования для элемента W(n+1) исходных данных о волновой форме следующего сэмпла.
[21] Блок 13 определения состоит из блока 13а определения длины квантования в битах и блока 13b определения размера. Блок 13а определения длины квантования в битах определяет эффективную длину в битах каждого квантованного сэмла на основании элемента E(n) данных об ошибках прогнозирования текущего сэмпла и элементов Е данных об ошибках прогнозирования предварительно определенного количества предшествующих сэмплов. Блок 13b определения размера на основании общей эффективной длины в битах, вычисленной на основании эффективных длин в битах, определяемых блоком 13а определения длины квантования в битах, определяет, каким задать размер одного кадра, 256 байтов (4 байта для области вспомогательной информации, предназначенной для сохранения информации заголовка, и 252 байта для области данных), или 512 байтов (4 байта для области вспомогательной информации, предназначенной для сохранения информации заголовка, и 508 байтов для области данных). Подробности такого определения будут описаны ниже.
[22] Теперь с обращением к фиг. с 2 по 5 в общих чертах будут описаны конфигурация и работа блока 13 определения. Блок 13 определения реализуется аппаратным обеспечением, включающим в себя арифметические логические схемы и рабочую память (непоказанную). Чтобы упростить пояснение, ниже описание будет излагаться в сочетании с блок-схемой последовательности операций, иллюстрирующей функцию блока 13 определения, которая реализуется аппаратным обеспечением в виде операций по обработке программного обеспечения. В ином случае центральный процессор может выполнять эти действия в соответствии с программным обеспечением.
[23] Прежде всего, на фиг. 2А представлена карта памяти, иллюстрирующая конфигурацию рабочей памяти, включенной в блок 13 определения. На фиг. 2А таблица 512sampleno[] представляет собой таблицу данных, предназначенную для считывания количества сэмплов, которые могут сохраняться в случае, когда размер одного кадра, основанного на общей эффективной длине в битах, составляет 512 байтов, и содержимое ее показано на фиг. 3.
[24] Если общая эффективная длина в битах считывается как адрес (параметр), количество сэмплов, которые могут сохраняться в 512-байтовом кадре, соответствующем общей эффективной длине считывания в битах, считывается из таблицы 512sampleno[], показанной на фиг. 3. Например, в случае, когда общая эффективная длина в битах составляет 20 битов, из таблицы 512sampleno[] считывается число 203, (определяемое) как количество сэмплов, которые могут сохраняться в 512-байтовом кадре.
[25] Кроме того, количество сэмплов, которые могут сохраняться в 512-байтовом кадре, можно вычислить в соответствии с нижеследующим выражением 1.
[Количество сэмплов]=INT (4064 (бита)/Общая эффективная длина в битах).(1)
INT в выражении 1 представляет собой функцию минимального уровня, которая округляет число в меньшую сторону до ближайшего целого числа, а число 4064 (бита) получается следующим образом: 8 (битов)×[(Размер кадра (512 байтов)-(Размер заголовка (4 байта для области вспомогательной информации))]. Кроме того, в таблице 512sampleno[], показанной на фиг. 3, элемент «Время блока» представляет собой длительность отрезка волновой формы, соответствующую количеству сэмплов, в миллисекундах, а элемент «Скорость передачи в битах» представляет собой значение, получаемое умножением общей эффективной длины в битах на частоту (44,1 кГц) сэмплирования, в Мб/с.
[26] Аналогично таблице 512sampleno[], описанной выше, таблица 256sampleno[] представляет собой таблицу данных, предназначенную для считывания количества сэмплов, которые могут сохраняться в 256-байтовом кадре, основанном на общей эффективной длине в битах, если соответствующая общая эффективная длина в битах считывается как адрес (параметр), и содержимое ее показано на фиг. 4. Например, в случае, когда общая эффективная длина в битах составляет 20 битов, из таблицы 256sample no[], показанной на фиг. 4, считывается число 100, (определяемое) как количество сэмплов, которые могут сохраняться в 256-байтовом кадре.
[27] Кроме того, количество сэмплов, которые могут сохраняться в 256-байтовом кадре, можно вычислить в соответствии с нижеследующим выражением 2.
[Количество сэмплов]=INT (2016 (битов)/Общая эффективная длина в битах).(2)
INT в выражении 2 представляет собой функцию минимального уровня, которая округляет число в меньшую сторону до ближайшего целого числа, а число 2016 получается следующим образом: 8 (битов)×[(Размер кадра (256 байтов)-(Размер заголовка (4 байта для области вспомогательной информации))]. Кроме того, в таблице 256sampleno[], показанной на фиг. 4, элемент «Время блока» представляет собой длительность отрезка волновой формы, соответствующую количеству сэмплов, в миллисекундах, а элемент «Скорость передачи в битах» представляет собой значение, получаемое умножением общей эффективной длины в битах на частоту (44,1 кГц) сэмплирования, в Мб/с.
[28] Массив ʺwav[]ʺ представляет собой регистр для временного хранения 2032 сэмплов волновой формы (элементов Е данных об ошибках прогнозирования), при этом число 2032 представляет собой максимальное количество сэмплов, которые могут сохраняться в 512-байтовом кадре в случае, когда предполагается, что общая эффективная длина в битах сэмплов волновой формы (элементов Е данных об ошибках прогнозирования) составляет 2 бита. В дальнейшем элементы Е данных об ошибках прогнозирования будут называться сэмплами волновой формы. В массиве ʺwav[]ʺ 2032 сэмпла волновой формы сохраняются, например, в виде показанном на фиг. 2В. Каждый сэмпл состоит из кодовых битов S и битов М реальных данных, а длиной в битах битов М реальных данных именуется эффективная длина в битах соответствующего сэмпла. Массив ʺwavelength[]ʺ представляет собой регистр для временного хранения эффективных длин в битах 2032 сэмплов волновой формы, сохраняемых в описанном выше массиве ʺwav[]ʺ.
[29] Регистр ʺpʺ представляет собой указатель адреса, имеющий отношение к считыванию сэмплов волновой формы из массива ʺwav[]ʺ или записи в него. В дальнейшем содержимое регистра ʺpʺ будет именоваться указателем ʺpʺ адреса. Регистр ʺiʺ представляет собой указатель данных, предназначенный для обозначения эффективных длин в битах каждого сэмпла волновой формы, сохраняемого в массиве ʺwavelength[]ʺ. В дальнейшем содержимое регистра ʺiʺ будет именоваться указателем ʺiʺ. Регистр ʺbitlenghtʺ представляет собой регистр для сохранения переменной, которая последовательно возрастает от начального значения 2. В дальнейшем содержимое регистра ʺbitlenghtʺ будет именоваться переменной ʺbitlenghtʺ длины в битах. На отрезке, на котором имеются сэмплы волновой формы, максимальная эффективная длина в битах (bitlenght) именуется общей эффективной длиной в битах (Bitlenght256 или Bitlenght512) сэмплов волновой формы. В регистре ʺbitlenght256ʺ сохраняется общая эффективная длина в битах сэмплов волновой формы, подлежащих сохранению в 256-байтовом кадре. В регистре ʺbitlenght512ʺ сохраняется общая эффективная длина в битах сэмплов волновой формы, подлежащих сохранению в 512-байтовом кадре.
[30] Теперь работа блока 13 определения будет описана с обращением к фиг. 5. На фиг. 5 представлена блок-схема последовательности операций, иллюстрирующая функцию блока 13 определения, которая реализуется аппаратным обеспечением в виде действий по обработке программного обеспечения. Для каждого кадра блок 13 определения выполняет операции, показанные на блок-схеме последовательности операций из фиг. 5.
[31] Прежде всего, на этапе S10 блок 13 определения в соответствии с указателем ʺpʺ адреса сохраняет 2032 сэмпла волновой формы в массиве ʺwav[]ʺ, при этом число 2032 представляет собой максимальное количество сэмплов, которые могут быть сохранены в одном 512-байтовом кадре. Затем, на этапе S11 блок 13 определения загружает эффективные длины в битах 2032 сэмплов волновых форм, сохраняемых в массиве ʺwav[]ʺ, в массив ʺwavelength[]ʺ. В данном случае каждый сэмпл волновой формы (каждый элемент Е данных об ошибках прогнозирования) состоит из кодовых битов S и битов М реальных данных, показанных на фиг. 2В, а их эффективная длина в битах означает длину в битах битов М реальных данных.
[32] После этого, на этапе S12 блок 13 определения сбрасывает указатель ʺiʺ до нуля и задает переменной ʺbitlenghtʺ длины в битах начальное значение 2. Затем, на этапе S13 блок 13 определения определяет, совпадает ли переменная ʺbitlenghtʺ длины в битах с эффективной длиной в битах i-того сэмпла волновой формы из массива ʺwavelength[]ʺ, обозначаемой указателем ʺiʺ.
[33] Если они не совпадают друг с другом, результатом определения на этапе S13 становится «Нет», и блок 13 определения переходит к этапу S14, на котором он увеличивает переменную ʺbitlenghtʺ длины в битах и после этого переходит опять к этапу S13. Затем блок определения повторяет этапы S13 и S14 и в то же время увеличивает переменную ʺbitlenghtʺ длины в битах до тех пор, пока переменная ʺbitlenghtʺ длины в битах не совпадет с эффективной длиной в битах i-того сэмпла волновой формы (i-того элемента Е данных об ошибках прогнозирования) из массива ʺwavelength[]ʺ, обозначаемой указателем ʺiʺ.
[34] Между тем, если увеличенная переменная ʺbitlenghtʺ длины в битах совпадает с эффективной длиной в битах i-того сэмпла волновой формы из массива ʺwavelength[]ʺ, обозначаемой указателем ʺiʺ, увеличенная переменная ʺbitlenghtʺ длины в битах обнаруживается как эффективная длина в битах сэмпла волновой формы, обозначаемая указателем ʺiʺ, результатом определения на этапе S13 становится «Да», и блок определения переходит к этапу S15.
[35] На этапе S15 блок 13 определения определяет, совпадает ли значение указателя ʺiʺ со значением, получаемым вычитанием 1 из количества сэмплов, которые могут сохраняться в одном 256-байтном кадре, считываться из таблицы 256sampleno[bitlenght] на основании эффективной длины в битах, обнаруженной на этапе S13, то есть, закончена ли обработка сэмплов волновой формы, соответствующих одному 256-байтному кадру.
[36] Если обработка сэмплов волновой формы, соответствующих 256-байтному кадру, не закончена, результатом определения на этапе S15 становится «Нет», и блок определения переходит к этапу S17. На этапе S17 блок определения определяет, совпадает ли значение указателя ʺiʺ со значением, получаемым вычитанием 1 из количества сэмплов, которые могут сохраняться в одном 512-байтовом кадре, считываться из таблицы 512sampleno[bitlenght] на основании эффективной длины в битах, обнаруженной на этапе S13, то есть, закончена ли обработка сэмплов волновой формы, соответствующих одному 512-байтному кадру.
[37] Если обработка сэмплов волновой формы, соответствующих одному 512-байтному кадру, не закончена, результатом определения на этапе S17 становится «Нет», и блок определения переходит к этапу S19, на котором он увеличивает указатель ʺiʺ и затем возвращается к обработке на этапе S13. В дальнейшем, на этапах S13 и S14 блок определения обнаруживает эффективную длину в битах следующего сэмпла волновой формы (следующего элемента Е данных об ошибках прогнозирования), обозначенную увеличенным указателем ʺiʺ.
[38] Затем, если при последовательном обнаружении эффективных длин в битах сэмплов волновой формы, которые обновляются по мере увеличения указателя ʺiʺ, значение указателя ʺiʺ совпадет со значением, получаемым вычитанием 1 из количества сэмплов, которые могут сохраняться в одном 256-байтном кадре, считываться из таблицы 256sampleno[bitlenght] на основании обнаруженной эффективной длины в битах, обработка сэмплов волновой формы, соответствующих одному 256-байтному кадру, заканчивается, результатом определения на этапе S15 становится «Да», и блок определения переходит к этапу S16.
[39] На этапе S16 блок определения сохраняет эффективную длину в битах, обнаруживаемую в момент окончания обработки сэмплов волновой формы, соответствующих одному 256-байтному кадру, то есть значение переменной ʺbitlenghtʺ длины в битах, в качестве общей эффективной длины сэмплов волновых форм в регистре ʺbitlenght256ʺ и сбрасывает значение переменной ʺbitlenghtʺ длины в битах до начального значения 2. Например, в примере, показанном на фиг. 2В, общая эффективная длина сэмплов волновой формы от ʺaʺ до ʺfʺ составляет 10 (битов), и это является максимальным значением эффективных длин в битах (длин битов М реальных данных).
[40] Если обработка сэмплов волновой формы, соответствующих одному 256-байтному кадру и соответствующих первой половине кадра, заканчивается, как описано выше, блок 13 определения переходит к обработке второй половины кадра. Иначе говоря, аналогично случаю первой половины кадра, блок определения последовательно обнаруживает эффективные длины в битах сэмплов волновой формы, которые обновляет по мере увеличения значения указателя ʺiʺ (этапы S13, S14 и S19).
[41] Если при обнаружении эффективных длин в битах значение указателя ʺiʺ совпадет со значением, получаемым вычитанием 1 из количества сэмплов, которые могут сохраняться в одном 512-байтном кадре, считываться из таблицы 512sampleno[bitlenght] на основании обнаруженной эффективной длины в битах (значения переменной ʺbitlenghtʺ длины в битах), обработка сэмплов волновой формы, соответствующих одному 256-байтному кадру заканчивается, результатом определения на этапе S17 становится «Да», и блок определения переходит к этапу S18.
[42] На этапе S18 блок 13 определения сохраняет эффективную длину в битах, обнаруживаемую в момент окончания обработки сэмплов волновой формы, соответствующих одному 512-байтному кадру, то есть значение переменной ʺbitlenghtʺ длины в битах, в качестве общей эффективной длины в битах сэмплов волновой формы в регистре ʺbitlenght512ʺ. Затем на этапе S20 блок 13 определения определяет, совпадает ли общая эффективная длина в битах, сохраняемая в регистре ʺbitlenght256ʺ, с общей эффективной длиной в битах, сохраняемой в регистре ʺbitlenght512ʺ.
[43] В случае, когда общая эффективная длина в битах, сохраняемая в регистре ʺbitlenght256ʺ, совпадает с общей эффективной длиной в битах, сохраняемой в регистре ʺbitlenght512ʺ, результатом определения на этапе S20 становится «Да», и блок определения переходит к этапу S21. Затем, на этапах S21 и S22 блок 13 определения выводит идентификатор, представляющий 512-байтовый кадр, в качестве размера кадра сэмплов волновой формы и выводит общую эффективную длину в битах, сохраняемую в регистре ʺbitlenght512ʺ.
[44] Затем, на этапе S23 блок 13 определения возвращается к указателю ʺpʺ адреса в соответствии со значением, получаемым вычитанием количества сэмплов, которые могут сохраняться в одном 512-байтовом кадре, считываться из таблицы 512sampleno[bitlenght] на основании обнаруженной эффективной длины в битах, из 2030, количества считываемых сэмплов, и заканчивает обработку, соответствующую одному кадру.
[45] Между тем, в случае, когда общая эффективная длина в битах, сохраняемая в регистре ʺbitlenght256ʺ, не совпадает с общей эффективной длиной в битах, сохраняемой в регистре ʺbitlenght512ʺ, результатом определения на этапе S20 становится «Нет», и блок определения переходит к этапу S24. Затем, на этапах S24 и S25 блок 13 определения выводит идентификатор, представляющий 256-байтовый кадр, в качестве размера кадра сэмплов волновой формы и выводит общую эффективную длину в битах, сохраняемую в регистре ʺbitlenght256ʺ.
[46] Позже, на этапе S26 блок 13 определения возвращается к указателю ʺpʺ адреса в соответствии со значением, получаемым вычитанием количества сэмплов, которые могут сохраняться в одном 256-байтном кадре, считываться из таблицы 256sampleno[bitlenght] на основании обнаруженной эффективной длины в битах, из 2030, количества считываемых сэмплов, и заканчивает обработку, соответствующую одному кадру.
[47] Как описывалось выше, в то время как блок 13 определения последовательно считывает эффективные длины в битах индивидуальных сэмплов волновой формы (элементов Е данных об ошибках прогнозирования), он обнаруживает максимальную эффективную длину в битах из считываемых эффективных длин в битах в качестве общей эффективной длины в битах соответствующих сэмплов волновой формы. Если количество считываемых сэмплов достигает значения, получаемого вычитанием 1 из количества сэмплов, которые могут сохраняться в одном 256-байтном кадре, основанном на общей эффективной длине в битах, блок определения формирует первую половину кадра. Что касается второй половины кадры, то, когда блок 13 определения последовательно считывает эффективные длины в битах индивидуальных сэмплов волновой формы (элементы Е данных об ошибках прогнозирования), он обнаруживает максимальную эффективную длину в битах из считываемых эффективных длин в битах в качестве общей эффективной длины в битах соответствующих сэмплов волновой формы. Если количество считываемых сэмплов достигает значения, получаемого вычитанием 1 из количества сэмплов, которые могут сохраняться в одном 512-байтном кадре, основанном на общей эффективной длине в битах, блок определения формирует вторую половину кадра.
[48] Затем, в случае, когда общая эффективная длина в битах первой половины кадра совпадает с общей эффективной длиной в битах второй половины кадра, блок определения выводит идентификатор, представляющий 512-байтный кадр, в качестве типа кадра сэмплов волновой формы и выводит общую эффективную длину в битах второй половины кадра. Между тем, в случае, когда общая эффективная длина в битах первой половины кадра не совпадает с общей эффективной длиной в битах второй половины кадра, блок определения выводит идентификатор, представляющий 256-байтный кадр, в качестве типа кадра сэмплов волновой формы и выводит общую эффективную длину в битах первой половины кадра.
[49] Кроме того, в представленном варианте осуществления для упрощения пояснения формируются кадры двух размеров, то есть кадр размером 512 байтов и кадр размером 256 байтов. Однако настоящее изобретение не ограничено этим, и могут формироваться кадры трех или большего количества произвольных размеров, например, путем добавления кадра размером 128 битов. Кроме того, в представленном варианте осуществления в случае, когда предполагается, что общая эффективная длина в битах сэмплов волновой формы (элементов Е данных об ошибках прогнозирования) составляет 2 бита, максимальное количество сэмплов, которые могут сохраняться в одном 512-байтовом кадре, составляет 2032, и считываются 2032 сэмпла. Однако настоящее изобретение не ограничено этим, и количество сэмплов, которые считываются, может определяться на основании произвольного размера кадра.
[50] Теперь с повторным обращением к фиг. 1 будет описана конфигурация устройства 100 для хранения данных о волновой форме. На фиг. 1 блок 15 образования информации заголовка образует элемент информации заголовка для каждого кадра, основанный на элементе данных об идентификаторе способа сжатия («Способ сжатия»), образуемом в блоке 1 сжатия данных о волновой форме, а элементы данных «Тип кадра (идентификатор)» и «Общая эффективная длина в битах» выводятся из блока 13 определения.
[51] Например, в примере, показанном на фиг. 6А, элемент информации заголовка сохраняется в области вспомогательной информации, имеющей емкость данных 4 байта, и она состоит, например, из области для сохранения элемента данных «Способ сжатия», области для сохранения элемента данных «Общая эффективная длина в битах», предназначенного для формирования кадра, области для сохранения элемента данных «Тип кадра (идентификатор)», представляющего размер области данных одного кадра, и резервной области для возможности наращивания. Такой элемент информации заголовка подается из блока 15 образования информации заголовка в блок 16 хранения данных.
[52] Во время сжатия сэмплов волновой формы можно изменять коэффициент сжатия путем изменения параметра громкости звука. Например, что касается отрезка атаки первой половины сэмплов волновой формы, то сохраняются данные о громкости звука, в которых громкость звука такая же, как громкость исходного звука, а что касается второй половины сэмплов волновой формы, то сохраняются данные о громкости звука, в которых громкость звука ниже, чем громкость исходного звука. Таким образом, при небольшом коэффициенте сжатия можно сохранять с высоким качеством отрезок атаки из первой половины сэмплов волновой формы и при большом коэффициенте сжатия можно сохранять с низким качеством вторую половину сэмплов волновой формы. «Поправочный параметр громкости звука» представляет собой параметр, который используют для восстановления громкости звука из данных о волновой форме, сохраняемых в запоминающем устройстве, до громкости исходного звука, когда устройство 150 для извлечения данных о волновой форме извлекает сжатые данные о волновой форме. Устройство 100 для хранения данных о волновой форме может изменять данные о громкости звука на основании исходного звука сэмплов волновой формы и сохранять измененные данные о громкости звука в запоминающем устройстве, а устройство 150 для извлечения данных о волновой форме при использовании поправочного параметра громкости звука может извлекать сжатые данные о волновой форме из запоминающего устройства и возвращать громкость звука из данных о волновой форме к громкости исходного звука.
[53] Кроме того, в представленном варианте осуществления область вспомогательной информации расположена в заголовочной части кадра. Однако настоящее изобретение не ограничено этим и область вспомогательной информации может быть расположена в любой другой части кадра, такой как подстрочная часть. Кроме того, в случае, когда области вспомогательной информации имеют фиксированный размер, как в представленном варианте осуществления, размеры кадров эквивалентны размерам областей данных кадров.
[54] В блоке 16 хранения данных элемент информации заголовка сохраняется в области вспомогательной информации (см. фиг. 6) кадра, включающего в себя область данных, имеющую размер, обозначенный элементом данных «Тип кадра (идентификатор)», включенным в элемент информации заголовка, а сжатые сэмплы, получаемые извлечением сэмплов волновой формы (элементов Е данных об ошибках прогнозирования), основанные на элементе данных «Общая эффективная длина в битах», включенном в элемент информации заголовка, последовательно сохраняются в области данных, следующей за областью вспомогательных данных. Количество сжатых сэмплов, которые могут сохраняться в области данных, определяется на основании элементов данных «Тип кадра (идентификатор)» и «Общая эффективная длина в битах», и если количество сжатых сэмплов, сохраняемых в области данных, достигает количества сжатых сэмплов, которые могут быть сохранены, блок 13 определения повторяет действие по определению типа кадра (идентификатора) и общей эффективной длины в битах на основании последующих подаваемых сэмплов волновой формы, в результате чего начинается формирование нового кадра.
[55] Теперь с обращением к фиг. 7 будет описан пример, в соответствии с которым исходные данные W о волновой форме звука фортепиано сжимаются и сохраняются в кадрах. Как показано на фиг. 7, исходные данные W о волновой форме, получаемые выполнением сэмплирования звука фортепиано, разделяются на отрезок «А», на котором волновая форма затухает от начального подъема до предварительно определенного уровня, и отрезок «В», следующий за отрезком «А». На отрезке «А», в том числе на отрезке атаки, который представляет собой вступление в звук, волновая форма изменяется быстро; тогда как на отрезке «В», который представляет собой отрезок поддержания, волновая форма изменяется медленно.
[56] Поскольку на отрезке «А», на котором волновая форма изменяется быстро, эффективные длины в битах индивидуальных сэмплов волновой формы (элементы Е данных об ошибках прогнозирования) изменяются, общая эффективная длина в битах первой половины кадра не совпадает с общей эффективной длиной в битах второй половины кадра. По этой причине описанный выше блок 13 определения определяет 256 байтов в качестве размера одного кадра для отрезка «А». В результате элемент информации заголовка сохраняется в блоке 16 хранения данных в области вспомогательной информации кадра, показанной на фиг. 6В, а сжатые сэмплы, получаемые при извлечении квантованных сэмплов волновой формы (элементов Е данных об ошибках прогнозирования), основанных на элементе данных «Общая эффективная длина в битах», включенном в элемент информации заголовка, последовательно сохраняются в области данных. При этом количество сохраняемых сэмплов определяется на основании элемента данных «Общая эффективная длина в битах». Например, в случае, когда общая эффективная длина в битах составляет 9 битов, 224 сэмпла сохраняются с области данных (252 байта).
[57] Между тем, поскольку на отрезке «В», на котором волновая форма изменяется медленно, эффективные длины в битах индивидуальных сэмплов волновой формы (элементы Е данных об ошибках прогнозирования) не изменяются, общая эффективная длина в битах первой половины кадра совпадает с общей эффективной длиной в битах второй половины кадра. По этой причине описанный выше блок 13 определения определяет 512 байтов в качестве размера одного кадра для отрезка «В».
[58] Вследствие этого, в описанном выше блоке 16 хранения данных элемент информации заголовка сохраняется в области вспомогательной информации кадра, показанной на фиг. 6А, а сжатые сэмплы, получаемые при извлечении квантованных сэмплов волновой формы (элементов Е данных об ошибках прогнозирования), основанных на элементе данных «Общая эффективная длина в битах», включенном в элемент информации заголовка, последовательно сохраняются в области данных. При этом количество сохраняемых сэмплов определяется на основании элемента данных «Общая эффективная длина в битах». Например, в случае, когда общая эффективная длина в битах составляет 10 битов, 406 сэмплов сохраняются в области данных (508 байтов).
[59] Кадры, которые формируются описанным выше способом, выводятся в блоках кадров из блока 16 хранения данных и сохраняются в запоминающем устройстве 17 (см. фиг. 1). Кадры, сохраняемые в запоминающем устройстве 17, считываются устройством 150 для считывания данных о волновой форме, показанным на фиг. 8.
[60] Теперь с обращением к фиг. 8 конфигурация устройства 150 для извлечения данных о волновой форме будет описана в общих чертах. Устройство 150 для извлечения данных о волновой форме включает в себя блок 151 образования адресных данных, предназначенный для образования элементов адресных данных при использовании общей эффективной длины в битах, считываемой из области вспомогательной информации назначенного кадра, сохраняемого в запоминающем устройстве 17, в качестве повышения значения, блок 152 извлечения, предназначенный для извлечения сжатых сэмплов из области данных кадра, сохраняемых в запоминающем устройстве 17, на основании образованных элементов адресных данных, и блок 153 назначения кадра, предназначенный для назначения кадра после назначенного кадра из запоминающего устройства 17, если количество сжатых сэмплов, извлекаемых из области данных, сохраняемых в запоминающем устройстве 17, превышает размер кадра, обозначаемый типом кадра (идентификатором), сохраняемым в области вспомогательной информации.
[61] Блок 151 образования адресных данных включает в себя регистр BITW, счетчик BITC, блок 151а определения, блок 151b определения и селектор, а блок 152 извлечения включает в себя счетчик ADRC_H адреса и счетчик ADRC адреса, а блок 153 назначения кадра включает в себя регистр заголовка (РЗ), преобразователь адреса и компаратор.
[62] Блок 150 извлечения данных о волновой форме загружает адрес верхнего кадра из хоста (центрального процессора) (непоказанного) в счетчик ADRC_H адреса и загружает межкадровый адрес из хоста в счетчик ADRC адреса. Если «0» для обозначения заголовка кадра сохраняется в качестве считываемого начального адреса в счетчике ADRC адреса, устройство для извлечения данных о волновой форме считывает элемент информации заголовка, сохраняемый в области вспомогательной информации считываемого целевого кадра, из запоминающего устройства 17 и сохраняет считываемый элемент информации заголовка в регистре заголовка (РЗ).
[63] Общая эффективная длина в битах, включенная в элемент информации заголовка, сохраняемая в регистре заголовка (РЗ), сохраняется в регистре BITW. Тип кадра (идентификатор), включенный в элемент информации заголовка, сохраняемый в регистре заголовка (РЗ), преобразуется в межкадровый адрес, соответствующий размеру одного кадра, а межкадровый адрес подводится к одному входу компаратора. Счетчик BITC предназначен для обозначения позиции бита одного сжатого сэмпла, подлежащего сохранению в области данных кадра. В случае, когда блок 151а определения определяет, что счетчик ADRC адреса (межкадрового адреса) имеет «0» или «1», представляющую элемент информации заголовка, счетчик BITC сбрасывается. Между тем, в случае, когда блок 151b определения также определяет, что счетчик ADRC имеет «0» или «1», представляющую элемент информации заголовка, со счетчика BITC подается «1» на селектор, в результате чего сильно повышается значение счетчика ADRC адреса. В случае, когда счетчик ADRC адреса имеет иное значение, кроме как «0» и «1» (значение, которым не представляется элемент информации заголовка), на селектор подается сигнал переноса со счетчика BITC.
[64] В счетчик BITC добавляется значение регистра BITW, в результате чего значение счетчика ADRC адреса возрастает, вследствие чего образуется адрес считывания, предназначенный для считывания сжатого сэмпла, сохраняемого в области данных кадра. Адрес считывания выводится из счетчика ADRC адреса и подводится к другому входу компаратора. В случае, когда значение счетчика ADRC адреса (межкадровый адрес) становится значением, соответствующим размеру одного кадра, компаратор сбрасывает счетчик ADRC адреса.
[65] Как описывалось выше, устройство 150 для извлечения данных о волновой форме образует адреса считывания индивидуальных сэмплов, сохраняемых в областях данных считываемых целевых кадров, с привязкой к типам кадров (идентификаторам) и общим эффективным длинам в битах, включенным в их элементы информации заголовка, и считывает сжатые сэмплы из индивидуальных кадров на основании образованных адресов считывания.
[66] Теперь с обращением к фиг. 9 будет описан электронный музыкальный инструмент 200, включающий в себя описанное выше запоминающее устройство 17 и описанное выше устройство 150 для извлечения данных о волновой форме. На фиг. 9 представлена структурная схема, иллюстрирующая общую конфигурацию электронного музыкального инструмента 200. Блок 20 ввода исполнительских характеристик музыкального инструмента из фиг. 9 образует информацию об исполнительских характеристиках музыкального инструмента в соответствии с операциями воспроизведения. Операционный блок 21 имеет различные операционные переключатели и создает переключаемые события в соответствии с видами переключателей, приводимых в действие пользователем. Центральный процессор (ЦП) 22 создает события, связанные с нажатием клавиши или отпусканием клавиши, в соответствии с информацией об исполнительских характеристиках музыкального инструмента, образуемой блоком 20 ввода исполнительских характеристик музыкального инструмента, и подает связанные с нажатием клавиши или отпусканием клавиши события в устройство 150 для извлечения данных о волновой форме и команды в устройство 150 для извлечения данных о волновой форме на считывание сжатых сэмплов (элементов сжатых данных о волновой форме), необходимых для образования музыки, из запоминающего устройства 17.
[67] В постоянном запоминающем устройстве (ПЗУ) 23 сохраняются управляющие программы, загружаемые в центральный процессор 22. В оперативном запоминающем устройстве (ОЗУ) 24 временно сохраняются различные данные регистра/признака, используемые при обработке в центральном процессоре 22. В запоминающем устройстве 17 заблаговременно сохраняются сжатые сэмплы (элементы сжатых данных о волновой форме), имеющие определенные музыкальные звуки, и в ответ на команду на считывание с центрального процессора 22 устройство 150 для извлечения данных о волновой форме считывает сжатые сэмплы, необходимые для образования музыки, из запоминающего устройства 17.
[68] Блок 25 декомпрессии выполняет процесс декомпрессии сжатых сэмплов, считываемых устройством 150 для извлечения данных о волновой форме, в результате чего он получает данные о волновой форме и подает данные о волновой форме на звукообразующий блок 26. Звукообразующий блок 26 образует музыкальные данные на основании данных о волновой форме, подаваемых с блока 25 декомпрессии, и преобразует образованные музыкальные данные в аналоговый музыкальный сигнал, и выполняет фильтрацию, чтобы отфильтровать ненужные составляющие, такие как шум, из музыкального сигнала, и повышает уровень музыкального сигнала, и выводит звук из громкоговорителя.
[69] Как описывалось выше, в соответствии с представленным вариантом осуществления, поскольку на отрезке, на котором волновая форма изменяется быстро, эффективные длины в битах отдельных сэмплов волновой формы (элементы Е данных об ошибках прогнозирования) изменяются и поэтому общая эффективная длина в битах первой половины кадра не совпадает с общей эффективной длиной в битах второй половины кадра, размер одного кадра полагают равным 256 байтам. Между тем, поскольку на отрезке, на котором волновая форма изменяется медленно, эффективные длины в битах отдельных сэмплов волновой формы (элементы Е данных об ошибках прогнозирования) не изменяются и поэтому общая эффективная длина в битах первой половины кадра совпадает с общей эффективной длиной в битах второй половины кадра, размер одного кадра полагают равным 512 байтам. Таким образом, различные размеры кадра можно задавать в зависимости от музыкальных звуков (видов волновой формы).
[70] Кроме того, поскольку размеры различных кадров задают в соответствии с описанным выше способом, то по сравнению со случаем использованием кадра фиксированного размера можно решить проблему, заключающуюся в том, что по мере увеличения числа кадров возрастает бесполезная избыточная информация заголовка или повышается количество кодовых бит в сэмплах волновой формы.
[72] Кроме того, что касается, например, отрезка атаки из первой половины сэмплов волновой формы, то сохраняются данные о громкости звука, в которых громкость звука такая же, как громкость исходного звука, а что касается второй половины сэмплов волновой формы, то сохраняются данные о громкости звука, в которых громкость звука ниже, чем громкость исходного звука, поскольку в соответствии с описанным выше вариантом осуществления поправочный параметр уровня громкости сохраняется в качестве элемента информации заголовка в области вспомогательной информации кадра. Таким образом, можно сохранять отрезок атаки из первой половины сэмплов волновой формы с высоким качеством на основании низкого коэффициента сжатия и можно сохранять вторую половину сэмплов волновой формы на основании высокого коэффициента сжатия.
[72] Кроме того, в случае, когда устройство 150 для извлечения данных о волновой форме извлекает из запоминающего устройства сжатые данные о волновой форме, при использовании поправочного параметра громкости звука можно возвращать громкость звука из данных о волновой форме к громкости исходного звука.
[73] Кроме того, согласно представленному варианту осуществления, если общая эффективная длина в битах первой половины кадра не совпадает с общей эффективной длиной в битах второй половины кадра, размер одного кадра задается равным 256 байтам (кадра), включая 4 байта для области вспомогательной информации и 252 байта для области данных; тогда как если общая эффективная длина в битах первой половины кадра совпадает с общей эффективной длиной в битах второй половины кадра, размер одного кадра задается равным 512 байтам (кадра), включая 4 байта для области вспомогательной информации и 508 байтов для области данных. Однако настоящее изобретение не ограничено этим и также возможно, что в случае, когда предварительно определенное или большее количество последовательных сэмплов имеют одинаковую длину в битах, равную длине квантования в битах, определяемой блоком 13а определения длины квантования в битах, блок 13b определения размера определяет 512 байтов (кадра) как размер одного кадра; тогда как в случае, когда предварительно определенное или большее количество последовательных сэмплов не имеют одинаковой длины в битах, равной длине квантования в битах, определяемой блоком 13а определения длины квантования в битах, блок 13b определения размера определяет 256 байтов (кадра) как размер одного кадра.
[74] Иначе говоря, также можно использовать несложный способ, в котором на отрезке, на котором волновая форма изменяется быстро, блок 13b определения размера определяет 256 байтов (кадра) как размер одного кадра, поскольку предварительно определенное или большее количество последовательных сэмплов не имеют одинаковой длины в битах, равной длине квантования в битах, определяемой блоком 13а определения длины квантования в битах, а на отрезке, на котором волновая форма изменяется медленно, блок 13b определения размера определяет 512 байтов (кадра) как размер одного кадра, поскольку предварительно определенное или большее количество последовательных сэмплов имеют одинаковую в длину в битах, равную длине квантования в битах, определяемой блоком 13а определения длины квантования в битах.
[75] Дополнительные преимущества и модификации без труда придут в голову специалистам в данной области техники. Поэтому изобретение в его широких аспектах не ограничено конкретными подробностями и характерными вариантами осуществления, показанными и описанными в этой заявке. В соответствии с этим различные модификации могут быть сделаны без отступления от сущности или объема общей идеи изобретения, обозначенной в прилагаемой формуле изобретения и эквивалентах ее.