Утилита:SoundSense: различия между версиями

Материал из Dwarf Fortress Wiki
Перейти к навигацииПерейти к поиску
м (Откат правок 5.135.165.126 (обсуждение) к версии Arex)
м (GeloMor переименовал страницу SoundSense в Утилита:SoundSense)
 
(не показано 26 промежуточных версий 12 участников)
Строка 1: Строка 1:
__NOTOC__
__NOTOC__
Soundsense - это утилита, позволяющая озвучивать различные события в игре. Например, когда в игре появляется надпись "{{tt|It has started raining.|Пошёл дождь}}", то из колонок будет доноситься звук дождя. Утилита позволяет гибкую настройку, какие события озвучивать или нет, добавлять свои собственные музыкальные композиции.
 
{{заготовка}}
 
'''Soundsense''' - это утилита (звуковой движок), заменяющая одну единственную музыкальную композицию в игре на различные звуки и музыку, в зависимости от контекста и текущего события. Например, когда в игре появляется надпись "{{tt|It has started raining.|Пошёл дождь}}", то из колонок будет доноситься звук дождя.  
Утилита позволяет гибкую настройку, какие события озвучивать или нет, добавлять свои собственные музыкальные композиции.


'''Обсуждение:''' http://www.bay12forums.com/smf/index.php?topic=60287.0<br />
'''Обсуждение:''' http://www.bay12forums.com/smf/index.php?topic=60287.0<br />
'''Страница проекта:''' http://df.zweistein.cz/soundsense/
'''Страница проекта:''' http://df.zweistein.cz/soundsense/<br />
'''Ссылка на DFFD:''' http://dffd.bay12games.com/file.php?id=11849<br />
'''Исходники:''' https://code.google.com/archive/p/df-soundsense/<br />


==Установка==
==Установка==


