# TWL-System NITRO-Composer Revision History

## Index

### 2.1.0

#### Added and Changed Features

- Note 81-S02: (Documentation) Added description of `NNS_SndArcInitOnMemory`
- Note 81-S03: (Library) Updated `NNS_SndWaveOutStart` function to support IMA-ADPCM
- Note 81-S05: (Documentation) Added description of `NNS_SndArcInit*`
- Note 81-S07: (Documentation) Added explanation of SoundPlayer's TWL support
- Note 81-S08: (Documentation) Corrected sample data directory path
- Note 81-S09: (Documentation) Added notes about using TWL-SDK's SND, SNDEX, and DSP functions

#### Bug Fixes

- Note 81-S01: (Converter) Added support for converting data stored in Japanese-language folders
- Note 81-S04: (Converter) Fixed bug in data size alignment
- Note 81-S06: (Converter) Added support for invalid loop information during waveform conversion

### 2.0.0 RC

#### Bug Fixes

- Note 78-S01: (Library) Fixed bug for stream thread stack size

### 2008/04/08 Version

#### Added and Changed Features

- Note 76-S01: (Manual) Changed the format of the Revision History and revised the page headers

### 2007/11/26 Version

#### Added and Changed Features

- Note 71-S01: (Library) Added a sound archive load block size setting
- Note 71-S02: (Library) Function arguments converted to constants
- Note 71-S03: (Converter/SoundPlayer) Made MIDI RPN updates
- Note 71-S04: (Converter/Library) Disabled sequence commands related to envelopes
- Note 71-S05: (Converter) Improved ADPCM encoding

#### Bug Fixes

- Note 71-S06: (Library) Fixed bug specific to offset for start of stream playback
- Note 71-S07: (Converter) Fixed bug specific to alignment of data within sound archives
- Note 71-S08: (Converter) Fixed bug specific to sound map file data size
- Note 71-S09: (Converter) Fixed bug specific to AIFF loading process

### 2007/03/14 Version

#### Added and Changed Features

- Note 64-S01: (SoundPlayer) Added a feature to SoundPlayer for changing output effects
- Note 64-S02: (SoundPlayer) Added a feature to SoundPlayer for displaying stream process loads
- Note 64-S03: (SoundPlayer) Added a feature to SoundPlayer for playing multiple sounds simultaneously
- Note 64-S04: (Converter) Added a feature for specifying alignment in sound archives
- Note 64-S05: (Converter) Added a feature for specifying sound archive conversion file types
- Note 64-S06: (Library) Added sound archive stream-related functions

#### Bug Fixes

- Note 64-S07: (Converter) Fixed a bug where a conversion error was being generated due to too many command-line arguments

### 2006/05/29 Version

#### Added and Changed Features

- Note 59-S01: (Converter/Library) Added the mute sequence command
- Note 59-S02: (Converter) Added a feature for accessing before and after labels in sound archive definition files
- Note 59-S03: (Converter) Extended the feature for expanding label names with embedded SMF text commands
- Note 59-S04: (Library) Added the `NNS_SndPlayerSetTrackMuteEx` function
- Note 59-S05: (Library) Added the `NNS_SndCaptureDestroyThread` function

#### Bug Fixes

- Note 59-S06: (Converter) Fixed a bug where the last wait command was missing during SMF Format 1 conversion
- Note 59-S07: (Converter) Fixed a bug where conversion was not being executed correctly for paths that included empty strings
- Note 59-S08: (Converter) Fixed a bug where the layout of the sound map file would break when creating a missing number for the group number

### 2005/09/01 Version

#### Added and Changed Features

- Note 50-S01: (Library) Playback of stream data in memory
- Note 50-S02: (Converter) Added an option for specifying an output filename for the sound archiver `sndarc`
- Note 50-S03: (Converter) Added an option for specifying a pre-process file for the sound archiver `sndarc`
- Note 50-S04: (Library) Added the `NNS_SndArcInitWithResult` function
- Note 50-S05: (Library) Added functions for getting capture status

#### Bug Fixes

- Note 50-S06: (Library) Fixed bug resulting in frequent `NNS_SndUpdateDriverInfo` function failures
- Note 50-S07: (Converter) Fixed bug where file paths not recognized by `sndarc` and `bankconv`

### 2005/06/06 Version

#### Added and Changed Features

- Note 45-S01: (Converter/Library) Added instrument setting to ignore Note Off
- Note 45-S02: (Converter) Added original key value specification in bank definition file
- Note 45-S03: (Documentation) Deleted sound driver (SND) function reference
- Note 45-S04: (Library) Added function to create thread for stream preparation

#### Bug Fixes

- Note 45-S05: (Library) Fixed problem with minor noise generation
- Note 45-S06: (SoundPlayer) Fixed bug in SoundPlayer real-time MIDI portamento
- Note 45-S07: (Converter) Corrected case-sensitivity problem with the `bankconv` drive letter

### 2005/03/28 Version

#### Added and Changed Features

- Note 43-S01: (Library) Added functionality to individually load waveform data to the player heap
- Note 43-S02: (Library) Added functionality to use player heap when playing sequence archives
- Note 43-S03: (Converter) Changed the sound map file (SMAP) format
- Note 43-S04: (Converter) Expanded numeric value notation in text files
- Note 43-S05: (Converter) Added a `NULL` type instrument
- Note 43-S06: (Library) Added a function to set the volume for each player
- Note 43-S07: (Library) Added function to set the track pan range
- Note 43-S08: (Library) Added function to get stream data time length
- Note 43-S09: (Library) Added functions to get sound driver information
- Note 43-S10: (Library) Added the `SND_COMMAND_IMMEDIATE` flag for the `SND_FlushCommand` function
- Note 43-S11: (Library) Added `SNDINST_NULL` to `SNDInstType`

#### Bug Fixes

- Note 43-S12: (Library) Fixed a bug where channels playing sounds with a portamento command were being released
- Note 43-S13: (SoundPlayer) Fixed a bug where data load could not be selected in during manual load mode when using SoundPlayer
- Note 43-S14: (Converter) Fixed a bug where an unnecessary wait was being inserted at the end of tracks when using `smfconv`
- Note 43-S15: (Converter) Fixed a bug where an invalid wait time was being output when using `smfconv`
- Note 43-S16: (Converter) Fixed a bug where an error would mistakenly occur when using `bankconv`

### 2005/01/31 Version

#### Added and Changed Features

- Note 39-S01: (Converter/Library) Added a feature for individually loading waveform data
- Note 39-S02: (Converter/Library) Added a feature that limits the channels used by a sequence
- Note 39-S03: (Converter) Updated for the UNC format path notation
- Note 39-S04: (Converter) Added syntax for the `#include<filename>` format
- Note 39-S05: (Converter/Library) Added the `printvar` sequence command
- Note 39-S06: (Converter) Eliminated case sensitivity in key notation
- Note 39-S07: (SoundPlayer) Improved the channel meter
- Note 39-S08: (Library) Added the `NNS_SndCaptureSetPostOutputEffectCallback` function
- Note 39-S09: (Library) Added a feature that limits the channels used by a sequence
- Note 39-S10: (Library) Added the `micThrough` demo

#### Bug Fixes

- Note 39-S11: (Converter) Fixed a bug with SMF converter
- Note 39-S12: (Library) Fixed bug where allocated channels were deallocated with `NNS_SndArcStrmStopAll`

### 2004/12/06 Version

#### Added and Changed Features

- Note 34-S01: (Converter/Library) Two-channel playback for monaural streams
- Note 34-S02: (Library) Added the `NNS_SndArcStrmStartEx2` function
- Note 34-S03: (Library) Made the sound driver thread–safe
- Note 34-S04: (Library) Call to the `NNS_SndArcStrmAllocChannel` function for the stream player playing back
- Note 34-S05: (Documentation) Added a caution regarding output effects

#### Bug Fixes

- Note 34-S06: (Library) Fixed a bug that prevented the generation of the note after `tieon`

### 2004/11/10 Version

