Изв. вузов «ПНД», т. 15, № 1, 2007 УДК 53.072; 53:004
КАК «ОЗВУЧИТЬ» ЧИСЛЕННЫЙ ЭКСПЕРИМЕНТ
А.А. Семёнов
Предложена необычная методика интерпретации результатов численного эксперимента в форме звуковых колебаний. Даны рекомендации по практической реализации предложенной методики и ее применению в различных областях исследовательской, конструкторской и учебной деятельности.
Может возникнуть вполне естественный вопрос: а зачем численный эксперимент озвучивать и что в результате этого можно услышать?
Встречаются ситуации, когда послушать необычный звук исследуемого объекта рекомендуют непосредственно авторы оригинальной научной работы. Такое пожелание высказывалось, в частности, исследователями динамической системы Л.О. Чуа [1], отличающейся простотой моделирования в физическом и численном экспериментах. Известные всем фазовый портрет и временная реализация колебательного режима, возникающего в этой системе (ставшей в настоящее время классической), приведены на рис. 1.
Рис. 1. Временная реализация колебательного режима в системе Л.О. Чуа (а), и проекция фазового объема на плоскость (Ус1, Ус2) (б)
Напомним, тем не менее, как охарактеризовал полученные экспериментальные результаты один из первопроходцев исследования этой системы: «... энергетический спектр сигнала Vc1 (t)... оказывается непрерывным и широкополосным. Поскольку большинство частотных составляющих попадает в область звуковых частот, этот сигнал можно услышать. Звук имеет весьма интересный и даже несколько таинственный характер. Настоятельно рекомендуем читателю послушать его» [2].
Пожелание авторов статьи не вызовет затруднений при проведении физического эксперимента, но как воплотить его при исследовании системы Л.О. Чуа численными методами?
Необходимость услышать результаты численного эксперимента возникает при исследовании схем, выходные сигналы которых заведомо являются звуковыми. Так, популярные пакеты моделирования и расчета электронных схем (как, например, широко распространенный «Electronics Workbеnch» [3]) демонстрируют с помощью виртуальных приборов процессы работы генераторов, усилителей, модуляторов и т.д., имеют опцию сохранения результатов в текстовый файл (Oscilloscope/Expand/Save: filename.osc), но не дают возможности услышать полученные численными методами сигналы.
В то же время, исследуемые в таких схемах процессы фильтрации сигнала, ограничения и модуляции, генерации плавно изменяющейся частоты и формирования пакетов импульсов имеют весьма характерное звучание, услышать которое было бы весьма полезно, в частности, начинающим исследователям, но как?
И, наконец, как услышать результаты численного расчета, если необходимо сконструировать устройство, непосредственно формирующее заданный звуковой сигнал? Автор данной статьи столкнулся с такой практической задачей при формировании цифровыми методами сигнала, характерного для звука выстрела. Необходимый сигнал легче всего получить с помощью цифровых генераторов псевдослучайных последовательностей. В литературе такие устройства известны [4-7], их численное моделирование не вызывает затруднений. Но какая литература способна точно описать, каков будет реальный звук?
Между тем, современные вычислительные средства позволяют любому исследователю не только увидеть, но и услышать практически любые колебания, используя компьютерные системы сравнительно невысокой мощности и не прибегая при этом к монтажу с паяльником соответствующих электронных схем.
Рассмотрим в общем случае решение, полученное при анализе той или иной динамической системы в виде временной реализации A = F(t) (рис. 2).
В результате численного интегрирования системы дифференциальных уравнений с заданными начальными условиями решение обычно получают в виде аппроксимации с фиксированной точностью функции A = F (t) рядом дискретных зна-
Рис. 2. Обобщенный вид временной реализации колебательного режима абстрактной динамической системы
чений (Ао, t0),... (Ai, ti),... (An, tn) (см. рис. 2), причем интервал ATi = ti+l — ti между отдельными выборками в общем случае является неравномерным, что обусловлено особенностями численных методов с автоматическим выбором шага.
Большинство современных доступных компьютерных систем, оборудованных звуковой картой, способно воспроизводить звук в распространенном формате WAVE фирмы Microsoft. Файлы этого формата представляют собой снабженный документированным заголовком набор выборок (sample), характеризующих амплитуду звукового сигнала. Под выборкой понимаются целочисленные значения определенной размерности (8, 16, 24 и до 32 бит), которые, будучи переданы с указанием частоты их выдачи на аналогово-цифровой преобразователь звуковой карты, формируют электрические колебания и соответствующую им звуковую волну посредством излучателей. Частота следования выборок, называемая также частотой дискретизации, стандартизирована в диапазоне 5-48 кГц и для большинства распространенных звуковых карт при хорошем качестве звука составляет 44.1 кГц. Стандарт предусматривает хранение и воспроизведение наборов выборок от 1 до 4 каналов. WAVE-файлы являются подмножеством файлов RIFF-формата (Resource Interchange File Format), разработанного для хранения ресурсов мультимедиа.
Заголовок файла, содержащий все необходимые сведения для воспроизведения WAVE файла, имеет следующую структуру [8]:
II
typedef struct {
char id[4]; long len; } IDRiff;
II
typedef struct { char id[4]; char fmt[4]; long len; } IDChuckWave;
II
typedef struct { int type;
int channels;
long SamplesPerSec;
long AvgBytesPerSec;
Заголовок RIFF-файла:
// = 0x46464952 («RIFF») - идентификатор файла // - длина файла без этого заголовка
Подзаголовок WAVE-блока:
// = 0x45564157 («WAVE») - идентификатор блока // = 0 х 20746D66 («fmt») - идентификатор fmt-блока // - длина этого блока WAVE-файла
Параметры выборки:
// = 1 (PCM - Pulse Code Modulation))- тип звуковых // данных(просто набор выборок) // = 1(2) - число каналов // - частота дискретизации (Гц)
// - средняя частота выдачи байтов, для типа данных // PCM вычисляется по формуле: // (channels*SamplesPerSec*bits)/8
int align; // - выравнивание данных в data-блоке,
// для типа данных PCM вычисляется по формуле: // (channels*bits)/8 int bits; // - число бит на выборку (разрядность // дискретизации)
} IDWave;
// Подзаголовок блока данных:
typedef struct {
char id[4]; // =0x61746164 («data»)- идентификатор блока данных long len; // - длина выборки (число байт)
} IDSampleWave;
// После заголовка непосредственно следуют данные выборок.
// В одноканальном WAVE-файле выборки располагаются последовательно: sample[0],sample[1],sample[2]...
// в двухканальном WAVE-файле выборки следуют попарно: left[0],right[0],left[1],right[1],left[2]...
Таким образом, задача «озвучивания» данных, полученных численными методами, в случае их принадлежности к звуковому диапазону сводится к процессу их переквантования (resampling) с выбором подходящей частоты дискретизации и нормированию расчетных амплитуд сигнала к величинам, определяемым разрядностью дискретизации (см. рис. 2). После чего соответствующие значения присваиваются переменным полей заголовка файла (с учетом приведенных формул) и, далее, заголовок, а также следующие за ним пересчитанные значения амплитуд выборок записываются в файл произвольного доступа с расширением WAV.
Численный эксперимент готов зазвучать - извольте слушать!
Следует отметить, что по этой же методике можно «услышать» сигналы, частоты которых лежат вне звукового диапазона. В этом случае после приведения данных к виду последовательности с нормированными значениями амплитуд и равномерными отсчетами по времени, можно присвоить им период максимальной частоты дискретизации звукового сигнала и сформировать звуковой файл. Как при исследовании звуков, издаваемых дельфинами, частота которых лежит в диапазоне ультразвука, сигнал сначала записывали на широкополосный магнитофон, после чего он воспроизводился с замедленной скоростью.
Остановимся подробнее на практических вопросах, связанных с переквантованием данных, полученных в результате расчета. В силу того, что численные данные уже получены с заданной точностью, при вычислении амплитуд, следующих с равномерным значением дискрета по времени (в качестве которого следует выбрать ATmin/2), без потери точности можно ограничиться линейной аппроксимацией функции A = F(t) в промежутках между узлами (Ai, ti)... (Ai+1, ti+1).
В этом случае значение функции может быть вычислено по следующей формуле: ^
£ (ATmin/2) - £ ATi Ak = Ai + (Ai+i - Ai) ^-at+^ n=1-. (1)
Частоты вне звукового диапазона не воспроизводятся картой, но наличие их составляющих в спектре дискретного набора значений, формирующего WAVE-файл, может вызвать искажения полученного звука. В этом случае последовательность (Ak,tk) желательно подвергнуть процедуре цифровой фильтрации для среза спектральных составляющих выше 20 кГц. Данное требование, безусловное для информативных сигналов, в случае хаотического сигнала может, по мнению автора, восприниматься как факультативное.
Следующей процедурой в процессе создания цифрового звука является преобразование к требуемой частоте дискретизации Fsamp. Выбор частоты дискретизации ограничивается максимальным значением этого параметра для установленной в компьютерной системе пользователя звуковой карты. При отсутствии таких данных не будет ошибкой выбор значения 44.1 кГц, как приемлемого для большинства распространенных карт.
В общем случае процедура преобразования последовательности (Ak, tk) в новую последовательность (Ai,ti) с частотой дискретизации Fsamp осуществляется по следующей формуле:
i k У! Tsamp (ATinin/2)
Ai = Ak + (Ak+i - Ak) ^--m=/--, (2)
min / 2
где Tsamp = 1/Fsamp - период частоты дискретизации, Ai - амплитуда выборки, попадающей в интервал [(Ak,tk), (Ak+i, tk+i)].
Процедура нормирования данных по амплитуде сводится к следующим шагам. Сначала в последовательности (Ai,ti) ищутся (с учетом знака) максимальное Amax и минимальное Amin значения, что может быть совмещено с процессом равномерной дискретизации по времени. Далее в отсутствие постоянной составляющей, в качестве абсолютного значения максимальной амплитуды Aabs выбирается большее из A A • :
Amax Amin-
( |Amax|) |Amax| ^ |Amin|) Aabs = ^ (3)
^ |Amin|) |Amax| ^ |Amin|-
После этого значению Aabs ставится в соответствие максимально возможное число отсчетов звукового сигнала 5max (см. рис. 2), и все остальные значения результирующей последовательности (Ak,tk) пересчитываются по формулам:
Ak = Int ( 6*max i ) при дискретизации 16 бит, (4)
Aabs
Ak = Int ( 5ma^ A% ) при дискретизации 8 бит. (5)
V 2 Aabs /
При наличии в составе спектра исходной функции A = F (t) постоянной составляющей, более строгим было бы ее отделение численными методами, но в силу того, что схемотехника звуковых карт в большинстве случаев предусматривает разделительную емкость между выходом карты и звуковым излучателем, задачу отделения постоянной составляющей вполне логично возложить на саму карту. В этом случае интервалу Amax - Amin ставится в соответствие весь диапазон максимального числа
отсчетов звукового сигнала, и для нормирования остальных значений результирующей последовательности (Ак ) используются следующие формулы:
Ak = Int ( 25^x7^--1 ) ПРИ дискретизации 16 бит, (6)
\ \ Amax Amin \ J
Ak = Int ( 5max ja-AiA-1 ) при дискретизации 8 бит. (7)
\ \ Amax Amin \ J
Формулы (4-7) отводят полезному сигналу 100% динамического диапазона звуковой карты. В случае заметных на слух искажений, вносимых картой при воспроизведении, следует оставить небольшой запас по динамическому диапазону, в этом случае в формулах (4-7) осуществляют замену 5max на величину (0.9 ^ 0.97)5max.
Отметим также, что полученный звуковой файл дает исследователю весьма реальное представление о длительности рассчитанной им временной реализации, аппроксимирующей поведение исследуемого объекта или системы. В случае если полученный звуковой сигнал имеет малую длительность, можно включить режим его непрерывного воспроизведения, но при этом хаотический звук приобретает заметную на слух периодичность.
Современные программные пакеты математического моделирования (в частности, старшие версии пакета «Mathcad») имеют встроенные возможности формирования звуковых файлов, но их использование накладывает ограничение на методы расчета и требует применения сравнительно мощных вычислительных систем, в то время как описываемые в статье алгоритмы легко реализуются на всех популярных языках программирования и некритичны к мощности используемой компьютерной системы. Основным ограничением во всех случаях является только размер свободного пространства жесткого диска пользователя.
Минимальные требования, предъявляемые к компьютерной системе при реализации предложенной методики, по современным меркам более чем приемлемы:
• IBM - совместимый компьютер с процессором не хуже i386;
• 8 мегабайт оперативной памяти;
• Sound Blaster 16 - совместимая звуковая карта;
• жесткий диск со средним временем доступа не более 12 миллисекунд;
• свободное место на жестком диске - не менее 500 Мбайт.
При работе следует учитывать следующее соотношение: двухканальный WAVE-файл с 16-разрядным квантованием и частотой дискретизации 44.1 кГц размером 10 Мбайт обеспечивает время звучания около одной минуты.
Следует также обратить внимание на то, что частота дискретизации может быть выбрана произвольной в диапазоне 5 - 48 кГц, если это удобно для формирования WAVE-файла из экспериментальных данных, но не все программы воспроизведения звука способны проиграть его с выбранной частотой. По наблюдениям автора, некоторые программные продукты (в частности, «Универсальный проигрыватель» Windows 98) воспроизводят такой звуковой файл с частотой дискретизации, ближайшей из ряда частот, считающихся стандартными: 8.0, 11.025, 22.05 кГц и т.д. В этом случае более верное воспроизведение файла может обеспечить программа «Звукозапись», имеющаяся во всех версиях системы Windows.
Автор надеется, что предложенная в статье методика окажется полезной не только для широкого круга исследователей в сфере нелинейной динамики, но также для преподавателей и студентов.
Автор также выражает благодарность Усанову Дмитрию Александровичу и Ве-нигу Сергею Борисовичу за плодотворное обсуждение работы и ценные замечания.
Библиографический список
1. Matsumoto T, Chua L.O., Komuro M. The double scroll // IEEE Trans. Circuit Sysyt. Aug. 1985. Vol. CAS-32. P. 797.
2. Мацумото Т. Хаос в электронных схемах // ТИИЭР. 1987. Т.75, № 8. C. 66.
3. Карлащук В.И. Электронная лаборатория на IBM PC. Программа Electronics Workbench и ее применение. М.: «Солон-Р», 1999. 506 с.
4. Мардер М, Федосов В. Цифровые генераторы шума // Радио. 1990. № 8. C. 69.
5. Панкратьев Д. Имитатор звуков стрельбы // Радио. 1999. № 6. C. 54.
6. Безручко Б.П., Гуляев Ю.В., Пономаренко В.И., Селезнев Е.П. Формирователь шумовых сигналов // А.с. СССР, МКИ H03B29/00, №1358745, Заявлено 09.01.85. Опубл. 19.01.88.
7. Гуляев Ю.В., Безручко Б.П., Кислов В.Я., Пономаренко В.И. Формирователь шумовых сигналов // А.с. СССР, МКИ H03B29/00, № 1561792, Заявлено 25.07.88. Опубл. 15.01.94.
8. Data Structure Overview // Microsoft Windows Multimedia Programmer's Reference, Microsoft Corporation, Microsoft Press, Redmond, WA.
Саратовский государственный Поступила в редакцию 26.05.2006
университет
HOW FORCE TO SOUND THE NUMERICAL EXPERIMENT RESULTS
A.A. Semenov
The unusual technique of interpretation of numerical experiment results as sound waves is offered. Recommendations for practical implementation of the offered technique and for its application in various areas of research, designer and educational activity are given.
Семёнов Андрей Андреевич - родился в 1965 году в Саратове. После окончания Саратовского государственного университета (1987) - инженер, аспирант, научный сотрудник отраслевой лаборатории при СГУ, доцент кафедры физики твердого тела. Защитил диссертацию на соискание ученой степени кандидата физико-математических наук (1994) по специальности радиофизика, включая квантовую радиофизику. Область научных интересов -физика полупроводников, твердотельная электроника, радиофизика. По указанным направлениям опубликовал ряд статей в центральных и отраслевых научно-технических журналах. Неоднократный участник научно-технических выставок. Награжден золотой медалью и дипломом 1 степени Всероссийского научно-промышленного форума «Россия единая» в 2000 году за разработку устройства для защиты информации от несанкционированного доступа. E-mail:SemenovAA@info.sgu.ru