* Установите [http://java.com/ru/download/ java runtime], если у вас её ещё нет. Нужна версия старше 1.6.0_14.
Детальные инструкции по установке находятся на [http://df.zweistein.cz/soundsense/ официальном сайте], в разделе '''Installation'''.
* Скачайте и распакуйте SoundSense (неважно куда).
* Скачайте soundpack.zip и распакуйте папку «packs» в корень папки SoundSense
* Запустите soundsense.cmd или soundsense.exe
 
{{заготовка}}
If something similar to ['java' is not recognized as an internal or external command]
appears, either java has not been installed yet or it was not installed correctly. If
your case is the latter, it may be possible to work around the problem by editing the
soundSense.cmd (in your SoundSense directory). Open it with Notepad and find line line
starting with "java -Dja..." and replace the "java" part with the full path for your java
installation. For example: "C:\Program Files\Java\jdk1.6.0_20\bin\java.exe"


That was the hard part.
* Установите [http://java.com/ru/download/ java runtime 7], если у вас её ещё нет.
* Скачайте и распакуйте '''SoundSense''' в папку с игрой.
* Переместите скрипты и плагины для dfhack в папку '''hack'''.
* Запустите '''soundsense.exe''' и нажмите кнопку '''update soundpack'''.  


Now, where to install it? SoundSense expects to be in a sub-directory that is inside your
При первом запуске '''SoundSense''' сам предложит автоматически обновить пак с музыкой. Базовая версия содержит очень мало звуков, так что рекомендуется произвести обновление пака с музыкой (автоматом [http://df.zweistein.cz/soundsense/soundpack.zip скачается вот этот пак]).
Dwarf Fortress directory. So, for example, if you have Dwarf Fortress in F:/df_31_18_win/,
you should unpack the contents of SoundSense zip to F:/df_31_18_win/soundsense/. By
default, you want to make sure that the .cmd file you use to launch SoundSense is inside a
sub-directory of (i.e., below) the DF folder where gamelog.txt is located.


If you want to install to a different location, you need to edit configuration.xml and
Имейте ввиду, что '''SoundSense''' должен работать в фоне и, в идеале, быть запущенным до самого DF.
edit the <gamelog path="../gamelog.txt"/> line. Replace "../gamelog.txt" with the path to
where Dwarf Fortress is located. For example: "F:/df_31_18_win/gamelog.txt"


SoundSense is now all set up and ready to run. But you still need the actual sounds and
Если вы пользуетесь [[Lazy_Newb_Pack|the Lazy Newb Pack]], то '''SoundSense''' уже присутствует там и устанавливать его не надо - только обновить пак с музыкой через '''update soundpack'''.
music that it will play. So download soundpack.zip and unzip the "packs" directory and all
the contents inside that to the SoundSense directory.


You can start SoundSense by launching (double left-clicking) either soundSense.cmd or
==Решение проблем==
soundSenseExe.cmd. (Using the latter should give you clearer error messages regarding a
bad java installation.) If you like, you can create a shortcut to soundSense.cmd, rename
it "SoundSense" and move it to your desktop for easy access.


Finally, remember that SoundSense needs to run in the background. Ideally, you should
===Запуск на MacOS===
start SoundSense BEFORE you start Dwarf Fortress.


==Known Issues==
'''SoundSense''' был написан и протестирован только на Windows и Linux, однако может, теоретически, работать на любой ОС с поддержкой java. В случае проблем с запуском на Маке, разработчик предлагает ознакомиться с [http://www.bay12forums.com/smf/index.php?topic=60287.msg1552676#msg1552676 данным постом] на официальном форуме.


===Moments of Silence===
===Ошибки java===


Occationally, the music in SoundSense will stop for a short period (10, 20, or 30 seconds)
Если вдруг вы увидите сообщение типа ['java' is not recognized as an internal or external command] значит, у вас не установлена java, или установлена неправильно.  
before resuming. This is not a bug it is intentional. This was done to let ears rest a
В последнем случае проблема решается правкой файла soundSense.cmd (он лежит в папке SoundSense).
bit between tracks. (Research shows that ears which get a rest have time to recover and
Откройте его блокнотом, найдите строку начинающуюся со слов "java -Dja..." и замените "java" на полный путь к исполняемому файлу java. Например: "C:\Program Files\Java\jdk1.6.0_20\bin\java.exe"
are less likely to be damaged.) Also, a few tracks have a silent start and, at low volume,
may take a minute or longer to become audible. If in doubt, you can see what is currently
playing in GUI under the volume slider. During periods of silence, this will typically
show "10s silence" or similar.


===Game Loads and the Music is Random===
===Моменты тишины===


When a game is loaded, SoundSense picks a random seasonal music track to play. This is not
Бывает, что музыка останавливается на небольшой период (на 10, 20 или 30 секунд). Это не баг, а фича. Сделано для того, чтобы давать ушам отдохнуть. Так же некоторые треки имеют тихое начало или невысокую громкость. Если же вы не уверены, что звук проигрывается - всегда можно открыть интерфейс '''SoundSense''' и посмотреть что сейчас играет. В случае запланированной тишины там будет об этом написано.
a bug — it is intentional. There is no way for SoundSense to detect what season it is when
a game is loaded, so a random soundtrack is chosen. But when the season next changes, it
will choose the correct soundtrack.


===Adventure Mode — A Bit Lacking===
===Случайная музыка при запуске игры===


Adventure Mode kind of works. The battle sounds function quite well because they are
Когда игра загружается, '''SoundSense''' выбирает случайный трек из списка, а не для текущего сезона. Это не баг. '''SoundSense''' не может сразу определить какое сейчас время года, но когда сезон сменится, то музыка подстроится под него.
mostly the same as those in Fortress Mode. But SoundSense is still a bit lacking in other
adventure sounds. The problem is that Adventure Mode does not log many other usefull
events. For example, encountering a megabeast or a quest mob is resolved in chat, leaving
no message in the game log to trigger SoundSense.


Improvements in how DF handles logging could benfit both SoundSense and DF as a whole.
===Режим приключенца - мало звуков\музыки===
Such suggestions have already been posted in the official Dwarf Fortress forums:
http://www.bay12forums.com/smf/index.php?topic=64834.0


===Event Detection: Better Late Than Never?===
Режим приключенца должен работать, вроде бы. Музыка и звуки во время боя - точно (работает так же как и в режиме крепости). Но в остальном игра не логирует множество вещей в этом режиме, а потому и '''SoundSense''' не может определить и запустить нужную музыку или звуки. Например сообщение о встрече с [[Megabeast|мегабистом]] или квестовым мобом отображается в сообщениях, но в лог не идет.


In some cases, by the time SoundSense detects conditions to trigger an alert, it may be
===Отслеживание событий: лучше поздно чем никогда?===
too late to react to the situation. For example, a "Tantrum Spiral" might already be over
before the player can be alerted.


Part of this is a balance between detecting too many false positives and ignoring events
В некоторых случаях '''SoundSense''' реагирует на события уже после того как они произошли. Например [[Tantrum|истерическая цепная реакция]] может уже закончиться, а уведомление только появиться.
until it is too late to do anything. For example, a soldier might lose a pet and report
feeling like blowing off some steam... but instead of throwing a tantrum they calm down.


Another problem is FPS sensitivity. A specific sequence of events may trigger certain
Отчасти это из-за того, что работает механизм, препятствующий реакции на слишком большое количество ложных событий.
alert sounds in a high FPS situation, but it might not trigger with low FPS. The sequence
Так же подобное может возникнуть из-за высокого показателя FPS или из-за постановки игры на паузу.
of events might "time out". Also, pausing the game could cause similar problems.


===Compatible With DF Mods — Should Work, But NO PROMISES===
===Совместимость с другими модами DF: Должно работать, но никаких обещаний===


SoundSense was mainly designed for "vanilla" (unmodified) Dwarf Fortress. It should work
'''SoundSense''' изначально был задуман для ванильной, немодифицированной версии Dwarf Fortress. Должен работать нормально с большинством модов, однако гарантировать совместимость со всеми автор не может. Некоторые моды (например тотальные конверсии) могут быть причиной нестандартного поведения '''SoundSense''', а так же могут создавать события, которые нет возможности отследить.
fine with most mods. However, I can not guarantee compatibility. Some mods, especially
"major" or "full conversions", may create unusual behavior and involve dangerous events
that SoundSense was not designed to detect.


Another words, SoundSense may lack sounds for certain mod-specific events. (E.g.; you
Другими словами '''SoundSense''' не содержит звуков для событий, которые присущи модам (например звуков стрельбы из огнестрельного оружия), однако вы можете модифицировать его чтобы они там были.
should NOT expect SoundSense to include gunshot sounds for mods that add guns! But you CAN
modify SoundSense yourself to do this.) Conversely, some events that work normally in
vanilla DF may trigger so frequently with a mod as to be very annoying.


===On some Linux===
===On some Linux===
Строка 166: Строка 128:
If you're using Sun/Oracle's JRE then switch to OpenJDK. If you don't want to do that (not recommended) then you might try to use the padsp wrapper or install osspd. If the padsp wrapper will not work properly for you then osspd daemon might just do the trick. (''[https://wiki.archlinux.org/index.php/Pulseaudio#OSS Archlinux Pulseaudio user]'')
If you're using Sun/Oracle's JRE then switch to OpenJDK. If you don't want to do that (not recommended) then you might try to use the padsp wrapper or install osspd. If the padsp wrapper will not work properly for you then osspd daemon might just do the trick. (''[https://wiki.archlinux.org/index.php/Pulseaudio#OSS Archlinux Pulseaudio user]'')


===Any Other Issues? Post Feedback===
===Нашли недокументированный баг? Напишите об этом!===


There is a thread at the official Dwarf Fortress forums. Feel free to post any issues,
На официальном форуме Dwarf Fortress [http://www.bay12forums.com/smf/index.php?topic=60287.0 есть тема] по '''SoundSense'''. Все пожелания и сообщения о багах принимаются там.
suggestions, and contributions there:
http://www.bay12forums.com/smf/index.php?topic=60287.0


When providing feedback about your experience with SoundSense, please specify which mods
В случае каких-либо проблем указывайте в сообщении какие моды вы используете. Если '''SoundSense''' ведет себя странно только у вас, то это может быть связано именно с ними.
(if any) you are using. If SoundSense seems to behave weirdly only for you, it just might
be from using certain mods.


==Customization==
==Customization==

Текущая версия от 04:07, 27 августа 2022


Данная статья помечена как не оконченная.
Вы можете прочитать эту статью на английском или помочь проекту её переводом.

Soundsense - это утилита (звуковой движок), заменяющая одну единственную музыкальную композицию в игре на различные звуки и музыку, в зависимости от контекста и текущего события. Например, когда в игре появляется надпись "It has started raining.", то из колонок будет доноситься звук дождя. Утилита позволяет гибкую настройку, какие события озвучивать или нет, добавлять свои собственные музыкальные композиции.

Обсуждение: http://www.bay12forums.com/smf/index.php?topic=60287.0
Страница проекта: http://df.zweistein.cz/soundsense/
Ссылка на DFFD: http://dffd.bay12games.com/file.php?id=11849
Исходники: https://code.google.com/archive/p/df-soundsense/

Установка

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

  • Установите java runtime 7, если у вас её ещё нет.
  • Скачайте и распакуйте SoundSense в папку с игрой.
  • Переместите скрипты и плагины для dfhack в папку hack.
  • Запустите soundsense.exe и нажмите кнопку update soundpack.

При первом запуске SoundSense сам предложит автоматически обновить пак с музыкой. Базовая версия содержит очень мало звуков, так что рекомендуется произвести обновление пака с музыкой (автоматом скачается вот этот пак).

Имейте ввиду, что SoundSense должен работать в фоне и, в идеале, быть запущенным до самого DF.

Если вы пользуетесь the Lazy Newb Pack, то SoundSense уже присутствует там и устанавливать его не надо - только обновить пак с музыкой через update soundpack.

Решение проблем

Запуск на MacOS

SoundSense был написан и протестирован только на Windows и Linux, однако может, теоретически, работать на любой ОС с поддержкой java. В случае проблем с запуском на Маке, разработчик предлагает ознакомиться с данным постом на официальном форуме.

Ошибки java

Если вдруг вы увидите сообщение типа ['java' is not recognized as an internal or external command] — значит, у вас не установлена java, или установлена неправильно. В последнем случае проблема решается правкой файла soundSense.cmd (он лежит в папке SoundSense). Откройте его блокнотом, найдите строку начинающуюся со слов "java -Dja..." и замените "java" на полный путь к исполняемому файлу java. Например: "C:\Program Files\Java\jdk1.6.0_20\bin\java.exe"

Моменты тишины

Бывает, что музыка останавливается на небольшой период (на 10, 20 или 30 секунд). Это не баг, а фича. Сделано для того, чтобы давать ушам отдохнуть. Так же некоторые треки имеют тихое начало или невысокую громкость. Если же вы не уверены, что звук проигрывается - всегда можно открыть интерфейс SoundSense и посмотреть что сейчас играет. В случае запланированной тишины там будет об этом написано.

Случайная музыка при запуске игры

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

Режим приключенца - мало звуков\музыки

Режим приключенца должен работать, вроде бы. Музыка и звуки во время боя - точно (работает так же как и в режиме крепости). Но в остальном игра не логирует множество вещей в этом режиме, а потому и SoundSense не может определить и запустить нужную музыку или звуки. Например сообщение о встрече с мегабистом или квестовым мобом отображается в сообщениях, но в лог не идет.

Отслеживание событий: лучше поздно чем никогда?

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

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

Совместимость с другими модами DF: Должно работать, но никаких обещаний

SoundSense изначально был задуман для ванильной, немодифицированной версии Dwarf Fortress. Должен работать нормально с большинством модов, однако гарантировать совместимость со всеми автор не может. Некоторые моды (например тотальные конверсии) могут быть причиной нестандартного поведения SoundSense, а так же могут создавать события, которые нет возможности отследить.

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

On some Linux

Error on 'soundSense.sh' call: "/bin/sh^M : wrong interpret"

File "soundSense.sh" has CR+LF characters at lines ending. Convert these characters to a more suitable form, with a tool like "dos2unix":

 dos2unix soundSense.sh

Shell script should then be run without previous error.

Also using sed you can try this:

 # IN UNIX ENVIRONMENT: convert DOS newlines (CR/LF) to Unix format.
 sed -i -e 's/\r$//' ./soundSense.sh

IF launching .sh file after that, says that something is wrong on the last line, when you try to launch sh. Just check, if "fi" is present there instead of "f" or smth like that.

Error at playing any MP3 file: "javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file: could not get audio input stream from input file"

Your Java virtual machine failed at reading MP3 files as audio stream. This could fix by adding to JVM an extra plugin: JMF MP3 Plugin. Download plugin, and put *.jar files into your JVM "lib/ext/" directory.

Error at playing any MP3 file: "javax.sound.sampled.LineUnavailableException: Audio Device Unavailable"

Whereas your JVM succeeded in reading MP3 file as audio stream, it failed to access to an audio device. If your audio system uses Alsa, you could install "aoss" utility, and "soundSense.sh" will call it. On Debian, package "alsa-oss" provides this utility. Note: if you are on Ubuntu see below. Ubuntu uses PulseAudio backend, therefore toying with aoss is a waste of time.

Goddammit I'm using PulseAudio and I still can't hear anything!

First, be sure that you are using OpenJDK 7; you can't use OpenJDK 6 as it has quiet a serious bug in its ALSA backend[1]. You can check what java you have installed by typing

 java -version

in the terminal. You can install OpenJDK like this in Ubuntu:

 sudo apt-get install openjdk-7-jdk
 sudo update-alternatives --set java /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java

(The "update-alternatives" command will only work on 64bit Ubuntu; for 32bit version you need to replace the "amd64" with "i386" or something like that.)

Now, check the

 /etc/java-7-openjdk/sound.properties

file for this:

 # OpenJDK on Ubuntu is configured to use PulseAudio by default
 javax.sound.sampled.Clip=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider
 javax.sound.sampled.Port=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider
 javax.sound.sampled.SourceDataLine=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider
 javax.sound.sampled.TargetDataLine=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider
 
 # PulseAudio not running? Please give feedback on LP: #407299.
 #javax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider
 #javax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider
 #javax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider
 #javax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider

This will not work, as OpenJDK's PulseAudio backend is buggy as hell. What you need to do is to comment out the PulseAudio and turn back on the old backend:

 # OpenJDK on Ubuntu is configured to use PulseAudio by default
 #javax.sound.sampled.Clip=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider
 #javax.sound.sampled.Port=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider
 #javax.sound.sampled.SourceDataLine=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider
 #javax.sound.sampled.TargetDataLine=org.classpath.icedtea.pulseaudio.PulseAudioMixerProvider
 
 # PulseAudio not running? Please give feedback on LP: #407299.
 javax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider
 javax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider
 javax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider
 javax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider

This should make the sound work. (If you don't know how to edit this then try typing "sudo nano /etc/java-7-openjdk/sound.properties" in the terminal.)

If you're using Sun/Oracle's JRE then switch to OpenJDK. If you don't want to do that (not recommended) then you might try to use the padsp wrapper or install osspd. If the padsp wrapper will not work properly for you then osspd daemon might just do the trick. (Archlinux Pulseaudio user)

Нашли недокументированный баг? Напишите об этом!

На официальном форуме Dwarf Fortress есть тема по SoundSense. Все пожелания и сообщения о багах принимаются там.

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

Customization

You can insert additional sounds and music into SoundSense by adding entries to an .xml configuration file. logPattern="regexp" is a regular expression which, if matched, will cause a random soundFile from a list to be played. (Details on how java uses regular expressions: http://download.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html )

Sound element attributes:

  • logPattern — regular expression matching log line (see link above)
  • channel — string; Specifies a channel on which sound is played. Sounds played on a channel can be looped or stopped prematurely.
  • loop — string; Specifying "start" will start looping a sound on a channel until an expression with "stop" is triggered or until a different loop sound is played on the same channel. (If a non-looped sound is triggered on the same channel, this loop will resume when the non-looped is done playing.)
  • concurency — number; The number of concurrent (i.e., simultaneous) sounds allowed to be played besides this sound. If SoundSense is currently playing more than this, the sound is ignored. The default is unlimited.
  • timeout — number; This initiates a time out during which this particular sound is prevented from playing again. This is measured in milliseconds and the default is 0.
  • delay — number; Adds a delay before the sound is played. This is measured in milliseconds and the default is 0.
  • haltOnMatch — boolean; If this is set to True and more than one equivalent logPattern exists, SoundSense will only process the first logPattern expression. If it is False, it will continue to process matching (e.g., identical) logPatterns. The default is True.
  • speech — boolean; If this is set to True, SoundSense will echo the gamelog text line (containing the logPattern) with a speech synthesizer instead of playing a sound. The default is False.
  • playbackThreshhold — number, 0-4, defines level of filter which is applied to this sound.

SoundFile element attributes:

  • fileName — the path to and name of the sound/music file
  • weight — number; This controls the likelihood of a sound being chosen. Default is 100.
  • volumeAdjustment — number; This can be used to adjust the volume of the sample. The value can range from -40 to +6 decibles and the default is 0.
  • randomBalance — boolean, if set to true will randomply distribute sound betweem stereo channels.
  • balanceAdjustment — number, adjusts stereo channel, can range for -1 (full left) to 1 (full right).

SoundSense supports these audio formats for soundFiles:

  • mp3 (SoundSense can normalize the sound volume with this format)
  • ogg (works, but SoundSense can not normalize the sound volume)
  • wav (See note below. SoundSense only supports "Windows PCM" encoded .wav files)
  • aiff
  • au

Note: Not all .wav files are supported...

SoundSense supports .wav encoded in the "Windows PCM" format. However, some files with the .wav extention are actually encoded in some other proprietary format. A sound format conversion utility (such as FormatFactory) could be used to fix them.

Some Tips:

Control of Randomness
Each logPattern expression can contain several soundFile elements. When it is triggered, one of them is randomly chosen to play. You can control the probability of each sound being chosen by adding the weight="number" attribute.
Simultaneous Sounds
By default, only one sound will play for a given logPattern, even if there are several expression using identical logPatterns. (Only the first expression is processed.) But you can allow more than one sound to be played for same pattern by giving the first one the haltOnMatch="false" attribute. They will all start at same time (unless one or more of them also has a delay). An example is in Seasons.
Sequential Sounds
Two (or more) sounds can be played sequentially (one after the other) for the same logPattern by using the haltOnMatch="false" tip above and including a delay attribute for one of them with a delay that surpasses the length of the other.

Helpful files:

  • packSkeletons.zip ( http://df.zweistein.cz/soundsense/packSkeletons.zip ) — This contains .xml files for all known gamelog lines currently without sounds. You can use this as a starting point to expand SoundSense.
  • missingMessages.cmd — Run this program to parse your gamelog.txt file and output all lines your sound packs will not recognize.
  • logging.properties — Edit this file to enable more debug messages from SoundSense. Set ".level = ALL" to view a very verbose output.

Sources of sound & music:

The following are some sites of interest, should you want additional sounds/music. (Websites with free, creative commons, public domain, and/or GNU GPL licensed audio):

How to add music to seasonal playlist:

It is rather easy. Locate seasons.xml in soundpack/seasons directory.

This file contains definition of two sets of sounds: First, there are four definitions for playing voiced anouncements (<sound logPattern="Spring has arrived!" haltOnMatch="false" playbackThreshhold="3">) which are not interesting and should be left alone.

Seccond are main defintions of season music which start with <sound logPattern="(Spring has arrived!)|(Spring has arrived on the calendar\.)" loop="start" channel="music" playbackThreshhold="0">.

You can simply add new <soundFile fileName="Name of your.mp3"/> and put it in seasons directory.