#### Added and Changed Features

- Note 31-S01: (Library) Added resource management functions

#### Bug Fixes

- Note 31-S02: (Library) Sample of stream playback without loop
- Note 31-S03: (Library) Fixed a bug regarding switching the current sound archive during stream playback
- Note 31-S04: (Library) Fixed a bug with the `NNS_SndArcStrmSetChannelVolume` function
- Note 31-S05: (Converter) Fixed a bug with the sequence converter `seqconv` command analysis

### 2004/10/12 Version

#### Added and Changed Features

- Note 26-S01: (SoundPlayer) Added support for IS-AGB-MIDI
- Note 26-S02: (Library) Added an output effect feature
- Note 26-S03: (Library) Automated the sleep process
- Note 26-S04: (Library) Added functions to specify stream player
- Note 26-S05: (Library) Added functions to set monaural flags
- Note 26-S06: (Converter) Added a player label specification
- Note 26-S07: (Documentation) Added cautions regarding transition to Sleep Mode
- Note 26-S08: (Documentation) Added explanation for not interrupting stream
- Note 26-S09: (Documentation) Added an introductory description of output effects

#### Bug Fixes

- Note 26-S10: (Library) Fixed an infinite loop bug during sequence fadeout
- Note 26-S11: (Converter) Fixed a mistake in parsing the `@PATH` command
- Note 26-S12: (Library) Release channel process during sequence fadeout
- Note 26-S13: (Converter) Distinction between upper- and lowercase in filenames
- Note 26-S14: (Converter) `Waveconv` loop start location check

### 2004/09/16 Version

#### Added and Changed Features

- Note 21-S01: (Converter/Library) Extended the `loop_start` sequence command.
- Note 21-S02: (Converter/Library) Loop specification at the SMF track level
- Note 21-S03: (Converter) SMF loop specification
- Note 21-S04: (Converter) Extended SBDL files and changed names
- Note 21-S05: (Documentation) Standardized the naming of SADL files
- Note 21-S06: (Library) Added the `NNS_SndCaptureCreateThread` function
- Note 21-S07: (Library) Added the `NNS_SndCaptureStartSampling` function
- Note 21-S08: (Library) Added the `NNS_SndArcGetSeqArcSeqCount` function

#### Bug Fixes

- Note 21-S09: (Library) Fixed bug with `NNS_SndPLayerMoveVolume` function
- Note 21-S10: (Library) Uncontrollable sequence bug
- Note 21-S11: (SoundPlayer) Incorrect error message in SoundPlayer
- Note 21-S12: (Library) Mute off operation when mute is off
- Note 21-S13: (Converter) Updated bank list file
- Note 21-S14: (Converter) Sequence converter `seqconv` error check

### 2004/09/02 Version

#### Added and Changed Features

- Note 20-S01: (SoundPlayer) Real-time MIDI playback
- Note 20-S02: (Converter) Bank list file output
- Note 20-S03: (Converter) Embedded SMF text commands
- Note 20-S04: (Converter) Multiple definitions of the same label in sequence archives
- Note 20-S05: (Library) Sleep recovery feature
- Note 20-S06: (Library) Clearing of the sound heap
- Note 20-S07: (Library) Added the `NNS_SndArcSetup` function
- Note 20-S08: (Library) Added the `NNS_SndArcStrmSetupPlayer` function

#### Bug Fixes

- Note 20-S09: (Library) Player heap deallocation bug
- Note 20-S10: (Converter) Track output error of SMF converter `smfconv`
- Note 20-S11: (Converter) Drifting loop start point in SMF converter `smfconv`
- Note 20-S12: (Converter) Path parsing error for bank converter `bankconv`
- Note 20-S13: (Converter) `#define` multiple definition error

### 2004/08/10 Version

#### Added and Changed Features

- Note 16-S01: (General) Updated for stream playback
- Note 16-S02: (Converter) Made changes to the sound archive definition file
- Note 16-S03: (SoundPlayer) Updated for stream playback
- Note 16-S04: (Library) Added a sound archive stream library
- Note 16-S05: (Library) Added a stream library
- Note 16-S06: (Library) Added the `NNS_SndStopSoundAll` function
- Note 16-S07: (Library) Added the `NNS_SndHeapDestroy` function
- Note 16-S08: (Converter) Changed the name of SMF converter `smfconv` output label

#### Bug Fixes

- Note 16-S09: (Converter) Sound Archiver `sndarc` abnormal termination
- Note 16-S10: (Converter) Bank converter `bankconv` abnormal error
- Note 16-S11: (Converter) Irregular order of SMF converter `smfconv` meta event

### 2004/07/20 Version

#### Added and Changed Features

- Note 13-S01: (Converter/Library) Changed the binary data format
- Note 13-S02: (SoundPlayer) Changed the name of the executable file
- Note 13-S03: (General) Changed the default platform
- Note 13-S04: (SoundPlayer) Sequence type selection feature
- Note 13-S05: (Library) Added a waveform playback library
- Note 13-S06: (Library) Added an effect feature
- Note 13-S07: (Library) Changed the arguments of the `NNS_SndCaptureStartReverb` function
- Note 13-S08: (Library) Changed the `NNSSndArcBankInfo` structure
- Note 13-S09: (Library) Deleted functions
- Note 13-S10: (Converter/Library) Added the ability to use multiple waveform archives with a single bank
- Note 13-S11: (Converter) Option to delete sound archive symbol data

#### Bug Fixes

- Note 13-S12: (Converter) Mistake in the value for the maximum number of simultaneous sequence playback

### 2004/06/10 Version

#### Added and Changed Features

- Note 09-S01: (General) Migration from previous environment
- Note 09-S02: (General) Updated for file system
- Note 09-S03: (General) Changed the method of embedding sound data
- Note 09-S04: (General) Added memory management mechanism
- Note 09-S05: (Library) Sound library initialization
- Note 09-S06: (Library) Changed the ARM7 component
- Note 09-S07: (Converter) Changed the conversion command
- Note 09-S08: (SoundPlayer) Label name display
- Note 09-S09: (SoundPlayer) Added a manual load mode
- Note 09-S10: (Converter/Library) Multiple sequence playback
- Note 09-S11: (Converter/Library) Changed the upper limit on the number of players
- Note 09-S12: (Converter/Library) Specification of the number of simultaneous sequence playbacks
- Note 09-S13: (Library) Player priority during fadeout
- Note 09-S14: (Library) Adjusted release/delay
- Note 09-S15: (Converter) Sound map file output
- Note 09-S16: (Converter) Index number specification
- Note 09-S17: (Converter) Program number list output
- Note 09-S18: (Converter/Library) Added expressions
- Note 09-S19: (Converter) Added ability to use `sweep_pitch` from MIDI
- Note 09-S20: (Converter) Changed the maximum values for the `prg` and `mod_delay` commands
- Note 09-S21: (Converter/Library) Added the random command
- Note 09-S22: (Converter/Library) Added the variable command
- Note 09-S23: (Converter/Library) Added the control command
- Note 09-S24: (Library) Deleted the `NNS_SndArcPlayerInit` function
- Note 09-S25: (Library) Deleted the `NNS_SndArcPlayerStartSeqWithPlayerNo` function
- Note 09-S26: (Library) Changed function names
- Note 09-S27: (Library) Added sequence variable functions
- Note 09-S28: (Library) Added functions for getting the number of ticks
- Note 09-S29: (Library) Added other functions

#### Bug Fixes

- Note 09-S30: (Library) Fixed a bug where the sound priority setting was not being applied
- Note 09-S31: (Library) Fixed a bug related to assert of the `NNS_SndPlayerSetTrackPan` function
- Note 09-S32: (Library) Fixed a bug related to release when using the `NNS_SndPlayerStopSeq` function

## Changes in 2.1.0

### Note 81-S01: (Converter) Added support for converting data stored in Japanese-language folders

An error would occur when sound data stored in a folder named in Japanese was converted by SoundMaker or other programs. That bug has been fixed.

