This overload implements loading from memory.
Assembly: Bass.Net (in Bass.Net.dll) Version: 18.104.22.168
public static int BASS_MusicLoad( IntPtr memory, long offset, int length, BASSFlag flags, int freq )
Public Shared Function BASS_MusicLoad ( memory As IntPtr, offset As Long, length As Integer, flags As BASSFlag, freq As Integer ) As Integer
- Type: SystemIntPtr
An unmanaged pointer to the memory location as an IntPtr.
- Type: SystemInt64
File offset to load the MOD music from.
- Type: SystemInt32
Data length... 0 = use all data up to the end of file. If length over-runs the end of the file, it'll automatically be lowered to the end of the file.
- Type: Un4seen.BassBASSFlag
A combination of these flags (see BASSFlag):
BASS_SAMPLE_8BITS Use 8-bit resolution. If neither this or the BASS_SAMPLE_FLOAT flags are specified, then the sample data will be 16-bit. BASS_SAMPLE_FLOAT Use 32-bit floating-point sample data. WDM drivers or the BASS_MUSIC_DECODE flag are required to use this flag in Windows. See Floating-point channels for more info. BASS_SAMPLE_MONO Decode/play the MOD music in mono (uses less CPU than stereo). This flag is automatically applied if BASS_DEVICE_MONO was specified when calling. BASS_SAMPLE_SOFTWARE Force the MOD music to not use hardware mixing. BASS_SAMPLE_3D Enable 3D functionality. This is ignored if BASS_DEVICE_3D wasn't specified when calling. 3D channels are mono, so BASS_SAMPLE_MONO is automatically applied. The SPEAKER flags can not be used together with this flag. BASS_SAMPLE_FX Requires DirectX 8 or above: Enable the old implementation of DirectX 8 effects. See the DX8 effect implementations section for details. Use BASS_ChannelSetFX(Int32, BASSFXType, Int32) to add effects to the music. BASS_SAMPLE_LOOP Loop the music. BASS_MUSIC_RAMP Use "normal" ramping (as used in FastTracker 2). BASS_MUSIC_RAMPS Use "sensitive" ramping". BASS_MUSIC_NONINTER Use non-interpolated mixing. This generally reduces the sound quality, but can be good for chip-tunes. BASS_MUSIC_SINCINTER Use sinc interpolated sample mixing. This increases the sound quality, but also requires quite a bit more processing. If neither this or the BASS_MUSIC_NONINTER flag is specified, linear interpolation is used. BASS_MUSIC_FT2MOD Play .MOD file as FastTracker 2 would. BASS_MUSIC_PT1MOD Play .MOD file as ProTracker 1 would. BASS_MUSIC_POSRESET Stop all notes when seeking (using BASS_ChannelSetPosition(Int32, Int64, BASSMode)). BASS_MUSIC_POSRESETEX Stop all notes and reset bpm/etc when seeking. BASS_MUSIC_SURROUND Apply XMPlay's surround sound to the music (ignored in mono). BASS_MUSIC_SURROUND2 Apply XMPlay's surround sound mode 2 to the music (ignored in mono). BASS_MUSIC_FT2PAN Apply FastTracker 2 panning to XM files. BASS_MUSIC_STOPBACK Stop the music when a backward jump effect is played. This stops musics that never reach the end from going into endless loops. Some MOD musics are designed to jump all over the place, so this flag would cause those to be stopped prematurely. If this flag is used together with the BASS_SAMPLE_LOOP flag, then the music would not be stopped but any BASS_SYNC_END sync would be triggered. BASS_MUSIC_PRESCAN Calculate the playback length of the music, and enable seeking in bytes. This slightly increases the time taken to load the music, depending on how long it is. In the case of musics that loop, the length until the loop occurs is calculated. Use BASS_ChannelGetLength to retrieve the length. BASS_MUSIC_NOSAMPLE Don't load the samples. This reduces the time taken to load the music, notably with MO3 files, which is useful if you just want to get the name and length of the music without playing it. BASS_MUSIC_AUTOFREE Automatically free the music when it ends. This allows you to play a music and forget about it, as BASS will automatically free the music's resources when it has reached the end or when BASS_ChannelStop(Int32) (or BASS_Stop) is called. Note that some musics never actually end on their own (ie. without you stopping them). BASS_MUSIC_DECODE Decode the music into sample data, without outputting it. Use BASS_ChannelGetData(Int32, IntPtr, Int32) to retrieve decoded sample data. BASS_SAMPLE_SOFTWARE/3D/FX/AUTOFREE are ignored when using this flag, as are the SPEAKER flags. BASS_SPEAKER_xxx Speaker assignment flags. The BASS_SAMPLE_MONO flag is automatically applied when using a mono speaker assignment flag.
- Type: SystemInt32
Sample rate to render/play the MOD music at... 0 = the rate specified in the call.
Return ValueType: Int32
If successful, the loaded music's handle is returned, else 0 is returned. Use BASS_ErrorGetCode to get the error code.
BASS uses the same code as XMPlay for it's MOD music support, giving the most accurate reproduction of MO3 / IT / XM / S3M / MTM / MOD / UMX files available from any sound system.
MO3s are treated and used in exactly the same way as normal MOD musics. The advantage of MO3s is that they can be a lot smaller with virtually identical quality. Playing a MO3 does not use any more CPU power than playing the original MOD version does. The only difference is a slightly longer load time as the samples are being decoded. MO3 files are created using the MO3 encoder available at the BASS website.
DMO effects (the same as available with BASS_ChannelSetFX(Int32, BASSFXType, Int32)) can be used in IT and XM files (and MO3 versions of them) created with Modplug Tracker. This allows effects to be added to a track without having to resort to an MP3 or OGG version, so it can remain small and still sound fancy. Of course, the effects require some CPU, so should not be used carelessly if performance is key. DirectX 8 (or above) is required for the effects to be heard - without that, the music can still be played, but the effects are disabled.
Ramping doesn't take a lot of extra processing and improves the sound quality by removing "clicks". Sensitive ramping leaves sharp attacked samples, while normal ramping can cause them to lose a-bit of their impact. Generally, normal ramping is recommended for XMs, and sensitive ramping for the other formats. But, some XMs may also sound better using sensitive ramping.
When loading a MOD music from memory, BASS does not use the memory after it's loaded the MOD music. So you can do whatever you want with the memory after calling this function. This means there is no need to pin the memory buffer for this method.
|BASS_ERROR_INIT||has not been successfully called.|
|BASS_ERROR_NOTAVAIL||The BASS_MUSIC_AUTOFREE flag is unavailable to decoding channels.|
|BASS_ERROR_FILEOPEN||The file could not be opened.|
|BASS_ERROR_FILEFORM||The file's format is not recognised/supported.|
|BASS_ERROR_FORMAT||The sample format is not supported by the device/drivers. If the stream is more than stereo or the BASS_SAMPLE_FLOAT flag is used, it could be that they are not supported.|
|BASS_ERROR_SPEAKER||The specified SPEAKER flags are invalid. The device/drivers do not support them, they are attempting to assign a stereo stream to a mono speaker or 3D functionality is enabled.|
|BASS_ERROR_MEM||There is insufficient memory.|
|BASS_ERROR_NO3D||Could not initialize 3D support.|
|BASS_ERROR_UNKNOWN||Some other mystery problem!|
Away from Windows, all mixing is done in software (by BASS), so the BASS_SAMPLE_SOFTWARE flag is unnecessary. The BASS_SAMPLE_FX flag is also ignored.
DMO effects are not supported in MOD music on Windows CE, and DirectX 8 (or above) is required on Windows. They are always available on other platforms, except for the following: Compressor, Gargle, and I3DL2Reverb. When a DMO effect is unavailable, the MOD music can still be played, but the effect will be disabled.