NNS_SndArcInitOnMemoryNNS_SndWaveOutStart function to support IMA-ADPCMNNS_SndArcInit*NNS_SndPlayerSetTrackMuteEx functionNNS_SndCaptureDestroyThread functionsndarcsndarcNNS_SndArcInitWithResult functionNNS_SndUpdateDriverInfo function failuressndarc and bankconvbankconv drive letterNULL type instrumentSND_COMMAND_IMMEDIATE flag for the SND_FlushCommand functionSNDINST_NULL to SNDInstTypesmfconvsmfconvbankconv#include<filename> formatprintvar sequence commandNNS_SndCaptureSetPostOutputEffectCallback functionmicThrough demoNNS_SndArcStrmStopAllNNS_SndArcStrmStartEx2 functionNNS_SndArcStrmAllocChannel function for the stream player playing backNNS_SndArcStrmSetChannelVolume functionseqconv command analysis@PATH commandWaveconv loop start location checkloop_start sequence command.NNS_SndCaptureCreateThread functionNNS_SndCaptureStartSampling functionNNS_SndArcGetSeqArcSeqCount functionNNS_SndPLayerMoveVolume functionseqconv error checkNNS_SndArcSetup functionNNS_SndArcStrmSetupPlayer functionsmfconvsmfconvbankconv#define multiple definition errorNNS_SndStopSoundAll functionNNS_SndHeapDestroy functionsmfconv output labelsndarc abnormal terminationbankconv abnormal errorsmfconv meta eventNNS_SndCaptureStartReverb functionNNSSndArcBankInfo structuresweep_pitch from MIDIprg and mod_delay commandsNNS_SndArcPlayerInit functionNNS_SndArcPlayerStartSeqWithPlayerNo functionNNS_SndPlayerSetTrackPan functionNNS_SndPlayerStopSeq functionAn 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.
NNS_SndArcInitOnMemoryAdded a cautionary note about destroying Sound archives and loading different Sound archives to the same address.
NNS_SndWaveOutStart function to support IMA-ADPCMUpdated to include IMA-ADPCM among the waveform data formats that can be handled by the NNS_SndWaveOutStart function.
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.
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.
An error is now output when a waveform file with invalid loop information has been converted by waveconv.exe.
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.
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.
Added cautionary notes about using the TWL-SDK's SND, SNDEX, and DSP functions to the Sound Programmer Guide.
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.
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
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.
Attached const to the following function arguments.
NNS_SndHandleIsValid
NNS_SndStrmHandleIsValid
Added support for MIDI RPN. With RPN LSB = 0, MSB = 0, it is possible to set pitch bend sensitivity (bendrange).
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.
Made improvements to mitigate noise generated during ADPCM encoding when using waveconv and strmconv.
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.
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.
A bug was fixed where invalid values were output for the data size given in sound map files (SMAP) generated during sound archive conversion.
Fixed a conversion error bug, despite its being the correct AIFF file, when using waveconv and strmconv.
Functionality allowing output effects to be changed has been added to SoundPlayer.
The process load of stream threads during stream playback is now displayed in the SoundPlayer window.
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.
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.
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.
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.
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.
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.
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.
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.
NNS_SndPlayerSetTrackMuteEx functionThe 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.
NNS_SndCaptureDestroyThread functionThe NNS_SndCaptureDestroyThread function for terminating capture threads has been added.
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.
A bug has been fixed where conversion was not being handled properly when using a path that included an empty string.
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).
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.
sndarcAn 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.
sndarcAn 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.
NNS_SndArcInitWithResult functionAdded 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.
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.
NNS_SndUpdateDriverInfo function failuresFixed the NNS_SndUpdateDriverInfo function because calling the function failed one out of two times even if called once per frame.
sndarc and bankconvFixed 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.
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.
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.
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.
Added the NNS_SndArcStrmCreatePrepareThread function, which starts a thread that performs stream preparation. For more information, see the Reference Manual.
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.
When playing a real-time MIDI with the SoundPlayer and using portamento, the pitch change started at the wrong position. This was fixed.
bankconv drive letterIn the bank converter (bankconv), differences in the case of the drive letter caused the wrong file to be recognized. This was fixed.
Revisions were made so the waveform data individual load feature now works when loading to the player heap.
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.
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.
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.)
NULL type instrumentMade 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.
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.
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.
The NNS_SndArcStrmGetTimeLength function was added to get the time length for the entire stream data. For more information, see the Function Reference Manual.
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.
SND_COMMAND_IMMEDIATE flag for the SND_FlushCommand functionMade 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.
SNDINST_NULL to SNDInstTypeAdded 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.
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.
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.
smfconvFixed 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.
smfconvFixed the bug that output an invalid wait time when there are multiple time signature events of the same timing in an SMF file.
bankconvFixed the bug that caused a false error when both an instrument label and an index number were specified in the bank definition file.
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.
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.
Revisions were made so that a UNC format path notation such as //server-1/path/dir can be used in @PATH and #include.
#include<filename> formatAdded 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.
printvar sequence commandThe 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.
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.
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.
NNS_SndCaptureSetPostOutputEffectCallback functionAdded the NNS_SndCaptureSetPostOutputEffectCallback function, which registers the callback functions called as output effect postprocessors.
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.
micThrough demoAdded the micThrough demo, which plays back microphone input in real time by using the low-level stream library NNS_SndStrm.
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.
NNS_SndArcStrmStopAllThere 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.
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.
NNS_SndArcStrmStartEx2 functionThe 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.
Made all of the sound driver (SND) functions thread–safe.
NNS_SndArcStrmAllocChannel function for the stream player playing backMade changes so that the function fails when the NNS_SndArcStrmAllocChannel function was called for the stream player that is playing.
Added a caution regarding the output effects in the Sound System Manual.
tieonIf 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.
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.
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.
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.
NNS_SndArcStrmSetChannelVolume functionThere was a bug where the volume setting in the NNS_SndArcStrmSetChannelVolume function was not reflected correctly. This has been fixed.
seqconv command analysisWith 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.
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.
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.
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.
Added functions for specifying the stream player number from the program: NNS_SndArcStrmStartEx and NNS_SndArcStrmPrepareEx.
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.
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.
Added cautions to the Sound Programmer Guide for use when changing to the Sleep mode.
Added an explanation to the Sound Programmer Guide for how to avoid interrupting stream play.
Added an introduction to the Overview about output effects.
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
@PATH commandThere 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.
Fixed the bug where the volume of the channel being released did not attenuate during the sequence fadeout.
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.
Waveconv loop start location checkAn 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.
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.
If MIDI control changes 89 and 90 are used, loops can be made for individual tracks. For more information, see the Sequence Data Manual.
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.)
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.
SADL files, which were previously called sound label lists, sound label list files, and sound label files, are now called sound label files.
NNS_SndCaptureCreateThread functionThe 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.
NNS_SndCaptureStartSampling functionThe NNS_SndCaptureStartSampling function, which samples audio output, was added. Sampled data can be obtained with a callback function.
NNS_SndArcGetSeqArcSeqCount functionThe NNS_SndArcGetSeqArcSeqCount function, which gets the number of sequences in a sequence archive, was added.
NNS_SndPLayerMoveVolume functionFixed 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.
Fixed the bug that caused the sequence that is being played to become unresponsive to control in extremely rare cases.
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.”
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.
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.
seqconv error checkPreviously, no error occurred when 32 was specified as the variable number that was used with variable commands. Now, an error will be registered.
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.
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.
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.
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.
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.
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.
NNS_SndArcSetup functionAdded the NNS_SndArcSetup function, which makes the sound archive that has released the sound archive management region usable again.
NNS_SndArcStrmSetupPlayer functionAdded the NNS_SndArcStrmSetupPlayer function that makes the stream player that released the stream buffer usable again.
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.
smfconvFixed 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.
smfconvFixed 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.
bankconvFixed the bug that caused an error when @WAVEARC path was @PATH “.” in the sound archive definition (SARC) file.
#define multiple definition errorWhen 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.
Stream playback is now possible. For details on features, see the Sound System Manual.
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.
The SoundPlayer can now play stream data. For more information, see the Sound Designer Guide.
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.
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.
NNS_SndStopSoundAll functionThe 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.
NNS_SndHeapDestroy functionThe NNS_SndHeapDestroy function, which destroys the sound heap, was added.
smfconv output labelsmfconv 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.
sndarc abnormal terminationPreviously, 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.
bankconv abnormal errorThere 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.
smfconv meta eventIf 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.
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.
The name of the executable file has changed from SoundPlayer.bin to SoundPlayer.srl.
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.
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.
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.
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.
NNS_SndCaptureStartReverb functionThe type of the format argument of the NNS_SndCaptureStartReverb function was changed from SNDCaptureFormat to NNSSndCaptureFormat. For more information, see the Reference Manual.
NNSSndArcBankInfo structureThe waveArcNo member of the NNSSndArcBankInfo structure was changed from u16 to u16[4] type. The previous value is stored in waveArcNo[0].
The following deprecated functions were deleted.
NNS_SndArcPlayerInit
NNS_SndArcPlayerStartSeqWithPlayerNo
NNS_SndArcPlayerStartSeqArcWithPlayerNo
NNS_SndPlayerStopSeqByNumber
NNS_SndPlayerPauseByNumber
NNS_SndPlayerCountPlayingSeqByNumber
NNS_SndHandleReleasePlayer
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.
If you use the -b option with the sndarc sound archiver, the sound archive that is created will not include symbol data.
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.
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.
Rather than linking to the program, sound data can now be stored in ROM and loaded.
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.
Memory management is required for sound data. For more information, see the Sound System Manual, the Sound Designer Guide, and the Sound Programmer Guide.
The sound library initialization process has changed. For more information, see the Sound Programmer Guide.
The name of the ARM7 component was changed from "prototype" to "ferret." For more information, see the Sound Programmer Guide.
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.
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.
A manual loading mode was added to allow you to confirm the data size. For more information, see the Sound Programming Guide.
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
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.
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.
Player priority was changed to 0 (lowest) during fadeout.
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.
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.
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.
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
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.
sweep_pitch from MIDIPreviously, 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.
prg and mod_delay commandsThe maximum value for the sequence commands prg and mod_delay was reduced from 65,535 to 32,767.
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.
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.
Using variables, you can now control whether or not a sequence command is executed. For more information, see the Sequence Data Manual.
NNS_SndArcPlayerInit functionThe 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.
NNS_SndArcPlayerStartSeqWithPlayerNo functionThe 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.
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
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.
With the NNS_SndPlayerGetTick function, you can view the tick count of the sequence being played.
Many other functions were added. For more information, see the Function Reference.
There was a bug that caused the voice priority setting in the sound data to be reflected incorrectly. This was fixed.
NNS_SndPlayerSetTrackPan functionPreviously, 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.
NNS_SndPlayerStopSeq functionA bug caused sequences with long release values to stop abruptly when halted from the application. This was fixed.
CONFIDENTIAL