### Note 81-S02: (Documentation) Added description of `NNS_SndArcInitOnMemory`

Added a cautionary note about destroying Sound archives and loading different Sound archives to the same address.

### Note 81-S03: (Library) Updated `NNS_SndWaveOutStart` function to support IMA-ADPCM

Updated to include IMA-ADPCM among the waveform data formats that can be handled by the `NNS_SndWaveOutStart` function.

### Note 81-S04: (Converter) Fixed bug in data size alignment

The alignment size specified by the `--align` option in `sndarc.exe` was not being applied. That has been fixed. There was also an incorrect size value being output to the Sound Map file. That has also been fixed.

### Note 81-S05: (Documentation) Added description of `NNS_SndArcInit*`

Added mention in the references for the `NNS_SndArcInit*` functions that the sound archive data in NAND archives and SD Card archives cannot be used.

### Note 81-S06: (Converter) Added support for invalid loop information during waveform conversion

An error is now output when a waveform file with invalid loop information has been converted by `waveconv.exe`.

### Note 81-S07: (Documentation) Added explanation of SoundPlayer's TWL support

Explained in the Sound Designer Guide that hardware volume is displayed when `SoundPlayer` is used with the TWL or with IS-TWL-DEBUGGER. Also added an explanation of IS-TWL-MIDI support.

### Note 81-S08: (Documentation) Corrected sample data directory path

In the Quick Start Guide and the Sound Designer Guide, an incorrect path was give for directories containing sample data. This problem has been fixed.

### Note 81-S09: (Documentation) Added notes about using TWL-SDK's SND, SNDEX, and DSP functions

Added cautionary notes about using the TWL-SDK's SND, SNDEX, and DSP functions to the Sound Programmer Guide.

## Changes in 2.0.0 RC

### Note 78-S01: (Library) Fixed bug for stream thread stack size

The stream thread stack size was too small, causing memory to be destroyed when a stream callback consumed the stack. That bug has been fixed.

## Changes in Version 2008/04/08

### Note 76-S01: (Manual) Changed the format of the Revision History and revised the page headers

The Revision History has been changed, and the page headers have been revised in the following PDF manuals.

- `NITRO_Composer_BankDataManual.pdf`
- `NITRO_Composer_QuickStartGuide.pdf`
- `NITRO_Composer_SequenceDataManual.pdf`
- `NITRO_Composer_SoundArchiveManual.pdf`
- `NITRO_Composer_SoundDesignerGuide.pdf`
- `NITRO_Composer_SoundProgrammerGuide.pdf`
- `NITRO_Composer_SoundSystemManual.pdf`
- `NITRO_Composer_SoundToolManual.pdf`

## Changes in Version 2007/11/26

### Note 71-S01: (Library) Added a sound archive load block size setting

The following functions were added to set or get the load block size when loading data from a sound archive.

- `NNS_SndArcSetLoadBlockSize`
- `NNS_SndArcGetLoadBlockSize`

When the amount of data to load is larger than the specified load block size, the data is split into blocks equal to the load block size and loaded over several cycles.

### Note 71-S02: (Library) Function arguments converted to constants

Attached `const` to the following function arguments.

- `NNS_SndHandleIsValid`
- `NNS_SndStrmHandleIsValid`

### Note 71-S03: (Converter/SoundPlayer) Made MIDI RPN updates

Added support for MIDI RPN. With RPN LSB = 0, MSB = 0, it is possible to set pitch bend sensitivity (`bendrange`).

### Note 71-S04: (Converter/Library) Disabled sequence commands related to envelopes

For the `attck`, `decay`, `sustain`, `release`, and `envelope` sequence commands, once an envelope was set for the sequence, it was impossible to return to the bank setting. It is now possible, however, to disable the sequence setting and enable the bank setting by specifying -1 for any of the associated arguments.

### Note 71-S05: (Converter) Improved ADPCM encoding

Made improvements to mitigate noise generated during ADPCM encoding when using `waveconv` and `strmconv`.

### Note 71-S06: (Library) Fixed bug specific to offset for start of stream playback

The offset for the start of playback can be specified in the `NNS_SndArcStrmStart` function and elsewhere, but there was a problem that caused an overflow during library calculations, preventing the stream from starting at the specified offset. That bug has been fixed.

### Note 71-S07: (Converter) Fixed bug specific to alignment of data within sound archives

Changes in the 2007/03/14 version caused the alignment of data in the sound archive to shift. This resulted in a bug that triggered an assert during runs. This bug has been fixed.

However, sound data must be reconverted.

### Note 71-S08: (Converter) Fixed bug specific to sound map file data size

A bug was fixed where invalid values were output for the data size given in sound map files (SMAP) generated during sound archive conversion.

### Note 71-S09: (Converter) Fixed bug specific to AIFF loading process

Fixed a conversion error bug, despite its being the correct AIFF file, when using `waveconv` and `strmconv`.

## Changes in Version 2007/03/14

### Note 64-S01: (SoundPlayer) Added a feature to SoundPlayer for changing output effects

Functionality allowing output effects to be changed has been added to SoundPlayer.

### Note 64-S02: (SoundPlayer) Added a feature to SoundPlayer for displaying stream process loads

The process load of stream threads during stream playback is now displayed in the SoundPlayer window.

### Note 64-S03: (SoundPlayer) Added a feature to SoundPlayer for playing multiple sounds simultaneously

A feature for playing multiple sounds at beginning at the same time has been added to SoundPlayer. For more information, see the Sound Designer's Guide.

### Note 64-S04: (Converter) Added a feature for specifying alignment in sound archives

The `.align` option for specifying the alignment of sound data in an archive has been added to the sound archiver, `sndarc`. For more information, see the Sound Tool Manual.

### Note 64-S05: (Converter) Added a feature for specifying sound archive conversion file types

The `.convert` option for specifying the file to be converted by file type has been added to the sound archiver, `sndarc`. For more information, see the Sound Tool Manual.

### Note 64-S06: (Library) Added sound archive stream-related functions

The `NNS_SndArcStrmGetChannelCount` function for getting the number of channels in the stream data being played and the `NNS_SndArcStrmSetVolume` function for changing the audio volume of the stream have been added.

### Note 64-S07: (Converter) Fixed a bug where a conversion error was being generated due to too many command-line arguments

A bug has been fixed where a conversion error from too many command line arguments occurred when the number of files in a bank file, or similar file, increased.

## Changes in Version 2006/05/29

### Note 59-S01: (Converter/Library) Added the mute sequence command

A mute command for applying mute from within sequence data was added. This command works only with SDK version 3.1 or later. For more information, see the Sequence Data Manual.

### Note 59-S02: (Converter) Added functionality to access before and after labels in sound archive definition files

Up until now it was necessary to define labels to be used ahead of time in a sound archive definition file, but now it is possible to use labels defined later.

### Note 59-S03: (Converter) Extended the feature for expanding label names with embedded SMF text commands

When using functionality to expland a label name with an embedded SMF text command, it is now possible to expand only the track number without expanding the file name by using "$$" instead of "$". For more information, refer to Sequence Data Manual.

### Note 59-S04: (Library) Added the `NNS_SndPlayerSetTrackMuteEx` function

The `NNS_SndPlayerSetTrackMuteEx` function for applying mute without stopping the sound being played has been added. This function works only with SDK version 3.1 or later.

### Note 59-S05: (Library) Added the `NNS_SndCaptureDestroyThread` function

The `NNS_SndCaptureDestroyThread` function for terminating capture threads has been added.

### Note 59-S06: (Converter) Fixed a bug where the last wait command was missing during SMF Format 1 conversion

A bug has been fixed where a wait command that should be inserted at the end of tracks was being omitted when converting SMF Format 1 data.

### Note 59-S07: (Converter) Fixed a bug where conversion was not being executed correctly for paths that included empty strings

A bug has been fixed where conversion was not being handled properly when using a path that included an empty string.

### Note 59-S08: (Converter) Fixed a bug where the layout of the sound map file would break when creating a missing number for the group number

A bug was fixed where the layout of sound map files (SMAP) output during conversion was being destroyed when creating a missing number for a group by directly specifying the group number in a group definition in a sound archive definition file (SARC).

## Changes in Version 2005/09/01

### Note 50-S01: (Library) Playback of stream data in memory

Although playback of stream data contained in a sound archive initialized by `NNS_SndArcInitOnMemory` was impossible, the method that initializes the sound archive using `NNS_SndArcInit` can be used to play back stream data.

### Note 50-S02: (Converter) Added an option for specifying an output filename for the sound archiver `sndarc`

An option has been added that enables you to specify the file type of the output (that is, SDAT, SADL, and SBDL files) from the sound archiver `sndarc`. For more information, see the Sound Tool Manual.

### Note 50-S03: (Converter) Added an option for specifying a pre-process file for the sound archiver `sndarc`

An option has been added to specify as an argument the preprocess files that are processed before the sound archive definition file for the sound archiver `sndarc`. For more information, see the Sound Tool Manual.

### Note 50-S04: (Library) Added the `NNS_SndArcInitWithResult` function

Added the `NNS_SndArcInitWithResult` function to determine if sound-archive initialization was successful in loading a file. Use this function if file loading may fail. Using this function in place of the `NNS_SndArcInit` function lets you know the success or failure of sound-archive initialization. For more information, see the Function Reference.

### Note 50-S05: (Library) Added functions for getting capture status

Added two functions : `NNS_SndCaptureIsActive` retrieves the execution status of a capture, and `NNS_SndCaptureGetCaptureType` retrieves the type of the currently executing capture. For more information, see the Function Reference.

### Note 50-S06: (Library) Fixed bug resulting in frequent `NNS_SndUpdateDriverInfo` function failures

Fixed the `NNS_SndUpdateDriverInfo` function because calling the function failed one out of two times even if called once per frame.

### Note 50-S07: (Converter) Fixed bug where file paths not recognized by `sndarc` and `bankconv`

Fixed file path misinterpretation in which the sound archiver `sndarc` and bank converter `bankconv` would interpret file paths as relative paths not specified with `@PATH`. This issue lead to other issues such as inappropriate conversion errors.

## Changes in Version 2005/06/06

### Note 45-S01: (Converter/Library) Added instrument setting to ignore Note Off

Added the ability to define an instrument in the bank definition file that ignores Note Off and plays to the end of the waveform data. In the envelope's release setting, instead of a release value, enter “DISABLE”. This invalidates the release, and the sound plays at the same volume until the end of the waveform data even after the Note Off occurs. For more information, see the Bank Data Manual.

### Note 45-S02: (Converter) Added original key value specification in bank definition file

Added the ability to set the original key in the bank definition file using a value instead of key notation. For more information, see the Bank Data Manual.

### Note 45-S03: (Documentation) Deleted sound driver (SND) function reference

Included the sound driver (SND) source code and function reference in NITRO-SDK and deleted the sound driver (SND) function reference from the NITRO-System package.

### Note 45-S04: (Library) Added function to create thread for stream preparation

Added the `NNS_SndArcStrmCreatePrepareThread` function, which starts a thread that performs stream preparation. For more information, see the Reference Manual.

### Note 45-S05: (Library) Fixed bug resulting in minor noise generation

If a sequence was started and the volume was changed or another sequence was played immediately thereafter, minor noise was generated in some cases. This was fixed. This bug occurred when a series of sound functions was called and execution occurred during different sound frames, causing partially ready sounds to be played for an instant. To avoid this bug, the actual processing of sequence data is delayed until the invocation of the series of sound functions is complete.

### Note 45-S06: (SoundPlayer) Fixed bug in SoundPlayer real-time MIDI portamento

When playing a real-time MIDI with the SoundPlayer and using portamento, the pitch change started at the wrong position. This was fixed.

### Note 45-S07: (Converter) Corrected case-sensitivity problem with the `bankconv` drive letter

In the bank converter (`bankconv`), differences in the case of the drive letter caused the wrong file to be recognized. This was fixed.

## Changes in Version 2005/03/28

### Note 43-S01: (Library) Added functionality to individually load waveform data to the player heap

Revisions were made so the waveform data individual load feature now works when loading to the player heap.

### Note 43-S02: (Library) Added functionality to use player heap when playing sequence archives

Revisions were made so bank data and waveform data can be loaded to the player heap when playing a sequence archive. However, the sequence archive cannot load to the player heap. The data must be loaded to the sound heap in advance.

### Note 43-S03: (Converter) Changed the sound map file (SMAP) format

A part of the sound map file (SMAP) format was changed, and the heap size consumed when loading data can be output. For more information, see the Sound Archive Manual.

### Note 43-S04: (Converter) Expanded numeric value notation in text files

The sound archive definition file, the bank definition file, and the text sequence file were expanded to allow binary and bit notation as numeric value notation for parameters.

With binary notation, prepend “0b”, as in `0b001001`.

Bit notation is useful for describing a numeric value that carries a meaning that a specific bit is 0 or 1, such as a bit flag, and is written in the format { 1,3,6-8 }. The example indicates that the lower bits 1, 3, and the bits from 6 to 8 have a value of 1, or `0b111001010`. The lowest bit will be 0.

For more information, see the Sound Archive Manual, the Bank Data Manual, and the Sequence Data Manual. (The contents of each are identical.)

### Note 43-S05: (Converter) Added a `NULL` type instrument

Made it possible to define a `NULL` type instrument in the bank definition file. A `NULL` type instrument does not play any sound. For example, this can be used to create an instrument that does not play any sound for a given split by combining with a key split. For more information, see the Bank Data Manual.

### Note 43-S06: (Library) Added a function to set the volume for each player

The `NNS_SndPlayerSetPlayerVolume` function was added to allow the volume value to be configured for each player. For more information, see the Function Reference Manual.

### Note 43-S07: (Library) Added function to set the track pan range

The `NNS_SndPlayerSetTrackPanRange` function was added to allow the track pan range to be configured. The track pan range is a parameter that designates the variation range for the track pan configured in the sequence data. By changing the track pan range, the variation range for the track pan configured in the sequence data can be decreased.

### Note 43-S08: (Library) Added function to get stream data time length

The `NNS_SndArcStrmGetTimeLength` function was added to get the time length for the entire stream data. For more information, see the Function Reference Manual.

### Note 43-S09: (Library) Added functions to get sound driver information

Added functions to get information about the sound driver. These functions are listed below:

- `NNS_SndUpdateDriverInfo`
- `NNS_SndReadDriverChannelInfo`
- `NNS_SndPlayerReadDriverPlayerInfo`
- `NNS_SndPlayerReadDriverTrackInfo`

Also added the `driverInfo` demo, which displays the sound driver information onscreen using these functions.

### Note 43-S10: (Library) Added the `SND_COMMAND_IMMEDIATE` flag for the `SND_FlushCommand` function

Made it possible to specify `SND_COMMAND_IMMEDIATE` for the argument flag in the `SND_FlushCommand` function. When `SND_COMMAND_IMMEDIATE` is specified, issued commands are processed without waiting for the next sound frame.

### Note 43-S11: (Library) Added `SNDINST_NULL` to `SNDInstType`

Added `SND_INST_NULL` to the values that can be taken by the type member of the `SNDInstData` structure used by functions such as `SND_ReadInstData`. Instrument data set to `SND_INST_NULL` does not make any sound.

### Note 43-S12: (Library) Fixed a bug where channels playing sounds with a portamento command were being released

There was a bug that released all channels playing on corresponding tracks when the portamento commands `porta`, `porta_on`, and `porta_off` were executed in the sequence data. This bug was fixed. Also fixed the problem caused by this bug that caused sounds to be generated improperly when portamento commands were executed in tie mode.

### Note 43-S13: (SoundPlayer) Fixed a bug where data load could not be selected in during manual load mode when using SoundPlayer

Fixed the bug that prevented data from being loaded because the cursor could not move to the data load menu item while in the SoundPlayer manual load mode.

### Note 43-S14: (Converter) Fixed a bug where an unnecessary wait was being inserted at the end of tracks when using `smfconv`

Fixed the bug that caused an unnecessary wait command to be inserted at the end of each track in the SMFT file created when converting an SMF file.

### Note 43-S15: (Converter) Fixed a bug where an invalid wait time was being output when using `smfconv`

Fixed the bug that output an invalid wait time when there are multiple time signature events of the same timing in an SMF file.

### Note 43-S16: (Converter) Fixed a bug where an error would mistakenly occur when using `bankconv`

Fixed the bug that caused a false error when both an instrument label and an index number were specified in the bank definition file.

## Changes in Version 2005/01/31

### Note 39-S01: (Converter/Library) Added a feature for individually loading waveform data

Added a feature that allows the individual loading of waveform data in the waveform archive. If multiple banks are using common waveform data, this feature allows for a simple way of using memory more efficiently without having to use the waveform data group management feature. For more information, see the Sound Archive Manual.

### Note 39-S02: (Converter/Library) Added a feature that limits the channels used by a sequence

Added a feature that can limit the usable channels for a sequence on each player. It is now possible to specify bit flags for channels that can be allocated in the `@PLAYER` section inside a sound archive definition file. (May be omitted.) For more information, see the Sound Archive Manual.

### Note 39-S03: (Converter) Updated for the UNC format path notation

Revisions were made so that a UNC format path notation such as `//server-1/path/dir` can be used in `@PATH` and `#include`.

### Note 39-S04: (Converter) Added syntax for the `#include<filename>` format

Added an `#include<filename>` format that has the same feature as the `#include “filename”` in the text data file. If the `#include<filename>` format is used, it becomes the relative path from the sound archive definition file (SARC) rather than the relative path from the current file. For more information, see the Sound Tool Manual.

### Note 39-S05: (Converter/Library) Added the `printvar` sequence command

The sequence command `printvar` was added, which is used to debug output sequence variable values. When a sequence is played back with NITRO-Player or SoundPlayer, the sequence variable value can be displayed on the MCS server or the IS-NITRO-DEBUGGER output window. For more information, see the Sequence Data Manual.

### Note 39-S06: (Converter) Eliminated case sensitivity in key notation

Changes were made so that descriptions can be made in either capital or small letters for cn4 format key notation. For example, notations such as Cn4 or CN4 are both possible.

### Note 39-S07: (SoundPlayer) Improved the channel meter

Changes were made so that the channel meter that had been displayed on the upper screen with SoundPlayer is displayed on the lower screen to allow the display of detailed information.

### Note 39-S08: (Library) Added the `NNS_SndCaptureSetPostOutputEffectCallback` function

Added the `NNS_SndCaptureSetPostOutputEffectCallback` function, which registers the callback functions called as output effect postprocessors.

### Note 39-S09: (Library) Added a feature that limits the channels used by a sequence

Added a feature that can limit the channels that a sequence can use. Use the `NNS_SndPlayerSetAllocatableChannel` function when configuring each player. Use the `NNS_SndPlayerSetTrackAllocatableChannel` function when configuring each sequence playback. Specification for each track is also possible with this function. For more information, see the Sound System Manual or Function Reference.

### Note 39-S10: (Library) Added the `micThrough` demo

Added the `micThrough` demo, which plays back microphone input in real time by using the low-level stream library `NNS_SndStrm`.

### Note 39-S11: (Converter) Fixed a bug with SMF converter

There was a bug with an abnormal wait command being output if there were many MIDI events within one bar. This bug has been fixed.

### Note 39-S12: (Library) Fixed bug where allocated channels were deallocated with `NNS_SndArcStrmStopAll`

There was a bug where allocated channels were deallocated if the `NNS_SndArcStrmStopAll` or `NNS_SndStopSoundAll` function was called after allocating a channel with the `NNS_SndArcStrmAllocChannel` function. This bug has been fixed.

## Changes in Version 2004/12/06

### Note 34-S01: (Converter/Library) Two-channel playback for monaural streams

An optional feature was added to allow the use of two channels for playing mono stream data with stereo player so that the volume becomes louder. This feature becomes available if the option is specified when registering stream data in the sound archive definition file. For more information, see the Sound Archive Manual.

### Note 34-S02: (Library) Added the `NNS_SndArcStrmStartEx2` function

The `NNS_SndArcStrmStartEx2` and `NNS_SndArcStrmPrepareEx2` functions were added. With these functions, two callback functions can be registered in addition to the existing stream playback function feature. One of the callback functions that can be registered can put multiple stream data sets together in real time and play them. This demo is in `$NitroSystem/build/demos/snd/stream-2`. The other callback function applies effects to a specific stream playback. This demo is in `$NitroSystem/build/demos/snd/stream-3`. For more information, see the Function Reference.

### Note 34-S03: (Library) Made the sound driver thread–safe

Made all of the sound driver (SND) functions thread–safe.

### Note 34-S04: (Library) Call to the `NNS_SndArcStrmAllocChannel` function for the stream player playing back

Made changes so that the function fails when the `NNS_SndArcStrmAllocChannel` function was called for the stream player that is playing.

### Note 34-S05: (Documentation) Added a caution regarding output effects

Added a caution regarding the output effects in the Sound System Manual.

### Note 34-S06: (Library) Fixed a bug that prevented the generation of the note after `tieon`

If the command is defined in the order of note command, `tieon`, and note command in the sequence data, the sound of the second note was not generated. This bug was fixed.

## Changes in Version 2004/11/10

### Note 31-S01: (Library) Added resource management functions

Added a function that manages resources to avoid conflict with the NITRO-System library when using the sound driver (SND) function directly. The new functions are listed below.

- `NNS_SndLockChannel`
- `NNS_SndUnlockChannel`
- `NNS_SndLockCapture`
- `NNS_SndUnlockCapture`
- `NNS_SndAllockAlarm`
- `NNS_SndFreeAlarm`

See the Reference Manual for function details.

### Note 31-S02: (Library) Sample of stream playback without loop

When playing stream data without loops, the last several hundred samples did not play. We have fixed this bug so that all samples now play correctly.

### Note 31-S03: (Library) Fixed a bug regarding switching the current sound archive during stream playback

The stream did not playback correctly when the current sound archive was switched with the `NNS_SndArcSetCurrent` function during stream play. This bug has been fixed.

### Note 31-S04: (Library) Fixed a bug with the `NNS_SndArcStrmSetChannelVolume` function

There was a bug where the volume setting in the `NNS_SndArcStrmSetChannelVolume` function was not reflected correctly. This has been fixed.

### Note 31-S05: (Converter) Fixed a bug with the sequence converter `seqconv` command analysis

With sequence data, such as `cn4_r_if`, when attaching random and conditional assignments for note command, an error occurred during conversion. This bug has been fixed.

## Changes in Version 2004/10/12

### Note 26-S01: (SoundPlayer) Added support for IS-AGB-MIDI

Real-time MIDI playback can be performed using IS-AGB-MIDI instead of IS-NITRO-UIC MIDI. For more information on real-time MIDI playback, see the Sound Designer Guide.

### Note 26-S02: (Library) Added an output effect feature

Made it possible to apply Surround mode processing, Headphone mode processing, and Mono mode processing to the overall sound output using the `NNS_SndCaptureStartOutputEffect` function. The Surround mode makes the sound seem more spacious than the location of the speakers when sound is output from the speakers of the Nintendo DS system. The Headphone mode reduces the load on the ears when headphones are used. A sample demo has been added to the following location: `$NitroSystem/build/demos/snd/outputEffect`. See the Reference Manual for function details.

### Note 26-S03: (Library) Automated the sleep process

It is no longer necessary to call the functions that must be called before and after the sleep process: `NNS_SndBeginSleep`, `NNS_SndEndSleep`, `NNS_SndStrmBeginSleep`, and `NNS_SndStrmEndSleep`. These processes are performed automatically in the library.

### Note 26-S04: (Library) Added functions to specify stream player

Added functions for specifying the stream player number from the program: `NNS_SndArcStrmStartEx` and `NNS_SndArcStrmPrepareEx`.

### Note 26-S05: (Library) Added functions to set monaural flags

Added the `NNS_SndSetMonoFlag` function for ignoring the pan setting of each channel and producing all sounds at a central location. The `SND_SetMasterPan` and `SND_ResetMasterPan` functions were added to the sound driver to allow for the implementation of the `NNS_SndSetMonoFlag` function.

### Note 26-S06: (Converter) Added a player label specification

In the sound archive definition file, the player label that is defined by the `@PLAYER` section can be used instead of the player number that is specified by the `@SEQ` section. This applies only when the `@PLAYER` section is specified before the `@SEQ` section. You can also use the stream player label in the same way as is defined by the `@STRM_PLAYER` section of the `@STRM` section. When you want to use the player label in the `@SEQ_TABLE` section of a sequence archive, this can be done by getting the sound archive label (SBDL) file using `#include` in the same way as a bank label is used. Revised to use `sound_data.sarc` and `mus/se.mus` of the `$NitroSystem/tools/nitro/SoundPlayer/data` sample. Use these as references.

### Note 26-S07: (Documentation) Added cautions regarding transition to Sleep Mode

Added cautions to the Sound Programmer Guide for use when changing to the Sleep mode.

### Note 26-S08: (Documentation) Added explanation for not interrupting stream

Added an explanation to the Sound Programmer Guide for how to avoid interrupting stream play.

### Note 26-S09: (Documentation) Added an introductory description of output effects

Added an introduction to the Overview about output effects.

### Note 26-S10: (Library) Fixed an infinite loop bug during sequence fadeout

Fixed the infinite loop bug that occurs when a sequence is faded out using the following functions:

- `NNS_SndPlayerStopSeqByPlayerNo`
- `NNS_SndPlayerStopSeqBySeqNo`
- `NNS_SndPlayerStopSeqBySeqArcNo`
- `NNS_SndPlayerStopSeqBySeqArcIdx`
- `NNS_SndPlayerStopSeqAll`

### Note 26-S11: (Converter) Fixed a mistake in parsing the `@PATH` command

There were mistakes in the parsing of the `@PATH` command in the sound archive definition file and the bank definition file. When `#include` is used to include a file in another directory and if the `@PATH` command is used in the file in the include statement, the path was parsed as a relative path from the original directory. It was changed to parse as a relative path from the directory file that has the included file. Because of this fix, sound data that was converted successfully in previous conversions may have errors when they are converted. If this occurs, fix the `@PATH` specification so that it is a relative path from the directory where that file is.

### Note 26-S12: (Library) Release channel process during sequence fadeout

Fixed the bug where the volume of the channel being released did not attenuate during the sequence fadeout.

### Note 26-S13: (Converter) Distinction between upper- and lowercase in filenames

When registering bank definition files, if you specified multiple file names that only differ in case (upper or lower), each file was registered as separate data. This has been fixed so that the bank definition files are collected as a single set of data.

### Note 26-S14: (Converter) `Waveconv` loop start location check

An error message is now output if you attempt to convert a loop start when the loop start position is too far back to play the loop because of a hardware limitation. The threshold information has been included in the Sound Tool Manual.

## Changes in Version 2004/09/16

### Note 21-S01: (Converter/Library) Extended the `loop_start` sequence command.

You can now assign a value of 0 as the number of times that the `loop_start` sequence command must loop. If a value of 0 is assigned, the loop will be infinite.

### Note 21-S02: (Converter/Library) Loop specification at the SMF track level

If MIDI control changes 89 and 90 are used, loops can be made for individual tracks. For more information, see the Sequence Data Manual.

### Note 21-S03: (Converter) SMF loop specification

To specify all tracks to loop in SMF, markers "[" and "]" were used, but "loop_start" and "loop_end" can also be used. (The actual functionality has not changed.)

### Note 21-S04: (Converter) Extended SBDL files and changed names

Previously, only bank labels were defined in SBDL files. Now, labels that are defined in SARC sound archive definition files can also made to output. In addition, SBDL files, which were previously called bank list files, are now sound archive label files.

### Note 21-S05: (Documentation) Standardized the naming of SADL files

SADL files, which were previously called sound label lists, sound label list files, and sound label files, are now called sound label files.

### Note 21-S06: (Library) Added the `NNS_SndCaptureCreateThread` function

The `NNS_SndCaptureCreateThread` function, which starts up a capture thread, was added. When a capture thread is started, effect callback functions can be called from the capture thread rather than the IRQ handlers.

### Note 21-S07: (Library) Added the `NNS_SndCaptureStartSampling` function

The `NNS_SndCaptureStartSampling` function, which samples audio output, was added. Sampled data can be obtained with a callback function.

### Note 21-S08: (Library) Added the `NNS_SndArcGetSeqArcSeqCount` function

The `NNS_SndArcGetSeqArcSeqCount` function, which gets the number of sequences in a sequence archive, was added.

### Note 21-S09: (Library) Fixed bug with `NNS_SndPLayerMoveVolume` function

Fixed bug that caused the volume to become 0 or remain unchanged when a value of 0 was specified as the change frame count in the `NNS_SndPlayerMoveVolume` function.

### Note 21-S10: (Library) Uncontrollable sequence bug

Fixed the bug that caused the sequence that is being played to become unresponsive to control in extremely rare cases.

### Note 21-S11: (SoundPlayer) Incorrect error message in SoundPlayer

The message “Too Large Data” appeared when a sequence that has an invalid bank number is played. This message has been changed to “Invalid Bank No.”

### Note 21-S12: (Library) Mute off operation when mute is off

There was a problem that caused the sound being played to be stopped if Mute Off operation was performed when the sound was not muted, but this problem was fixed.

### Note 21-S13: (Converter) Updated bank list file

Fixed bug that updated the bank list files (SBDL) that were generated by the sound archiver `sndarc` even when the sound data was not modified. Now, these files are updated only when necessary.

### Note 21-S14: (Converter) Sequence converter `seqconv` error check

Previously, no error occurred when 32 was specified as the variable number that was used with variable commands. Now, an error will be registered.

## Changes in Version 2004/09/02

### Note 20-S01: (SoundPlayer) Real-time MIDI playback

It is now possible to use IS-NITRO-UIC MIDI for real-time MIDI playback. Because playback is done in real time using MIDI signals, the sequence data can be checked without converting the data. For more information, see the Sound Designer Guide.

For real-time MIDI playback, IS-NITRO-UIC MIDI is required.

### Note 20-S02: (Converter) Bank list file output

Changes were made to output bank list files (SBDL) when the sound archive `sndarc` is executed. The bank label that is defined in the sound archive definition file (SARC) is output by using `#define`. By using `#include` in the sequence archive text file and loading this file, a bank label can be used to specify the bank in `@SEQ_TABLE`. Also see `mus/se.mus` in the `$NitroSystem/tools/nitro/SoundPlayer/data` sample because the same mechanism has been applied.

### Note 20-S03: (Converter) Embedded SMF text commands

When text commands are embedded in SMF as markers, these text commands are output in the SMFT file when the file is converted. This allows you to use text commands in some parts of the file when using SMF. For more information, see the Sequence Data Manual.

### Note 20-S04: (Converter) Multiple definitions of the same label in sequence archives

Changes were made so that an error does not occur if the index numbers are the same when the same label is defined in different archives.

### Note 20-S05: (Library) Sleep recovery feature

Before and after the `PM_GoSleepMode` function that changes to the Sleep mode, call the `NNS_SndBeginSleep` and `NNS_SndEndSleep` functions to allow the system to return to the previous state when it awakes from the Sleep mode.

### Note 20-S06: (Library) Clearing of the sound heap

The sound archive management region and the sound heap region that includes the stream buffer can be released safely. To make the regions usable again, it is necessary to call various setup functions such as `NNS_SndArcSetup` and `NNS_SndArcStrmSetupPlayer`.

### Note 20-S07: (Library) Added the `NNS_SndArcSetup` function

Added the `NNS_SndArcSetup` function, which makes the sound archive that has released the sound archive management region usable again.

### Note 20-S08: (Library) Added the `NNS_SndArcStrmSetupPlayer` function

Added the `NNS_SndArcStrmSetupPlayer` function that makes the stream player that released the stream buffer usable again.

### Note 20-S09: (Library) Player heap deallocation bug

There was a bug that caused problems when releasing the region in the sound heap in which the player heap was allocated. This bug was fixed.

### Note 20-S10: (Converter) Track output error of SMF converter `smfconv`

Fixed the bug that output only the data in the first track when using one MIDI channel on multiple tracks. Also fixed the bug that output the data in the track that was not being used.

### Note 20-S11: (Converter) Drifting loop start point in SMF converter `smfconv`

Fixed the bug that caused the loop starting point to shift to the location of the note command when the loop start point was placed before the note command.

### Note 20-S12: (Converter) Path parsing error for bank converter `bankconv`

Fixed the bug that caused an error when `@WAVEARC` path was `@PATH “.”` in the sound archive definition (SARC) file.

### Note 20-S13: (Converter) `#define` multiple definition error

When the same symbol was defined twice with `#define` in text data files such as sound archive definition file and bank definition file, it became a multiple definition error even when the content was exactly the same. Changes were made so that it will be ignored if the contents are the same.

## Changes in Version 2004/08/10

### Note 16-S01: (General) Updated for stream playback

Stream playback is now possible. For details on features, see the Sound System Manual.

### Note 16-S02: (Converter) Made changes to the sound archive definition file

The stream data section, which registers the stream data, and the stream player information section, which registers the stream player, were added. For more information, see the Sound Designer Guide and the Sound Archive Manual.

### Note 16-S03: (SoundPlayer) Updated for stream playback

The SoundPlayer can now play stream data. For more information, see the Sound Designer Guide.

### Note 16-S04: (Library) Added a sound archive stream library

The Sound Archive Stream library, which plays stream data, was added. This is a group of functions that start with `NNS_SndArcStrm`. For more information, see the Sound Programmer Guide and the Reference Manual.

### Note 16-S05: (Library) Added a stream library

The Stream library, which is a lower-level library than the Sound Archive Stream library, was added. This is a group of functions that start with `NNS_SndStrm`. For more information, see the Reference Manual.

### Note 16-S06: (Library) Added the `NNS_SndStopSoundAll` function

The `NNS_SndStopSoundAll` function, which stops all sounds, was added. Before changing into sleep mode or turning off power to the sound circuitry, make sure to stop all sounds with this function.

### Note 16-S07: (Library) Added the `NNS_SndHeapDestroy` function

The `NNS_SndHeapDestroy` function, which destroys the sound heap, was added.

### Note 16-S08: (Converter) Changed the name of SMF converter `smfconv` output label

`smfconv` now adds the SMF filename to the beginning of the labels used in the SMFT file. For example, the file `sample.smft`, which results from converting `sample.mid`, previously contained the label `Track_0`. Now it contains the label `SMF_sample_Track_0`.

### Note 16-S09: (Converter) Sound Archiver `sndarc` abnormal termination

Previously, the sound archiver would terminate with an error when conversion was attempted using a sound archive definition file in which registration numbers of sequence data and so on were specified directly and some numbers contained no data. This bug is fixed.

### Note 16-S10: (Converter) Bank converter `bankconv` abnormal error

There was a bug that caused an error during bank conversion due to a mistake in the path interpretation when the directory trees of bank files and waveform list files are in certain state. This bug was fixed.

### Note 16-S11: (Converter) Irregular order of SMF converter `smfconv` meta event

If multiple meta-events occurred during the same tick, the output order would become irregular. This was corrected so that the output is now in the order stored in SMF.

## Changes in Version 2004/07/20

### Note 13-S01: (Converter/Library) Changed the binary data format

The binary format for the sound data has changed. Now, you must reconvert the sound data with `ReMakeSound.bat`. The bank data has grown slightly in size. If there is not enough memory, the data load may fail.

### Note 13-S02: (SoundPlayer) Changed the name of the executable file

The name of the executable file has changed from `SoundPlayer.bin` to `SoundPlayer.srl`.

### Note 13-S03: (General) Changed the default platform

Previously, the TEG executable file was created by default. Now, a TS executable file is created by default. To create a TEG executable file, set the `NITRO_PLATFORM` environment variable to `TEG`.

### Note 13-S04: (SoundPlayer) Sequence type selection feature

Previously, no more than two sequences and two sequence archives could be played at the same time. Now, you can select between playing any combination of sequences and sequence archives. For example, you can play up to four sequences simultaneously. To select the sequence type, move the +Control Pad up and down while pressing the L Button.

### Note 13-S05: (Library) Added a waveform playback library

Added a waveform playback library with function names that start with `NNS_SndWaveOut`. This waveform playback library allows you to directly play waveform data that is in memory, such as samples taken with the microphone. The demo program is in `$NitroSystem/build/demos/snd/waveout`.

### Note 13-S06: (Library) Added an effect feature

Added effects functionality that uses sound capture. By processing effects using a callback function, you can create effects such as low-pass filter can be applied on all sounds. The demo program is in `$NitroSystem/build/demos/snd/effect`.

### Note 13-S07: (Library) Changed the arguments of the `NNS_SndCaptureStartReverb` function

The type of the `format` argument of the `NNS_SndCaptureStartReverb` function was changed from `SNDCaptureFormat` to `NNSSndCaptureFormat`. For more information, see the Reference Manual.

### Note 13-S08: (Library) Changed the `NNSSndArcBankInfo` structure

The `waveArcNo` member of the `NNSSndArcBankInfo` structure was changed from u16 to u16[4] type. The previous value is stored in `waveArcNo[0]`.

### Note 13-S09: (Library) Deleted functions

The following deprecated functions were deleted.

- `NNS_SndArcPlayerInit`
- `NNS_SndArcPlayerStartSeqWithPlayerNo`
- `NNS_SndArcPlayerStartSeqArcWithPlayerNo`
- `NNS_SndPlayerStopSeqByNumber`
- `NNS_SndPlayerPauseByNumber`
- `NNS_SndPlayerCountPlayingSeqByNumber`
- `NNS_SndHandleReleasePlayer`

### Note 13-S10: (Converter/Library) Added the ability to use multiple waveform archives with a single bank

You can now associate multiple waveform archives (a maximum of four) with a single bank. For more information, see the Bank Data Manual or the Sound Archive Manual.

### Note 13-S11: (Converter) Option to delete sound archive symbol data

If you use the `-b` option with the `sndarc` sound archiver, the sound archive that is created will not include symbol data.

### Note 13-S12: (Converter) Mistake in the value for the maximum number of simultaneous sequence playback

Fixed the problem that caused an error when the value for the maximum number of simultaneous sequence playback in the sound archive definition file was specified as 16.

## Changes in Version 2004/06/10

### Note 09-S01: (General) Migration from previous environment

Copy the `MakeSound.bat` and `ReMakeSound.bat` files in the `$NitroSystem/tools/nitro/SoundPlayer/data` directory to the directory with the `sound_data.sarc` file. Then double-click `ReMakeSound.bat` to execute. This creates `sound_data.o`. Link it to the program as before. Thereafter, it can be used as it was in previous versions. However, this version offers support for a file system. Sound data management using the file system is recommended.

### Note 09-S02: (General) Updated for file system

Rather than linking to the program, sound data can now be stored in ROM and loaded.

### Note 09-S03: (General) Changed the method of embedding sound data

The `sound_data.o` file is no longer linked. Instead, `sound_data.sdat` is stored in ROM. Sound designers must provide programmers with a `sound_data.sdat` file rather than a `sound_data.o` file. Note that the `sound_data.sdat` format has changed. Be sure to use a properly converted `sound_data.sdat` file.

The programmer must store the `sound_data.sdat` file in ROM. For more information, see the Sound Programmer Guide.

### Note 09-S04: (General) Added memory management mechanism

Memory management is required for sound data. For more information, see the Sound System Manual, the Sound Designer Guide, and the Sound Programmer Guide.

### Note 09-S05: (Library) Sound library initialization

The sound library initialization process has changed. For more information, see the Sound Programmer Guide.

### Note 09-S06: (Library) Changed the ARM7 component

The name of the ARM7 component was changed from "prototype" to "ferret." For more information, see the Sound Programmer Guide.

### Note 09-S07: (Converter) Changed the conversion command

Previously, a `make` command was used for conversion. Now `MakeSound.bat` is used. `MakeSound.bat` can be executed by double-clicking it from Windows Explorer. To reconvert, use `ReMakeSound.bat` instead of `make rebuild`.

### Note 09-S08: (SoundPlayer) Label name display

Sequence label names can now be displayed on the SoundPlayer screen. When the X Button is pressed, the parameters are displayed as in the previous version.

### Note 09-S09: (SoundPlayer) Added a manual load mode

A manual loading mode was added to allow you to confirm the data size. For more information, see the Sound Programming Guide.

### Note 09-S10: (Converter/Library) Multiple sequence playback

A single player can now play multiple sequence files. The number of sequences that can be played simultaneously can be set individually for each player. (The default is 1.)

    @PLAYER
    3 : 3       ; Player 3 can play up to three sequences
    4 : 2       ; Player 4 can play up to two

### Note 09-S11: (Converter/Library) Changed the upper limit on the number of players

The number of players was increased from 16 to 32. However, the number of sequences that can be played simultaneously by the system is still 16.

### Note 09-S12: (Converter/Library) Specification of the number of simultaneous sequence playbacks

The sound archive can specify the number of sequences that can be played simultaneously on each player. If no number is specified, the default value is 1. Also, the number can be set in the program using the `NNS_SndPlayerSetPlayableSeqCount` function.

### Note 09-S13: (Library) Player priority during fadeout

Player priority was changed to 0 (lowest) during fadeout.

### Note 09-S14: (Library) Adjusted release/delay

The release and decay of the envelope were slightly modified so that faster release or decay is possible. Be aware that noise can be generated due to the rapid release if the release value is set to 127. The relationship between the previous values and the new values is as follows.

    Old Value     |   New Value   Correspondence
    51 - 127       |  Correspond to 49-125, respectively.
    47 - 50       |  Correspond to the same value minus 1 or 2, respectively.
    0 - 46          | No change.

### Note 09-S15: (Converter) Sound map file output

A sound map file is now saved when a sound archive is created. A sound map file is a text file that contains information about the data in the sound archive, such as the sound data size. The sound map file is in the same directory as the sound archive definition file, but has the `.smap` extension.

### Note 09-S16: (Converter) Index number specification

Sequence and bank numbers in the sound archive were previously assigned in order. Now, you can assign them yourself. Also, you can now assign index numbers to sequence tables for sequence archives. The format is as follows.

    * Specify only a label (the previous one)
    SEQ_TITLE_BGM: SMF, "title.mid" , ...

    * Specify both a label and a number
    SEQ_TITLE_BGM = 2: SMF, "title.mid" , ...

    * Specify only a number
    2: SMF, "title.mid" , ...

Previously each instrument in the bank definition file was assigned a number, but now you can also assign labels using the syntax above. If you assign labels, you can use the program number list file, which is explained below.

### Note 09-S17: (Converter) Program number list output

If you assign labels to the program numbers in the bank definition file, you can use the program number list file. This file allows you to replace program numbers with labels. An example is shown below.

    #define PRG_PIANO
    #define PRG_GUITAR 1
    #define PRG_HARP

This file is found in the same directory as the bank definition file, but uses the extension `.spdl`. By including this file in the text sequence archive, labels can be used instead of program numbers.

    #include "../bnk/se.spdl"

    test:
        prg PRG_PIANO
        cn4 64, 48
        fin

### Note 09-S18: (Converter/Library) Added expressions

MIDI control change 11 (“expression”) was converted to the `volume2` command. The `volume2` command functions just like the `volume` command, but generates its own individual effects.

### Note 09-S19: (Converter) Added ability to use `sweep_pitch` from MIDI

Previously, MIDI control change 28 was used for the `sweep_pitch` command, but MIDI control change 29 was converted to the `sweep_pitch` command, with 24 times its previous value. Using this control change, the pitch can be changed by ±2 octaves.

### Note 09-S20: (Converter) Changed the maximum values for the `prg` and `mod_delay` commands

The maximum value for the sequence commands `prg` and `mod_delay` was reduced from 65,535 to 32,767.

### Note 09-S21: (Converter/Library) Added the random command

You can now specify random numbers in some sequence commands.

    pitchbend_r -12, 12
    pan_r 64 - 32, 64 + 32
    Once the minimum and maximum values are specified, a random value is set within that range.
    The commands that permit the use of random numbers are listed in the Sequence Data Manual.

### Note 09-S22: (Converter/Library) Added the variable command

Variables can now be manipulated in a sequence. Using variables, you can easily create a sequence that rises in pitch with each iteration. For more information, see the Sequence Data Manual.

### Note 09-S23: (Converter/Library) Added the control command

Using variables, you can now control whether or not a sequence command is executed. For more information, see the Sequence Data Manual.

### Note 09-S24: (Library) Deleted the `NNS_SndArcPlayerInit` function

The `NNS_SndArcPlayerInit` function will be deleted. See the Function Reference for functions that replace it. This function remains for now, but will be completely deleted in the next release.

### Note 09-S25: (Library) Deleted the `NNS_SndArcPlayerStartSeqWithPlayerNo` function

The `NNS_SndArcPlayerStartSeqEx` and `NNS_SndArcPlayerStartSeqArcEx` functions were added. Because these functions can replace the `NNS_SndArcPlayerStartSeqWithPlayerNo` and `NNS_SndArcPlayerStartSeqArcWithPlayerNo` functions, the latter two functions will be deleted. These functions remain for now, but will be completely deleted in the next release.

### Note 09-S26: (Library) Changed function names

The names of the following functions were changed. The old function names remain, but they will be completely deleted in the next release.

    Deleted Function Names                  New Function Names
    NNS_SndHandleReleasePlayer              NNS_SndHandleReleaseSeq
    NNS_SndPlayerStopSeqByNumber            NNS_SndPlayerStopSeqByPlayerNo
    NNS_SndPlayerPauseSeqByNumber           NNS_SndPlayerPauseSeqByPlayerNo
    NNS_SndPlayerCountPlayingSeqByNumber    NNS_SndPlayerCountPlayingSeqByPlayerNo

### Note 09-S27: (Library) Added sequence variable functions

The `NNS_SndPlayerReadVariable` and `NNS_SndPlayerWriteVariable` functions can be used to read the variables set by the sequence data or to write to the variable in the sequence data. With these functions, you can view the status of a sequence being played back and alter its processing flow.

### Note 09-S28: (Library) Added functions for getting the number of ticks

With the `NNS_SndPlayerGetTick` function, you can view the tick count of the sequence being played.

### Note 09-S29: (Library) Added other functions

Many other functions were added. For more information, see the Function Reference.

### Note 09-S30: (Library) Fixed bug where sound priority setting was not applied

There was a bug that caused the voice priority setting in the sound data to be reflected incorrectly. This was fixed.

### Note 09-S31: (Library) Fixed a bug related to assert of the `NNS_SndPlayerSetTrackPan` function

Previously, an assert was generated when the pan argument was from -64 to 63. An assert is now generated when the value is from -128 to 127, as the specification requires.

### Note 09-S32: (Library) Fixed a bug related to release when using the `NNS_SndPlayerStopSeq` function

A bug caused sequences with long release values to stop abruptly when halted from the application. This was fixed.

CONFIDENTIAL