diff --git a/Assets/Packages/ManagedBass.3.1.1.meta b/Assets/Packages/ManagedBass.3.1.1.meta new file mode 100644 index 00000000..bcf6cbe4 --- /dev/null +++ b/Assets/Packages/ManagedBass.3.1.1.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1f18268c93f9f014495786da1b60766f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.3.1.1/.signature.p7s b/Assets/Packages/ManagedBass.3.1.1/.signature.p7s new file mode 100644 index 00000000..612d9242 Binary files /dev/null and b/Assets/Packages/ManagedBass.3.1.1/.signature.p7s differ diff --git a/Assets/Packages/ManagedBass.3.1.1/LICENSE.md b/Assets/Packages/ManagedBass.3.1.1/LICENSE.md new file mode 100644 index 00000000..51cb76d4 --- /dev/null +++ b/Assets/Packages/ManagedBass.3.1.1/LICENSE.md @@ -0,0 +1,18 @@ +# ManagedBass +Copyright (c) 2016 [Mathew Sachin](https://github.com/MathewSachin) + +## The MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/Assets/Packages/ManagedBass.3.1.1/LICENSE.md.meta b/Assets/Packages/ManagedBass.3.1.1/LICENSE.md.meta new file mode 100644 index 00000000..496c5021 --- /dev/null +++ b/Assets/Packages/ManagedBass.3.1.1/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a6663c943b18bf142b6fa5c919232639 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.3.1.1/ManagedBass.nuspec b/Assets/Packages/ManagedBass.3.1.1/ManagedBass.nuspec new file mode 100644 index 00000000..73195fd6 --- /dev/null +++ b/Assets/Packages/ManagedBass.3.1.1/ManagedBass.nuspec @@ -0,0 +1,25 @@ + + + + ManagedBass + 3.1.1 + ManagedBass + MathewSachin + false + LICENSE.md + https://aka.ms/deprecateLicenseUrl + icon.png + https://github.com/ManagedBass/ManagedBass/ + .Net Wrapper for un4seen Audio Library. + ManagedBass Library for un4seen BASS. + + (c) 2016 Mathew Sachin + Bass Wasapi Asio Record Audio Music + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/ManagedBass.3.1.1/ManagedBass.nuspec.meta b/Assets/Packages/ManagedBass.3.1.1/ManagedBass.nuspec.meta new file mode 100644 index 00000000..082f73a2 --- /dev/null +++ b/Assets/Packages/ManagedBass.3.1.1/ManagedBass.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 00ea1d30c303ca745ac4435ed3576a7f +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.3.1.1/icon.png b/Assets/Packages/ManagedBass.3.1.1/icon.png new file mode 100644 index 00000000..2692e2bc Binary files /dev/null and b/Assets/Packages/ManagedBass.3.1.1/icon.png differ diff --git a/Assets/Packages/ManagedBass.3.1.1/icon.png.meta b/Assets/Packages/ManagedBass.3.1.1/icon.png.meta new file mode 100644 index 00000000..ab155356 --- /dev/null +++ b/Assets/Packages/ManagedBass.3.1.1/icon.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: 21185ab19935792418a5ebdde571c3b3 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.3.1.1/lib.meta b/Assets/Packages/ManagedBass.3.1.1/lib.meta new file mode 100644 index 00000000..05df0402 --- /dev/null +++ b/Assets/Packages/ManagedBass.3.1.1/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a74a23e6f28da15449d26f7654a4742d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.3.1.1/lib/net45.meta b/Assets/Packages/ManagedBass.3.1.1/lib/net45.meta new file mode 100644 index 00000000..1291ac5c --- /dev/null +++ b/Assets/Packages/ManagedBass.3.1.1/lib/net45.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dab671a2c592e984284edb5c604d515d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.3.1.1/lib/net45/ManagedBass.dll b/Assets/Packages/ManagedBass.3.1.1/lib/net45/ManagedBass.dll new file mode 100644 index 00000000..ceb11df0 Binary files /dev/null and b/Assets/Packages/ManagedBass.3.1.1/lib/net45/ManagedBass.dll differ diff --git a/Assets/Packages/ManagedBass.3.1.1/lib/net45/ManagedBass.dll.meta b/Assets/Packages/ManagedBass.3.1.1/lib/net45/ManagedBass.dll.meta new file mode 100644 index 00000000..782c9291 --- /dev/null +++ b/Assets/Packages/ManagedBass.3.1.1/lib/net45/ManagedBass.dll.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: 9e80e74054386684983deda5b27dc258 +labels: +- NuGetForUnity +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.3.1.1/lib/net45/ManagedBass.xml b/Assets/Packages/ManagedBass.3.1.1/lib/net45/ManagedBass.xml new file mode 100644 index 00000000..e86e797f --- /dev/null +++ b/Assets/Packages/ManagedBass.3.1.1/lib/net45/ManagedBass.xml @@ -0,0 +1,10894 @@ + + + + ManagedBass + + + + + Wraps bass.dll. + + + Supports: .mp3, .ogg, .wav, .mp2, .mp1, .aiff, .m2a, .mpa, .m1a, .mpg, .mpeg, .aif, .mp3pro, .bwf, .mus, + .mod, .mo3, .s3m, .xm, .it, .mtm, .umx, .mdz, .s3z, .itz, .xmz + + + + + BASS is a multiplatform audio library. + It's purpose is to provide the most powerful and efficient (yet easy to use), + sample, stream, MOD music, and recording functions. + All in a tiny DLL, under 100KB in size. + + + + + + Retrieves a pointer to a DirectSound object interface. (Available only on Windows) (Not much useful in .Net) + + The interface to retrieve. + + If successful, then a pointer to the requested object is returned, otherwise is returned. + Use to get the error code. + + + + + Retrieves a pointer to a DirectSound object interface. (Available only on Windows) (Not much useful in .Net) + + An HCHANNEL, HMUSIC or HSTREAM handle of which IDirectSoundBuffer is to be retrieved. + + If successful, then a pointer to an IDirectSoundBuffer is returned, otherwise is returned. + Use to get the error code. + + + + + Retrieves the current type of EAX environment and it's parameters. + + The EAX environment to get (one of the values). + The volume of the reverb. + The decay duration. + The damping. + + If succesful, then is returned, else is returned. + Use to get the error code. + + has not been successfully called. + The current device does not support EAX. + + When using multiple devices, the current thread's device setting (as set with ) determines which device this function call applies to. + Platform-specific + EAX and this function are only available on Windows + + + + + + Sets the parameters of EAX from a Preset. + + The EAX Environment. + + + + + Sets the type of EAX environment and it's parameters. + + The EAX environment. + The volume of the reverb... 0.0 (off) - 1.0 (max), less than 0.0 = leave current. + The time in seconds it takes the reverb to diminish by 60dB... 0.1 (min) - 20.0 (max), less than 0.0 = leave current. + The damping, high or low frequencies decay faster... 0.0 = high decays quickest, 1.0 = low/high decay equally, 2.0 = low decays quickest, less than 0.0 = leave current. + + If succesful, then is returned, else is returned. + Use to get the error code. + + has not been successfully called. + The current device does not support EAX. + + + The use of EAX requires that the output device supports EAX. + can be used to check that. + EAX only affects 3D channels, but EAX functions do Not require to apply the changes. + + When using multiple devices, the current thread's device setting (as set with ) determines which device this function call applies to. + Platform-specific + This function is only available on Windows. + + + + + + + Enable DirectSound's true play position mode on Windows Vista and newer? (default is true). + + + Unless this option is enabled, the reported playback position will advance in 10ms steps on Windows Vista and newer. + As well as affecting the precision of , this also affects the timing of non-mixtime syncs. + When this option is enabled, it allows finer position reporting but it also increases latency. + Changes only affect channels that are created afterwards, not any that already exist. + The and values + in the structure reflect the setting at the time of the device's call. + + + + + Include a "Default" entry in the output device list? (default is false). + + + BASS does not usually include a "Default" entry in its device list, + as that would ultimately map to one of the other devices and be a duplicate entry. + When the default device is requested in a call (with device = -1), + BASS will check the default device at that time, and initialize it. + But Windows 7 has the ability to automatically switch the default output to the new default device whenever it changes, + and in order for that to happen, the default device (rather than a specific device) needs to be used. + That is where this option comes in. + When enabled, the "Default" device will also become the default device to (with device = -1). + When the "Default" device is used, the functions work a bit differently to usual; + they deal with the "session" volume, which only affects the current process's output on the device, rather than the device's volume. + This option can only be set before or has been called. + + + + + Enable speaker assignment with panning/balance control on Windows Vista and newer? + + + Panning/balance control via the attribute is not available + when speaker assignment is used on Windows due to the way that the speaker assignment needs to be implemented there. + The situation is improved with Windows Vista, and speaker assignment can generally + be done in a way that does permit panning/balance control to be used at the same time, + but there may still be some drivers that it does not work properly with, + so it is disabled by default and can be enabled via this config option. + Changes only affect channels that are created afterwards, not any that already exist. + + Platform-specific: This config option is only available on Windows. + It is available on all Windows versions (not including CE), but only has effect on Windows Vista and newer. + Speaker assignment with panning/balance control is always possible on other platforms, + where BASS generates the final mix. + + + + + + Gets or Sets the Unicode character set in device information. + If true, device information will be in UTF-8 form. + Otherwise it will be ANSI. + + + This config option determines what character set is used in the + structure and by the function. + The default setting is ANSI, and it can only be changed before or + or or has been called. + Platform-specific: This config option is only available on Windows. + + + + + Play the audio from video files using Media Foundation? + + + This config option is only available on Windows, and only has effect on Windows Vista and newer. + + + + + UNDOCUMENTED: Disables Bass from setting system timer resolution. + + + + + Applies changes made to the 3D system. + + + + This function must be called to apply any changes made with , , or . + This allows multiple changes to be synchronized, and also improves performance. + + + This function applies 3D changes on all the initialized devices. + There's no need to re-call it for each individual device when using multiple devices. + + + + + + + + + + Retrieves the factors that affect the calculations of 3D sound. + + The distance factor. + The rolloff factor. + The doppler factor. + + If succesful, then is returned, else is returned. + Use to get the error code. + + has not been successfully called. + The device was not initialized with 3D support. + When using multiple devices, the current thread's device setting (as set with ) determines which device this function call applies to. + + + + + Sets the factors that affect the calculations of 3D sound. + + + The distance factor... less than 0.0 = leave current... examples: 1.0 = use meters, 0.9144 = use yards, 0.3048 = use feet. + By default BASS measures distances in meters, you can change this setting if you are using a different unit of measurement. + + The rolloff factor, how fast the sound quietens with distance... 0.0 (min) - 10.0 (max), less than 0.0 = leave current... examples: 0.0 = no rolloff, 1.0 = real world, 2.0 = 2x real. + + The doppler factor... 0.0 (min) - 10.0 (max), less than 0.0 = leave current... examples: 0.0 = no doppler, 1.0 = real world, 2.0 = 2x real. + The doppler effect is the way a sound appears to change pitch when it is moving towards or away from you (say hello to Einstein!). + The listener and sound velocity settings are used to calculate this effect, this value can be used to lessen or exaggerate the effect. + + + If succesful, then is returned, else is returned. + Use to get the error code. + + has not been successfully called. + The device was not initialized with 3D support. + + As with all 3D functions, use to apply the changes. + When using multiple devices, the current thread's device setting (as set with ) determines which device this function call applies to. + + + + + + + Retrieves the position, velocity, and orientation of the listener. + + The position of the listener + The listener's velocity + The direction that the listener's front is pointing + The direction that the listener's top is pointing + + If succesful, then is returned, else is returned. + Use to get the error code. + + has not been successfully called. + The device was not initialized with 3D support. + + The and parameters must both be retrieved in a single call, they can not be retrieved individually. + When using multiple devices, the current thread's device setting (as set with ) determines which device this function call applies to. + + + + + + + Sets the position, velocity, and orientation of the listener (i.e. the player). + + The position of the listener... = Leave Current. + The listener's velocity... = Leave Current. + The direction that the listener's front is pointing... = Leave Current. + The direction that the listener's top is pointing... = Leave Current. + + If succesful, then is returned, else is returned. + Use to get the error code. + + has not been successfully called. + The device was not initialized with 3D support. + + The and parameters must both be set in a single call, they can not be set individually. + When using multiple devices, the current thread's device setting (as set with ) determines which device this function call applies to. + + + + + + + + + The 3D algorithm for software mixed 3D channels. + + + + These algorithms only affect 3D channels that are being mixed in software. + can be used to check whether a channel is being software mixed. + + + Changing the algorithm only affects subsequently created or loaded samples, musics, or streams; + it does not affect any that already exist. + + Platform-specific + + On Windows, DirectX 7 or above is required for this option to have effect. + On other platforms, only the and options are available. + + + + + + Retrieves the 3D attributes of a sample, stream, or MOD music channel with 3D functionality. + + The channel handle... a HCHANNEL, HMUSIC, HSTREAM. + The 3D processing mode (see ). + The minimum distance. + The maximum distance. + The angle of the inside projection cone. + The angle of the outside projection cone. + The delta-volume outside the outer projection cone. + If succesful, then is returned, else is returned. Use to get the error code. + The and parameters must both be retrieved in a single call to this function (ie. you can't retrieve one without the other). + is not a valid channel. + The channel does not have 3D functionality. + + + + + + + + Sets the 3D attributes of a sample, stream, or MOD music channel with 3D functionality. + + The channel handle... a HCHANNEL, HMUSIC, HSTREAM. + The 3D processing mode + The minimum distance. The channel's volume is at maximum when the listener is within this distance... less than 0.0 = leave current. + The maximum distance. The channel's volume stops decreasing when the listener is beyond this distance... less than 0.0 = leave current. + The angle of the inside projection cone in degrees... 0 (no cone) - 360 (sphere), -1 = leave current. + The angle of the outside projection cone in degrees... 0 (no cone) - 360 (sphere), -1 = leave current. + The delta-volume outside the outer projection cone... 0 (silent) - 100 (same as inside the cone), -1 = leave current. + If succesful, then is returned, else is returned. Use to get the error code. + is not a valid channel. + The channel does not have 3D functionality. + One or more of the attribute values is invalid. + + The and parameters must both be set in a single call to this function (ie. you can't set one without the other). + The and angles decide how wide the sound is projected around the orientation angle. Within the inside angle the volume level is the channel volume, as set with . + Outside the outer angle, the volume changes according to the value. Between the inner and outer angles, the volume gradually changes between the inner and outer volume levels. + If the inner and outer angles are 360 degrees, then the sound is transmitted equally in all directions. + As with all 3D functions, use to apply the changes made. + + + + + + + + + Retrieves the 3D position of a sample, stream, or MOD music channel with 3D functionality. + + The channel handle... a HCHANNEL, HMUSIC, HSTREAM. + Position of the sound. + Orientation of the sound. + Velocity of the sound. + If succesful, then is returned, else is returned. Use to get the error code. + is not a valid channel. + The channel does not have 3D functionality. + + + + + + + + + + Sets the 3D position of a sample, stream, or MOD music channel with 3D functionality. + + The channel handle... a HCHANNEL, HMUSIC, HSTREAM. + Position of the sound. + Orientation of the sound. + Velocity of the sound. This is only used to calculate the doppler effect, and has no effect on the sound's position. + If succesful, then is returned, else is returned. Use to get the error code. + As with all 3D functions, must be called to apply the changes made. + is not a valid channel. + The channel does not have 3D functionality. + + + + + + + + + + + Gets the Formats supported by Bass separated by `;`. The list is not necessarily complete. + + + + + Updates the HSTREAM and HMUSIC channel playback buffers. + + The amount of data to render, in milliseconds. + If successful, then is returned, else is returned. Use to get the error code. + Updating is already in progress. + + When automatic updating is disabled, this function (or ) needs to be called to keep the playback buffers updated. + The parameter should include some safety margin, in case the next update cycle gets delayed. + For example, if calling this function every 100ms, 200 would be a reasonable parameter. + + + + + + + + Retrieves the current CPU usage of BASS as a percentage of total CPU time. + + + + This function includes the time taken to render stream (HSTREAM) and MOD music (HMUSIC) channels during playback, and any DSP functions set on those channels. + It slso includes any FX that are not using the "with FX flag" DX8 effect implementation. + + + The rendering of some add-on stream formats may not be entirely included, if they use additional decoding threads. + See the add-on documentation for details. + + + This function does not strictly tell the CPU usage, but rather how timely the processing is. + For example, if it takes 10ms to render 100ms of data, that would be 10%. + If the reported usage gets to 100%, that means the channel data is being played faster than it can be rendered, and Buffer underruns are likely to occur. + + + If automatic updating is disabled, then the value returned by this function is only updated after each call to . + usage is not included. + The CPU usage of an individual channel is available via the attribute. + + Platform-specific + + On Windows, the CPU usage does not include sample channels (HCHANNEL), which are mixed by the output device/drivers (hardware mixing) or Windows (software mixing). + On other platforms, the CPU usage does include sample playback as well as the generation of the final output mix. + + + + + + Retrieves the version of BASS that is loaded + + + + + Gets the Error that occured on the Last Bass function that was called. + + + + + Retrieves information on a channel. + + The channel Handle... a HCHANNEL, HMUSIC, HSTREAM, or HRECORD. + instance where to store the channel information at. + + If successful, is returned, else is returned. + Use to get the error code. + + is not a valid channel. + + + + Retrieves information on a channel. + + The channel Handle... a HCHANNEL, HMUSIC, HSTREAM, or HRECORD. + An instance of the structure. Throws on Error. + is not a valid channel. + + + + Sets up a User DSP function on a stream, MOD music, or recording channel. + + The channel Handle... a HSTREAM, HMUSIC, or HRECORD. + The callback function (see ). + User instance data to pass to the callback function. + + The priority of the new DSP, which determines it's position in the DSP chain. + DSPs with higher priority are called before those with lower. + + + If succesful, then the new DSP's Handle is returned, else 0 is returned. + Use to get the error code. + + is not a valid channel. + + The channel does not have to be playing to set a DSP function, they can be set before and while playing. + + Equally, you can also remove them at any time. + Use to remove a DSP function. + + + Multiple DSP functions may be used per channel, in which case the order that the functions are called is determined by their priorities. + Any DSPs that have the same priority are called in the order that they were added. + + + DSP functions can be applied to MOD musics and streams, but not samples. + If you want to apply a DSP function to a sample, then you should stream the sample. + + + Unlike Bass.Net, a reference to doesn't need to be held by you manually. + ManagedBass automatically holds a reference and frees it when the Channel is freed or DSP is removed via . + + + + + + Removes a DSP function from a stream, MOD music, or recording channel. + + The channel Handle... a HSTREAM, HMUSIC, or HRECORD. + Handle of the DSP function to remove from the channel (return value of a previous call). + If succesful, is returned, else is returned. Use to get the error code. + At least one of and is not valid. + + + + Sets up a synchronizer on a MOD music, stream or recording channel. + + The channel Handle... a HMUSIC, HSTREAM or HRECORD. + The Type of sync (see ). + The sync parameters, depends on the sync Type (see ). + The callback function which should be invoked with the sync. + User instance data to pass to the callback function. + + If succesful, then the new synchronizer's Handle is returned, else 0 is returned. + Use to get the error code. + + is not a valid channel. + An illegal was specified. + An illegal was specified. + + + Multiple synchronizers may be used per channel, and they can be set before and while playing. + Equally, synchronizers can also be removed at any time, using . + If the flag is used, then the sync is automatically removed after its first occurrence. + + The flag can be used with or / syncs to implement custom looping, by using in the callback. + A sync can also be used to add or remove DSP/FX at specific points, or change a HMUSIC channel's flags or attributes (see ). + The flag can also be useful with a sync, to reset DSP states after seeking. + + Several of the sync types are triggered in the process of rendering the channel's sample data; + for example, and syncs, when the rendering reaches the sync position or the end, respectively. + Those sync types should be set before starting playback or pre-buffering (ie. before any rendering), to avoid missing any early sync events. + + With recording channels, syncs are triggered just before the receives the block of data containing the sync position. + + Unlike Bass.Net, a reference to doesn't need to be held by you manually. + ManagedBass automatically holds a reference and frees it when the Channel is freed or Sync is removed via . + + + + + + Removes a synchronizer from a MOD music or stream channel. + + The channel Handle... a HMUSIC, HSTREAM or HRECORD. + Handle of the synchronizer to remove (return value of a previous call). + + If succesful, is returned, else is returned. + Use to get the error code. + + is not a valid channel. + + + + Starts (or resumes) playback of a sample, stream, MOD music, or recording. + + The channel Handle... a HCHANNEL / HMUSIC / HSTREAM / HRECORD Handle. + + Restart playback from the beginning? If Handle is a User stream, it's current Buffer contents are flushed. + If it's a MOD music, it's BPM/etc are automatically reset to their initial values. + + + If successful, is returned, else is returned. + Use to get the error code. + + is not a valid channel. + The output is paused/stopped, use to start it. + The channel is not playable, it's a "decoding channel". + Should not happen... check that a valid window Handle was used with . + + No hardware voices are available (HCHANNEL only). + This only occurs if the sample was loaded/created with the flag, + and is set in the sample's VAM mode, + and there are no hardware voices available to play it. + + + When streaming in blocks (), the restart parameter is ignored as it's not possible to go back to the start. + The parameter is also of no consequence with recording channels. + + + + + Pauses a sample, stream, MOD music, or recording. + + The channel Handle... a HCHANNEL / HMUSIC / HSTREAM / HRECORD Handle. + + If successful, is returned, else is returned. + Use to get the error code. + + The channel is not playing (or is not a valid channel). + The channel is not playable, it's a "decoding channel". + The channel is already paused. + + Use to resume a paused channel. + can be used to stop a paused channel. + + + + + Stops a sample, stream, MOD music, or recording. + + The channel Handle... a HCHANNEL, HMUSIC, HSTREAM or HRECORD Handle. + + If successful, is returned, else is returned. + Use to get the error code. + + is not a valid channel. + + + Stopping a User stream (created with ) will clear its Buffer contents, + and stopping a sample channel (HCHANNEL) will result in it being freed. + Use instead if you wish to stop a User stream and then resume it from the same point. + + + When used with a "decoding channel" ( was used at creation), + this function will end the channel at its current position, so that it's not possible to decode any more data from it. + Any syncs that have been set on the channel will not be triggered by this, they are only triggered when reaching the natural end. + can be used to reset the channel and start decoding again. + + + + + + Locks a stream, MOD music or recording channel to the current thread. + + The channel Handle... a HMUSIC, HSTREAM or HRECORD Handle. + If , unlock the channel, else lock it. + + If succesful, then is returned, else is returned. + Use to get the error code. + + + Locking a channel prevents other threads from performing most functions on it, including Buffer updates. + Other threads wanting to access a locked channel will block until it is unlocked, so a channel should only be locked very briefly. + A channel must be unlocked in the same thread that it was locked. + + + + + Checks if a sample, stream, or MOD music is active (playing) or stalled. Can also check if a recording is in progress. + + The channel Handle... a HCHANNEL, HMUSIC, HSTREAM, or HRECORD. + indicating whether the state of the channel. + + + + When using this function with a decoding channel, will be returned while there is still data to decode. + Once the end has been reached, will be returned. + is never returned for decoding channels; + you can tell a decoding channel is stalled if returns less data than requested, + and this function still returns . + + + + + + Links two MOD music or stream channels together. + + The channel Handle... a HMUSIC or HSTREAM. + The Handle of the channel to have linked with it... a HMUSIC or HSTREAM. + + If succesful, is returned, else is returned. + Use to get the error code. + + At least one of and is not a valid channel. + At least one of and is a "decoding channel", so can't be linked. + is already linked to . + Some other mystery problem! + + + Linked channels are started/stopped/paused/resumed together. + Links are one-way, for example, channel will be started by channel , + but not vice versa unless another link has been set in that direction. + + + If a linked channel has reached the end, it will not be restarted when a channel it is linked to is started. + If you want a linked channel to be restarted, you need to have resetted it's position using beforehand. + + Platform-specific + + Except for on Windows, linked channels on the same device are guaranteed to start playing simultaneously. + On Windows, it is possible for there to be a slight gap between them, but it will generally be shorter (and never longer) than starting them individually. + + + + + + Removes a links between two MOD music or stream channels. + + The channel Handle... a HMUSIC or HSTREAM. + The Handle of the channel to have unlinked with it... a HMUSIC or HSTREAM. + + If succesful, is returned, else is returned. + Use to get the error code. + + is not a valid channel. + Either is not a valid channel, or it is already not linked to . + + + + Modifies and retrieves a channel's flags. + + The channel Handle... a HCHANNEL, HMUSIC, HSTREAM. + + A combination of flags that can be toggled (see ). + Speaker assignment flags can also be toggled (HSTREAM/HMUSIC). + + + The flags (as above) to modify. Flags that are not included in this are left as they are, so it can be set to 0 in order to just retrieve the current flags. + To modify the speaker flags, any of the Speaker flags can be used in the mask (no need to include all of them). + + + If successful, the channel's updated flags are returned, else -1 is returned. + Use to get the error code. + + is not a valid channel. + + + Some flags may not be adjustable in some circumstances, so the return value should be checked to confirm any changes. + The flags listed above are just the flags that can be modified, and there may be additional flags present in the return value. + See the documentation for a full list of flags. + + + Streams that are created by add-ons may have additional flags available. + There is a limited number of possible flag values though, so some add-ons may use the same flag value for different things. + This means that when using add-on specific flags with a stream created via the plugin system, + it is a good idea to first confirm that the add-on is handling the stream, by checking its ctype via . + + + During playback, the effects of flag changes are not heard instantaneously, due to buffering. + To reduce the delay, use the config option to reduce the Buffer Length. + + + + + + Checks if a flag is present on a channel. + + The channel Handle... a HCHANNEL, HMUSIC, HSTREAM. + see + + + + Adds a flag to a channel. + + The channel Handle... a HCHANNEL, HMUSIC, HSTREAM. + see + + + + Removes a flag from a channel. + + The channel Handle... a HCHANNEL, HMUSIC, HSTREAM. + see + + + + Retrieves the value of an attribute of a sample, stream or MOD music. + Can also get the sample rate of a recording channel. + + The channel Handle... a HCHANNEL, HMUSIC, HSTREAM or HRECORD. + The attribute to set the value of (one of ) + Reference to a float to receive the attribute value. + If successful, is returned, else is returned. Use to get the error code. + + is not a valid channel. + is not valid. + + + + Retrieves the value of an attribute of a sample, stream or MOD music. + Can also get the sample rate of a recording channel. + + The channel Handle... a HCHANNEL, HMUSIC, HSTREAM or HRECORD. + The attribute to set the value of (one of ) + If successful, the attribute value is returned. Use to get the error code. + is not a valid channel. + is not valid. + + + + Retrieves the value of a channel's attribute. + + The channel handle... a HCHANNEL, HMUSIC, HSTREAM or HRECORD. + The attribute to get the value of (e.g. ) + Pointer to a buffer to receive the attribute data. + The size of the attribute data... 0 = get the size of the attribute without getting the data. + If successful, the size of the attribute data is returned, else 0 is returned. Use to get the error code. + This function also supports the floating-point attributes supported by . + is not a valid channel. + The is not available. + is not valid. + The content or is not valid. + + + + Sets the value of an attribute of a sample, stream or MOD music. + + The channel handle... a HCHANNEL, HMUSIC, HSTREAM or HRECORD. + The attribute to set the value of. + The new attribute value. See the attribute's documentation for details on the possible values. + If successful, is returned, else is returned. Use to get the error code. + + The actual attribute value may not be exactly the same as requested, due to precision differences. + For example, an attribute might only allow whole number values. + can be used to confirm what the value is. + + is not a valid channel. + is not valid. + is not valid. See the attribute's documentation for the valid range of values. + + + + Sets the value of an attribute of a sample, stream or MOD music. + + The channel handle... a HCHANNEL, HMUSIC, HSTREAM or HRECORD. + The attribute to set the value of. + The new attribute value. See the attribute's documentation for details on the possible values. + If successful, is returned, else is returned. Use to get the error code. + + The actual attribute value may not be exactly the same as requested, due to precision differences. + For example, an attribute might only allow whole number values. + can be used to confirm what the value is. + + is not a valid channel. + is not valid. + is not valid. See the attribute's documentation for the valid range of values. + + + + Sets the value of a channel's attribute. + + The channel handle... a HCHANNEL, HMUSIC, HSTREAM or HRECORD. + The attribute to set the value of. (e.g. ) + The pointer to the new attribute data. + The size of the attribute data. + If successful, is returned, else is returned. Use to get the error code. + is not a valid channel. + is not valid. + is not valid. See the attribute's documentation for the valid range of values. + + + + Retrieves the requested tags/headers from a channel, if they are available. + + The channel handle...a HMUSIC or HSTREAM. + The tags/headers wanted... + If succesful, a pointer to the data of the tags/headers is returned, else is returned. Use to get the error code. + + Some tags (eg. ) are located at the end of the file, so when streaming a file from the internet, the tags will not be available until the download is complete. + A sync can be set via , to be informed of when the download is complete. + A sync can be used to be informed of new Shoutcast metadata, and a sync for when a new logical bitstream begins in a chained OGG stream, which generally brings new OGG tags. + + In a chained OGG file containing multiple bitstreams, each bitstream will have its own tags. + To get the tags from a particular one, can be first used to seek to it. + + When a Media Foundation codec is in use, the tag can be used to find out what the source format is. + + is not valid. + The requested tags are not available. + + + + Retrieves the playback Length of a channel. + + The channel Handle... a HCHANNEL, HMUSIC, HSTREAM. HSAMPLE handles may also be used. + How to retrieve the Length (one of the flags). + + If succesful, then the channel's Length is returned, else -1 is returned. + Use to get the error code. + + is not a valid channel. + The Length is not available. + + + The exact Length of a stream will be returned once the whole file has been streamed, but until then it is not always possible to 100% accurately estimate the Length. + The Length is always exact for MP3/MP2/MP1 files when the flag is used in the call, otherwise it is an (usually accurate) estimation based on the file size. + The Length returned for OGG files will usually be exact (assuming the file is not corrupt), but when streaming from the internet (or "buffered" User file), it can be a very rough estimation until the whole file has been downloaded. + It will also be an estimate for chained OGG files that are not pre-scanned. + + Unless an OGG file contains a single bitstream, the number of bitstreams it contains will only be available if it was pre-scanned at the stream's creation. + Retrieving the Length of a MOD music requires that the flag was used in the call. + + + + + Translates a byte position into time (seconds), based on a channel's format. + + The channel Handle... a HCHANNEL, HMUSIC, HSTREAM, or HRECORD. HSAMPLE handles may also be used. + The position in Bytes to translate. + If successful, then the translated Length in seconds is returned, else a negative value is returned. Use to get the error code. + is not a valid channel. + The translation is based on the channel's initial sample rate, when it was created. + + + + Translates a time (seconds) position into bytes, based on a channel's format. + + The channel Handle... a HCHANNEL, HMUSIC, HSTREAM, or HRECORD. HSAMPLE handles may also be used. + The position to translate (in seconds, e.g. 0.03 = 30ms). + + If successful, then the translated Length in Bytes is returned, else -1 is returned. + Use to get the error code. + + is not a valid channel. + + The translation is based on the channel's initial sample rate, when it was created. + The return value is rounded down to the position of the nearest sample. + + + + + Retrieves the playback position of a sample, stream, or MOD music. Can also be used with a recording channel. + + The channel Handle... a HCHANNEL, HMUSIC, HSTREAM, or HRECORD. + How to retrieve the position + + If an error occurs, -1 is returned, use to get the error code. + If successful, the position is returned. + + is not a valid channel. + The requested position is not available. + Some other mystery problem! + With MOD music you might use the and methods to retrieve the order and the row values respectively. + + + + Sets the playback position of a sample, MOD music, or stream. + + The channel Handle... a HCHANNEL, HSTREAM or HMUSIC. + The position, in units determined by the . + How to set the position. + + If succesful, then is returned, else is returned. + Use to get the error code. + + is not a valid channel. + The stream is not a file stream. + The requested position is invalid, eg. beyond the end. + The download has not yet reached the requested position. + Some other mystery problem! + + + Setting the position of a MOD music in bytes (other than 0) requires that the flag was used in the call. + When setting the position in orders/rows, the channel's byte position (as reported by ) is reset to 0. + This is because it's not possible to get the byte position of an order/row position - it's possible that a position may never be played in the normal cause of events, or it may be played multiple times. + + + When changing the position of a MOD music, and the flag is active on the channel, all notes that were playing before the position changed will be stopped. + Otherwise, the notes will continue playing until they are stopped in the MOD music. + When setting the position in bytes, the BPM, "speed" and "global volume" are updated to what they would normally be at the new position. + Otherwise they are left as they were prior to the postion change, unless the seek position is 0 (the start), in which case they are also reset to the starting values (when using the flag). + When the flag is active, the BPM, speed and global volume are reset with every seek. + + + For MP3/MP2/MP1 streams, unless the file is scanned via the or the flag at stream creation, seeking will be approximate but generally still quite accurate. + Besides scanning, exact seeking can also be achieved with the flag. + + Seeking in internet file (and "buffered" User file) streams is possible once the download has reached the requested position, so long as the file is not being streamed in blocks . + User streams (created with ) are not seekable, but it is possible to reset a User stream (including its Buffer contents) by setting its position to byte 0. + The flag can be used to seek forwards in streams that are not normally seekable, like custom streams or internet streams that are using the flag, but it will only go as far as what is currently available; it will not wait for more data to be downloaded, for example. can be used to confirm what the new position actually is. + In some cases, particularly when the flag is used, the new position may not be what was requested. can be used to confirm what the new position actually is. + The flag works the same way as the flag, and can be used to delay the scanning until after the stream has been created. When a position beyond the end is requested, the call will fail ( error code) but the seek table and exact Length will have been scanned. + When a file has been scanned, all seeking (even without the flag) within the scanned part of it will use the scanned infomation. + + + + + Checks if an attribute (or any attribute) of a sample, stream, or MOD music is sliding. + + The channel Handle... a HCHANNEL, HMUSIC, HSTREAM or HRECORD. + The attribute to check for sliding (0 for any attribute). + If the attribute (or any) is sliding, then is returned, else is returned. + + + + Slides a channel's attribute from its current value to a new value. + + The channel Handle... a HCHANNEL, HSTREAM or HMUSIC, or HRECORD. + The attribute to slide the value of. + The new attribute value. See the attribute's documentation for details on the possible values. + The Length of time (in milliseconds) that it should take for the attribute to reach the . + Slide logarithmically. + If successful, then is returned, else is returned. Use to get the error code. + is not a valid channel. + is not valid. + + This function is similar to , except that the attribute is ramped to the value over the specified period of time. + Another difference is that the value is not pre-checked. If it is invalid, the slide will simply end early. + If an attribute is already sliding, then the old slide is stopped and replaced by the new one. + can be used to check if an attribute is currently sliding. A BASS_SYNC_SLIDE sync can also be set via , to be triggered at the end of a slide. + The sync will not be triggered in the case of an existing slide being replaced by a new one. + Attribute slides are unaffected by whether the channel is playing, paused or stopped. They carry on regardless. + + + + + Retrieves the level (peak amplitude) of a sample, stream, MOD music or recording channel. + + The channel handle... a HCHANNEL, HMUSIC, HSTREAM, or HRECORD. + + If an error occurs, -1 is returned, use to get the error code. + + If successful, the level of the left channel is returned in the low word (low 16-bits), and the level of the right channel is returned in the high word (high 16-bits). + If the channel is mono, then the low word is duplicated in the high word. + The level ranges linearly from 0 (silent) to 32768 (max). + 0 will be returned when a channel is stalled. + + + + + This function measures the level of the channel's sample data, not the level of the channel in the final output mix, + so the channel's volume and panning/balance (as set with , or ) does not affect it. + The effect of any DSP/FX set on the channel is present in the measurement, except for DX8 effects when using the "With FX flag" DX8 effect implementation. + + + For channels that are more than stereo, the left level will include all left channels (eg. front-left, rear-left, center), and the right will include all right (front-right, rear-right, LFE). + If there are an odd number of channels then the left and right levels will include all channels. + If the level of each individual channel is required, that is available from the other overload(s). + + + 20ms of data is inspected to calculate the level. + When used with a decoding channel, that means 20ms of data needs to be decoded from the channel in order to calculate the level, and that data is then gone, eg. it is not available to a subsequent call. + + + is not a valid channel. + The channel is not playing. + The decoding channel has reached the end. + Should not happen... check that a valid window handle was used with . + + + + Gets the Level of the Left Channel. + + + + + Gets the Level of the Right Channel. + + + + + Retrieves the level (peak amplitude) of a sample, stream, MOD music or recording channel. + + The channel handle... a HCHANNEL, HMUSIC, HSTREAM, or HRECORD. + The array in which the levels are to be returned. + How much data (in seconds) to look at to get the level (limited to 1 second). + What levels to retrieve. + + On success is returned - else , use to get the error code. + If successful, the requested levels are returned in the array. + + + This function operates in the same way as but has greater flexibility on how the level is measured. + The levels are not clipped, so may exceed +/-1.0 on floating-point channels. + + is not a valid channel. + The channel is not playing. + The decoding channel has reached the end. + Should not happen... check that a valid window handle was used with . + + + + Retrieves the level (peak amplitude) of a sample, stream, MOD music or recording channel. + + The channel handle... a HCHANNEL, HMUSIC, HSTREAM, or HRECORD. + How much data (in seconds) to look at to get the level (limited to 1 second). + What levels to retrieve. + Array of levels on success, else . Use to get the error code. + + This function operates in the same way as but has greater flexibility on how the level is measured. + The levels are not clipped, so may exceed +/-1.0 on floating-point channels. + + is not a valid channel. + The channel is not playing. + The decoding channel has reached the end. + Should not happen... check that a valid window handle was used with . + + + + Retrieves the immediate sample data (or an FFT representation of it) of a sample channel, stream, MOD music, or recording channel. + + The channel handle... a HCHANNEL, HMUSIC, HSTREAM, or HRECORD. + Location to write the data as an (can be when handle is a recording channel (HRECORD), to discard the requested amount of data from the recording buffer). + Number of bytes wanted, and/or the + If an error occurs, -1 is returned, use to get the error code. + When requesting FFT data, the number of bytes read from the channel (to perform the FFT) is returned. + When requesting sample data, the number of bytes written to buffer will be returned (not necessarily the same as the number of bytes read when using the or DataFlags.Fixed flag). + When using the flag, the number of bytes in the channel's buffer is returned. + + + + This function can only return as much data as has been written to the channel's buffer, so it may not always be possible to get the amount of data requested, especially if you request large amounts. + If you really do need large amounts, then increase the buffer lengths (). + The flag can be used to check how much data a channel's buffer contains at any time, including when stopped or stalled. + + When requesting data from a decoding channel, data is decoded directly from the channel's source (no playback buffer) and as much data as the channel has available can be decoded at a time. + When retrieving sample data, 8-bit samples are unsigned (0 to 255), 16-bit samples are signed (-32768 to 32767), 32-bit floating-point samples range from -1 to +1 (not clipped, so can actually be outside this range). + That is unless the flag is used, in which case, the sample data will be converted to 32-bit floating-point if it is not already, or if the DataFlags.Fixed flag is used, in which case the data will be coverted to 8.24 fixed-point. + + + Unless complex data is requested via the flag, the magnitudes of the first half of an FFT result are returned. + For example, with a 2048 sample FFT, there will be 1024 floating-point values returned. + If the DataFlags.Fixed flag is used, then the FFT values will be in 8.24 fixed-point form rather than floating-point. + Each value, or "bin", ranges from 0 to 1 (can actually go higher if the sample data is floating-point and not clipped). + The 1st bin contains the DC component, the 2nd contains the amplitude at 1/2048 of the channel's sample rate, followed by the amplitude at 2/2048, 3/2048, etc. + A Hann window is applied to the sample data to reduce leakage, unless the flag is used. + When a window is applied, it causes the DC component to leak into the next bin, but that can be removed (reduced to 0) by using the flag. + Doing so slightly increases the processing required though, so it should only be done when needed, which is when a window is applied and the 2nd bin value is important. + + + Channels that have 2 or more sample channels (ie. stereo or above) may have FFT performed on each individual channel, using the flag. + Without this flag, all of the channels are combined, and a single mono FFT is performed. + Performing the extra individual FFTs of course increases the amount of processing required. + The return values are interleaved in the same order as the channel's sample data, eg. stereo = left,right,left,etc. + + This function is most useful if you wish to visualize (eg. spectrum analyze) the sound. + Platform-specific: + The DataFlags.Fixed flag is only available on Android and Windows CE. + + is not a valid channel. + The channel has reached the end. + The flag was used with a decoding channel. + Should not happen... check that a valid window handle was used with . + + + + Retrieves the immediate sample data (or an FFT representation of it) of a sample channel, stream, MOD music, or recording channel. + + The channel handle... a HCHANNEL, HMUSIC, HSTREAM, or HRECORD. + Location to write the data as a byte[]. + Number of bytes wanted, and/or the + If an error occurs, -1 is returned, use to get the error code. + When requesting FFT data, the number of bytes read from the channel (to perform the FFT) is returned. + When requesting sample data, the number of bytes written to buffer will be returned (not necessarily the same as the number of bytes read when using the or DataFlags.Fixed flag). + When using the flag, the number of bytes in the channel's buffer is returned. + + + + + Retrieves the immediate sample data (or an FFT representation of it) of a sample channel, stream, MOD music, or recording channel. + + The channel handle... a HCHANNEL, HMUSIC, HSTREAM, or HRECORD. + Location to write the data as a short[]. + Number of bytes wanted, and/or the + If an error occurs, -1 is returned, use to get the error code. + When requesting FFT data, the number of bytes read from the channel (to perform the FFT) is returned. + When requesting sample data, the number of bytes written to buffer will be returned (not necessarily the same as the number of bytes read when using the or DataFlags.Fixed flag). + When using the flag, the number of bytes in the channel's buffer is returned. + + + + + Retrieves the immediate sample data (or an FFT representation of it) of a sample channel, stream, MOD music, or recording channel. + + The channel handle... a HCHANNEL, HMUSIC, HSTREAM, or HRECORD. + Location to write the data as a int[]. + Number of bytes wanted, and/or the + If an error occurs, -1 is returned, use to get the error code. + When requesting FFT data, the number of bytes read from the channel (to perform the FFT) is returned. + When requesting sample data, the number of bytes written to buffer will be returned (not necessarily the same as the number of bytes read when using the or DataFlags.Fixed flag). + When using the flag, the number of bytes in the channel's buffer is returned. + + + + + Retrieves the immediate sample data (or an FFT representation of it) of a sample channel, stream, MOD music, or recording channel. + + The channel handle... a HCHANNEL, HMUSIC, HSTREAM, or HRECORD. + Location to write the data as a float[]. + Number of bytes wanted, and/or the + If an error occurs, -1 is returned, use to get the error code. + When requesting FFT data, the number of bytes read from the channel (to perform the FFT) is returned. + When requesting sample data, the number of bytes written to buffer will be returned (not necessarily the same as the number of bytes read when using the or DataFlags.Fixed flag). + When using the flag, the number of bytes in the channel's buffer is returned. + + + + + Updates the playback buffer of a stream or MOD music. + + The channel handle... a HMUSIC or HSTREAM. + + The amount to render, in milliseconds... 0 = default (2 x ). + This is capped at the space available in the buffer. + + If successful, is returned, else is returned. Use to get the error code. + + + When starting playback of a stream or MOD music, after creating it or changing its position, there will be a slight delay while the initial data is decoded for playback. + Usually the delay is not noticeable or important, but if you need playback to start instantly when you call , then use this function first. + The length parameter should be at least equal to the . + + + It may not always be possible to render the requested amount of data, in which case this function will still succeed. + () can be used to check how much data a channel has buffered for playback. + + + When automatic updating is disabled ( = 0 or = 0), + this function could be used instead of to implement different update periods for different channels, + instead of a single update period for all. + Unlike , this function can also be used while automatic updating is enabled. + + The CPU usage of this function is not included in the reading. + + is not a valid channel. + Decoding channels do not have playback buffers. + The channel has ended. + Some other mystery problem! + + + + Configure BASS. + + One of values. + The New Value of the option. + If succesful, then is returned, else is returned. Use to get the error code. + + + + Configure BASS. + + One of values. + The New Value of the option. + If succesful, then is returned, else is returned. Use to get the error code. + + + + Configure BASS. + + One of values. + The New Value of the option. + If succesful, then is returned, else is returned. Use to get the error code. + + + + Get Configuration value. + + One of values. + The configuration value or -1 on error. Use to get the error code. + + + + Get Configuration value. + + One of values. + on error. Use to get the error code. + + + + Get boolean Configuration value. + + One of the values. + The configuration value. In case of error, is returned. + + + + Gets if Floating-Point audio is supported on the current platform. + + + + + The Buffer Length in milliseconds (default = 500). + + + + The minimum Length is 1ms above the update period (See ), + the maximum is 5000 milliseconds. + If the Length specified is outside this range, it is automatically capped. + Increasing the Length, decreases + the chance of the sound possibly breaking-up on slower computers, but also + increases the latency for DSP/FX. + + + Small Buffer lengths are only required if the sound is going to be changing in real-time, for example, in a soft-synth. + If you need to use a small Buffer, then the should be used to get the recommended + minimum Buffer Length supported by the device and it's drivers. + Even at this default Length, it's still possible that the sound could break up on some systems, + it's also possible that smaller buffers may be fine. + So when using small buffers, you should have an option in your software for the User to finetune the Length used, for optimal performance. + Using this config option only affects the HMUSIC/HSTREAM channels that you create afterwards, not the ones that have already been created. + So you can have channels with differing Buffer lengths by using this config option each time before creating them. + If automatic updating is disabled, make sure you call + frequently enough to keep the buffers updated. + + + + + + The update period of HSTREAM and HMUSIC channel playback buffers in milliseconds. + + + + 0 = disable automatic updating. + The minimum period is 5ms, the maximum is 100ms. + If the period specified is outside this range, it is automatically capped. + The default period is 100ms. + + + The update period is the amount of time between updates of the playback buffers of HSTREAM/HMUSIC channels. + Shorter update periods allow smaller buffers to be set with the option, but + as the rate of updates increases, so the overhead of setting up the updates becomes a greater part of the CPU usage. + The update period only affects HSTREAM and HMUSIC channels, it does not affect samples. + Nor does it have any effect on decoding channels, as they are not played. + BASS creates one or more threads (determined by ) + specifically to perform the updating, except when automatic updating is disabled + (period=0) - then you must regularly call or instead. + This allows you to synchronize BASS's CPU usage with your program's. + For example, in a game loop you could call + once per frame, which keeps all the processing in sync so that the frame rate is as smooth as possible. + should be called at least around 8 times per second, even more often if the + option is used to set smaller buffers. + The update period can be altered at any time, including during playback. + + + + + + Global sample volume level... 0 (silent) - 10000 (full). + + + This config option allows you to have control over the volume levels of all the samples, + which is useful for setup options (eg. separate music and fx volume controls). + A channel's final volume = channel volume * global volume / max volume. + So, for example, if a stream channel's volume is 0.5 and the global stream volume is 8000, + then effectively the stream's volume level is 0.4 (0.5 * 8000 / 10000 = 0.4). + + + + + Global stream volume level... 0 (silent) - 10000 (full). + + + This config option allows you to have control over the volume levels of all streams, + which is useful for setup options (eg. separate music and fx volume controls). + A channel's final volume = channel volume * global volume / max volume. + So, for example, if a stream channel's volume is 0.5 and the global stream volume is 8000, + then effectively the stream's volume level is 0.4 (0.5 * 8000 / 10000 = 0.4). + + + + + Global music volume level... 0 (silent) - 10000 (full). + + + This config option allows you to have control over the volume levels of all the MOD musics, + which is useful for setup options (eg. separate music and fx volume controls). + A channel's final volume = channel volume * global volume / max volume. + So, for example, if a stream channel's volume is 0.5 and the global stream volume is 8000, + then effectively the stream's volume level is 0.4 (0.5 * 8000 / 10000 = 0.4). + + + + + Volume translation curve... false = Linear (Default), true = Logarithmic. + + + DirectSound uses logarithmic volume and panning curves, which can be awkward to work with. + For example, with a logarithmic curve, the audible difference between 10000 and 9000, + is not the same as between 9000 and 8000. + With a linear "curve" the audible difference is spread equally across the whole range of values, + so in the previous example the audible difference between 10000 and 9000, + and between 9000 and 8000 would be identical. + When using the linear curve, the volume range is from 0% (silent) to 100% (full). + When using the logarithmic curve, the volume range is from -100 dB (effectively silent) to 0 dB (full). + For example, a volume level of 0.5 is 50% linear or -50 dB logarithmic. + + + + + Panning translation curve... false = Linear (Default), true = Logarithmic. + + + The panning curve affects panning in exactly the same way as the affects the volume. + + + + + Pass 32-bit floating-point sample data to all callback functions. + + + Normally DSP functions receive sample data in whatever format the channel is using, ie. it can be 8, 16 or 32-bit. + But using this config option, BASS will convert 8/16-bit sample data to 32-bit floating-point before passing + it to DSP functions, and then convert it back after all the DSP functions are done. + As well as simplifying the DSP code (no need for 8/16-bit processing), + this also means that there is no degradation of quality as sample data passes through a chain of DSP. + This config option also applies to effects set via , + except for DX8 effects when using the "With FX flag" DX8 effect implementation. + Changing the setting while there are DSP or FX set could cause problems, so should be avoided. + + Platform-specific: On Android and Windows CE, 8.24 bit fixed-point is used instead of floating-point. + Floating-point DX8 effect processing requires DirectX 9 (or above) on Windows. + + + + + + The number of threads to use for updating playback buffers... 0 = Disable automatic updating. + + + The number of update threads determines how many HSTREAM/HMUSIC channel playback buffers can be updated in parallel; + each thread can process one channel at a time. + The default is to use a single thread, but additional threads can be used to take advantage of multiple CPU cores. + There is generally nothing much to be gained by creating more threads than there are CPU cores, + but one benefit of using multiple threads even with a single CPU core is that + a slow updating channel need not delay the updating of other channels. + When automatic updating is disabled (threads = 0), or should be used instead. + The number of update threads can be changed at any time, including during playback. + Platform-specific: The number of update threads is limited to 1 on Windows CE platforms. + + + + + The Buffer Length (in bytes) for asynchronous file reading (default setting is 65536 bytes (64KB)). + + + This will be rounded up to the nearest 4096 byte (4KB) boundary. + This determines the amount of file data that can be read ahead of time with asynchronous file reading. + Changes only affect streams that are created afterwards, not any that already exist. + So it is possible to have streams with differing Buffer lengths + by using this config option before creating each of them. + When asynchronous file reading is enabled, the Buffer level is available from . + + + + + Gets the total number of HSTREAM/HSAMPLE/HMUSIC/HRECORD handles. + + + The Handle count may not only include the app-created stuff but also internal stuff. + + + + + Time (in milliseconds) to wait for a server to respond to a connection request. + The default timeout is 5 seconds (5000 milliseconds). + + + + + The time (in milliseconds) to wait for a server to deliver more data for an internet stream. (default=0, infinite). + When the timeout is hit, the connection with the server will be closed. + + + + + The internet download Buffer Length, in milliseconds. + + + Increasing the Buffer Length decreases the chance of the stream stalling, + but also increases the time taken by + to create the stream, as it has to pre-Buffer more data (adjustable via the option). + Aside from the pre-buffering, this setting has no effect on streams without either the + or flags. + When streaming in blocks, this option determines the download Buffer Length. + The effective Buffer Length can actually be a bit more than that specified, + including data that has been read from the Buffer by the decoder but not yet decoded. + This config option also determines the buffering used by "buffered" User file streams + created with . + The default Buffer Length is 5 seconds (5000 milliseconds). + The net Buffer Length should be larger than the Length of the playback Buffer (), + otherwise the stream is likely to briefly stall soon after starting playback. + Using this config option only affects streams created afterwards, not any that have already been created. + + + + + Prevent channels being played when the output is paused? (default = true) + + + When the output is paused using , and this config option is enabled, + channels can't be played until the output is resumed using . + Attempts to play a channel will give a error. + + + + + Amount (percentage) to pre-Buffer when opening internet streams. (default = 75%) + + + This setting determines what percentage of the Buffer Length () + should be filled by . + Setting this lower (eg. 0) is useful if you want to display a "buffering progress" (using ) + when opening internet streams, but note that this setting is just a minimum. + BASS will always pre-download a certain amount to verify the stream. + As well as internet streams, this config setting also applies to "buffered" User file streams + created with . + + + + + Use passive mode in FTP connections? (default = true) + Changes take effect from the next internet stream creation call. + + + + + Process URLs in PLS, M3U, WPL or ASX playlists?... + 0 = never (Default), + 1 = in only, + 2 = in and too. + + + When enabled, BASS will process PLS, M3U, WPL and ASX playlists, + going through each entry until it finds a URL that it can play. + + + + + The "User-Agent" request header sent to servers. + + + + + Proxy server settings (in the form of "User:pass@server:port"... null = don't use a proxy). "" (empty string) = use the OS's default proxy settings. + + + If only the "User:pass@" part is specified, then those authorization credentials are used with the default proxy server. + If only the "server:port" part is specified, then that proxy server is used without any authorization credentials. + Changes take effect from the next internet stream creation call. + + + + + The maximum number of virtual channels to use in the rendering of IT files... 1 (min) to 512 (max). (default = 64). + + + If the value specified is outside this range, it is automatically capped. + This setting only affects IT files, as the other MOD music formats do not have virtual channels. + Changes only apply to subsequently loaded files, not any that are already loaded. + + + + + The amount of data (in bytes) to check in order to verify/detect the file format... 1000 (min) to 100000 (max). (default = 16000 bytes). + + + If the value specified is outside this range, it is automatically capped. + Of the file formats supported as standard, this setting only affects the detection of MP3/MP2/MP1 formats, + but it may also be used by add-ons (see the documentation). + For internet (and "buffered" User file) streams, a quarter of the Length is used, up to a minimum of 1000 bytes. + The verification Length excludes any tags that may be at the start of the file. + For internet (and "buffered" User file) streams, the setting determines how much data is checked. + + + + + The amount of data to check (in bytes) in order to verify/detect the file format of internet streams... 1000 (min) to 1000000 (max), + or 0 = 25% of the setting (with a minimum of 1000 bytes). + + + If the value specified is outside this range, it is automatically capped. + Of the file formats supported as standard, this setting only affects the detection of MP3/MP2/MP1 formats, + but it may also be used by add-ons (see the documentation). + The verification Length excludes any tags that may be found at the start of the file. + The default setting is 0, which means 25% of the setting. + As well as internet streams, this config setting also applies to "buffered" User file streams + created with . + + + + + The output device Buffer Length in milliseconds. + + + The device Buffer is where the final mix of all playing channels is placed, ready for the device to play. + Its Length affects the latency of things like starting and stopping playback of a channel, + so you will probably want to avoid setting it unnecessarily high, + but setting it too short could result in breaks in the output. + When using a large device Buffer, the attribute could be used to skip the channel buffering stage, + to avoid further increasing latency for real-time generated sound and/or DSP/FX changes. + Changes to this config setting only affect subsequently initialized devices, not any that are already initialized. + This config option is only available on Linux, Android and Windows CE. + The device's Buffer is determined automatically on other platforms. + Platform-specific: + On Windows, this config option only applies when WASAPI output is used. + On Linux, the driver may choose to use a different Buffer Length + if it decides that the specified Length is too short or long. + The Buffer Length actually being used can be obtained with , + like this: + / 2. + + + + + Suppress silencing for corrupted MP3 frames. (default is false). + + + When BASS is detecting some corruption in an MP3 file's Huffman coding, + it silences the frame to avoid any unpleasent noises that can result from corruption. + Set this parameter to true in order to suppress this behavior. + This applies only to the regular BASS version and NOT the "mp3-free" version. + + + + + Gets or Sets the default sample rate conversion quality... + 0 = linear interpolation, + 1 = 8 point sinc interpolation (Default), + 2 = 16 point sinc interpolation, + 3 = 32 point sinc interpolation. + Other values are also accepted. + + + This config option determines what sample rate conversion + quality new channels will initially have, except for sample channels (HCHANNEL), + which use the setting. + A channel's sample rate conversion quality can subsequently + be changed via the attribute (see ). + + + + + Gets or Sets the default sample rate conversion quality for samples... + 0 = linear interpolation (Default), + 1 = 8 point sinc interpolation, + 2 = 16 point sinc interpolation, + 3 = 32 point sinc interpolation. + Other values are also accepted. + + + This config option determines what sample rate conversion quality a new sample + channel will initially have, following a call. + The channel's sample rate conversion quality can subsequently be changed + via the attribute (see ). + + + + + Pre-scan chained OGG files? (enabled by default) + + + This option is equivalent to including the flag + in a call when opening an OGG file. + It can be disabled if seeking and an accurate Length reading are not required from chained OGG files, + for faster stream creation. + + + + + Do not stop the output device when nothing is playing on it? + + + + + Creates a sample stream from an MP3, MP2, MP1, OGG, WAV, AIFF or plugin supported file. + + Filename for which a stream should be created. + File Offset to begin streaming from. + Data length... 0 = use all data up to the end of the file. + Any combination of . + If successful, the new stream's handle is returned, else 0 is returned. Use to get the error code. + + + BASS has built-in support for MPEG, OGG, WAV and AIFF files. + Support for additional formats is available via add-ons, which can be downloaded from the BASS website: www.un4seen.com. + + + MPEG 1.0, 2.0 and 2.5 layer 3 (MP3) files are supported, layers 1 (MP1) and 2 (MP2) are also supported. + Standard RIFF and RF64 WAV files are supported, with the sample data in a PCM format or compressed with an ACM codec, but the codec is required to be installed on the user's system for the WAV to be decoded. + So you should either distribute the codec with your software, or use a codec that comes with Windows (eg. Microsoft ADPCM). + All PCM formats from 8 to 32-bit are supported in WAV and AIFF files, but the output will be restricted to 16-bit unless the flag is used. + 64-bit floating-point WAV and AIFF files are also supported, but are rendered in 16-bit or 32-bit floating-point depending on the flags. + The file's original resolution is available via . + + + Chained OGG files containing multiple logical bitstreams are supported, but seeking within them is only fully supported if the flag is used (or the config option is enabled) to have them pre-scanned. + Without pre-scanning, seeking will only be possible back to the start. + The mode can be used with to get the number of bitstreams and with to seek to a particular one. + A sync can be set via to be informed of when a new bitstream begins during decoding/playback. + + Multi-channel (ie. more than stereo) OGG, WAV and AIFF files are supported. + + Use to retrieve information on the format (sample rate, resolution, channels) of the stream. + The playback length of the stream can be retrieved using . + + + If = 0 (use all data up to the end of the file), and the file length increases after creating the stream (ie. the file is still being written), then BASS will play the extra data too, but the length returned by will not be updated until the end is reached. + The return values will be updated during playback of the extra data though. + + + To stream a file from the internet, use . + To stream from other locations, see . + + Platform-specific + + On Windows and Windows CE, ACM codecs are supported with compressed WAV files. + Media Foundation codecs are also supported on Windows 7 and updated versions of Vista, including support for AAC/MP4 and WMA. + On iOS and OSX, CoreAudio codecs are supported, adding support for any file formats that have a codec installed. + Media Foundation and CoreAudio codecs are only tried after the built-in decoders and any plugins have rejected the file. + + + has not been successfully called. + Only decoding channels () are allowed when using the device. The flag is also unavailable to decoding channels. + The must be specified when streaming from memory. + The could not be opened. + The file's format is not recognised/supported. + The file uses a codec that's not available/supported. This can apply to WAV and AIFF files, and also MP3 files when using the "MP3-free" BASS version. + The sample format is not supported by the device/drivers. If the stream is more than stereo or the flag is used, it could be that they are not supported. + 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. + There is insufficient memory. + Could not initialize 3D support. + Some other mystery problem! + + + + Creates a sample stream from an MP3, MP2, MP1, OGG, WAV, AIFF or plugin supported memory IntPtr. + + An unmanaged pointer to the memory location as an IntPtr. + Offset to begin streaming from. + Data length (needs to be set to the length of the memory stream in bytes which should be played). + Any combination of . + If successful, the new stream's handle is returned, else 0 is returned. Use to get the error code. + + + BASS has built-in support for MPEG, OGG, WAV and AIFF files. + Support for additional formats is available via add-ons, which can be downloaded from the BASS website: www.un4seen.com. + + + MPEG 1.0, 2.0 and 2.5 layer 3 (MP3) files are supported, layers 1 (MP1) and 2 (MP2) are also supported. + Standard RIFF and RF64 WAV files are supported, with the sample data in a PCM format or compressed with an ACM codec, but the codec is required to be installed on the user's system for the WAV to be decoded. + So you should either distribute the codec with your software, or use a codec that comes with Windows (eg. Microsoft ADPCM). + All PCM formats from 8 to 32-bit are supported in WAV and AIFF files, but the output will be restricted to 16-bit unless the flag is used. + 64-bit floating-point WAV and AIFF files are also supported, but are rendered in 16-bit or 32-bit floating-point depending on the flags. + The file's original resolution is available via . + + + Chained OGG files containing multiple logical bitstreams are supported, but seeking within them is only fully supported if the flag is used (or the config option is enabled) to have them pre-scanned. + Without pre-scanning, seeking will only be possible back to the start. + The mode can be used with to get the number of bitstreams and with to seek to a particular one. + A sync can be set via to be informed of when a new bitstream begins during decoding/playback. + + Multi-channel (ie. more than stereo) OGG, WAV and AIFF files are supported. + + Use to retrieve information on the format (sample rate, resolution, channels) of the stream. + The playback length of the stream can be retrieved using . + + + If = 0 (use all data up to the end of the file), and the file length increases after creating the stream (ie. the file is still being written), then BASS will play the extra data too, but the length returned by will not be updated until the end is reached. + The return values will be updated during playback of the extra data though. + + + When streaming from memory, the memory must not be freed before the stream is freed. + There may be exceptions to that with some add-ons (see the documentation). + + + To stream a file from the internet, use . + To stream from other locations, see . + + The Memory buffer must be pinned when using this overload. + Platform-specific + + On Windows and Windows CE, ACM codecs are supported with compressed WAV files. + Media Foundation codecs are also supported on Windows 7 and updated versions of Vista, including support for AAC/MP4 and WMA. + On iOS and OSX, CoreAudio codecs are supported, adding support for any file formats that have a codec installed. + Media Foundation and CoreAudio codecs are only tried after the built-in decoders and any plugins have rejected the file. + + + has not been successfully called. + Only decoding channels () are allowed when using the device. The flag is also unavailable to decoding channels. + The must be specified when streaming from memory. + The file's format is not recognised/supported. + The file uses a codec that's not available/supported. This can apply to WAV and AIFF files, and also MP3 files when using the "MP3-free" BASS version. + The sample format is not supported by the device/drivers. If the stream is more than stereo or the flag is used, it could be that they are not supported. + 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. + There is insufficient memory. + Could not initialize 3D support. + Some other mystery problem! + + + + Creates a sample stream from an MP3, MP2, MP1, OGG, WAV, AIFF or plugin supported file in memory (byte[]). + + A byte[] containing file data. + Offset to begin streaming from. + Data length (needs to be set to the length of the memory stream in bytes which should be played). + Any combination of . + If successful, the new stream's handle is returned, else 0 is returned. Use to get the error code. + + + BASS has built-in support for MPEG, OGG, WAV and AIFF files. + Support for additional formats is available via add-ons, which can be downloaded from the BASS website: www.un4seen.com. + + + MPEG 1.0, 2.0 and 2.5 layer 3 (MP3) files are supported, layers 1 (MP1) and 2 (MP2) are also supported. + Standard RIFF and RF64 WAV files are supported, with the sample data in a PCM format or compressed with an ACM codec, but the codec is required to be installed on the user's system for the WAV to be decoded. + So you should either distribute the codec with your software, or use a codec that comes with Windows (eg. Microsoft ADPCM). + All PCM formats from 8 to 32-bit are supported in WAV and AIFF files, but the output will be restricted to 16-bit unless the flag is used. + 64-bit floating-point WAV and AIFF files are also supported, but are rendered in 16-bit or 32-bit floating-point depending on the flags. + The file's original resolution is available via . + + + Chained OGG files containing multiple logical bitstreams are supported, but seeking within them is only fully supported if the flag is used (or the config option is enabled) to have them pre-scanned. + Without pre-scanning, seeking will only be possible back to the start. + The mode can be used with to get the number of bitstreams and with to seek to a particular one. + A sync can be set via to be informed of when a new bitstream begins during decoding/playback. + + Multi-channel (ie. more than stereo) OGG, WAV and AIFF files are supported. + + Use to retrieve information on the format (sample rate, resolution, channels) of the stream. + The playback length of the stream can be retrieved using . + + + If = 0 (use all data up to the end of the file), and the file length increases after creating the stream (ie. the file is still being written), then BASS will play the extra data too, but the length returned by will not be updated until the end is reached. + The return values will be updated during playback of the extra data though. + + + The is pinned by this overload and freed when the stream is freed. + + + To stream a file from the internet, use . + To stream from other locations, see . + + Platform-specific + + On Windows and Windows CE, ACM codecs are supported with compressed WAV files. + Media Foundation codecs are also supported on Windows 7 and updated versions of Vista, including support for AAC/MP4 and WMA. + On iOS and OSX, CoreAudio codecs are supported, adding support for any file formats that have a codec installed. + Media Foundation and CoreAudio codecs are only tried after the built-in decoders and any plugins have rejected the file. + + + has not been successfully called. + Only decoding channels () are allowed when using the device. The flag is also unavailable to decoding channels. + The must be specified when streaming from memory. + The file's format is not recognised/supported. + The file uses a codec that's not available/supported. This can apply to WAV and AIFF files, and also MP3 files when using the "MP3-free" BASS version. + The sample format is not supported by the device/drivers. If the stream is more than stereo or the flag is used, it could be that they are not supported. + 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. + There is insufficient memory. + Could not initialize 3D support. + Some other mystery problem! + + + + Creates a sample stream from an MP3, MP2, MP1, OGG, WAV, AIFF or plugin supported file via user callback functions. + + File system to use. + Any combination of . + The user defined file function (see ). + User instance data to pass to the callback functions. + If successful, the new stream's handle is returned, else 0 is returned. Use to get the error code. + + + The buffered file system () is what is used by . + As the name suggests, data from the file is buffered so that it's readily available for decoding - BASS creates a thread dedicated to "downloading" the data. + This is ideal for when the data is coming from a source that has high latency, like the internet. + It's not possible to seek in buffered file streams, until the download has reached the requested position - it's not possible to seek at all if it's being streamed in blocks. + + + The push buffered file system () is the same, except that instead of the file data being pulled from the function in a "download" thread, the data is pushed to BASS via . + A function is still required, to get the initial data used in the creation of the stream. + + + The unbuffered file system () is what is used by . + In this system, BASS does not do any intermediate buffering - it simply requests data from the file as and when it needs it. + This means that reading () must be quick, otherwise the decoding will be delayed and playback buffer underruns (old data repeated) are a possibility. + It's not so important for seeking () to be fast, as that is generally not required during decoding, except when looping a file. + + In all cases, BASS will automatically stall playback of the stream when insufficient data is available, and resume it when enough data does become available. + Platform-specific + + On Windows and Windows CE, ACM codecs are supported with compressed WAV files. + Media Foundation codecs are also supported on Windows 7 and updated versions of Vista, including support for AAC/MP4 and WMA. + On iOS and OSX, CoreAudio codecs are supported, adding support for any file formats that have a codec installed. + Media Foundation and CoreAudio codecs are only tried after the built-in decoders and any plugins have rejected the file. + + + A copy is made of the callback function table, so it does not have to persist beyond this function call. + Unlike Bass.Net, a reference to doesn't need to be held by you manually. + ManagedBass automatically holds a reference and frees it when the Channel is freed. + + + has not been successfully called. + Only decoding channels () are allowed when using the device. The flag is also unavailable to decoding channels. + is not valid. + The file's format is not recognised/supported. + The file uses a codec that's not available/supported. This can apply to WAV and AIFF files, and also MP3 files when using the "MP3-free" BASS version. + The sample format is not supported by the device/drivers. If the stream is more than stereo or the flag is used, it could be that they are not supported. + 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. + There is insufficient memory. + Could not initialize 3D support. + Some other mystery problem! + + + + Creates a sample stream from an MP3, MP2, MP1, OGG, WAV, AIFF or plugin supported file on the internet, optionally receiving the downloaded data in a callback. + + + URL of the file to stream. + Should begin with "http://", "https://" or "ftp://", or another add-on supported protocol. + The URL can be followed by custom HTTP request headers to be sent to the server; + the URL and each header should be terminated with a carriage return and line feed ("\r\n"). + + File position to start streaming from. This is ignored by some servers, specifically when the file length is unknown, for example a Shout/Icecast server. + A combination of + Callback function to receive the file as it is downloaded... = no callback. + User instance data to pass to the callback function. + If successful, the new stream's handle is returned, else 0 is returned. Use to get the error code. + + + Use to retrieve information on the format (sample rate, resolution, channels) of the stream. + The playback length of the stream can be retrieved using . + + + When playing the stream, BASS will stall the playback if there is insufficient data to continue playing. + Playback will automatically be resumed when sufficient data has been downloaded. + can be used to check if the playback is stalled, and the progress of the file download can be checked with . + + When streaming in blocks (), be careful not to stop/pause the stream for too long, otherwise the connection may timeout due to there being no activity and the stream will end prematurely. + + When streaming from Shoutcast servers, metadata (track titles) may be sent by the server. + The data can be retrieved with . + A sync can also be set (using ) so that you are informed when metadata is received. + A sync can be used to be informed of when a new logical bitstream begins in an Icecast/OGG stream. + + + When using an , the file length returned by can be used to check that it was successful by comparing it with the original file length. + Another way to check is to inspect the HTTP headers retrieved with . + + Custom HTTP request headers may be ignored by some plugins, notably BassWma. + + Unlike Bass.Net, a reference to doesn't need to be held by you manually. + ManagedBass automatically holds a reference and frees it when the Channel is freed. + + Platform-specific + + On Windows and Windows CE, ACM codecs are supported with compressed WAV files. + Media Foundation codecs are also supported on Windows 7 and updated versions of Vista, including support for AAC and WMA. + On iOS and OSX, CoreAudio codecs are supported, including support for AAC and ALAC. + Media Foundation and CoreAudio codecs are only tried after the built-in decoders and any plugins have rejected the file. + Built-in support for IMA and Microsoft ADPCM WAV files is provided on Linux/Android/Windows CE, while they are supported via ACM and CoreAudio codecs on Windows and OSX/iOS. + + + has not been successfully called. + Only decoding channels () are allowed when using the device. The flag is also unavailable to decoding channels. + No internet connection could be opened. Can be caused by a bad proxy setting. + is not a valid URL. + The server did not respond to the request within the timeout period, as set with config option. + The file could not be opened. + The file's format is not recognised/supported. + The file uses a codec that's not available/supported. This can apply to WAV and AIFF files, and also MP3 files when using the "MP3-free" BASS version. + The sample format is not supported by the device/drivers. If the stream is more than stereo or the flag is used, it could be that they are not supported. + 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. + There is insufficient memory. + Could not initialize 3D support. + Some other mystery problem! + + + + Index of No Sound Device. + + + + + Index of Default Device. + + + + + Initializes an output device. + + The device to use... -1 = default device, 0 = no sound, 1 = first real output device. + or can be used to get the total number of devices. + + Output sample rate. + Any combination of . + The application's main window... = the desktop window (use this for console applications). + Class identifier of the object to create, that will be used to initialize DirectSound... = use default + If the device was successfully initialized, is returned, else is returned. Use to get the error code. + The device number specified is invalid. + The device has already been initialized. You must call before you can initialize it again. + There is no available device driver... the device may already be in use. + The specified format is not supported by the device. Try changing the and parameters. + There is insufficient memory. + The device has no 3D support. + Some other mystery problem! + + This function must be successfully called before using any sample, stream or MOD music functions. The recording functions may be used without having called this function. + Playback is not possible with the device, but it does allow the use of "decoding channels", eg. to decode files. + When specifying a class identifier (), after successful initialization, you can use GetDSoundObject(DSInterface) to retrieve the DirectSound object, and through that access any special interfaces that the object may provide. + + Simultaneously using multiple devices is supported in the BASS API via a context switching system - instead of there being an extra "device" parameter in the function calls, the device to be used is set prior to calling the functions. is used to switch the current device. + When successful, automatically sets the current thread's device to the one that was just initialized. + + + When using the default device (device = -1), can be used to find out which device it was mapped to. + On Windows, it'll always be the first device. + + Platform-specific + + On Linux, a 'Default' device is hardcoded to device number 1, which uses the default output set in the ALSA config; that could map directly to one of the other devices or it could use ALSA plugins. + If the IncludeDefaultDevice config option has been enbled, a "Default" device is also available on Windows, who's output will follow default device changes on Windows 7. + In both cases, the "Default" device will also be the default device (device = -1). + + + The sample format specified in the and parameters has no effect on the device output on iOS or OSX, and not on Windows unless VxD drivers are used (on Windows 98/95); + with WDM drivers (on Windows XP/2000/Me/98SE), the output format is automatically set depending on the format of what is played and what the device supports, while on Vista and above, the output format is determined by the user's choice in the Sound control panel. + On Linux the output device will use the specified format if possible, but will otherwise use a format as close to it as possible. + If the flag is specified on iOS or OSX, then the device's output rate will be set to the freq parameter (if possible). + The flag has no effect on other platforms. + can be used to check what the output format actually is. + + + The and parameters are only used on Windows and are ignored on other platforms. + That applies to the and flags too, as the number of available speakers is always accurately detected on the other platforms. + The flag is also ignored on Linux/OSX/Android/Windows CE, as latency information is available without it. + The latency is also available without it on iOS, but not immediately following this function call unless the flag is used. + + + The DeviceInitFlags.DMix flag is only available on Linux, and allows multiple applications to share the device (if they all use 'dmix'). + It may also be possible for multiple applications to use exclusive access if the device is capable of hardware mixing. + If exclusive access initialization fails, the DeviceInitFlags.DMix flag will automatically be tried; + if that happens, it can be detected via and the . + + On Linux and Windows CE, the length of the device's buffer can be set via the config option. + + + + + + + + + + + + Starts (or resumes) the output. + + If successful, is returned, else is returned. Use to get the error code. + has not been successfully called. + + The output is automatically started by , so there is no need to use this function unless you have stopped or paused the output. + When using multiple devices, the current thread's device setting (as set with ) determines which device this function call applies to. + + + + + + + Stops the output, pausing all musics/samples/streams. + + If successful, then is returned, else is returned. Use to get the error code. + + Use to resume the output and paused channels. + When using multiple devices, the current thread's device setting (as set with ) determines which device this function call applies to. + + has not been successfully called. + + + + Stops the output, stopping all musics/samples/streams. + + If successful, then is returned, else is returned. Use to get the error code. + + This function can be used after to stop the paused channels, so that they will not be resumed the next time is called. + When using multiple devices, the current thread's device setting (as set with ) determines which device this function call applies to. + + has not been successfully called. + + + + Frees all resources used by the output device, including all it's samples, streams, and MOD musics. + + If successful, then is returned, else is returned. Use to get the error code. + + This function should be called for all initialized devices before your program exits. It's not necessary to individually free the samples/streams/musics as these are all automatically freed by this function. + When using multiple devices, the current thread's device setting (as set with ) determines which device this function call applies to. + + has not been successfully called. + + + + Retrieves the device that the channel is using. + + The channel handle... a HCHANNEL, HMUSIC, HSTREAM, or HRECORD. HSAMPLE handles may also be used. + If successful, the device number is returned, else -1 is returned. Use to get the error code. + + Recording devices are indicated by the HIWORD of the return value being 1, when this function is called with a HRECORD channel. + + is not a valid channel. + + + + Changes the device that a stream, MOD music or sample is using. + + The channel or sample handle... only HMUSIC, HSTREAM or HSAMPLE are supported. + The device to use...0 = no sound, 1 = first real output device. + If succesful, then is returned, else is returned. Use to get the error code. + + All of the channel's current settings are carried over to the new device, but if the channel is using the "with FX flag" DX8 effect implementation, + the internal state (eg. buffers) of the DX8 effects will be reset. Using the "without FX flag" DX8 effect implementation, the state of the DX8 effects is preserved. + + When changing a sample's device, all the sample's existing channels (HCHANNELs) are freed. + It's not possible to change the device of an individual sample channel. + + + is not a valid channel. + is invalid. + The requested device has not been initialized. + The channel is already using the requested device. + Only decoding channels are allowed to use the device. + + The sample format is not supported by the device/drivers. + If the channel is more than stereo or the flag is used, it could be that they are not supported. + + There is insufficient memory. + Some other mystery problem! + + + + Gets the number of Playback Devices available. + + + + + Gets or sets the current output master volume level... 0 (silent) to 1 (max). + + + When using multiple devices, the current thread's device setting (as set with ) determines which device this function call applies to. + A return value of -1 indicates error. Use to get the error code. Throws on Error while setting value. + The actual volume level may not be exactly the same as set, due to underlying precision differences. + + This function affects the volume level of all applications using the same output device. + If you wish to only affect the level of your app's sounds, + and/or the , and config options should be used instead. + + + has not been successfully called. + There is no volume control when using the No Sound Device. + Invalid volume. + Some other mystery problem! + + + + Gets or sets the device setting of the current thread... 0 = no sound, 1 = first real output device. + + + A return value of -1 indicates error. Use to get the error code. Throws on Error while setting value. + + Simultaneously using multiple devices is supported in the BASS API via a context switching system - + instead of there being an extra "device" parameter in the function calls, the device to be used is set prior to calling the functions. + The device setting is local to the current thread, so calling functions with different devices simultaneously in multiple threads is not a problem. + + The functions that use the device selection are the following: + , GetDSoundObject(int), , , , , , , , , , SetEAXParameters, GetEAXParameters. + It also determines which device is used by a new sample/stream/music: , , , etc... + + + When one of the above functions is called, BASS will check the current thread's device setting, and if no device is selected (or the selected device is not initialized), BASS will automatically select the lowest device that is initialized. + This means that when using a single device, there is no need to use this function; + BASS will automatically use the device that is initialized. + Even if you free the device, and initialize another, BASS will automatically switch to the one that is initialized. + + + + + + Retrieves information on an output device. + + The device to get the information of... 0 = first. + A object to retrieve the information into. + + If successful, then is returned, else is returned. + Use to get the error code. + + + This function can be used to enumerate the available devices for a setup dialog. + Device 0 is always the device, so if you should start at device 1 if you only want to list real devices. + Platform-specific + + On Linux, a "Default" device is hardcoded to device number 1, which uses the default output set in the ALSA config, and the real devices start at number 2. + That is also the case on Windows when the IncludeDefaultDevice option is enabled. + + + The device number specified is invalid. + + + + Retrieves information on an output device. + + The device to get the information of... 0 = first. + An instance of the structure is returned. Throws on Error. + + This function can be used to enumerate the available devices for a setup dialog. + Device 0 is always the device, so if you should start at device 1 if you only want to list real devices. + Platform-specific + + On Linux, a "Default" device is hardcoded to device number 1, which uses the default output set in the ALSA config, and the real devices start at number 2. + That is also the case on Windows when the IncludeDefaultDevice option is enabled. + + + The device number specified is invalid. + + + + Retrieves information on the device being used. + + object to receive the information. + If successful, then is returned, else is returned. Use to get the error code. + has not been successfully called. + + When using multiple devices, the current thread's device setting (as set with ) determines which device this function call applies to. + + + + + Retrieves information on the device being used. + + structure with the retreived information. Throws on Error. + has not been successfully called. + + When using multiple devices, the current thread's device setting (as set with ) determines which device this function call applies to. + + + + + Sets the parameters of an effect + + The effect handle + Pointer to the parameters structure. The structure used depends on the effect type. + + If successful, is returned, else is returned. + Use to get the error code. + + is not valid. + One or more of the parameters are invalid, make sure all the values are within the valid ranges. + Some other mystery problem! + + + + + + Sets the parameters of an effect + + The effect handle + The parameters structure. The structure used depends on the effect type. + + If successful, is returned, else is returned. + Use to get the error code. + + is not valid. + One or more of the parameters are invalid, make sure all the values are within the valid ranges. + Some other mystery problem! + + + + + + Retrieves the parameters of an effect + + The effect handle + Pointer to the parameters structure to fill. The structure used depends on the effect type. + + If successful, is returned, else is returned. + Use to get the error code. + + is not valid. + + + + + + Retrieves the parameters of an effect + + The effect handle + The parameters structure to fill. The structure used depends on the effect type. + + If successful, is returned, else is returned. + Use to get the error code. + + is not valid. + + + + + + Resets the state of an effect or all effects on a channel. + + The effect or channel handle... a HFX, HSTREAM, HMUSIC, or HRECORD. + + If successful, is returned, else is returned. + Use to get the error code. + + is invalid. + Some other mystery problem! + + + This function flushes the internal buffers of the effect(s). + Effects are automatically reset by , + except when called from a "" . + + + + + Sets an effect on a stream, MOD music, or recording channel. + + The channel Handle... a HSTREAM, HMUSIC, or HRECORD. + Type of effect, one of . + + The priority of the new FX, which determines it's position in the DSP chain. + DSP/FX with higher priority are applied before those with lower. + This parameter has no effect with DX8 effects when the "with FX flag" DX8 effect implementation is used. + + + If succesful, then the new effect's Handle is returned, else 0 is returned. + Use to get the error code. + + is not a valid channel. + An illegal was specified. + DX8 effects are unavailable. + + The channel's format is not supported by the effect. + It may be floating-point (without DX9) or more than stereo. + + Some other mystery problem! + + + Multiple effects may be used per channel. Use to remove an effect. + Use to set an effect's parameters. + + + Effects can be applied to MOD musics and streams, but not samples. + If you want to apply an effect to a sample, you could use a stream instead. + + + Depending on the DX8 effect implementation being used by the channel, the channel may have to be stopped before adding or removing DX8 effects on it. + If necessary, that is done automatically and the channel is resumed afterwards. + + Platform-specific + + DX8 effects are a Windows feature requiring DirectX 8, or DirectX 9 for floating-point support. + On other platforms, they are emulated by BASS, except for the following which are currently unsupported: DXCompressor, DXGargle, and DX_I3DL2Reverb. + On Windows CE, only PARAMEQ is supported. + + + + + + + + + + + Removes an effect from a stream, MOD music, or recording channel. + + The channel Handle... a HSTREAM, HMUSIC, or HRECORD. + Handle of the effect to remove from the channel (return value of a previous call). + + If succesful, is returned, else is returned. + Use to get the error code. + + At least one of and is not valid. + + Depending on the DX8 effect implementation being used by the channel, the channel may have to be stopped before removing a DX8 effect on it. + If necessary, that is done automatically and the channel is resumed afterwards. + can also be used to remove effects. + + + + + + Sets the priority of an effect or DSP function, which determines its position in the DSP chain. + + The DSP/FX handle... a HDSP or HFX. + The new priority of the DSP/FX. + If successful, is returned, else is returned. Use to get the error code. + If there are multiple DSP/FX with the same priority value, they will be applied in the order in which they were given that priority. + is invalid. + Priority is not supported on DX8 effects when the "with FX flag" DX8 effect implementation is used. + + + + Frees a MOD music's resources, including any sync/DSP/FX it has. + + The MOD music handle. + If successful, then is returned, else is returned. Use to get the error code. + is not valid. + + + + Loads a MOD music file - MO3 / IT / XM / S3M / MTM / MOD / UMX formats. + + The file name from where to load the music. + File offset to load the MOD music from. + 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. + A combination of . + Sample rate to render/play the MOD music at... 0 = the rate specified in the call. + If successful, the loaded music's handle is returned, else 0 is returned. Use 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 ) 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" does not take a lot of extra processing and improves the sound quality by removing clicks, by ramping/smoothing volume and pan changes. + The start of a sample may also be ramped-in. + That is always the case with XM files (or MOD files in FT2 mode) when using normal ramping, and possibly with all formats when using sensitive ramping; senstitive ramping will only ramp-in when necessary to avoid a click. + Generally, normal ramping is recommended for XM files, and sensitive ramping for the other formats, but some XM files may also sound better using sensitive ramping. + + Platform-specific + + 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: DXCompressor, DXGargle, and DX_I3DL2Reverb. + When a DMO effect is unavailable, the MOD music can still be played, but the effect will be disabled. + + + has not been successfully called. + The flag is unavailable to decoding channels. + The could not be opened. + The 's format is not recognised/supported. + The sample format is not supported by the device/drivers. If the stream is more than stereo or the flag is used, it could be that they are not supported. + 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. + There is insufficient memory. + Could not initialize 3D support. + Some other mystery problem! + + + + Loads a MOD music file - MO3 / IT / XM / S3M / MTM / MOD / UMX formats from memory. + + An unmanaged pointer to the memory location as an IntPtr. + Memory offset to load the MOD music from. + Data length. + A combination of . + Sample rate to render/play the MOD music at... 0 = the rate specified in the call. + If successful, the loaded music's handle is returned, else 0 is returned. Use 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 ) 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" does not take a lot of extra processing and improves the sound quality by removing clicks, by ramping/smoothing volume and pan changes. + The start of a sample may also be ramped-in. + That is always the case with XM files (or MOD files in FT2 mode) when using normal ramping, and possibly with all formats when using sensitive ramping; senstitive ramping will only ramp-in when necessary to avoid a click. + Generally, normal ramping is recommended for XM files, and sensitive ramping for the other formats, but some XM files may also sound better using sensitive ramping. + + + When loading a MOD music from memory, Bass does not use the memory after it has 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. + + Platform-specific + + 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. + + + has not been successfully called. + The flag is unavailable to decoding channels. + could not be opened. + 's format is not recognised/supported. + The sample format is not supported by the device/drivers. If the stream is more than stereo or the flag is used, it could be that they are not supported. + 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. + There is insufficient memory. + Could not initialize 3D support. + Some other mystery problem! + + + + Loads a MOD music file - MO3 / IT / XM / S3M / MTM / MOD / UMX formats from memory. + + byte[] containing the music data. + Memory offset to load the MOD music from. + Data length. + A combination of . + Sample rate to render/play the MOD music at... 0 = the rate specified in the call. + If successful, the loaded music's handle is returned, else 0 is returned. Use 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 ) 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" does not take a lot of extra processing and improves the sound quality by removing clicks, by ramping/smoothing volume and pan changes. + The start of a sample may also be ramped-in. + That is always the case with XM files (or MOD files in FT2 mode) when using normal ramping, and possibly with all formats when using sensitive ramping; senstitive ramping will only ramp-in when necessary to avoid a click. + Generally, normal ramping is recommended for XM files, and sensitive ramping for the other formats, but some XM files may also sound better using sensitive ramping. + + + When loading a MOD music from memory, Bass does not use the memory after it has loaded the MOD music. + So you can do whatever you want with the memory after calling this function. + + Platform-specific + + 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. + + + has not been successfully called. + The flag is unavailable to decoding channels. + could not be opened. + 's format is not recognised/supported. + The sample format is not supported by the device/drivers. If the stream is more than stereo or the flag is used, it could be that they are not supported. + 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. + There is insufficient memory. + Could not initialize 3D support. + Some other mystery problem! + + + + Retrieves information on a plugin. + + The plugin handle - or 0 to retrieve native BASS information. + An instance of is returned. Use to get the error code. + The plugin information does not change, so the returned info remains valid for as long as the plugin is loaded. + Note: There is no guarantee that the check is complete or might contain formats not being supported on your particular OS/machine (due to additional or missing audio codecs). + + is not valid. + + + + Plugs on "add-on" into the standard stream and sample creation functions. + + Filename of the add-on/plugin. + If successful, the loaded plugin's handle is returned, else 0 is returned. Use to get the error code. + + + There are 2 ways in which add-ons can provide support for additional formats. + They can provide dedicated functions to create streams of the specific format(s) they support and/or they can plug into the standard stream creation functions: + , , + and . + This function enables the latter method. + Both methods can be used side by side. + The obvious advantage of the plugin system is convenience, while the dedicated functions can provide extra options that are not possible via the shared function interfaces. + See an add-on's documentation for more specific details on it. + + As well as the stream creation functions, plugins also add their additional format support to . + Information on what file formats a plugin supports is available via the function. + + When using multiple plugins, the stream/sample creation functions will try each of them in the order that they were loaded via this function, until one that accepts the file is found. + When an add-on is already loaded (eg. if you are using functions from it), the plugin system will use the same instance (the reference count will just be incremented); there will not be 2 copies of the add-on in memory. + + Note: Only stream/music add-ons are loaded (e.g. BassFx or BassMix are NOT loaded). + Platform-specific: + + Dynamic libraries are not permitted on iOS, so add-ons are provided as static libraries instead, which means this function has to work a little differently. + The add-on needs to be linked into the executable, and a "plugin" symbol declared and passed to this function (instead of a filename). + + + The could not be opened. + The is not a plugin. + The is already plugged in. + + + + Unplugs an add-on. + + The plugin handle... 0 = all plugins. + If successful, is returned, else is returned. Use to get the error code. + + If there are streams created by a plugin in existence when it is being freed, the streams will automatically be freed too. + Samples loaded by the plugin are unaffected as the plugin has nothing to do with them once they are loaded (the sample data is already fully decoded). + + is not valid. + + + + Initializes a recording device. + + The device to use... -1 = default device, 0 = first. or can be used to get the total number of devices. + If successful, is returned, else is returned. Use to get the error code. + + This function must be successfully called before using the recording features. + + Simultaneously using multiple devices is supported in the BASS API via a context switching system - instead of there being an extra "device" parameter in the function calls, the device to be used is set prior to calling the functions. + is used to switch the current recording device. + When successful, automatically sets the current thread's device to the one that was just initialized + + + When using the default device (device = -1), can be used to find out which device it was mapped to. + On Windows, it'll always be the first device. + + Platform-specific + + Recording support requires DirectX 5 (or above) on Windows. + On Linux, a "Default" device is hardcoded to device number 0, which uses the default input set in the ALSA config; + that could map directly to one of the other devices or it could use ALSA plugins. + + + A sufficient version of DirectX is not installed. + is invalid. + The device has already been initialized. must be called before it can be initialized again. + There is no available device driver. + + + + Frees all resources used by the recording device. + + If successful, then is returned, else is returned. Use to get the error code. + + This function should be called for all initialized recording devices before your program exits. + When using multiple recording devices, the current thread's device setting (as set with ) determines which device this function call applies to. + + has not been successfully called - there are no initialized devices. + + + + Starts recording. + + The sample rate to record at. + The number of channels... 1 = mono, 2 = stereo, etc. + Any combination of , and . + The user defined function to receive the recorded sample data... can be if you do not wish to use a callback. + User instance data to pass to the callback function. + If successful, the new recording's handle is returned, else is returned. Use to get the error code. + + Use to stop the recording, and to pause it. + Recording can also be started in a paused state (via the flag), allowing DSP/FX to be set on it before any data reaches the callback function. + The sample data will generally arrive from the recording device in blocks rather than in a continuous stream, so when specifying a very short period between callbacks, some calls may be skipped due to there being no new data available since the last call. + + When not using a callback (proc = ), the recorded data is instead retrieved via . + To keep latency at a minimum, the amount of data in the recording buffer should be monitored (also done via , with the flag) to check that there is not too much data; + freshly recorded data will only be retrieved after the older data in the buffer is. + + Platform-specific + + Multiple simultaneous recordings can be made from the same device on Windows XP and later, but generally not on older Windows. + Multiple simultaneous recordings are possible on iOS and OSX, but may not always be on Linux or Windows CE. + On OSX and iOS, the device is instructed (when possible) to deliver data at the period set in the HIWORD of flags, even when a callback function is not used. + On other platforms, it is up the the system when data arrives from the device. + + + Unlike Bass.Net, a reference to doesn't need to be held by you manually. + ManagedBass automatically holds a reference and frees it when the Channel is freed. + + + has not been successfully called. + + The device is busy. + An existing recording must be stopped before starting another one. + Multiple simultaneous recordings can be made from the same device on Windows XP and Vista, but generally not on older Windows. + + + The recording device is not available. + Another application may already be recording with it, or it could be a half-duplex device and is currently being used for playback. + + + The specified format is not supported. + If using the flag, it could be that floating-point recording is not supported. + + There is insufficient memory. + Some other mystery problem! + + + + Starts recording. + + The sample rate to record at. + The number of channels... 1 = mono, 2 = stereo. + Any combination of , and . + + Set the period (in milliseconds) between calls to the callback function (). + The minimum period is 5ms, the maximum the maximum is half the setting. + If the period specified is outside this range, it is automatically capped. The default is 100ms. + + The user defined function to receive the recorded sample data... can be if you do not wish to use a callback. + User instance data to pass to the callback function. + If successful, the new recording's handle is returned, else is returned. Use to get the error code. + has not been successfully called. + + The device is busy. + An existing recording must be stopped before starting another one. + Multiple simultaneous recordings can be made from the same device on Windows XP and Vista, but generally not on older Windows. + + + The recording device is not available. + Another application may already be recording with it, or it could be a half-duplex device and is currently being used for playback. + + + The specified format is not supported. + If using the flag, it could be that floating-point recording is not supported. + + There is insufficient memory. + Some other mystery problem! + + + + Gets or Sets the recording device setting in the current thread... 0 = first recording device. + + + A value of -1 indicates error. Use to get the error code. Throws on Error while setting value. + Simultaneously using multiple devices is supported in the BASS API via a context switching system - instead of there being an extra "device" parameter in the function calls, the device to be used is set prior to calling the functions. The device setting is local to the current thread, so calling functions with different devices simultaneously in multiple threads is not a problem. + The functions that use the recording device selection are the following: + , , , , , . + When one of the above functions is called, BASS will check the current thread's recording device setting, and if no device is selected (or the selected device is not initialized), BASS will automatically select the lowest device that is initialized. + This means that when using a single device, there is no need to use this function - BASS will automatically use the device that's initialized. + Even if you free the device, and initialize another, BASS will automatically switch to the one that is initialized. + + has not been successfully called - there are no initialized. + Specified device number is invalid. + + + + + Retrieves information on a recording device. + + The device to get the information of... 0 = first. + A object to retreive the information into. + + If successful, then is returned, else is returned. + Use to get the error code. + + + This function can be used to enumerate the available recording devices for a setup dialog. + Platform-specific + + Recording support requires DirectX 5 (or above) on Windows. + On Linux, a "Default" device is hardcoded to device number 0, which uses the default input set in the ALSA config. + + + The device number specified is invalid. + A sufficient version of DirectX is not installed. + + + + Retrieves information on a recording device. + + The device to get the information of... 0 = first. + An instance of the structure is returned.A value of -1 indicates error. Use to get the error code. Throws on Error. + + Platform-specific + + Recording support requires DirectX 5 (or above) on Windows. + On Linux, a "Default" device is hardcoded to device number 0, which uses the default input set in the ALSA config. + + + The device number specified is invalid. + A sufficient version of DirectX is not installed. + + + + Retrieves information on the recording device being used. + + A object to retrieve the information into. + + If successful, is returned, else is returned. + Use to get the error code. + + has not been successfully called - there are no initialized devices. + + + + Retrieves information on the recording device being used. + + An instance of the structure is returned. Throws on Error. + has not been successfully called - there are no initialized devices. + + + + The Buffer Length for recording channels in milliseconds... 1000 (min) - 5000 (max). default = 2000. + + + If the Length specified is outside this range, it is automatically capped. + Unlike a playback Buffer, where the aim is to keep the Buffer full, a recording + Buffer is kept as empty as possible and so this setting has no effect on latency. + Unless processing of the recorded data could cause significant delays, or you want to + use a large recording period with , there should be no need to increase this. + Using this config option only affects the recording channels that are created afterwards, + not any that have already been created. + So you can have channels with differing Buffer lengths by using this config option each time before creating them. + + + + + No of Recording devices available. + + + + + Retrieves the settings of a recording input source. + + The input to get the settings of... 0 = first, -1 = master. + Reference to a variable to receive the current volume. + + If an error occurs, -1 is returned, use to get the error code. + If successful, then the settings are returned. + The flag will be set if the input is disabled, otherwise the input is enabled. + The type of input (see ) is also indicated in the high 8-bits. + Use to test the return value. + If the volume is requested but not available, volume will receive -1. + + + Platform-specific + + The input type information is only available on Windows. + There is no "what you hear" type of input defined; + if the device has one, it will typically come under or . + + On OSX, there is no master input (-1), and only the currently enabled input has its volume setting available (if it has a volume control). + + has not been successfully called - there are no initialized devices. + is invalid. + A master input is not available. + Some other mystery problem! + + + + Retrieves the settings of a recording input source (does not retrieve Volume). + + The input to get the settings of... 0 = first, -1 = master. + + If an error occurs, -1 is returned, use to get the error code. + If successful, then the settings are returned. + The flag will be set if the input is disabled, otherwise the input is enabled. + The type of input (see ) is also indicated in the high 8-bits. + Use to test the return value. + If the volume is requested but not available, volume will receive -1. + + + Platform-specific + + The input type information is only available on Windows. + There is no "what you hear" type of input defined; + if the device has one, it will typically come under or . + + On OSX, there is no master input (-1), and only the currently enabled input has its volume setting available (if it has a volume control). + + has not been successfully called - there are no initialized devices. + is invalid. + A master input is not available. + Some other mystery problem! + + + + Retrieves the text description of a recording input source. + + The input to get the description of... 0 = first, -1 = master. + If succesful, then the description is returned, else is returned. Use to get the error code. + + Platform-specific + + The returned string is in ANSI or UTF-8 form on Windows, depending on the UnicodeDeviceInformation setting. + It is in UTF-16 form ("WCHAR" rather than "char") on Windows CE, and in UTF-8 form on other platforms. + + On OSX, there is no master input (-1). + + has not been successfully called - there are no initialized devices. + is invalid. + A master input is not available. + + + + Adjusts the settings of a recording input source. + + The input to adjust the settings of... 0 = first, -1 = master. + The new setting... a combination of . + The volume level... 0 (silent) to 1 (max), less than 0 = leave current. + If successful, is returned, else is returned. Use to get the error code. + + + The actual volume level may not be exactly the same as requested, due to underlying precision differences. + can be used to confirm what the volume is. + + The volume curve used by this function is always linear, the config option setting has no effect on this. + Changes made by this function are system-wide, ie. other software using the device will be affected by it. + Platform-specific + On OSX, there is no master input (-1), and only the currently enabled input has its volume setting available (if it has a volume control). + + has not been successfully called - there are no initialized devices. + or is invalid. + The soundcard/driver doesn't allow you to change the input or it's volume. + Some other mystery problem! + + + + Creates/initializes a playback channel for a sample. + + Handle of the sample to play. + Do not recycle/override one of the sample's existing channels? + If successful, the handle of the new channel is returned, else 0 is returned. Use to get the error code. + + + Use and to set a sample's default attributes, which are used when creating a channel. + After creation, a channel's attributes can be changed via , and . + should be called before starting playback of a 3D sample, even if you just want to use the default settings. + + + If a sample has a maximum number of simultaneous playbacks of 1 (the max parameter was 1 when calling or ), then the HCHANNEL handle returned will be identical to the HSAMPLE handle. + That means you can use the HSAMPLE handle with functions that usually require a HCHANNEL handle, but you must still call this function first to initialize the channel. + + + A sample channel is automatically freed when it's overridden by a new channel, or when stopped manually via , or . + If you wish to stop a channel and re-use it, it should be paused () instead of stopped. + Determining whether a channel still exists can be done by trying to use the handle in a function call, eg. . + + When channel overriding has been enabled via an override flag and there are multiple candidates for overriding (eg. with identical volume), the oldest of them will be chosen to make way for the new channel. + + The new channel will have an initial state of being paused (). + This prevents the channel being claimed by another call of this function before it has been played, unless it gets overridden due to a lack of free channels. + + All of a sample's channels share the same sample data, and just have their own individual playback state information (volume/position/etc). + + is not a valid sample handle. + The sample has no free channels... the maximum number of simultaneous playbacks has been reached, and no override flag was specified for the sample or onlynew = . + The sample's minimum time gap () has not yet passed since the last channel was created. + + + + Creates/initializes a playback channel for a sample. + + Handle of the sample to play. + A combination of . + If successful, the handle of the new channel is returned, else 0 is returned. Use to get the error code. + + + Use and to set a sample's default attributes, which are used when creating a channel. + After creation, a channel's attributes can be changed via , and . + should be called before starting playback of a 3D sample, even if you just want to use the default settings. + + + If a sample has a maximum number of simultaneous playbacks of 1 (the max parameter was 1 when calling or ), then the HCHANNEL handle returned will be identical to the HSAMPLE handle. + That means you can use the HSAMPLE handle with functions that usually require a HCHANNEL handle, but you must still call this function first to initialize the channel. + + + A sample channel is automatically freed when it's overridden by a new channel, or when stopped manually via , or . + If you wish to stop a channel and re-use it, it should be paused () instead of stopped. + Determining whether a channel still exists can be done by trying to use the handle in a function call, eg. . + + When channel overriding has been enabled via an override flag and there are multiple candidates for overriding (eg. with identical volume), the oldest of them will be chosen to make way for the new channel. + + The new channel will have an initial state of being paused (). + This prevents the channel being claimed by another call of this function before it has been played, unless it gets overridden due to a lack of free channels. + + All of a sample's channels share the same sample data, and just have their own individual playback state information (volume/position/etc). + + is not a valid sample handle. + The sample has no free channels... the maximum number of simultaneous playbacks has been reached, and no override flag or was specified for the sample. + The sample's minimum time gap () has not yet passed since the last channel was created. + + + + Frees a sample's resources. + + The sample handle. + If successful, is returned, else is returned. Use to get the error code. + is not valid. + + + + Sets a sample's data. + + The sample handle. + Pointer to the data to set. + If successful, is returned, else is returned. Use to get the error code. + + The required length and format of the data can be retrieved via . + A sample's data can be set at any time, including during playback. + + is not valid. + Some other mystery problem! + + + + Sets a sample's data. + + The sample handle. + byte[] containing the data to set. + If successful, is returned, else is returned. Use to get the error code. + + The required length and format of the data can be retrieved via . + A sample's data can be set at any time, including during playback. + + is not valid. + Some other mystery problem! + + + + Sets a sample's data. + + The sample handle. + int[] containing the data to set. + If successful, is returned, else is returned. Use to get the error code. + + The required length and format of the data can be retrieved via . + A sample's data can be set at any time, including during playback. + + is not valid. + Some other mystery problem! + + + + Sets a sample's data. + + The sample handle. + short[] containing the data to set. + If successful, is returned, else is returned. Use to get the error code. + + The required length and format of the data can be retrieved via . + A sample's data can be set at any time, including during playback. + + is not valid. + Some other mystery problem! + + + + Sets a sample's data. + + The sample handle. + float[] containing the data to set. + If successful, is returned, else is returned. Use to get the error code. + + The required length and format of the data can be retrieved via . + A sample's data can be set at any time, including during playback. + + is not valid. + Some other mystery problem! + + + + Initiates the creation of a user generated sample. + + The sample's length, in bytes. + The default sample rate. + The number of channels... 1 = mono, 2 = stereo, etc... More than stereo requires WDM drivers in Windows. + Maximum number of simultaneous playbacks... 1 (min) - 65535 (max)... use one of the override flags to choose the override decider, in the case of there being no free channel available for playback (ie. the sample is already playing max times). + A combination of . + If successful, the new sample's handle is returned, else 0 is returned. Use to get the error code. + + + The sample's initial content is undefined. + should be used to set the sample's data. + + + Unless the BassFlags.SoftwareMixing flag is used, the sample will use hardware mixing if hardware resources are available. + Use to see if there are hardware mixing resources available, and which sample formats are supported by the hardware. + The flag allows a sample to be played by both hardware and software, with the decision made when the sample is played rather than when it's loaded. + A sample's VAM options are set via . + + To play a sample, first a channel must be obtained using , which can then be played using . + If you want to play a large or one-off sample, then it would probably be better to stream it instead with . + Platform-specific + + The flag requires DirectX 7 (or above). + + + has not been successfully called. + Sample functions are not available when using the device. + is invalid. + The sample format is not supported by the device/drivers. If the sample is more than stereo or the flag is used, it could be that they are not supported. + There is insufficient memory. + Could not initialize 3D support. + Some other mystery problem! + + + + Retrieves a copy of a sample's data. + + The sample handle. + Pointer to a buffer to receive the data. + If successful, is returned, else is returned. Use to get the error code. + The buffer must be big enough to receive the sample's data, the size of which can be retrieved via . + + is not valid. + Some other mystery problem! + + + + Retrieves a copy of a sample's data. + + The sample handle. + byte[] to receive the data. + If successful, is returned, else is returned. Use to get the error code. + The buffer must be big enough to receive the sample's data, the size of which can be retrieved via . + + is not valid. + Some other mystery problem! + + + + Retrieves a copy of a sample's data. + + The sample handle. + short[] to receive the data. + If successful, is returned, else is returned. Use to get the error code. + The buffer must be big enough to receive the sample's data, the size of which can be retrieved via . + + is not valid. + Some other mystery problem! + + + + Retrieves a copy of a sample's data. + + The sample handle. + int[] to receive the data. + If successful, is returned, else is returned. Use to get the error code. + The buffer must be big enough to receive the sample's data, the size of which can be retrieved via . + + is not valid. + Some other mystery problem! + + + + Retrieves a copy of a sample's data. + + The sample handle. + float[] to receive the data. + If successful, is returned, else is returned. Use to get the error code. + The buffer must be big enough to receive the sample's data, the size of which can be retrieved via . + + is not valid. + Some other mystery problem! + + + + Retrieves a sample's default attributes and other information. + + The sample handle. + An instance of the class to store the sample information at. + If successful, is returned, else is returned. Use to get the error code. + is not valid. + + + + Retrieves a sample's default attributes and other information. + + The sample handle. + An instance of the class is returned. Throws on Error. + is not valid. + + + + Sets a sample's default attributes. + + The sample handle. + An instance of the class containing the sample information to set. + If successful, is returned, else is returned. Use to get the error code. + + + Use this function and to edit a sample's default attributes. + Changing a sample's default attributes does not affect any existing channels, it only affects channels subsequently created via . + The exception is the VAM settings, changes to that apply to all the sample's channels at their next playback (). + Use and to change the attributes of an existing sample channel. + + + The sample's maximum number of simultaneous playbacks can be changed via the member. + If the new maximum is lower than the existing number of channels, the channels will remain existing until they are stopped. + + + , and can't be modified - any changes are ignored. + , , , , BassFlags.SoftwareMixing and also cannot be changed. + + + is not valid. + + + + Retrieves an array of a sample's existing channels. + + Handle of the sample. + + If successful, the array of existing channels is returned (which might have zero elements), else is returned. + Use to get the error code. + + + This overload only returns the existing channels in the array. + If you need to determine whether a particular sample channel still exists, it is simplest to just try it in a function call. + + is not a valid sample handle. + + + + Stops all instances of a sample. + + The sample handle. + If successful, is returned, else is returned. Use to get the error code. + is not a valid sample handle. + If a sample is playing simultaneously multiple times, calling this function will stop them all, which is obviously simpler than calling multiple times. + + + + Loads a WAV, AIFF, MP3, MP2, MP1, OGG or plugin supported sample. + + The file name to load the sample from. + File offset to load the sample from. + 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. + Maximum number of simultaneous playbacks... 1 (min) - 65535 (max)... use one of the BASS_SAMPLE_OVER flags to choose the override decider, in the case of there being no free channel available for playback (ie. the sample is already playing max times). + A combination of . + If successful, the loaded sample's handle is returned, else 0 is returned. Use to get the error code. + + Additional format support is available via the plugin system (see ). + + Unless the BassFlags.SoftwareMixing flag is used, the sample will use hardware mixing if hardware resources are available. + Use to see if there are hardware mixing resources available, and which sample formats are supported by the hardware. + The flag allows a sample to be played by both hardware and software, with the decision made when the sample is played rather than when it's loaded. + A sample's VAM options are set via . + + To play a sample, first a channel must be obtained using , which can then be played using . + If you want to play a large or one-off sample, then it would probably be better to stream it instead with . + Platform-specific + + The flag requires DirectX 7 (or above). + + + On Windows and Windows CE, ACM codecs are supported with compressed WAV files. + On iOS and OSX, CoreAudio codecs are supported, adding support for any file formats that have a codec installed. + + + has not been successfully called. + Sample functions are not available when using the device. + and/or is invalid. + The could not be opened. + The 's format is not recognised/supported. + The file uses a codec that's not available/supported. This can apply to WAV and AIFF files, and also MP3 files when using the "MP3-free" BASS version. + The sample format is not supported by the device/drivers. If the sample is more than stereo or the flag is used, it could be that they are not supported. + There is insufficient memory. + Could not initialize 3D support. + Some other mystery problem! + + + + Loads a WAV, AIFF, MP3, MP2, MP1, OGG or plugin supported sample. + This overload uses an unmanaged IntPtr and implements loading a sample from memory. + + An unmanaged IntPtr to the allocated memory block at which the sample data resides. + File offset to load the sample from. + Data length. Should be set to the length of the data contained in memory. + Maximum number of simultaneous playbacks... 1 (min) - 65535 (max)... use one of the override flags to choose the override decider, in the case of there being no free channel available for playback (ie. the sample is already playing max times). + A combination of flags. + If successful, the loaded sample's handle is returned, else 0 is returned. Use to get the error code. + + Additional format support is available via the plugin system (see ). + + Unless the BassFlags.SoftwareMixing flag is used, the sample will use hardware mixing if hardware resources are available. + Use to see if there are hardware mixing resources available, and which sample formats are supported by the hardware. + The flag allows a sample to be played by both hardware and software, with the decision made when the sample is played rather than when it's loaded. + A sample's VAM options are set via . + + To play a sample, first a channel must be obtained using , which can then be played using . + If you want to play a large or one-off sample, then it would probably be better to stream it instead with . + There is no need to pin the memory buffer for this method, since after loading a sample from memory, the memory can safely be discarded, as a copy is made. + Platform-specific + + The flag requires DirectX 7 (or above). + + + On Windows and Windows CE, ACM codecs are supported with compressed WAV files. + On iOS and OSX, CoreAudio codecs are supported, adding support for any file formats that have a codec installed. + + + has not been successfully called. + Sample functions are not available when using the device. + and/or is invalid. Specifying is mandatory when loading from memory. + The could not be opened. + The 's format is not recognised/supported. + The file uses a codec that's not available/supported. This can apply to WAV and AIFF files, and also MP3 files when using the "MP3-free" BASS version. + The sample format is not supported by the device/drivers. If the sample is more than stereo or the flag is used, it could be that they are not supported. + There is insufficient memory. + Could not initialize 3D support. + Some other mystery problem! + + + + Loads a WAV, AIFF, MP3, MP2, MP1, OGG or plugin supported sample. + This overload uses an unmanaged IntPtr and implements loading a sample from memory. + + A byte[] with the sample data to load. + File offset to load the sample from. + Data length. Should be set to the length of the data contained in memory. + Maximum number of simultaneous playbacks... 1 (min) - 65535 (max)... use one of the override flags to choose the override decider, in the case of there being no free channel available for playback (ie. the sample is already playing max times). + A combination of flags. + If successful, the loaded sample's handle is returned, else 0 is returned. Use to get the error code. + + Additional format support is available via the plugin system (see ). + + Unless the BassFlags.SoftwareMixing flag is used, the sample will use hardware mixing if hardware resources are available. + Use to see if there are hardware mixing resources available, and which sample formats are supported by the hardware. + The flag allows a sample to be played by both hardware and software, with the decision made when the sample is played rather than when it's loaded. + A sample's VAM options are set via . + + To play a sample, first a channel must be obtained using , which can then be played using . + If you want to play a large or one-off sample, then it would probably be better to stream it instead with . + The can be safely discarded after calling this method, as a copy of it is made by Bass. + Platform-specific + + The flag requires DirectX 7 (or above). + + + On Windows and Windows CE, ACM codecs are supported with compressed WAV files. + On iOS and OSX, CoreAudio codecs are supported, adding support for any file formats that have a codec installed. + + + has not been successfully called. + Sample functions are not available when using the device. + and/or is invalid. Specifying is mandatory when loading from memory. + The could not be opened. + The 's format is not recognised/supported. + The file uses a codec that's not available/supported. This can apply to WAV and AIFF files, and also MP3 files when using the "MP3-free" BASS version. + The sample format is not supported by the device/drivers. If the sample is more than stereo or the flag is used, it could be that they are not supported. + There is insufficient memory. + Could not initialize 3D support. + Some other mystery problem! + + + + Retrieves the decoding/download/end position of a file stream. + + The stream's handle. + The file position to retrieve. One of values. + If succesful, then the requested file position is returned, else -1 is returned. Use to get the error code. + + ID3 tags (both v1 and v2) and WAVE headers, as well as any other rubbish at the start of the file, are excluded from the calculations of this function. + This is useful for average bitrate calculations, but it means that the position may not be the actual file position - the position can be added to it to get the actual file position. + + When streaming a file from the internet or a "buffered" user file stream, the entire file is downloaded even if the audio data ends before that, in case there are tags to be read. + This means that the position may go beyond the position. + + + It's unwise to use this function (with mode = ) for syncing purposes because it returns the position that's being decoded, not the position that's being heard. + Use for syncing instead. + + + is not valid. + The stream is not a file stream. + The requested file position/status is not available. + + + + Creates a user sample stream. + + The default sample rate. The sample rate can be changed using . + The number of channels... 1 = mono, 2 = stereo, 4 = quadraphonic, 6 = 5.1, 8 = 7.1. More than stereo requires WDM drivers, and the Speaker flags are ignored. + A combination of . + The user defined stream writing function (see ). + User instance data to pass to the callback function. + If successful, the new stream's handle is returned, else 0 is returned. Use to get the error code. + + + Sample streams allow any sample data to be played through Bass, and are particularly useful for playing a large amount of sample data without requiring a large amount of memory. + If you wish to play a sample format that BASS does not support, then you can create a stream and decode the sample data into it. + + + Bass can automatically stream MP3, MP2, MP1, OGG, WAV and AIFF files, using , and also from HTTP and FTP servers, + using , allows streaming from other sources too. + + However, the callback method must deliver PCM sample data as specified, so opening an MP3 file and just passing that file data will not work here. + + Unlike Bass.Net, a reference to doesn't need to be held by you manually. + ManagedBass automatically holds a reference and frees it when the Channel is freed. + + + has not been successfully called. + Only decoding channels () are allowed when using the device. The flag is also unavailable to decoding channels. + The sample format is not supported by the device/drivers. If the stream is more than stereo or the flag is used, it could be that they are not supported. + 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. + There is insufficient memory. + Could not initialize 3D support. + Some other mystery problem! + + + + Creates a Dummy or Push stream. + + The default sample rate. The sample rate can be changed using . + The number of channels... 1 = mono, 2 = stereo, 4 = quadraphonic, 6 = 5.1, 8 = 7.1. More than stereo requires WDM drivers, and the SPEAKER flags are ignored. + A combination of . + The type of stream. + If successful, the new stream's handle is returned, else 0 is returned. Use to get the error code. + + A dummy stream doesn't have any sample data of its own, but a decoding dummy stream (with flag) can be used to apply DSP/FX processing to any sample data, + by setting DSP/FX on the stream and feeding the data through . + The dummy stream should have the same sample format as the data being fed through it. + + has not been successfully called. + Only decoding channels () are allowed when using the device. The flag is also unavailable to decoding channels. + The sample format is not supported by the device/drivers. If the stream is more than stereo or the flag is used, it could be that they are not supported. + 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. + There is insufficient memory. + Could not initialize 3D support. + Some other mystery problem! + + + + Adds sample data to a "push" stream. + + The stream handle (as created with ). + Pointer to the sample data ( = allocate space in the queue buffer so that there is at least length bytes of free space). + The amount of data in bytes, optionally using the flag to signify the end of the stream. 0 can be used to just check how much data is queued. + If successful, the amount of queued data is returned, else -1 is returned. Use to get the error code. + + + As much data as possible will be placed in the stream's playback buffer, and any remainder will be queued for when more space becomes available, ie. as the buffered data is played. + With a decoding channel, there is no playback buffer, so all data is queued in that case. + There is no limit to the amount of data that can be queued, besides available memory. + The queue buffer will be automatically enlarged as required to hold the data, but it can also be enlarged in advance. + The queue buffer is freed when the stream ends or is reset, eg. via (with restart = ) or (with Position = 0). + + DSP/FX are applied when the data reaches the playback buffer, or the call in the case of a decoding channel. + + Data should be provided at a rate sufficent to sustain playback. + If the buffer gets exhausted, Bass will automatically stall playback of the stream, until more data is provided. + () can be used to check the buffer level, and can be used to check if playback has stalled. + A sync can also be set via , to be triggered upon playback stalling or resuming. + + + is not valid. + The stream is not using the push system. + is not valid, it must equate to a whole number of samples. + The stream has ended. + There is insufficient memory. + + + + Adds sample data to a "push" stream. + + The stream handle (as created with ). + byte sample data buffer ( = allocate space in the queue buffer so that there is at least length bytes of free space). + The amount of data in bytes, optionally using the flag to signify the end of the stream. 0 can be used to just check how much data is queued. + If successful, the amount of queued data is returned, else -1 is returned. Use to get the error code. + + + As much data as possible will be placed in the stream's playback buffer, and any remainder will be queued for when more space becomes available, ie. as the buffered data is played. + With a decoding channel, there is no playback buffer, so all data is queued in that case. + There is no limit to the amount of data that can be queued, besides available memory. + The queue buffer will be automatically enlarged as required to hold the data, but it can also be enlarged in advance. + The queue buffer is freed when the stream ends or is reset, eg. via (with restart = ) or (with Position = 0). + + DSP/FX are applied when the data reaches the playback buffer, or the call in the case of a decoding channel. + + Data should be provided at a rate sufficent to sustain playback. + If the buffer gets exhausted, Bass will automatically stall playback of the stream, until more data is provided. + () can be used to check the buffer level, and can be used to check if playback has stalled. + A sync can also be set via , to be triggered upon playback stalling or resuming. + + + is not valid. + The stream is not using the push system. + is not valid, it must equate to a whole number of samples. + The stream has ended. + There is insufficient memory. + + + + Adds sample data to a "push" stream. + + The stream handle (as created with ). + short sample data buffer ( = allocate space in the queue buffer so that there is at least length bytes of free space). + The amount of data in bytes, optionally using the flag to signify the end of the stream. 0 can be used to just check how much data is queued. + If successful, the amount of queued data is returned, else -1 is returned. Use to get the error code. + + + As much data as possible will be placed in the stream's playback buffer, and any remainder will be queued for when more space becomes available, ie. as the buffered data is played. + With a decoding channel, there is no playback buffer, so all data is queued in that case. + There is no limit to the amount of data that can be queued, besides available memory. + The queue buffer will be automatically enlarged as required to hold the data, but it can also be enlarged in advance. + The queue buffer is freed when the stream ends or is reset, eg. via (with restart = ) or (with Position = 0). + + DSP/FX are applied when the data reaches the playback buffer, or the call in the case of a decoding channel. + + Data should be provided at a rate sufficent to sustain playback. + If the buffer gets exhausted, Bass will automatically stall playback of the stream, until more data is provided. + () can be used to check the buffer level, and can be used to check if playback has stalled. + A sync can also be set via , to be triggered upon playback stalling or resuming. + + + is not valid. + The stream is not using the push system. + is not valid, it must equate to a whole number of samples. + The stream has ended. + There is insufficient memory. + + + + Adds sample data to a "push" stream. + + The stream handle (as created with ). + int sample data buffer ( = allocate space in the queue buffer so that there is at least length bytes of free space). + The amount of data in bytes, optionally using the flag to signify the end of the stream. 0 can be used to just check how much data is queued. + If successful, the amount of queued data is returned, else -1 is returned. Use to get the error code. + + + As much data as possible will be placed in the stream's playback buffer, and any remainder will be queued for when more space becomes available, ie. as the buffered data is played. + With a decoding channel, there is no playback buffer, so all data is queued in that case. + There is no limit to the amount of data that can be queued, besides available memory. + The queue buffer will be automatically enlarged as required to hold the data, but it can also be enlarged in advance. + The queue buffer is freed when the stream ends or is reset, eg. via (with restart = ) or (with Position = 0). + + DSP/FX are applied when the data reaches the playback buffer, or the call in the case of a decoding channel. + + Data should be provided at a rate sufficent to sustain playback. + If the buffer gets exhausted, Bass will automatically stall playback of the stream, until more data is provided. + () can be used to check the buffer level, and can be used to check if playback has stalled. + A sync can also be set via , to be triggered upon playback stalling or resuming. + + + is not valid. + The stream is not using the push system. + is not valid, it must equate to a whole number of samples. + The stream has ended. + There is insufficient memory. + + + + Adds sample data to a "push" stream. + + The stream handle (as created with ). + float sample data buffer ( = allocate space in the queue buffer so that there is at least length bytes of free space). + The amount of data in bytes, optionally using the flag to signify the end of the stream. 0 can be used to just check how much data is queued. + If successful, the amount of queued data is returned, else -1 is returned. Use to get the error code. + + + As much data as possible will be placed in the stream's playback buffer, and any remainder will be queued for when more space becomes available, ie. as the buffered data is played. + With a decoding channel, there is no playback buffer, so all data is queued in that case. + There is no limit to the amount of data that can be queued, besides available memory. + The queue buffer will be automatically enlarged as required to hold the data, but it can also be enlarged in advance. + The queue buffer is freed when the stream ends or is reset, eg. via (with restart = ) or (with Position = 0). + + DSP/FX are applied when the data reaches the playback buffer, or the call in the case of a decoding channel. + + Data should be provided at a rate sufficent to sustain playback. + If the buffer gets exhausted, Bass will automatically stall playback of the stream, until more data is provided. + () can be used to check the buffer level, and can be used to check if playback has stalled. + A sync can also be set via , to be triggered upon playback stalling or resuming. + + + is not valid. + The stream is not using the push system. + is not valid, it must equate to a whole number of samples. + The stream has ended. + There is insufficient memory. + + + + Adds data to a "push buffered" user file stream's buffer. + + The stream handle (as created with and the system flag.). + Pointer to the file data. + The amount of data in bytes, or to end the file. + If successful, the number of bytes read from buffer is returned, else -1 is returned. Use to get the error code. + + If there is not enough space in the stream's file buffer to receive all of the data, then only the amount that will fit is read from buffer. can be used to check the amount of space in the buffer. + + File data should be provided at a rate sufficent to sustain playback. + If there is insufficient file data, and the playback buffer is subsequently exhausted, Bass will automatically stall playback of the stream, until more data is available. + A sync can be set via , to be triggered upon playback stalling or resuming. + + + is not valid. + The stream is not using the file system. + The stream has ended. + + + + Adds data to a "push buffered" user file stream's buffer. + + The stream handle (as created with and the system flag.). + byte buffer. + The amount of data in bytes, or to end the file. + If successful, the number of bytes read from buffer is returned, else -1 is returned. Use to get the error code. + + If there is not enough space in the stream's file buffer to receive all of the data, then only the amount that will fit is read from buffer. can be used to check the amount of space in the buffer. + + File data should be provided at a rate sufficent to sustain playback. + If there is insufficient file data, and the playback buffer is subsequently exhausted, Bass will automatically stall playback of the stream, until more data is available. + A sync can be set via , to be triggered upon playback stalling or resuming. + + + is not valid. + The stream is not using the file system. + The stream has ended. + + + + Adds data to a "push buffered" user file stream's buffer. + + The stream handle (as created with and the system flag.). + short buffer. + The amount of data in bytes, or to end the file. + If successful, the number of bytes read from buffer is returned, else -1 is returned. Use to get the error code. + + If there is not enough space in the stream's file buffer to receive all of the data, then only the amount that will fit is read from buffer. can be used to check the amount of space in the buffer. + + File data should be provided at a rate sufficent to sustain playback. + If there is insufficient file data, and the playback buffer is subsequently exhausted, Bass will automatically stall playback of the stream, until more data is available. + A sync can be set via , to be triggered upon playback stalling or resuming. + + + is not valid. + The stream is not using the file system. + The stream has ended. + + + + Adds data to a "push buffered" user file stream's buffer. + + The stream handle (as created with and the system flag.). + int buffer. + The amount of data in bytes, or to end the file. + If successful, the number of bytes read from buffer is returned, else -1 is returned. Use to get the error code. + + If there is not enough space in the stream's file buffer to receive all of the data, then only the amount that will fit is read from buffer. can be used to check the amount of space in the buffer. + + File data should be provided at a rate sufficent to sustain playback. + If there is insufficient file data, and the playback buffer is subsequently exhausted, Bass will automatically stall playback of the stream, until more data is available. + A sync can be set via , to be triggered upon playback stalling or resuming. + + + is not valid. + The stream is not using the file system. + The stream has ended. + + + + Adds data to a "push buffered" user file stream's buffer. + + The stream handle (as created with and the system flag.). + float buffer. + The amount of data in bytes, or to end the file. + If successful, the number of bytes read from buffer is returned, else -1 is returned. Use to get the error code. + + If there is not enough space in the stream's file buffer to receive all of the data, then only the amount that will fit is read from buffer. can be used to check the amount of space in the buffer. + + File data should be provided at a rate sufficent to sustain playback. + If there is insufficient file data, and the playback buffer is subsequently exhausted, Bass will automatically stall playback of the stream, until more data is available. + A sync can be set via , to be triggered upon playback stalling or resuming. + + + is not valid. + The stream is not using the file system. + The stream has ended. + + + + Frees a sample stream's resources, including any SYNC/DSP/FX it has. + + The stream handle. + If successful, is returned, else is returned. Use to get the error code. + is not valid. + + + + Direct Sound interface flags for use with (Windows only). + + + + + Retrieve the IDirectSound interface. + + + + + Retrieve the IDirectSound3DListener interface. + + + + + EAX environment constants to be used with (Windows only). + + + + + -1 = leave current EAX environment as is + + + + + Generic + + + + + Padded Cell + + + + + Room + + + + + Bathroom + + + + + Livingroom + + + + + Stoneroom + + + + + Auditorium + + + + + Concert Hall + + + + + Cave + + + + + Arena + + + + + Hangar + + + + + Carpeted Hallway + + + + + Hallway + + + + + Stone Corridor + + + + + Alley + + + + + Forest + + + + + City + + + + + Mountains + + + + + Quarry + + + + + Plain + + + + + Parkinglot + + + + + Sewer Pipe + + + + + Underwater + + + + + Drugged + + + + + Dizzy + + + + + Psychotic + + + + + Total number of environments + + + + + DX8 Chorus Effect. + + + + + Waveform of the LFO. Default = . + + + + + Ratio of wet (processed) signal to dry (unprocessed) signal. Must be in the range from 0 (default) through 100 (all wet). + + + + + Percentage by which the delay time is modulated by the low-frequency oscillator, in hundredths of a percentage point. Must be in the range from 0 through 100. The default value is 25. + + + + + Percentage of output signal to feed back into the effect's input, in the range from -99 to 99. The default value is 0. + + + + + Frequency of the LFO, in the range from 0 to 10. The default value is 0. + + + + + Number of milliseconds the input is delayed before it is played back, in the range from 0 to 20. The default value is 0 ms. + + + + + Phase differential between left and right LFOs. Default is . + + + + + DX8 Compressor Effect (Windows only). + + + + + Output gain of signal in dB after compression, in the range from -60 to 60. The default value is 0 dB. + + + + + Time in ms before compression reaches its full value, in the range from 0.01 to 500. The default value is 10 ms. + + + + + Time (speed) in ms at which compression is stopped after input drops below , in the range from 50 to 3000. The default value is 200 ms. + + + + + Point at which compression begins, in dB, in the range from -60 to 0. The default value is -20 dB. + + + + + Compression ratio, in the range from 1 to 100. The default value is 3, which means 3:1 compression. + + + + + Time in ms after is reached before attack phase is started, in milliseconds, in the range from 0 to 4. The default value is 4 ms. + + + + + DX8 Distortion Effect. + + + + + Amount of signal change after distortion, in the range from -60 through 0. The default value is 0 dB. + + + + + Percentage of distortion intensity, in the range in the range from 0 through 100. The default value is 50 percent. + + + + + Center frequency of harmonic content addition, in the range from 100 through 8000. The default value is 4000 Hz. + + + + + Width of frequency band that determines range of harmonic content addition, in the range from 100 through 8000. The default value is 4000 Hz. + + + + + Filter cutoff for high-frequency harmonics attenuation, in the range from 100 through 8000. The default value is 4000 Hz. + + + + + DX8 Echo Effect. + + + + + Ratio of wet (processed) signal to dry (unprocessed) signal. Must be in the range from 0 (default) through 100 (all wet). + + + + + Percentage of output fed back into input, in the range from 0 through 100. The default value is 0. + + + + + Delay for left channel, in milliseconds, in the range from 1 through 2000. The default value is 333 ms. + + + + + Delay for right channel, in milliseconds, in the range from 1 through 2000. The default value is 333 ms. + + + + + Value that specifies whether to swap left and right delays with each successive echo. The default value is , meaning no swap. + + + + + DX8 Flanger Effect. + + + + + Ratio of wet (processed) signal to dry (unprocessed) signal. Must be in the range from 0 (default) through 100 (all wet). + + + + + Percentage by which the delay time is modulated by the low-frequency oscillator (LFO), in hundredths of a percentage point. Must be in the range from 0 through 100. The default value is 25. + + + + + Percentage of output signal to feed back into the effect's input, in the range from -99 to 99. The default value is 0. + + + + + Frequency of the LFO, in the range from 0 to 10. The default value is 0. + + + + + Waveform of the LFO. Default = . + + + + + Number of milliseconds the input is delayed before it is played back, in the range from 0 to 4. The default value is 0 ms. + + + + + Phase differential between left and right LFOs. Default = . + + + + + DX8 Gargle Effect (Windows only). + + + + + Rate of modulation, in Hertz. Must be in the range from 1 through 1000. Default 500 Hz. + + + + + Shape of the modulation wave. Default = . + + + + + DX8 ParamEQ Effect. + + + + + Creates a new instance of . + + + + + Adds a Band. + + The Band's center frequency in hertz, in the range from 80 to 16000. This value cannot exceed one-third of the frequency of the channel. Default = 100 Hz. + The Band Index to be used with . + + + + Updates a Band. + + The Index of the Band to Update (as returned by ). + The new Gain value for the Band (-15 ... 0 ... 15). + + + + Frees all resources used by this instance. + + + + + DX8 ParamEQ Effect. + + + + + Center frequency, in hertz, in the range from 80 to 16000. This value cannot exceed one-third of the frequency of the channel. Default 100 Hz. + + + + + Bandwidth, in semitones, in the range from 1 to 36. Default 18 semitones. + + + + + Gain, in the range from -15 to 15. Default 0 dB. + + + + + DX8 Reverb Effect. + + + + + Input gain of signal, in decibels (dB), in the range from -96 through 0. The default value is 0 dB. + + + + + Reverb mix, in dB, in the range from -96 through 0. The default value is 0 dB. + + + + + Reverb time, in milliseconds, in the range from 0.001 through 3000. The default value is 1000. + + + + + In the range from 0.001 through 0.999. The default value is 0.001. + + + + + DX8 ID3DL2 Reverb Effect (Windows only). + + + + + Attenuation of the room effect, in millibels (mB), in the range from -10000 to 0. The default value is -1000 mB. + + + + + Attenuation of the room high-frequency effect, in mB, in the range from -10000 to 0. The default value is 0 mB. + + + + + Rolloff factor for the reflected signals, in the range from 0 to 10. The default value is 0.0. + + + + + Decay time, in seconds, in the range from 0.1 to 20. The default value is 1.49 second. + + + + + Ratio of the decay time at high frequencies to the decay time at low frequencies, in the range from 0.1 to 2. The default value is 0.83. + + + + + Attenuation of early reflections relative to lRoom, in mB, in the range from -10000 to 1000. The default value is -2602 mB. + + + + + Delay time of the first reflection relative to the direct path, in seconds, in the range from 0 to 0.3. The default value is 0.007 seconds. + + + + + Attenuation of late reverberation relative to lRoom, in mB, in the range from -10000 to 2000. The default value is 200 mB. + + + + + Time limit between the early reflections and the late reverberation relative to the time of the first reflection, in seconds, in the range from 0 to 0.1. The default value is 0.011 seconds. + + + + + Echo density in the late reverberation decay, in percent, in the range from 0 to 100. The default value is 100.0 percent. + + + + + Modal density in the late reverberation decay, in percent, in the range from 0 to 100. The default value is 100.0 percent. + + + + + Reference high frequency, in hertz, in the range from 20 to 20000. The default value is 5000.0 Hz. + + + + + Parameters for DX8 Compressor Effect (Windows only). + + + + + Output gain of signal in dB after compression, in the range from -60 to 60. The default value is 0 dB. + + + + + Time in ms before compression reaches its full value, in the range from 0.01 to 500. The default value is 10 ms. + + + + + Time (speed) in ms at which compression is stopped after input drops below , in the range from 50 to 3000. The default value is 200 ms. + + + + + Point at which compression begins, in dB, in the range from -60 to 0. The default value is -20 dB. + + + + + Compression ratio, in the range from 1 to 100. The default value is 3, which means 3:1 compression. + + + + + Time in ms after is reached before attack phase is started, in milliseconds, in the range from 0 to 4. The default value is 4 ms. + + + + + Gets the . + + + + + Parameters for DX8 Gargle Effect (Windows only). + + + + + Rate of modulation, in Hertz. Must be in the range from 1 through 1000. Default 500 Hz. + + + + + Shape of the modulation wave. Default = . + + + + + Gets the . + + + + + Parameters for DX8 ID3L2 Reverb Effect (Windows only). + + + + + Attenuation of the room effect, in millibels (mB), in the range from -10000 to 0. The default value is -1000 mB. + + + + + Attenuation of the room high-frequency effect, in mB, in the range from -10000 to 0. The default value is 0 mB. + + + + + Rolloff factor for the reflected signals, in the range from 0 to 10. The default value is 0.0. + + + + + Decay time, in seconds, in the range from 0.1 to 20. The default value is 1.49 second. + + + + + Ratio of the decay time at high frequencies to the decay time at low frequencies, in the range from 0.1 to 2. The default value is 0.83. + + + + + Attenuation of early reflections relative to lRoom, in mB, in the range from -10000 to 1000. The default value is -2602 mB. + + + + + Delay time of the first reflection relative to the direct path, in seconds, in the range from 0 to 0.3. The default value is 0.007 seconds. + + + + + Attenuation of late reverberation relative to lRoom, in mB, in the range from -10000 to 2000. The default value is 200 mB. + + + + + Time limit between the early reflections and the late reverberation relative to the time of the first reflection, in seconds, in the range from 0 to 0.1. The default value is 0.011 seconds. + + + + + Echo density in the late reverberation decay, in percent, in the range from 0 to 100. The default value is 100.0 percent. + + + + + Modal density in the late reverberation decay, in percent, in the range from 0 to 100. The default value is 100.0 percent. + + + + + Reference high frequency, in hertz, in the range from 20 to 20000. The default value is 5000.0 Hz. + + + + + Gets the . + + + + + Parameters for DX8 Chorus Effect. + + + + + Ratio of wet (processed) signal to dry (unprocessed) signal. Must be in the range from 0 (default) through 100 (all wet). + + + + + Percentage by which the delay time is modulated by the low-frequency oscillator, in hundredths of a percentage point. Must be in the range from 0 through 100. The default value is 25. + + + + + Percentage of output signal to feed back into the effect's input, in the range from -99 to 99. The default value is 0. + + + + + Frequency of the LFO, in the range from 0 to 10. The default value is 0. + + + + + Waveform of the LFO. Default = . + + + + + Number of milliseconds the input is delayed before it is played back, in the range from 0 to 20. The default value is 0 ms. + + + + + Phase differential between left and right LFOs. Default is . + + + + + Gets the . + + + + + Parameters for DX8 Distortion Effect. + + + + + Amount of signal change after distortion, in the range from -60 through 0. The default value is 0 dB. + + + + + Percentage of distortion intensity, in the range in the range from 0 through 100. The default value is 50 percent. + + + + + Center frequency of harmonic content addition, in the range from 100 through 8000. The default value is 4000 Hz. + + + + + Width of frequency band that determines range of harmonic content addition, in the range from 100 through 8000. The default value is 4000 Hz. + + + + + Filter cutoff for high-frequency harmonics attenuation, in the range from 100 through 8000. The default value is 4000 Hz. + + + + + Gets the . + + + + + Parameters for DX8 Echo Effect. + + + + + Ratio of wet (processed) signal to dry (unprocessed) signal. Must be in the range from 0 (default) through 100 (all wet). + + + + + Percentage of output fed back into input, in the range from 0 through 100. The default value is 0. + + + + + Delay for left channel, in milliseconds, in the range from 1 through 2000. The default value is 333 ms. + + + + + Delay for right channel, in milliseconds, in the range from 1 through 2000. The default value is 333 ms. + + + + + Value that specifies whether to swap left and right delays with each successive echo. The default value is , meaning no swap. + + + + + Gets the . + + + + + Parameters for DX8 Flanger Effect. + + + + + Ratio of wet (processed) signal to dry (unprocessed) signal. Must be in the range from 0 (default) through 100 (all wet). + + + + + Percentage by which the delay time is modulated by the low-frequency oscillator (LFO), in hundredths of a percentage point. Must be in the range from 0 through 100. The default value is 25. + + + + + Percentage of output signal to feed back into the effect's input, in the range from -99 to 99. The default value is 0. + + + + + Frequency of the LFO, in the range from 0 to 10. The default value is 0. + + + + + Waveform of the LFO. Default = . + + + + + Number of milliseconds the input is delayed before it is played back, in the range from 0 to 4. The default value is 0 ms. + + + + + Phase differential between left and right LFOs. Default = . + + + + + Gets the . + + + + + Parameters for DX8 ParamEQ Effect. + + + + + Center frequency, in hertz, in the range from 80 to 16000. This value cannot exceed one-third of the frequency of the channel. Default 100 Hz. + + + + + Bandwidth, in semitones, in the range from 1 to 36. Default 18 semitones. + + + + + Gain, in the range from -15 to 15. Default 0 dB. + + + + + Gets the . + + + + + Parameters for DX8 Reverb Effect. + + + + + Input gain of signal, in decibels (dB), in the range from -96 through 0. The default value is 0 dB. + + + + + Reverb mix, in dB, in the range from -96 through 0. The default value is 0 dB. + + + + + Reverb time, in milliseconds, in the range from 0.001 through 3000. The default value is 1000. + + + + + In the range from 0.001 through 0.999. The default value is 0.001. + + + + + Gets the . + + + + + Wraps a Bass Effect such that you don't need to touch the Bass functions to Handle it. + + Type of the + + + + Effect's Parameters. + + + + + Applies the Effect on a . + + The Channel to apply the Effect on. + Priority of the Effect in DSP chain. + + + + Priority of the Effect in DSP chain. + + + + + Removes the effect from the Channel and frees allocated memory. + + + + + Sets the effect parameters to default by initialising a new instance of . + + + + + Checks whether the effect is currently enabled and active. + + + + + Called after applying a Preset to notify that multiple properties have changed. + + + + + Fired when a property value changes. + + + + + Fires the event. + + + + + Wrapper for pinned allocation using . + + + + + Creates a new instance of . + + + + + Create Stream Helper method. + + The Stream Creation function. + The to pin and pass to . + The Handle returned by . + + + + to pinned resource. + + + + + Frees the pinned resource. + + + + + An Exception wrapping or BassAsio.LastError. + + + + + Creates a new instance of with . + + + + + Creates a new instance of with provided Error code. + + + + + Gets the Bass Error Code. + + + + + Internet stream download callback function (to be used with ). + + The pointer to the Buffer containing the downloaded data... = finished downloading. + The number of bytes in the Buffer... 0 = HTTP or ICY tags. + The User instance data given when was called. + + + The callback will be called before the call returns (if it's successful), with the initial downloaded data. + So any initialization (eg. creating the file if writing to disk) needs to be done either before the call, or in the callback function. + + + When the flag is specified in the call, + HTTP and ICY tags may be passed to the callback during connection, before any stream data is received. + The tags are given exactly as would be returned by . + You can destinguish between HTTP and ICY tags by checking what the first string starts with ("HTTP" or "ICY"). + + + A download callback function could be used in conjunction with a sync set via , + to save individual tracks to disk from a Shoutcast stream. + + + + + + User defined DSP callback function (to be used with ). + + The DSP Handle (as returned by ). + Channel that the DSP is being applied to. + + The pointer to the Buffer to apply the DSP to. + The sample data is in standard Windows PCM format - 8-bit samples are unsigned, 16-bit samples are signed, 32-bit floating-point samples range from -1 to 1 (not clipped, so can actually be outside this range). + + The number of bytes to process. + The User instance data given when was called. + + A DSP function should obviously be as quick as possible... playing streams, MOD musics and other DSP functions can not be processed until it has finished. + + Some functions can cause problems if called from within a DSP (or stream) function. + Do not call these functions from within a DSP callback: + + + , , , + (or any other stream creation functions). + + Also, do not call with the same DSP Handle as received by the callback, + or , , with the same channel Handle as received by the callback. + If the config option is set, then DSP callback functions will always be passed 32-bit floating-point sample data, regardless of what the channels' actual sample format is. + + + + + User file stream close callback function (to be used with ). + + The User instance data given when was called. + With a buffered file stream, this function is called as soon as reading reaches the end of the file. + If the stream is freed before then, this function could be called while its function is in progress. + If that happens, the function call should be immediately cancelled. + + + + + User file stream Length callback function (to be used with ). + + The User instance data given when was called. + The Length of the file in bytes. + Returning 0 for a buffered file stream, makes BASS stream the file in blocks, and is equivalent to using the flag + in the call. + This function is called first thing, and is only used the once with buffered streams. + With unbuffered streams, it may be used again when testing for EOF (end of file), + allowing the file to grow in size. + + + + + User file stream read callback function (to be used with ). + + Pointer to the Buffer to put the data in. + Maximum number of bytes to read. + The User instance data given when was called. + The number of bytes read... -1 = end of file, 0 = end of file (buffered file stream only). + During creation of the stream, this function should try to return the amount of data requested. + After that, it can just return whatever is available up to the requested amount. + For an unbuffered file stream during playback, this function should be as quick as possible - + any delays will not only affect the decoding of the current stream, but also all other streams and MOD musics that are playing. + It is better to return less data (even none) rather than wait for more data. + A buffered file stream isn't affected by delays like this, as this function runs in its own thread then. + + + + + User file stream seek callback function (to be used with ). + + Position in bytes to seek to. + The User instance data given when was called. + if successful, else . + + + + User defined callback function to process recorded sample data. + + The recording Handle that the data is from. + + The pointer to the Buffer containing the recorded sample data. + The sample data is in standard Windows PCM format, that is 8-bit samples are unsigned, 16-bit samples are signed, 32-bit floating-point samples range from -1 to +1. + + The number of bytes in the Buffer. + The User instance data given when was called. + Return to stop recording, and anything else to continue recording. + + should not be used to free the recording device within a recording callback function. + Nor should be used to stop the recording; return to do that instead. + + + + + User stream writing callback delegate (to be used with ). + + The stream that needs writing. + The pointer to the Buffer to write the sample data in. The sample data must be written in standard Windows PCM format - 8-bit samples are unsigned, 16-bit samples are signed, 32-bit floating-point samples range from -1 to 1. + The number of bytes to write. + The User instance data given when was called. + The number of bytes written by the function, optionally using the () flag to signify that the end of the stream is reached. + + A stream writing function should obviously be as quick as possible, because other streams (and MOD musics) can't be updated until it's finished. + It is better to return less data quickly, rather than spending a long time delivering the amount BASS requested. + Although a STREAMPROC may return less data than BASS requests, be careful not to do so by too much, too often. If the Buffer level gets too low, BASS will automatically stall playback of the stream, until the whole Buffer has refilled. + can be used to check the Buffer level, and can be used to check if playback has stalled. + A sync can also be set via , to be triggered upon playback stalling or resuming. + If you do return less than the requested amount of data, the number of bytes should still equate to a whole number of samples. + Some functions can cause problems if called from within a stream (or DSP) function. Do not call these functions from within a stream callback: + , , , or any other stream creation functions. + Also, do not call or with the same Handle as received by the callback. + When streaming multi-channel sample data, the channel order of each sample is as follows: + 3 channels: left-front, right-front, center. + 4 channels: left-front, right-front, left-rear/side, right-rear/side. + 6 channels(5.1): left-front, right-front, center, LFE, left-rear/side, right-rear/side. + 8 channels(7.1): left-front, right-front, center, LFE, left-rear/side, right-rear/side, left-rear center, right-rear center. + + + + + User defined synchronizer callback function (see for details). + + The sync Handle that has occured (as returned by ). + The channel that the sync occured on. + Additional data associated with the sync's occurance. + The User instance data given when was called. + + + BASS creates a single thread dedicated to executing sync callback functions, so a callback function should be quick as other syncs cannot be processed until it has finished. + Attribute slides () are also performed by the sync thread, so are also affected if a sync callback takes a long time. + "Mixtime" syncs are not executed in the sync thread, but immediately in whichever thread triggers them. + In most cases that will be an update thread, and so the same restrictions that apply to stream callbacks () also apply here. + + can be used in a mixtime sync to implement custom looping, + eg. set a sync at the loop end position and seek to the loop start position in the callback. + + + + + + Software 3D mixing algorithm modes to be used with . + + On Windows, DirectX 7 or above is required for this option to have effect. + On other platforms, only the and options are available. + + + + + + Default algorithm (currently translates to ) + + + + + Uses normal left and right panning. + The vertical axis is ignored except for scaling of volume due to distance. + + Doppler shift and volume scaling are still applied, but the 3D filtering is not performed. + This is the most CPU efficient software implementation, but provides no virtual 3D audio effect. + Head Related Transfer Function processing will not be done. + Since only normal stereo panning is used, a channel using this algorithm may be accelerated by a 2D hardware voice if no free 3D hardware voices are available. + + + + + + This algorithm gives the highest quality 3D audio effect, but uses more CPU (Windows Only). + + Requires Windows 98 2nd Edition or Windows 2000 that uses WDM drivers, + if this mode is not available then will be used instead. + + + + + + This algorithm gives a good 3D audio effect, and uses less CPU than the FULL mode (Windows Only). + + Requires Windows 98 2nd Edition or Windows 2000 that uses WDM drivers, + if this mode is not available then will be used instead. + + + + + + Stream/Sample/Music/Recording/AddOn create flags to be used with Stream Creation functions. + + + + + 0 = default create stream: 16 Bit, stereo, no Float, hardware mixing, no Loop, no 3D, no speaker assignments... + + + + + Use 8-bit resolution. If neither this or the flags are specified, then the stream is 16-bit. + + + + + Decode/play the stream (MP3/MP2/MP1 only) in mono, reducing the CPU usage (if it was originally stereo). + This flag is automatically applied if was specified when calling . + + + + + Loop the file. This flag can be toggled at any time using . + + + + + Use 3D functionality. + This is ignored if wasn't specified when calling . + 3D streams must be mono (chans=1). + The Speaker flags can not be used together with this flag. + + + + + Force the stream to not use hardware mixing (Windows Only). + + + + + Enable the old implementation of DirectX 8 effects (Windows Only). + Use to add effects to the stream. + Requires DirectX 8 or above. + + + + + Use 32-bit floating-point sample data (see Floating-Point Channels for details). + WDM drivers or the flag are required to use this flag. + + + + + Enable pin-point accurate seeking (to the exact byte) on the MP3/MP2/MP1 stream or MOD music. + This also increases the time taken to create the stream, + due to the entire file being pre-scanned for the seek points. + Note: This flag is ONLY needed for files with a VBR, files with a CBR are always accurate. + + + + + Automatically free the music or stream's resources when it has reached the end, + or when or is called. + This flag can be toggled at any time using . + + + + + Restrict the download rate of the file to the rate required to sustain playback. + If this flag is not used, then the file will be downloaded as quickly as possible. + This flag has no effect on "unbuffered" streams (Buffer=false). + This flag can be toggled at any time using . + + + + + Download and play the file in smaller chunks. + Uses a lot less memory than otherwise, + but it's not possible to seek or loop the stream - once it's ended, + the file must be opened again to play it again. + This flag will automatically be applied when the file Length is unknown. + This flag also has the effect of resticting the download rate. + This flag has no effect on "unbuffered" streams (Buffer=false). + + + + + Decode the sample data, without outputting it. + Use to retrieve decoded sample data. + Bass.SoftwareMixing//BassFlags.FX/ are all ignored when using this flag, as are the Speaker flags. + + + + + Pass status info (HTTP/ICY tags) from the server to the callback during connection. + This can be useful to determine the reason for a failure. + + + + + Use an async look-ahead cache. + + + + + File is a Unicode (16-bit characters) filename + + + + + BassFx add-on: If in use, then you can do other stuff while detection's in process. + + + + + BassFx add-on: If in use, then will auto multiply bpm by 2 (if BPM < MinBPM*2) + + + + + BassFx add-on (BassFx.TempoCreate): Uses a linear interpolation mode (simple). + + + + + BassFx add-on (BassFx.TempoCreate): Uses a cubic interpolation mode (recommended, default). + + + + + BassFx add-on (BassFx.TempoCreate): + Uses a 8-tap band-limited Shannon interpolation (complex, but not much better than cubic). + + + + + BassFx add-on: Free the source Handle as well? + + + + + BASSMIDI add-on: Don't send a WAVE header to the encoder. + If this flag is used then the sample format (mono 16-bit) + must be passed to the encoder some other way, eg. via the command-line. + + + + + BASSMIDI add-on: Reduce 24-bit sample data to 16-bit before encoding. + + + + + BASSMIDI add-on: Ignore system reset events (MidiEventType.System) when the system mode is unchanged. + This flag can be toggled at any time using . + + + + + BASSMIDI add-on: Let the sound decay naturally (including reverb) instead of stopping it abruptly at the end of the file. + This flag can be toggled at any time using methods. + + + + + BASSMIDI add-on: Disable the MIDI reverb/chorus processing. + This flag can be toggled at any time using . + + + + + BASSMIDI add-on: Let the old sound decay naturally (including reverb) when changing the position, including looping. + This flag can be toggled at any time using , and can also be used in + calls to have it apply to particular position changes. + + + + + BASSMIDI add-on: Do not remove empty space (containing no events) from the end of the file. + + + + + BASSMIDI add-on: Only release the oldest instance upon a note off event (MidiEventType.Note with velocity=0) + when there are overlapping instances of the note. + Otherwise all instances are released. + This flag can be toggled at any time using . + + + + + BASSMIDI add-on: Map the file into memory. + This flag is ignored if the soundfont is packed as the sample data cannot be played directly from a mapping; + it needs to be decoded. + This flag is also ignored if the file is too large to be mapped into memory. + + + + + Use bank 127 in the soundfont for XG drum kits. + When an XG drum kit is needed, bank 127 in soundfonts that have this flag set will be checked first, + before falling back to bank 128 (the standard SF2 drum kit bank) if it is not available there. + + + + + Music and BASSMIDI add-on: Use sinc interpolated sample mixing. + This increases the sound quality, but also requires more CPU. + Otherwise linear interpolation is used. + Music: If neither this or the flag is specified, linear interpolation is used. + This flag can be toggled at any time using . + + + + + Music: Use "normal" ramping (as used in FastTracker 2). + This flag can be toggled at any time using . + + + + + Music: Use "sensitive" ramping. + This flag can be toggled at any time using . + + + + + Music: Apply XMPlay's surround sound to the music (ignored in mono). + This flag can be toggled at any time using . + + + + + Music: Apply XMPlay's surround sound mode 2 to the music (ignored in mono). + This flag can be toggled at any time using . + + + + + Music: Play .MOD file as FastTracker 2 would. + This flag can be toggled at any time using . + + + + + Apply FastTracker 2 panning to XM files. + + + + + Music: Play .MOD file as ProTracker 1 would. + This flag can be toggled at any time using . + + + + + Music: Stop all notes when seeking (using ). + This flag can be toggled at any time using . + + + + + Music: Use non-interpolated mixing. + This generally reduces the sound quality, but can be good for chip-tunes. + This flag can be toggled at any time using . + + + + + Music: 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 flag, + then the music would not be stopped but any sync would be triggered. + This flag can be toggled at any time using . + + + + + Music: 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. + + + + + Music: Stop all notes and reset bpm/etc when seeking. + This flag can be toggled at any time using . + + + + + Sample: muted at max distance (3D only) + + + + + Sample: uses the DX7 voice allocation and management + + + + + Sample: override lowest volume + + + + + Sample: override longest playing + + + + + Sample: override furthest from listener (3D only) + + + + + Sample: Do not recycle/override one of the sample's existing channels. + This should be used as an argument to . + + + + + Sample: Create a stream rather than a sample channel. + This should be used as an argument to . + + + + + BASSCD add-on: Read sub-channel data. + 96 bytes of de-interleaved sub-channel data will be returned after each 2352 bytes of audio. + This flag can not be used with the flag, + and is ignored if the flag is not used. + + + + + BASSCD add-on: Read sub-channel data, without using any hardware de-interleaving. + This is identical to the flag, except that the + de-interleaving is always performed by BASSCD even if the drive is apparently capable of de-interleaving itself. + + + + + BASSCD add-on: Include C2 error info. + 296 bytes of C2 error info is returned after each 2352 bytes of audio (and optionally 96 bytes of sub-channel data). + This flag cannot be used with the flag, and is ignored if the flag is not used. + The first 294 bytes contain the C2 error bits (one bit for each byte of audio), + followed by a byte containing the logical OR of all 294 bytes, + which can be used to quickly check if there were any C2 errors. + The final byte is just padding. + Note that if you request both sub-channel data and C2 error info, the C2 info will come before the sub-channel data! + + + + + Only relevant for StreamAddChannelEx(): Start is an absolute position in the mixer output rather than relative to the mixer's current position. If the position has already passed then the source will start immediately. + + + + + BASSmix add-on: only read buffered data. + + + + + BASSmix add-on: The splitter's length and position is based on the splitter's (rather than the source's) channel count. + + + + + BASSmix add-on: resume a stalled mixer immediately upon new/unpaused source + + + + + BASSmix add-on: enable BassMix.ChannelGetPosition(int,PositionFlags,int) support. + + + + + BASSmix add-on: Buffer source data for BassMix.ChannelGetData(int,IntPtr,int) and BassMix.ChannelGetLevel(int). + + + + + BASSmix add-on: Buffer source data for BassMix.ChannelGetData(int,IntPtr,int) and BassMix.ChannelGetLevel(int). + + + + + BASSmix add-on: Limit mixer processing to the amount available from this source. + + + + + BASSmix add-on: Limit mixer processing to the amount available from this source. + + + + + BASSmix add-on: end the stream when there are no sources + + + + + BASSmix add-on: Matrix mixing + + + + + BASSmix add-on: Matrix mixing + + + + + BASSmix add-on: don't stall when there are no sources + + + + + BASSmix add-on: don't process the source + + + + + BASSmix add-on: don't process the source + + + + + BASSmix add-on: downmix to stereo (or mono if mixer is mono) + + + + + BASSmix add-on: downmix to stereo (or mono if mixer is mono) + + + + + BASSmix add-on: don't ramp-in the start + + + + + BASSmix add-on: don't ramp-in the start + + + + + Recording: Start the recording paused. Use to start it. + + + + + Recording: Enable Echo Cancellation (only available on certain devices, like iOS). + + + + + Recording: Enable Automatic Gain Control (only available on certain devices, like iOS). + + + + + Front speakers (channel 1/2) + + + + + Rear/Side speakers (channel 3/4) + + + + + Center and LFE speakers (5.1, channel 5/6) + + + + + Rear Center speakers (7.1, channel 7/8) + + + + + Speakers Pair 1 + + + + + Speakers Pair 2 + + + + + Speakers Pair 3 + + + + + Speakers Pair 4 + + + + + Speakers Pair 5 + + + + + Speakers Pair 6 + + + + + Speakers Pair 7 + + + + + Speakers Pair 8 + + + + + Speakers Pair 9 + + + + + Speakers Pair 10 + + + + + Speakers Pair 11 + + + + + Speakers Pair 12 + + + + + Speakers Pair 13 + + + + + Speakers Pair 14 + + + + + Speakers Pair 15 + + + + + Speaker Modifier: left channel only + + + + + Speaker Modifier: right channel only + + + + + Front Left speaker only (channel 1) + + + + + Rear/Side Left speaker only (channel 3) + + + + + Center speaker only (5.1, channel 5) + + + + + Rear Center Left speaker only (7.1, channel 7) + + + + + Front Right speaker only (channel 2) + + + + + Rear/Side Right speaker only (channel 4) + + + + + LFE speaker only (5.1, channel 6) + + + + + Rear Center Right speaker only (7.1, channel 8) + + + + + BassAac add-on: use 960 samples per frame + + + + + BassAac add-on: Downmatrix to Stereo + + + + + BassDSD add-on: Produce DSD-over-PCM data (with 0x05/0xFA markers). DSD-over-PCM data is 24-bit, so the flag is required. + + + + + BassDSD add-on: Produce raw DSD data instead of PCM. The DSD data is in blocks of 8 bits (1 byte) per-channel with the MSB being first/oldest. + DSD data is not playable by BASS, so the flag is required. + + + + + BassAC3 add-on: downmix to stereo + + + + + BASS_AC3 add-on: downmix to quad + + + + + BASS_AC3 add-on: downmix to dolby + + + + + BASS_AC3 add-on: enable dynamic range compression + + + + + DSHOW add-on: Use this flag to disable audio processing. + + + + + DSHOW add-on: Use this flag to enable mixing video on a channel. + + + + + DSHOW add-on: Use this flag to enable auto dvd functions(on mouse down, keys etc). + + + + + DSHOW add-on: Use this flag to restart the stream when it's finished. + + + + + DSHOW add-on: Use this to enable video processing. + + + + + BassWV add-on: Limit to stereo + + + + + None of the flags are set + + + + + The device supports all sample rates between minrate and maxrate. + + + + + The device's drivers do NOT have DirectSound support, so it is being emulated. + Updated drivers should be installed. + + + + + The device driver has been certified by Microsoft. + This flag is always set on WDM drivers. + + + + + Mono samples are supported by hardware mixing. + + + + + Stereo samples are supported by hardware mixing. + + + + + 8-bit samples are supported by hardware mixing. + + + + + 16-bit samples are supported by hardware mixing. + + + + + Channel attribute options used by and . + + + + + The sample rate of a channel... 0 = original rate (when the channel was created). + + This attribute applies to playback of the channel, and does not affect the + channel's sample data, so has no real effect on decoding channels. + It is still adjustable though, so that it can be used by the BassMix add-on, + and anything else that wants to use it. + + + It is not possible to change the sample rate of a channel if the "with FX + flag" DX8 effect implementation enabled on it, unless DirectX 9 or above is installed. + + + Increasing the sample rate of a stream or MOD music increases its CPU usage, + and reduces the Length of its playback Buffer in terms of time. + If you intend to raise the sample rate above the original rate, then you may also need + to increase the Buffer Length via the + config option to avoid break-ups in the sound. + + + Platform-specific + On Windows, the sample rate will get rounded down to a whole number during playback. + + + + + The volume level of a channel... 0 (silent) to 1 (full). + This can go above 1.0 on decoding channels. + + This attribute applies to playback of the channel, and does not affect the + channel's sample data, so has no real effect on decoding channels. + It is still adjustable though, so that it can be used by the BassMix add-on, + and anything else that wants to use it. + + + When using + to slide this attribute, a negative volume value can be used to fade-out and then stop the channel. + + + + + + The panning/balance position of a channel... -1 (Full Left) to +1 (Full Right), 0 = Centre. + + This attribute applies to playback of the channel, and does not affect the + channel's sample data, so has no real effect on decoding channels. + It is still adjustable though, so that it can be used by the BassMix add-on, + and anything else that wants to use it. + + + It is not possible to set the pan position of a 3D channel. + It is also not possible to set the pan position when using speaker assignment, but if needed, + it can be done via a instead (not on mono channels). + + + Platform-specific + + On Windows, this attribute has no effect when speaker assignment is used, + except on Windows Vista and newer with the Bass.VistaSpeakerAssignment config option enabled. + Balance control could be implemented via a instead + + + + + + The wet (reverb) / dry (no reverb) mix ratio... 0 (full dry) to 1 (full wet), -1 = automatically calculate the mix based on the distance (the default). + For a sample, stream, or MOD music channel with 3D functionality. + + Obviously, EAX functions have no effect if the output device does not support EAX. + can be used to check that. + + + EAX only affects 3D channels, but EAX functions do not require to apply the changes. + LastError.NoEAX: The channel does not have EAX support. + EAX only applies to 3D channels that are mixed by the hardware/drivers. + can be used to check if a channel is being mixed by the hardware. + EAX is only supported on Windows. + + + + + + Non-Windows: Disable playback buffering?... 0 = no, else yes.. + + A playing channel is normally asked to render data to its playback Buffer in advance, + via automatic Buffer updates or the and functions, + ready for mixing with other channels to produce the final mix that is given to the output device. + + + When this attribute is switched on (the default is off), that buffering is skipped and + the channel will only be asked to produce data as it is needed during the generation of the final mix. + This allows the lowest latency to be achieved, but also imposes tighter timing requirements + on the channel to produce its data and apply any DSP/FX (and run mixtime syncs) that are set on it; + if too long is taken, there will be a break in the output, affecting all channels that are playing on the same device. + + + The channel's data is still placed in its playback Buffer when this attribute is on, + which allows and to be used, although there is + likely to be less data available to them due to the Buffer being less full. + + This attribute can be changed mid-playback. + If switched on, any already buffered data will still be played, so that there is no break in sound. + This attribute is not available on Windows, as BASS does not generate the final mix. + + + + + The CPU usage of a channel. (in percentage). + + This attribute gives the percentage of CPU that the channel is using, + including the time taken by decoding and DSP processing, and any FX that are + not using the "with FX flag" DX8 effect implementation. + It does not include the time taken to add the channel's data to the final output mix during playback. + The processing of some add-on stream formats may also not be entirely included, + if they use additional decoding threads; see the add-on documentation for details. + + + Like , this function does not strictly tell the CPU usage, but rather how timely the processing is. + For example, if it takes 10ms to generate 100ms of data, that would be 10%. + + + If the reported usage exceeds 100%, that means the channel's data is taking longer to generate than to play. + The duration of the data is based on the channel's current sample rate (). + A channel's CPU usage is updated whenever it generates data. + That could be during a playback Buffer update cycle, or a call, or a call. + For a decoding channel, it would be in a or call. + + This attribute is read-only, so cannot be modified via . + + + + + The sample rate conversion quality of a channel + + 0 = linear interpolation, 1 = 8 point sinc interpolation, 2 = 16 point sinc interpolation, 3 = 32 point sinc interpolation. + Other values are also accepted but will be interpreted as 0 or 3, depending on whether they are lower or higher. + + + When a channel has a different sample rate to what the output device is using, + the channel's sample data will need to be converted to match the output device's rate during playback. + This attribute determines how that is done. + The linear interpolation option uses less CPU, but the sinc interpolation gives better sound quality (less aliasing), + with the quality and CPU usage increasing with the number of points. + A good compromise for lower spec systems could be to use sinc interpolation for music playback and linear interpolation for sound effects. + + + Whenever possible, a channel's sample rate should match the output device's rate to avoid the need for any sample rate conversion. + The device's sample rate could be used in + or or BassMidi stream creation calls, for example. + + + The sample rate conversion occurs (when required) during playback, + after the sample data has left the channel's playback Buffer, so it does not affect the data delivered by . + Although this attribute has no direct effect on decoding channels, + it is still available so that it can be used by the BassMix add-on and anything else that wants to use it. + + + This attribute can be set at any time, and changes take immediate effect. + A channel's initial setting is determined by the config option, + or in the case of a sample channel. + + Platform-specific + On Windows, sample rate conversion is handled by Windows or the output device/driver rather than BASS, so this setting has no effect on playback there. + + + + + The download Buffer level required to resume stalled playback in percent... 0 - 100 (the default is 50%). + + This attribute determines what percentage of the download Buffer () + needs to be filled before playback of a stalled internet stream will resume. + It also applies to 'buffered' User file streams created with . + + + + + + The scanned info of a channel. + + + + + Disable playback ramping? + + + + + The average bitrate of a file stream. + + + + + Playback buffering length. + + + + + Processing granularity. (HMUSIC/HSTREAM/HRECORD) + + + + + The amplification level of a MOD music... 0 (min) to 100 (max). + This will be rounded down to a whole number. + + As the amplification level get's higher, the sample data's range increases, and therefore, the resolution increases. + But if the level is set too high, then clipping can occur, which can result in distortion of the sound. + You can check the current level of a MOD music at any time by . + By doing so, you can decide if a MOD music's amplification level needs adjusting. + The default amplification level is 50. + + + During playback, the effect of changes to this attribute are not heard instantaneously, due to buffering. + To reduce the delay, use the config option to reduce the Buffer Length. + + + + + + The pan separation level of a MOD music... 0 (min) to 100 (max), 50 = linear. + + This will be rounded down to a whole number. + By default BASS uses a linear panning "curve". + If you want to use the panning of FT2, use a pan separation setting of around 35. + To use the Amiga panning (ie. full left and right) set it to 100. + + + + + + The position scaler of a MOD music... 1 (min) to 256 (max). + + This will be rounded down to a whole number. + When calling , the row (HIWORD) will be scaled by this value. + By using a higher scaler, you can get a more precise position indication. + The default scaler is 1. + + + + + + The BPM of a MOD music... 1 (min) to 255 (max). + + This will be rounded down to a whole number. + This attribute is a direct mapping of the MOD's BPM, so the value can be changed via effects in the MOD itself. + Note that by changing this attribute, you are changing the playback Length. + During playback, the effect of changes to this attribute are not heard instantaneously, due to buffering. + To reduce the delay, use the config option to reduce the Buffer Length. + + + + + + The speed of a MOD music... 0 (min) to 255 (max). + + This will be rounded down to a whole number. + This attribute is a direct mapping of the MOD's speed, so the value can be changed via effects in the MOD itself. + The "speed" is the number of ticks per row. + Setting it to 0, stops and ends the music. + Note that by changing this attribute, you are changing the playback Length. + During playback, the effect of changes to this attribute are not heard instantaneously, due to buffering. + To reduce the delay, use the config option to reduce the Buffer Length. + + + + + + The global volume level of a MOD music... 0 (min) to 64 (max, 128 for IT format). + + This will be rounded down to a whole number. + This attribute is a direct mapping of the MOD's global volume, so the value can be changed via effects in the MOD itself. + The "speed" is the number of ticks per row. + Setting it to 0, stops and ends the music. + Note that by changing this attribute, you are changing the playback Length. + During playback, the effect of changes to this attribute are not heard instantaneously, due to buffering. + To reduce the delay, use the config option to reduce the Buffer Length. + + + + + + The number of active channels in a MOD music. + + This attribute gives the number of channels (including virtual) that are currently active in the decoder, + which may not match what is being heard during playback due to buffering. + To reduce the time difference, use the config option to reduce the Buffer Length. + This attribute is read-only, so cannot be modified via . + + + + + + The volume level... 0 (silent) to 1 (full) of a channel in a MOD music + channel#. + channel: The channel to set the volume of... 0 = 1st channel. + + The volume curve used by this attribute is always linear, eg. 0.5 = 50%. + The config option setting has no effect on this. + The volume level of all channels is initially 1 (full). + This attribute can also be used to count the number of channels in a MOD Music. + During playback, the effect of changes to this attribute are not heard instantaneously, due to buffering. + To reduce the delay, use the config option to reduce the Buffer Length. + + + + + + The volume level... 0 (silent) to 1 (full) of an instrument in a MOD music + inst#. + inst: The instrument to set the volume of... 0 = 1st instrument. + + The volume curve used by this attribute is always linear, eg. 0.5 = 50%. + The config option setting has no effect on this. + The volume level of all instruments is initially 1 (full). + For MOD formats that do not use instruments, read "sample" for "instrument". + This attribute can also be used to count the number of instruments in a MOD music. + During playback, the effect of changes to this attribute are not heard instantaneously, due to buffering. + To reduce the delay, use the config option to reduce the Buffer Length. + + + + + + BassFx Tempo: The Tempo in percents (-95%..0..+5000%). + + + + + BassFx Tempo: The Pitch in semitones (-60..0..+60). + + + + + BassFx Tempo: The Samplerate in Hz, but calculates by the same % as . + + + + + BassFx Tempo Option: Use FIR low-pass (anti-alias) filter (gain speed, lose quality)? true=1 (default), false=0. + See BassFx.TempoCreate for details. + On iOS, Android, WinCE and Linux ARM platforms this is by default disabled for lower CPU usage. + + + + + BassFx Tempo Option: FIR low-pass (anti-alias) filter Length in taps (8 .. 128 taps, default = 32, should be %4). + See BassFx.TempoCreate for details. + + + + + BassFx Tempo Option: Use quicker tempo change algorithm (gain speed, lose quality)? true=1, false=0 (default). + See BassFx.TempoCreate for details. + + + + + BassFx Tempo Option: Tempo Sequence in milliseconds (default = 82). + See BassFx.TempoCreate for details. + + + + + BassFx Tempo Option: SeekWindow in milliseconds (default = 14). + See BassFx.TempoCreate for details. + + + + + BassFx Tempo Option: Tempo Overlap in milliseconds (default = 12). + See BassFx.TempoCreate for details. + + + + + BassFx Tempo Option: Prevents clicks with tempo changes (default = FALSE). + See BassFx.TempoCreate for details. + + + + + Playback direction (-1 = Reverse or 1 = Forward). + + + + + BASSMIDI: Gets the Pulses Per Quarter Note (or ticks per beat) value of the MIDI file. + + This attribute is the number of ticks per beat as defined by the MIDI file; + it will be 0 for MIDI streams created via BassMidi.CreateStream(int,BassFlags,int), + It is read-only, so can't be modified via . + + + + + + BASSMIDI: The maximum percentage of CPU time that a MIDI stream can use... 0 to 100, 0 = unlimited. + + It is not strictly the CPU usage that is measured, but rather how timely the stream is able to render data. + For example, a limit of 50% would mean that the rendering would need to be at least 2x real-time speed. + When the limit is exceeded, BassMidi will begin killing voices, starting with the most quiet. + When the CPU usage is limited, the stream's samples are loaded asynchronously + so that any loading delays (eg. due to slow disk) do not hold up the stream for too long. + If a sample cannot be loaded in time, then it will be silenced + until it is available and the stream will continue playing other samples as normal in the meantime. + This does not affect sample loading via BassMidi.StreamLoadSamples, which always operates synchronously. + By default, a MIDI stream will have no CPU limit. + + + + + + BASSMIDI: The number of MIDI channels in a MIDI stream... 1 (min) - 128 (max). + + For a MIDI file stream, the minimum is 16. + New channels are melodic by default. + Any notes playing on a removed channel are immediately stopped. + + + + + + BASSMIDI: The maximum number of samples to play at a time (polyphony) in a MIDI stream... 1 (min) - 1000 (max). + + If there are currently more voices active than the new limit, then some voices will be killed to meet the limit. + The number of voices currently active is available via the Voices attribute. + A MIDI stream will initially have a default number of voices as determined by the Voices config option. + + + + + + BASSMIDI: The number of samples (voices) currently playing in a MIDI stream. + This attribute is read-only, so cannot be modified via . + + + + + BASSMIDI: The current state of a MIDI stream. + + + + + BASSMIDI: The sample rate conversion quality of a MIDI stream's samples. + + + + + BASSMIDI: The volume level (0.0=silent, 1.0=normal/default) of a track in a MIDI file stream + track#. + track#: The track to set the volume of... 0 = first track. + + The volume curve used by this attribute is always linear, eg. 0.5 = 50%. + The config option setting has no effect on this. + During playback, the effect of changes to this attribute are not heard instantaneously, due to buffering. + To reduce the delay, use the config option to reduce the Buffer Length. + This attribute can also be used to count the number of tracks in a MIDI file stream. + MIDI streams created via BassMidi.CreateStream(int,BassFlags,int) do not have any tracks. + + + + + + BassOpus: The sample rate of an Opus stream's source material. + + Opus streams always have a sample rate of 48000 Hz, and an Opus encoder will resample the source material to that if necessary. + This attribute presents the original sample rate, which may be stored in the Opus file header. + This attribute is read-only, so cannot be modified via . + + + + + + BassDSD: The gain (in decibels) applied when converting to PCM. + + + This attribute is only applicable when converting to PCM, and is unavailable when producing DSD-over-PCM or raw DSD data. + The default setting is determined by the config option + + + + + BassDSD: The DSD sample rate. + + This attribute is read-only, so cannot be modified via . + + + + BassMix: Custom output latency in seconds... default = 0 (no accounting for latency). Changes take immediate effect. + + + When a mixer is played by BASS, the BassMix.ChannelGetData(int,IntPtr,int), BassMix.ChannelGetLevel(int), BassMix.ChannelGetLevel(int,float[],float,LevelRetrievalFlags)", and BassMix.ChannelGetPosition(int,PositionFlags) functions will get the output latency and account for that so that they reflect what is currently being heard, but that cannot be done when a different output system is used, eg. ASIO or WASAPI. + In that case, this attribute can be used to tell the mixer what the output latency is, so that those functions can still account for it. + The mixer needs to have the and flags set to use this attribute. + + + + + Amount of data to asynchronously buffer from a splitter's source. + 0 = disable asynchronous buffering. The asynchronous buffering will be limited to the splitter's buffer length. + + + + + Maximum amount of data to asynchronously buffer at a time from a splitter's source. + 0 = as much as possible. + + + + + Channel Type flags to be used with (see also ). + + + + + Unknown channel format. + + + + + Sample channel. (HCHANNEL) + + + + + Recording channel. (HRECORD) + + + + + MO3 format music. + + + + + ZXTune. + + + + + User sample stream. + This can also be used as a flag to test if the channel is any kind of HSTREAM. + + + + + OGG format stream. + + + + + MP1 format stream. + + + + + MP2 format stream. + + + + + MP3 format stream. + + + + + WAV format stream. + + + + + CoreAudio codec stream. Additional information is avaliable via the tag (iOS and Mac). + + + + + Media Foundation codec stream. Additional information is avaliable via the tag. + + + + + Audio-CD, CDA + + + + + WMA format stream. + + + + + MP3 over WMA format stream. + + + + + Winamp Input format stream. + + + + + WavPack Lossless format stream. + + + + + WavPack Hybrid Lossless format stream. + + + + + WavPack Lossy format stream. + + + + + WavPack Hybrid Lossy format stream. + + + + + Optimfrog format stream. + + + + + APE format stream. + + + + + BassMix mixer stream. + + + + + BassMix splitter stream. + + + + + FLAC format stream. + + + + + FLAC OGG format stream. + + + + + MPC format stream. + + + + + AAC format stream. + + + + + MP4 format stream. + + + + + Speex format stream. + + + + + MIDI sound format stream. + + + + + Apple Lossless (ALAC) format stream. + + + + + TTA format stream. + + + + + AC3 format stream. + + + + + Video format stream. + + + + + Opus format stream. + + + + + Direct Stream Digital (DSD) format stream. + + + + + ADX format stream. + + ADX is a lossy proprietary audio storage and compression format developed + by CRI Middleware specifically for use in video games, it is derived from ADPCM. + + + + + + AIX format stream. + Only for ADX of all versions (with AIXP support). + + + + + BassFx tempo stream. + + + + + BassFx reverse stream. + + + + + MOD format music. + This can also be used as a flag to test if the channel is any kind of HMusic. + + + + + MTM format music. + + + + + S3M format music. + + + + + XM format music. + + + + + IT format music. + + + + + Wave format stream, LoWord = codec. + + + + + Wave format stream, PCM 16-bit. + + + + + Wave format stream, Float 32-bit. + + + + + Dummy stream. + + + + + Device mix stream. + + + + + Bass Configuration Values. + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + Enable the loopback recording feature. + + + + + See . + + + + + See . + + + + + See . + + + + + Audio session configuration on iOS + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + MF Disable. + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + See . + + + + + Device Period. + + + + + See . + + + + + Gets the Android AAudio session ID + + + + + Enable AAudio output + + + + + See BassAc3.DRC. + + + + + See BassWma.PrebufferInternetStreams. + + + + + See BassWma.UseBassFileHandling. + + + + + See BassWma.CanSeekNetworkStreams. + + + + + See BassWma.PlayWMVAudio. + + + + + See BassWma.AsyncDecoding. + + + + + See BassCd.FreeOld. + + + + + See BassCd.RetryCount. + + + + + See BassCd.AutoSpeedReduction. + + + + + See BassCd.SkipError. + + + + + See BassCd.CDDBServer. + + + + + See BassEnc.DSPPriority. + + + + + See BassEnc.Queue. + + + + + See BassEnc.ACMLoad. + + + + + See BassEnc.CastTimeout. + + + + + See BassEnc.CastProxy. + + + + + See BassMidi.Compact. + + + + + See BassMidi.Voices. + + + + + See BassMidi.AutoFont. + + + + + See BassMidi.DefaultFont. + + + + + See BassMidi.InputPorts. + + + + + See MixerBufferLength. + + + + + See MixerPositionEx. + + + + + See SplitBufferLength. + + + + + See BassAac.PlayAudioFromMp4. + + + + + See BassAac.AacSupportMp4. + + + + + See BassDsd.DefaultFrequency. + + + + + See BassWinamp.InputTimeout. + + + + + See BassDsd.DefaultGain. + + + + + See BassZXTune.MaxFileSize. + + + + + Flags to be used with . + + + + + Query how much data is buffered + + + + + FFT flag: FFT for each channel, else all combined + + + + + FFT flag: no Hanning window + + + + + FFT flag: pre-remove DC bias + + + + + FFT flag: return complex data + + + + + flag: return 8.24 fixed-point data (Android) + + + + + flag: return floating-point sample data + + + + + 256 sample FFT (returns 128 floating-point values) + + + + + 512 sample FFT (returns 256 floating-point values) + + + + + 1024 sample FFT (returns 512 floating-point values) + + + + + 2048 sample FFT (returns 1024 floating-point values) + + + + + 4096 sample FFT (returns 2048 floating-point values) + + + + + 8192 sample FFT (returns 4096 floating-point values) + + + + + 16384 sample FFT (returns 8192 floating-point values) + + + + + 32768 FFT + + + + + Device Info Flags + + + + + The device is not enabled and not initialized. + + + + + The device is enabled. + It will not be possible to initialize the device if this flag is not present. + + + + + The device is the system default. + + + + + The device is initialized, ie. or has been called. + + + + + The device is a Loopback device. + + + + + Bitmask to identify the device Type. + + + + + Initialization flags to be used with + + + + + 0 = 16 bit, stereo, no 3D, no Latency calc, no Speaker Assignments + + + + + Use 8 bit resolution, else 16 bit. + + + + + Use mono, else stereo. + + + + + Enable 3D functionality. + Note: If this is not specified when initilizing BASS, + then the is ignored when loading/creating a sample/stream/music. + + + + + Limit output to 16 bit. + + + + + Calculate device latency ( struct). + + + + + Use the Windows control panel setting to detect the number of speakers. + Only use this option if BASS doesn't detect the correct number of supported + speakers automatically and you want to force BASS to use the number of speakers + as configured in the windows control panel. + + + + + Force enabling of speaker assignment (always 8 speakers will be used regardless if the soundcard supports them). + Only use this option if BASS doesn't detect the correct number of supported + speakers automatically and you want to force BASS to use 8 speakers. + + + + + Ignore speaker arrangement + + + + + Linux-only: Initialize the device using the ALSA "dmix" plugin, else initialize the device for exclusive access. + + + + + Set the device's output rate to freq, otherwise leave it as it is. + + + + + Limit output to stereo. + + + + + Hog/Exclusive mode. + + + + + Use AudioTrack output. + + + + + Use DirectSound output. + + + + + Device Type to be used with . + + + + + An audio endpoint Device that the User accesses remotely through a network. + + + + + A set of speakers. + + + + + An audio endpoint Device that sends a line-level analog signal to + a line-Input jack on an audio adapter or that receives a line-level analog signal + from a line-output jack on the adapter. + + + + + A set of headphones. + + + + + A microphone. + + + + + An earphone or a pair of earphones with an attached mouthpiece for two-way communication. + + + + + The part of a telephone that is held in the hand and + that contains a speaker and a microphone for two-way communication. + + + + + An audio endpoint Device that connects to an audio adapter through a connector + for a digital interface of unknown Type. + + + + + An audio endpoint Device that connects to an audio adapter through + a Sony/Philips Digital Interface (S/PDIF) connector. + + + + + An audio endpoint Device that connects to an audio adapter through + a High-Definition Multimedia Interface (HDMI) connector. + + + + + An audio endpoint Device that connects to an audio adapter through a DisplayPort connector. + + + + + DX8 effect phase. + + + + + Phase differential between left and right LFOs (-180) + + + + + Phase differential between left and right LFOs (-90) + + + + + Phase differential between left and right LFOs (+/-0) + + + + + Phase differential between left and right LFOs (+90) + + + + + Phase differential between left and right LFOs (+180) + + + + + DirectX Effect Waveform. + + + + + Triangle Wave. + + + + + Sine Wave. + + + + + FX effect types, use with . + + + + + DX8 Chorus. + + + + + DX8 Distortion. + + + + + DX8 Echo. + + + + + DX8 Flanger. + + + + + DX8 Compressor (Windows Only). + + + + + DX8 Gargle (Windows Only). + + + + + DX8 I3DL2 (Interactive 3D Audio Level 2) reverb (Windows Only). + + + + + DX8 Parametric equalizer. + + + + + DX8 Reverb. + + + + + BassFx: Channel Volume Ping-Pong (multi channel). + + + + + BassFx: Volume control (multi channel). + + + + + BassFx: Peaking Equalizer (multi channel). + + + + + BassFx: Channel Swap/Remap/Downmix (multi channel). + + + + + BassFx: Dynamic Amplification (multi channel). + + + + + BassFx: Auto WAH (multi channel). + + + + + BassFx: Phaser (multi channel). + + + + + BassFx: Chorus (multi channel). + + + + + BassFx: Distortion (multi channel). + + + + + BassFx: Dynamic Range Compressor (multi channel). + + + + + BassFx: Volume Envelope (multi channel). + + + + + BassFx: BiQuad filters (multi channel). + + + + + BassFx: Echo/Reverb 4 (multi channel). + + + + + BassFx: Pitch Shift using FFT (multi channel). + + + + + BassFx: Pitch Shift using FFT (multi channel). + + + + + Stream File Position modes to be used with + + + + + Position that is to be decoded for playback next. + This will be a bit ahead of the position actually being heard due to buffering. + + + + + Download progress of an internet file stream or "buffered" User file stream. + + + + + End of the file, in other words the file Length. + When streaming in blocks, the file Length is unknown, so the download Buffer Length is returned instead. + + + + + Start of stream data in the file. + + + + + Internet file stream or "buffered" User file stream is still connected? 0 = no, 1 = yes. + + + + + The amount of data in the Buffer of an internet file stream or "buffered" User file stream. + Unless streaming in blocks, this is the same as . + + + + + Returns the socket hanlde used for streaming. + + + + + The amount of data in the asynchronous file reading Buffer. + This requires that the flag was used at the stream's creation. + + + + + WMA add-on: internet buffering progress (0-100%) + + + + + Segment Sequence number. + + + + + DSP channels flags. + + + + + All channels at once (as by default). + + + + + Disable an effect for all channels (resp. set the global volume of the Volume effect). + + + + + left-front channel + + + + + right-front channel + + + + + Channel 3: depends on the multi-channel source (see above info). + + + + + Channel 4: depends on the multi-channel source (see above info). + + + + + Channel 5: depends on the multi-channel source (see above info). + + + + + Channel 6: depends on the multi-channel source (see above info). + + + + + Channel 7: depends on the multi-channel source (see above info). + + + + + Channel 8: depends on the multi-channel source (see above info). + + + + + Channel 9: depends on the multi-channel source (see above info). + + + + + Channel 10: depends on the multi-channel source (see above info). + + + + + Channel 11: depends on the multi-channel source (see above info). + + + + + Channel 12: depends on the multi-channel source (see above info). + + + + + Channel 13: depends on the multi-channel source (see above info). + + + + + Channel 14: depends on the multi-channel source (see above info). + + + + + Channel 15: depends on the multi-channel source (see above info). + + + + + Channel 16: depends on the multi-channel source (see above info). + + + + + Channel 17: depends on the multi-channel source (see above info). + + + + + Channel 18: depends on the multi-channel source (see above info). + + + + + Channel 19: depends on the multi-channel source (see above info). + + + + + Channel 20: depends on the multi-channel source (see above info). + + + + + Channel 21: depends on the multi-channel source (see above info). + + + + + Channel 22: depends on the multi-channel source (see above info). + + + + + Channel 23: depends on the multi-channel source (see above info). + + + + + Channel 24: depends on the multi-channel source (see above info). + + + + + Channel 25: depends on the multi-channel source (see above info). + + + + + Channel 26: depends on the multi-channel source (see above info). + + + + + Channel 27: depends on the multi-channel source (see above info). + + + + + Channel 28: depends on the multi-channel source (see above info). + + + + + Channel 29: depends on the multi-channel source (see above info). + + + + + Channel 30: depends on the multi-channel source (see above info). + + + + + flags. + + + + + Don't change any setting. + Use this flag, if you only want to set the volume. + + + + + Disable the Input. + This flag can't be used when the device supports only one Input at a time. + + + + + Enable the Input. + If the device only allows one Input at a time, then any previously enabled Input will be disabled by this. + + + + + Used with applying on the return value; + + + + + The Type of Input is also indicated in the high 8-bits of (use this to test the return value). + + + + + The Type of Input is errorness. + + + + + Anything that is not covered by the other types + + + + + Digital Input source, for example, a DAT or audio CD. + + + + + Line-in. On some devices, "Line-in" may be combined with other analog sources into a single Analog Input. + + + + + Microphone. + + + + + Internal MIDI synthesizer. + + + + + Analog audio CD. + + + + + Telephone. + + + + + PC speaker. + + + + + The device's WAVE/PCM output. + + + + + Auxiliary. Like "Line-in", "Aux" may be combined with other analog sources into a single Analog Input on some devices. + + + + + Analog, typically a mix of all analog sources (what you hear). + + + + + Level retrieval flags (to be used with ). + + + + + Retrieves mono levels + + + + + Retrieves mono levels + + + + + Retrieves stereo levels + + + + + Optional Flag: If set it returns RMS levels instead of peak leavels + + + + + Apply the current and values to the level reading. + + + + + 3D Channel Mode flags used with . + + + + + To be used with + in order to leave the current 3D processing mode unchanged. + + + + + Normal 3D processing + + + + + The channel's 3D position (position/velocity/orientation) are relative to the listener. + When the listener's position/velocity/orientation is changed with , + the channel's position relative to the listener does not change. + + + + + Turn off 3D processing on the channel, the sound will be played in the center. + + + + + return values. + + + + + The channel is not active, or Handle is not a valid channel. + + + + + The channel is playing (or recording). + + + + + Playback of the stream has been stalled due to there not being enough sample + data to continue playing. The playback will automatically resume once there's + sufficient data to do so. + + + + + The channel is paused. + + + + + Channel Position Mode flags to be used with e.g. , , + or . + + + + + Byte position. + + + + + Order.Row position (HMUSIC only). + LoWord = order, HiWord = row * scaler (). + + + + + Tick position (MIDI streams only). + + + + + OGG bitstream number. + + + + + CD Add-On: the track number. + + + + + ZXTune Sub Count. + + + + + ZXTune Sub Length. + + + + + Midi Add-On: Let the old sound decay naturally (including reverb) when changing the position, + including looping and such can also be used in calls to have it apply to particular position changes. + + + + + Mixer playback buffering when seeking. + + + + + MOD Music Flag: Stop all notes when moving position. + + + + + MOD Music Flag: Stop all notes and reset bmp/etc when moving position. + + + + + Mixer Flag: Don't ramp-in the start after seeking. + + + + + Flag: Allow inexact seeking. + For speed, seeking may stop at the beginning of a block rather than partially processing the block to reach the requested position. + + + + + Flag: The requested position is relative to the current position. pos is treated as signed in this case and can be negative. + Unless the flag is also used, this is relative to the current decoding/processing position, which will be ahead of the currently heard position if the mixer output is buffered. + + + + + Get the decoding (not playing) position. + + + + + Flag: decode to the position instead of seeking. + + + + + Scan the file to build a seek table up to the position, if it has not already been scanned. + Scanning will continue from where it left off previously rather than restarting from the beginning of the file each time. + This flag only applies to MP3/MP2/MP1 files and will be ignored with other file formats. + + + + + HLS Segment sequence number. + + + + + Formats flags of member to be used with + + + + + Unknown Format + + + + + 11.025 kHz, Mono, 8-bit + + + + + 11.025 kHz, Stereo, 8-bit + + + + + 11.025 kHz, Mono, 16-bit + + + + + 11.025 kHz, Stereo, 16-bit + + + + + 22.05 kHz, Mono, 8-bit + + + + + 22.05 kHz, Stereo, 8-bit + + + + + 22.05 kHz, Mono, 16-bit + + + + + 22.05 kHz, Stereo, 16-bit + + + + + 44.1 kHz, Mono, 8-bit + + + + + 44.1 kHz, Stereo, 8-bit + + + + + 44.1 kHz, Mono, 16-bit + + + + + 44.1 kHz, Stereo, 16-bit + + + + + 48 kHz, Mono, 8-bit + + + + + 48 kHz, Stereo, 8-bit + + + + + 48 kHz, Mono, 16-bit + + + + + 48 kHz, Stereo, 16-bit + + + + + 96 kHz, Mono, 8-bit + + + + + 96 kHz, Stereo, 8-bit + + + + + 96 kHz, Mono, 16-bit + + + + + 96 kHz, Stereo, 16-bit + + + + + Flags to be used with + + + + + None of the flags is set + + + + + The device's drivers do NOT have DirectSound support, so it is being emulated. + Updated drivers should be installed. + + + + + The device driver has been certified by Microsoft. + This flag is always set on WDM drivers. + + + + + flag used with resp. used with a User sample stream to be used with . + + + + + Flag to signify that the end of the stream is reached. + + + + + Create a "push" stream. + Instead of BASS pulling data from a StreamProcedure function, data is pushed to + BASS via . + + + + + Create a "dummy" stream. + A dummy stream doesn't have any sample data of its own, but a decoding dummy + stream (with flag) can be used to apply DSP/FX processing + to any sample data, by setting DSP/FX on the stream and feeding the data through . + The dummy stream should have the same sample format as the data being fed through it. + + + + + Create a "dummy" stream for the device's final output mix. + This allows DSP/FX to be applied to all channels that are playing on the device, rather than individual channels. + DSP/FX parameter change latency is also reduced because channel playback buffering is avoided. + The stream is created with the device's current output sample format; the freq, chans, and flags parameters are ignored. + It will always be floating-point except on platforms/architectures that do not support floating-point, where it will be 16-bit instead. + + + + + User file system flag to be used with + + + + + Unbuffered file system (like also used by ). + + The unbuffered file system is what is used by . + In this system, BASS does not do any intermediate buffering - it simply requests data from the file as and when it needs it. + This means that reading () must be quick, + otherwise the decoding will be delayed and playback Buffer underruns (old data repeated) are a possibility. + It's not so important for seeking () to be fast, as that is generally not required during decoding, except when looping a file. + + + + + + Buffered file system (like also used by ). + + The buffered file system is what is used by . + As the name suggests, data from the file is buffered so that it's readily available for decoding - + BASS creates a thread dedicated to "downloading" the data. This is ideal for when the data is coming from a source that has high latency, like the internet. + It's not possible to seek in buffered file streams, until the download has reached the requested position - it's not possible to seek at all if it's being streamed in blocks. + + + + + + Buffered, with the data pushed to BASS via . + + The push buffered file system is the same as , except that instead of the file data being pulled from the function in a "download" thread, + the data is pushed to BASS via . + A function is still required, to get the initial data used in the creation of the stream. + + + + + + Sync types to be used with (param flag) and (data flag). + + + + + FLAG: sync only once, else continuously + + + + + FLAG: sync at mixtime, else at playtime + + + + + Call the sync asynchronously in the dedicated sync thread. This only affects mixtime syncs (except syncs) + and allows the callback function to safely call or on the same channel handle. + + + + + Sync when a channel reaches a position. + param : position in bytes + data : not used + + + + + Sync when an instrument (sample for the non-instrument based formats) is played in a MOD music (not including retrigs). + param : LOWORD=instrument (1=first) HIWORD=note (0=c0...119=b9, -1=all) + data : LOWORD=note HIWORD=volume (0-64) + + + + + Sync when a channel reaches the end. + param : not used + data : 1 = the sync is triggered by a backward jump in a MOD music, otherwise not used + + + + + Sync when the "sync" effect (XM/MTM/MOD: E8x/Wxx, IT/S3M: S2x) is used. + param : 0:data=Position, 1:data="x" value + data : param=0: LOWORD=order HIWORD=row, param=1: "x" value + + + + + Sync when metadata is received in a stream. + param : not used + data : not used - the updated metadata is available from + + + + + Sync when an attribute slide is completed. + param : not used + data : the Type of slide completed (one of the values) + + + + + Sync when playback has stalled. + param : not used + data : 0=stalled, 1=resumed + + + + + Sync when downloading of an internet (or "buffered" User file) stream has ended. + param : not used + data : not used + + + + + Sync when a channel is freed. + param : not used + data : not used + + + + + Sync when a MOD music reaches an order:row position. + param : LOWORD=order (0=first, -1=all) HIWORD=row (0=first, -1=all) + data : LOWORD=order HIWORD=row + + + + + Sync when seeking (inc. looping and restarting). + So it could be used to reset DSP/etc. + param : position in bytes + data : 0=playback is unbroken, 1=if is it broken (eg. Buffer flushed). + The latter would be the time to reset DSP/etc. + + + + + Sync when a new logical bitstream begins in a chained OGG stream. + Updated tags are available from . + param : not used + data : not used + + + + + Sync when the DirectSound Buffer fails during playback, eg. when the device is no longer available. + param : not used + data : not used + + + + + WINAMP add-on: Sync when bitrate is changed or retrieved from a winamp Input plug-in. + param : not used + data : the bitrate retrieved from the winamp Input plug-in - + called when it is retrieved or changed (VBR MP3s, OGGs, etc). + + + + + CD add-on: Sync when playback is stopped due to an error. + For example, the drive door being opened. + param : not used + data : the position that was being read from the CD track at the time. + + + + + CD add-on: Sync when the read speed is automatically changed due to the BassCd.AutoSpeedReduction setting. + param : not used + data : the new read speed. + + + + + MIDI add-on: Sync when a marker is encountered. + param : not used + data : the marker index, which can be used in a BassMidi.StreamGetMark(int,Midi.MidiMarkerType,int,out Midi.MidiMarker) call. + + + + + MIDI add-on: Sync when a cue is encountered. + param : not used + data : the marker index, which can be used in a BassMidi.StreamGetMark(int,Midi.MidiMarkerType,int,out Midi.MidiMarker) call. + + + + + MIDI add-on: Sync when a lyric event is encountered. + param : not used + data : the marker index, which can be used in a BassMidi.StreamGetMark(int,Midi.MidiMarkerType,int,out Midi.MidiMarker) call. + If the text begins with a '/' (slash) character, a new line should be started. + If it begins with a '\' (backslash) character, the display should be cleared. + + + + + MIDI add-on: Sync when a text event is encountered. + param : not used + data : the marker index, which can be used in a BassMidi.StreamGetMark(int,Midi.MidiMarkerType,int,out Midi.MidiMarker) call. + Lyrics can sometimes be found in MidiMarkerType.Text instead of MidiMarkerType.Lyric markers. + + + + + MIDI add-on: Sync when a Type of event is processed, in either a MIDI file or BassMidi.StreamEvent(int,int,Midi.MidiEventType,int). + param : event Type (0 = all types). + data : LOWORD = event parameter, HIWORD = channel (high 8 bits contain the event Type when syncing on all types). + See BassMidi.StreamEvent(int,int,Midi.MidiEventType,int) for a list of event types and their parameters. + + + + + MIDI add-on: Sync when reaching a tick position. + param : tick position. + data : not used + + + + + MIDI add-on: Sync when a time signature event is processed. + param : event Type. + data : The time signature events are given (by BassMidi.StreamGetMark(int,Midi.MidiMarkerType,int,out Midi.MidiMarker)) + in the form of "numerator/denominator metronome-pulse 32nd-notes-per-MIDI-quarter-note", eg. "4/4 24 8". + + + + + MIDI add-on: Sync when a key signature event is processed. + param : event Type. + data : The key signature events are given (by Midi.BassMidi.StreamGetMark(int,Midi.MidiMarkerType,int,out Midi.MidiMarker)) in the form of "a b", + where a is the number of sharps (if positive) or flats (if negative), + and b signifies major (if 0) or minor (if 1). + + + + + WMA add-on: Sync on a track change in a server-side playlist. + Updated tags are available via . + param : not used + data : not used + + + + + WMA add-on: Sync on a mid-stream tag change in a server-side playlist. + Updated tags are available via . + param : not used + data : not used - the updated metadata is available from . + + + + + MIX add-on: Sync when an envelope reaches the end. + param : not used + data : envelope Type + + + + + MIX add-on: Sync when an envelope node is reached. + param : Optional limit the sync to a certain envelope Type (one of the BASSMIXEnvelope values). + data : Will contain the envelope Type in the LOWORD and the current node number in the HIWORD. + + + + + Sync when a new segment begins downloading. + Mixtime only. + param: not used. + data: not used. + + + + + Types of what's returned by . + + + + + ID3v1 tags : A pointer to a 128 byte block is returned. + See www.id3.org for details of the block's structure. + + + + + ID3v2 tags : A pointer to a variable Length block is returned. + See www.id3.org for details of the block's structure. + + + + + OGG comments : Only available when streaming an OGG file. + A pointer to a series of null-terminated UTF-8 strings is returned, the final string ending with a double null. + + + + + HTTP headers : Only available when streaming from a HTTP server. + A pointer to a series of null-terminated ANSI strings is returned, the final string ending with a double null. + + + + + ICY headers : A pointer to a series of null-terminated ANSI strings is returned, + the final string ending with a double null. + + + + + ICY (Shoutcast) metadata : A single null-terminated ANSI string containing + the current stream title and url (usually omitted). + The format of the string is: StreamTitle='xxx';StreamUrl='xxx'; + + + + + APE (v1 or v2) tags : Only available when streaming an APE file. + A pointer to a series of null-terminated UTF-8 strings is returned, + the final string ending with a double null. + + + + + iTunes/MP4 metadata : Only available when streaming a MP4 file. + A pointer to a series of null-terminated UTF-8 strings is returned, the final string ending with a double null. + + + + + WMA header tags: WMA tags : Only available when streaming a WMA file. + A pointer to a series of null-terminated UTF-8 strings is returned, the final string ending with a double null. + + + + + OGG encoder : A single null-terminated UTF-8 string. + + + + + Lyric3v2 tag : A single ANSI string is returned, containing the Lyrics3v2 information. + See www.id3.org/Lyrics3v2 for details of its format. + + + + + WMA mid-stream tag: a single UTF-8 string. + + + + + Apple CoreAudio codec info (see CACodecTag). + + + + + WMA codec: A description of the codec used by the file. + 2 null-terminated UTF-8 strings are returned, with the 1st string being the name of the codec, + and the 2nd containing additional information like what VBR setting was used. + + + + + FLAC cuesheet. + + + + + Media Foundation tags : A pointer to a series of null-terminated UTF-8 strings + is returned, the final string ending with a double null. + + + + + WAVE format : A pointer to a structure is returned. + + + + + ZXTune Sub Ogg. + + + + + RIFF/WAVE tags : array of null-terminated ANSI strings. + + + + + BWF/RF64 tags (Broadcast Audio Extension) : A pointer to a variable Length block is returned. + See the EBU specification for details of the block's structure. + + + + + RIFF/BWF Radio Traffic Extension tags : A pointer to a variable Length block is returned. + See the EBU specifications for details of the block's structure. + + + + + RIFF DISP text chunk: a single ANSI string. + + + + + + index# : ApeBinaryTag structure. + + + + + MOD music name : a single ANSI string. + + + + + MOD message : a single ANSI string. + + + + + MOD music order list: BYTE array of pattern numbers played at that order position. + Pattern number 254 is "+++" (skip order) and 255 is "---" (end song). + You can use with to get the Length of the array. + + + + + MOD author : UTF-8 string + + + + + + instrument#, MOD instrument name : ANSI string + + + + + + sample#, MOD sample name : ANSI string + + + + + + track#, track text : array of null-terminated ANSI strings + + + + + + index# : FLACPicture structure. + + + + + ADX tags: A pointer to the ADX loop structure. + + + + + DSDIFF artist : ASCII string + + + + + DSDIFF title : ASCII string + + + + + + index, DSDIFF comment : A pointer to the DSDIFF comment tag structure. + + + + + Segment's EXTINF tag: UTF-8 string. + + + + + Segment's EXT-X-STREAM-INF tag: UTF-8 string. + + + + + EXT-X-PROGRAM-DATE-TIME tag: UTF-8 string. + + + + + Voice allocation management flags. + These flags enable hardware resource stealing... if the hardware has no available voices, a currently playing Buffer will be stopped to make room for the new Buffer. + + + NOTE: only samples loaded/created with the flag are considered for termination by the DX7 voice management. + + + + + Play the sample in hardware (default). + If no hardware voices are available then the "play" call will fail. + + + + + Play the sample in software (ie. non-accelerated). + No other VAM flags may be used together with this flag. + + + + + If there are no free hardware voices, + the Buffer to be terminated will be the one with the least time left to play. + + + + + If there are no free hardware voices, the Buffer to be terminated will be + one that was loaded/created with the flag and is beyond + it's max distance. If there are no buffers that match this criteria, then + the "play" call will fail. + + + + + If there are no free hardware voices, + the Buffer to be terminated will be the one with the lowest priority. + + + + + Wave Format Encoding + + + + + Wave Format Extensible, Microsoft Corporation + + + + + Unknown, Microsoft Corporation + + + + + PCM, Microsoft Corporation + + + + + ADPCM, Microsoft Corporation + + + + + IEEE Float, Microsoft Corporation + + + + + VSELP, Compaq Computer Corp. + + + + + IBM CVSD, IBM Corporation + + + + + ALAW, Microsoft Corporation + + + + + MULAW, Microsoft Corporation + + + + + DTS, Microsoft Corporation + + + + + DRM, Microsoft Corporation + + + + + WMA VOICE 9 + + + + + OKI ADPCM, OKI + + + + + DVI ADPCM, Intel Corporation + + + + + IMA ADPCM, Intel Corporation + + + + + MEDIASPACE ADPCM, Videologic + + + + + SIERRA ADPCM, Sierra Semiconductor Corp + + + + + G723 ADPCM, Antex Electronics Corporation + + + + + DIGISTD, DSP Solutions, Inc. + + + + + DIGIFIX, DSP Solutions, Inc. + + + + + DIALOGIC OKI ADPCM, Dialogic Corporation + + + + + MEDIAVISION ADPCM, Media Vision, Inc. + + + + + CU CODEC, Hewlett-Packard Company + + + + + YAMAHA ADPCM, Yamaha Corporation of America + + + + + SONARC, Speech Compression + + + + + DSPGROUP TRUESPEECH, DSP Group, Inc + + + + + ECHOSC1, Echo Speech Corporation + + + + + AUDIOFILE AF36, Virtual Music, Inc. + + + + + APTX, Audio Processing Technology + + + + + AUDIOFILE AF10, Virtual Music, Inc. + + + + + PROSODY 1612, Aculab plc + + + + + LRC, Merging Technologies S.A. + + + + + DOLBY AC2, Dolby Laboratories + + + + + GSM610, Microsoft Corporation + + + + + MSNAUDIO, Microsoft Corporation + + + + + ANTEX ADPCME, Antex Electronics Corporation + + + + + CONTROL RES VQLPC, Control Resources Limited + + + + + DIGIREAL, DSP Solutions, Inc. + + + + + DIGIADPCM, DSP Solutions, Inc. + + + + + CONTROL RES CR10, Control Resources Limited + + + + + Natural MicroSystems + + + + + Crystal Semiconductor IMA ADPCM + + + + + Echo Speech Corporation + + + + + Rockwell International + + + + + Rockwell International + + + + + Xebec Multimedia Solutions Limited + + + + + Antex Electronics Corporation + + + + + Antex Electronics Corporation + + + + + Microsoft Corporation + + + + + MPEG, Microsoft Corporation + + + + + InSoft, Inc. + + + + + InSoft, Inc. + + + + + MPEGLAYER3, ISO/MPEG Layer3 Format Tag + + + + + Lucent Technologies + + + + + Cirrus Logic + + + + + ESS Technology + + + + + Voxware Inc + + + + + Canopus, co., Ltd. + + + + + APICOM + + + + + APICOM + + + + + Microsoft Corporation + + + + + Voxware Inc + + + + + Voxware Inc + + + + + Voxware Inc + + + + + Voxware Inc + + + + + Voxware Inc + + + + + Voxware Inc + + + + + Voxware Inc + + + + + Voxware Inc + + + + + Voxware Inc + + + + + Voxware Inc + + + + + Voxware Inc + + + + + Softsound, Ltd. + + + + + Voxware Inc + + + + + Microsoft Corporation + + + + + AT&T Labs, Inc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WAVE_FORMAT_GSM + + + + + WAVE_FORMAT_G729 + + + + + WAVE_FORMAT_G723 + + + + + WAVE_FORMAT_ACELP + + + + + WAVE_FORMAT_RAW_AAC1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Windows Media Audio, WAVE_FORMAT_WMAUDIO2, Microsoft Corporation + + + + + Windows Media Audio Professional WAVE_FORMAT_WMAUDIO3, Microsoft Corporation + + + + + Windows Media Audio Lossless, WAVE_FORMAT_WMAUDIO_LOSSLESS + + + + + Windows Media Audio Professional over SPDIF WAVE_FORMAT_WMASPDIF (0x0164) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Advanced Audio Coding (AAC) audio in Audio Data Transport Stream (ADTS) format. + The format block is a WAVEFORMATEX structure with wFormatTag equal to WAVE_FORMAT_MPEG_ADTS_AAC. + + + The WAVEFORMATEX structure specifies the core AAC-LC sample rate and number of channels, + prior to applying spectral band replication (SBR) or parametric stereo (PS) tools, if present. + No additional data is required after the WAVEFORMATEX structure. + + + + + + + + MPEG-4 audio transport stream with a synchronization layer (LOAS) and a multiplex layer (LATM). + The format block is a WAVEFORMATEX structure with wFormatTag equal to WAVE_FORMAT_MPEG_LOAS. + + + The WAVEFORMATEX structure specifies the core AAC-LC sample rate and number of channels, + prior to applying spectral SBR or PS tools, if present. + No additional data is required after the WAVEFORMATEX structure. + + + + NOKIA_MPEG_ADTS_AAC + + + NOKIA_MPEG_RAW_AAC + + + VODAFONE_MPEG_ADTS_AAC + + + VODAFONE_MPEG_RAW_AAC + + + + High-Efficiency Advanced Audio Coding (HE-AAC) stream. + The format block is an HEAACWAVEFORMAT structure. + + + + + WAVE_FORMAT_DVM + + + + + WAVE_FORMAT_VORBIS1 "Og" Original stream compatible + + + + + WAVE_FORMAT_VORBIS2 "Pg" Have independent header + + + + + WAVE_FORMAT_VORBIS3 "Qg" Have no codebook header + + + + + WAVE_FORMAT_VORBIS1P "og" Original stream compatible + + + + + WAVE_FORMAT_VORBIS2P "pg" Have independent headere + + + + + WAVE_FORMAT_VORBIS3P "qg" Have no codebook header + + + + + Used with to retrieve information on the current device. + + + The DSCAPS_SECONDARY flags only indicate which sample formats are supported by hardware mixing. + Platform-specific + + On Windows, it is possible for speakers to mistakenly be 2 with some devices/drivers when the device in fact supports more speakers. + In that case, the flag can be used (with ) to use the Windows control panel setting, + or the flag can be used to force the enabling of speaker assignment to up to 8 speakers, + even though the device may not really support that many speakers. + The result of assigning channels to nonexistent speakers is undefined; + they may be heard on other speakers or not heard at all. + + + The flags, hwsize, hwfree, freesam, free3d, minrate, maxrate, eax, and dsver members are only used on Windows, as DirectSound and hardware mixing are only available there. + The freq member is not available on Windows prior to Vista. + + On Windows, the availability of the latency and minbuf values depends on the flag being used when was called. + + + + + The device's total amount of hardware memory. + + + + + The device's amount of free hardware memory. + + + + + The number of free sample slots in the hardware. + + + + + The number of free 3D sample slots in the hardware. + + + + + The minimum sample rate supported by the hardware. + + + + + The maximum sample rate supported by the hardware. + + + + The device supports EAX and has it enabled? + The device's "Hardware acceleration" needs to be set to "Full" in it's "Advanced Properties" setup, else EAX is disabled. + This is always if was not used when was called. + + + + The minimum Buffer Length (rounded up to the nearest millisecond) recommended for use with the config option. + Requires that was used when was called. + + + + + DirectSound version. + + 9 = DX9/8/7/5 features are available, + 8 = DX8/7/5 features are available, + 7 = DX7/5 features are available, + 5 = DX5 features are available. + 0 = none of the DX9/8/7/5 features are available. + + + + + The delay (rounded up to the nearest millisecond) for playback of HSTREAM/HMUSIC channels to start and be heard. + Requires that was used when was called. + + + + + The flags parameter of the call (). + + + + The number of speakers the device/drivers supports... 2 means that there is no support for speaker assignment - this will always be the case with non-WDM drivers in Windows. + It's also possible that it could mistakenly be 2 with some devices/drivers, when the device in fact supports more speakers. + In that case the or flag can be used in the call to force the enabling of speaker assignment. + + + + + The device's current output sample rate. This is only available on Windows Vista and OSX. + + + + + The device driver has been certified by Microsoft. Always true for WDM drivers. + + + + + 16-bit samples are supported by hardware mixing. + + + + + 8-bit samples are supported by hardware mixing. + + + + + The device supports all sample rates between minrate and maxrate. + + + + + The device's drivers has DirectSound support + + + + + Mono samples are supported by hardware mixing. + + + + + Stereo samples are supported by hardware mixing. + + + + + Used with to retrieve information on a channel. + + + A "channel" can be a playing sample (HCHANNEL), a sample stream (HSTREAM), a MOD music (HMUSIC), or a recording (HRECORD). + Each "Channel" function can be used with one or more of these channel types. + + The BassFlags.SoftwareMixing flag indicates whether or not the channel's sample data is being mixed into the final output by the hardware. + It does not indicate (in the case of a stream or MOD music) whether the processing required to generate the sample data is being done by the hardware, this processing is always done in software. + + + BASS supports 8/16/32-bit sample data, so if a WAV file, for example, uses another sample resolution, it'll have to be converted by BASS. + The member can be used to check what the resolution originally was. + + + + + + Default playback rate. + + + + + Number of channels... 1=mono, 2=stereo, etc. + + + + + Sample/Stream/Music/Speaker flags. + A combination of . + + Platform-specific + + On Linux/iOS/OSX, the flag may not be present even if it was used in the stream's creation, as BASS will have translated the filename to the native UTF-8 form. + On Windows CE, the opposite is true: the flag may be present even if it was not used in the stream's creation, as BASS will have translated the filename to the native UTF-16 form. + + + + + + The Type of Channel + + + + + The plugin that is handling the channel... 0 = not using a plugin. + + Note this is only available with streams created using the plugin system via the standard BASS stream creation functions, not those created by add-on functions. + Information on the plugin can be retrieved via . + + + + + + The sample that is playing on the channel. (HCHANNEL only) + + + + + The resolution which Bass uses for the stream. + + + + + The original resolution (bits per sample)... 0 = undefined. + + + + + The filename associated with the channel. (HSTREAM only) + + + + + Is the channel a decoding channel? + + + + + Used with or to retrieve information on a device. + + + + When a device is disabled/disconnected, it is still retained in the device list, but the IsEnabled is set to flag is removed from it. + If the device is subsequently re-enabled, it may become available again with the same device number, or the system may add a new entry for it. + + + When a new device is connected, it can affect the other devices and result in the system moving them to new device entries. + If an affected device is initialized, it will stop working and will need to be reinitialized using its new device number. + + Platform-specific + + On Windows, can reveal the Type of driver being used on systems that support both VxD and WDM drivers (Windows Me/98SE). + Further information can be obtained from the file via the GetFileVersionInfo function. + On Vista and newer, the device's endpoint ID is given rather than its driver filename. + On OSX, driver is the device's UID, and on Linux it is the ALSA device name. + It is unused on other platforms. + The device Type is only available on Windows (Vista and newer) and OSX. + On Windows, DisplayPort devices will have rather than . + + + Depending on the Bass.UnicodeDeviceInformation config setting, and can be in ANSI or UTF-8 form on Windows. + They are always in UTF-16 form on Windows CE, and UTF-8 on other platforms. + + + + + + The description of the device. + + + + + The filename of the driver being used... = no driver (ie. device). + On systems that can use both VxD and WDM drivers (Windows Me/98SE), this will reveal which Type of driver is being used. + Further information can be obtained from the file using the GetFileVersionInfo Win32 API function. + + + + + The device is the system default device. + + + + + The device is enabled and can be used. + + + + + The device is already initialized. + + + + + The device is a Loopback device. + + + + + The device's Type. + + + + + Table of callback functions used with . + + + A copy is made of the callback function table, so it does not have to persist beyond this function call. + Unlike Bass.Net, a reference to doesn't need to be held by you manually. + ManagedBass automatically holds a reference and frees it when the Channel is freed. + + + + + Callback function to close the file. + + + + + Callback function to get the file Length. + + + + + Callback function to read from the file. + + + + + Callback function to seek in the file. Not used by buffered file streams. + + + + + Used with to retrieve information on the supported plugin formats. + + + The plugin information does not change, so the returned pointer remains valid for as long as the plugin is loaded. + + The extension filter is for information only. + A plugin will check the file contents rather than file extension, to verify that it is a supported format. + + + + + + The channel Type, as would appear in the structure. + + + + + The Format description or name. + + + + + File extension filter, in the form of "*.ext1;*.ext2;etc...". + + + The extension filter is for information only. + A plugin will check the file contents rather than file extension, to verify that it is a supported format. + + + + + Used with to retrieve information on a plugin. + + + + + Plugin version. + + + + + The collection of supported formats. + + + Note: There is no guarantee that the list of supported formats is complete or might contain formats not being supported on your particular OS/machine (due to additional or missing audio codecs). + + + + + Used with to retrieve information on the current recording device. + + + The member does not represent all the formats supported by the device, just the "standard" ones. + If there is no DirectSound driver for the device (ie. it's being emulated), then the driver member will contain something like "WaveIn" instead of a filename. + Platform-specific + + The and members are only used on Windows. + The member is only used on Windows/OSX/iOS, and only for the device's channel count in the case of OSX and iOS. + On Windows, it does not necessarily represent all of the formats supported by the device, just the "standard" ones. + is also only available on Windows/OSX/iOS, but not on Windows prior to Vista. + + + + + + The standard wave formats supported by the device (default is ). + + + + + The number of Input sources available to the device + + + + + = only one Input may be active at a time + + + + + The device's current Input sample rate. This is only available on Windows Vista and OSX. + + + + + Gets the available channel count for a recording Input. + + + + + The device driver has been certified by Microsoft. Always true for WDM drivers. + + + + + The device's drivers has DirectSound support + + + + + Used with and to retrieve and set the default playback attributes of a sample. + + + + When a sample has 3D functionality, the and angles decide how wide the sound is projected around the orientation angle (as set via ). + Within the inside angle the volume level is the level set in the volume member (or the attribute when the sample is playing). + Outside the outer angle, the volume changes according to the outvol value. + Between the inner and outer angles, the volume gradually changes between the inner and outer volume levels. + If the inner and outer angles are 360 degrees, then the sound is transmitted equally in all directions. + + When VAM is enabled, and neither the or flags are specified, then the sample will be played in hardware if resources are available, and in software if no hardware resources are available. + + + + + Default playback rate (set to 44100 by default). + + + + + Default volume... 0 (silent) to 1 (full, default). + + + + + Default panning position -1 (full left) to +1 (full right) - defaulted to 0 = centre. + + + + + A combination of . + + + + + The Length in bytes. + + + + + Maximum number of simultaneous playbacks (defaulted to 1). + + + + + The original resolution (bits per sample)... 0 = undefined (default). + + + + + Number of channels... 1=mono, 2=stereo (default), etc. + + + + + Minimum time gap in milliseconds between creating channels using . + This can be used to prevent flanging effects caused by playing a sample multiple times very close to eachother. + The default setting, when loading/creating a sample, is 0 (disabled). + + + + + The 3D processing mode... + + + + + The minimum distance (default 0). The sample's volume is at maximum when the listener is within this distance. + + + + + The maximum distance (default 0). The sample's volume stops decreasing when the listener is beyond this distance. + + + + + The angle of the inside projection cone in degrees... 0 (no cone, default) - 360 (sphere). + + + + + The angle of the outside projection cone in degrees... 0 (no cone, default) - 360 (sphere). + + + + + The delta-volume outside the outer projection cone... 0 (silent) to 1 (full, default) - same as inside the cone. + + + + + The sample's DX7 voice allocation/management settings (if VAM is enabled)...a combination of flags. + + + + + Priority, used with the flag... 0 (min, default) - 0xFFFFFFFF (max) + + + + + Structure used by the 3D functions to describe positions, velocities, and orientations in the left-handed coordinate system. + + + + + +values=right, -values=left (default=0) + + + + + +values=up, -values=down (default=0) + + + + + +values=front, -values=behind (default=0) + + + + + Creates a new instance of . + + + + + Creates a new instance of Vector3D and initialises members. + + + + + Returns a string representation of this Vector. + + + + + Helps perform certain operations on primative types that deal with bits + + + + + The return value is the high-order double word of the specified value. + + + + + The return value is the low-order word of the specified value. + + + + + The return value is the high-order word of the specified value. + + + + + The return value is the low-order word of the specified value. + + + + + The return value is the high-order byte of the specified value. + + + + + The return value is the low-order byte of the specified value. + + + + + Make an short from 2-bytes. + + + + + Make an integer putting in low 2-bytes and in high 2-bytes. + + + + + Bass Error Codes returned by and BassAsio.LastError. + + + + + Some other mystery error + + + + + No Error + + + + + Memory Error + + + + + Can't open the file + + + + + Can't find a free/valid driver + + + + + The sample Buffer was lost + + + + + Invalid Handle + + + + + Unsupported sample format + + + + + Invalid playback position + + + + + has not been successfully called + + + + + has not been successfully called + + + + + SSL/HTTPS support isn't available. + + + + + SSL/HTTPS support isn't available. + + + + + No CD in drive + + + + + Invalid track number + + + + + Already initialized/paused/whatever + + + + + Not paused + + + + + Not an audio track + + + + + Can't get a free channel + + + + + An illegal Type was specified + + + + + An illegal parameter was specified + + + + + No 3D support + + + + + No EAX support + + + + + Illegal device number + + + + + Not playing + + + + + Illegal sample rate + + + + + The stream is not a file stream + + + + + No hardware voices available + + + + + The MOD music has no sequence data + + + + + No internet connection could be opened + + + + + Couldn't create the file + + + + + Effects are not available + + + + + The channel is playing + + + + + Requested data is not available + + + + + The channel is a 'Decoding Channel' + + + + + A sufficient DirectX version is not installed + + + + + Connection timedout + + + + + Unsupported file format + + + + + Unavailable speaker + + + + + Invalid BASS version (used by add-ons) + + + + + Codec is not available/supported + + + + + The channel/file has ended + + + + + The device is busy (eg. in "exclusive" use by another process) + + + + + The file cannot be streamed using the buffered file system. + This could be because an MP4 file's "mdat" atom comes before its "moov" atom. + + + + + BassWma: The file is protected + + + + + BassWma: WM9 is required + + + + + BassWma: Access denied (Username/Password is invalid) + + + + + BassWma: No appropriate codec is installed + + + + + BassWma: individualization is needed + + + + + BassWASAPI: WASAPI Not available + + + + + BassEnc: ACM codec selection cancelled + + + + + BassEnc: Access denied (invalid password) + + + + + BassAAC: Non-Streamable due to MP4 atom order ("mdat" before "moov") + + + + + Contains Helper and Extension methods. + + + + + Clips a value between a Minimum and a Maximum. + + + + + Converts to + + + + + Returns the n'th (max 15) pair of Speaker Assignment Flags + + + + + Check whether Floating point streams are supported in the Current Environment. + + + + + Gets a object for a version number returned by BASS. + + + + + Returns a string representation for given number of channels. + + + + + Extract an array of strings from a pointer to ANSI null-terminated string ending with a double null. + + + + + Extract an array of strings from a pointer to UTF-8 null-terminated string ending with a double null. + + + + + Returns a Unicode string from a pointer to a Utf-8 string. + + + + + Returns a which can be used to Play Silence on a Device (Useful during Wasapi Loopback Capture). + + + + + Returns an instance of wrapped around a . + + The to use with BASS. + + + + Applies the Effect on a . + + The Effect to Apply. + The to apply the Effect on. + Priority of the Effect in DSP chain. + + + + Parameters for an Effect. + + + + + Gets the . + + + + + A Reusable Channel which can Load files like a Player. + is perfect for UIs, as it implements . + Also, unlike normal, Properties/Effects set on a persist through subsequent loads. + + + + + Channel Handle of the loaded audio file. + + + + + Creates a new instance of . + + + + + Fired when this Channel is Disposed. + + + + + Fired when the Media Playback Ends + + + + + Fired when the Playback fails + + + + + Gets or Sets the Playback Frequency in Hertz. + Default is 44100 Hz. + + + + + Gets or Sets Balance (Panning) (-1 ... 0 ... 1). + -1 Represents Completely Left. + 1 Represents Completely Right. + Default is 0. + + + + + Gets or Sets the Playback Device used. + + + + + Gets or Sets the Playback Volume. + + + + + Gets or Sets whether the Playback is looped. + + + + + Override this method for custom loading procedure. + + Path to the File to Load. + on Success, on failure + + + + Title of the Loaded Media. + + + + + Artist of the Loaded Media. + + + + + Album of the Loaded Media. + + + + + Gets the Playback State of the Channel. + + + + + Starts the Channel Playback. + + + + + Pauses the Channel Playback. + + + + + Stops the Channel Playback. + + Difference from : Playback is restarted when is called. + + + + Gets the Playback Duration. + + + + + Gets or Sets the Playback Position. + + + + + Loads a file into the player. + + Path to the file to Load. + on succes, on failure. + + + + Fired when a Media is Loaded. + + + + + Frees all resources used by the player. + + + + + Initializes Properties on every call to . + + + + + Fired when a property value changes. + + + + + Fires the event. + + + + + Holds References to Channel Items like and . + + + + + Adds a Reference. + + + + + Removes a Reference. + + + + + Bits per Sample of a Channel + + + + + 16-Bit PCM (Default) + + + + + 8-Bit PCM + + + + + 32-Bit IEEE Floating Point + + + + + for use with .Net . + + + + + Creates a new instance of . + + The to wrap. + + + + Reads ID3v2 Tags. + + + + + Reads tags from an to an ID3v2 block. + + + + + Reads tags from a Channel. + + + + + Dictionary of Text frames. + + + + + List of Picture tags. + + + + + Picture Tag. + + + + + Picture Mime Type. + + + + + Picture Type. + + + + + Picture Data. + + + + + Picture Types. + + + + + Other. + + + + + File Icon. + + + + + Other File Icon. + + + + + Front Cover. + + + + + Back Cover. + + + + + Leaflet Page. + + + + + Media. + + + + + Soloist. + + + + + Artist. + + + + + Conductor. + + + + + Band. + + + + + Composer. + + + + + Lyricist. + + + + + Recording Location. + + + + + During Recording. + + + + + During Performance. + + + + + Movie. + + + + + A Bright Coloured Fish. + + + + + Illustration. + + + + + Band Logo. + + + + + Publisher Logo. + + + + + Generic class for holding tags. + + + + + Gets the Title. + + + + + Gets the Artist. + + + + + Gets the Album. + + + + + Gets the Album Artist. + + + + + Gets the Subtitle. + + + + + Gets the Beats per Minute (BPM). + + + + + Gets the Composer. + + + + + Gets the Copyright. + + + + + Gets the Genre. + + + + + Gets the Grouping. + + + + + Gets the Publisher. + + + + + Gets the Encoder. + + + + + Gets the Lyricist. + + + + + Gets the Year. + + + + + Gets the Conductor. + + + + + Gets the Track Number. + + + + + Gets the Producer. + + + + + Gets the Comment. + + + + + Gets the Mood. + + + + + Gets the Rating. + + + + + Gets the ISRC. + + + + + Gets the Remixer. + + + + + Reads tags from a File or a Channel depending on the . + + + + + Provides tags that didn't fit into any Properties. + + + + + Provides the Pictures read from File/Channel. + + + + + Gets the Lyrics. + + + + + Reads tags from a File. + + + + + Reads tags from a . + + + + + Reads tags from a . + + + + + Reads tags from a . + + + + + Reads tags from a . + + + + + Reads tags from a . + + + + + Reads tags from a . + + + + + Reads tags from a . + + + + + Reads tags from a . + + + + + BWF BEXT block tag structure. + + + + + The description or title (Max 256 characters). + + + + + The name of the originator or artist (Max 32 characters). + + + + + The reference of the originator or encoded by (Max 32 characters). + + + + + The date of creation (Max 10 characters). + + + + + The time of creation (max. 10 characters). + + + + + The Date and Time of creation. + + + + + First sample count since midnight (little-endian). + + + + + The BWF version (little-endian) + + + + + The SMPTE UMID. + + + + + Coding history. + + + + + Reads the tag from a channel. + + The Channel to read the tag from. + + + + Core Audio Codec Tag structure (iOS and Mac). + + + + + The file format identifier. + + + + + The audio format identifier. + + + + + The description of the audio file format. + + + + + Read the tag from a Channel. + + The Channel to read the tag from. + + + + BWF CART Timer structure. + + + + + Usage + + + + + Value + + + + + BWF CART block tag structure. + + + + + Version of the data structure. + + + + + Title of cart audio sequence (Max 64 characters). + + + + + Artist or Creator name (Max 64 characters). + + + + + Cut Number Identification (Max 64 characters). + + + + + Client Identification (Max 64 characters). + + + + + Category ID (e.g. PSA, NEWS, etc | Max 64 characters). + + + + + Classification or Auxiliary Key (Max 64 characters). + + + + + Out Cue Text (Max 64 characters). + + + + + Name of vendor or application (Max 64 characters). + + + + + Version of producer application (Max 64 characters). + + + + + User defined text (Max 64 characters). + + + + + Sample value for 0 dB reference. + + + + + 8 time markers after head. + + + + + Uniform resource locator. + + + + + Free form text for scripts or tags. + + + + + Start time. + + + + + End time. + + + + + Read the tag from a Channel. + + + + + Wraps an ID3v1 tag + + + + + Returns the Title (Max 30 characters). + + + + + Returns the Artist (Max 30 characters). + + + + + Returns the Album (Max 30 characters). + + + + + Returns the Year. + + + + + Genre ID. + + + + + An array of Genres arranged by ID. + + + + + Reads an . + + The Channel to read from. + + + + Gets the Comment. + + + + + Gets the Genre. + + + + + Gets the Track Number. + + + + + Writes Wave data to a .wav file + + + + + Number of bytes of audio + + + + + Creates a that writes to a . + + + + + Writes bytes to the WaveFile + + the Buffer containing the wave data + the number of bytes to write + + + + Writes 16 bit samples to the Wave file + + The Buffer containing the wave data + The number of bytes to write + + + + Writes 32 bit float samples to the Wave file + + The Buffer containing the wave data + The number of bytes to write + + + + Closes this WaveFile + + + + + Actually performs the close,making sure the header contains the correct data + + True if called from Dispose + + + + Finaliser - should only be called if the User forgot to close this WaveFileWriter + + + + + Represents a Wave file format. + + + + + Creates a new PCM 44.1Khz stereo 16 bit format + + + + + Creates a new 16 bit wave format with the specified sample rate and channel count + + Sample Rate + Number of channels + + + + Creates a new PCM format with the specified sample rate, bit depth and channels + + + + + Creates a new 32 bit IEEE floating point wave format + + sample rate + number of channels + + + + Creates a new instance of from a . + + + + + Gets or Sets the encoding Type used + + + + + Writes this WaveFormat object to a stream + + the output stream + + + + Gets or Sets the number of channels (1=mono,2=stereo etc) + + + + + Gets or Sets the sample rate (samples per second) + + + + + Gets or Sets the average number of bytes used per second + + + + + Gets or Sets the block alignment + + + + + Gets or Sets the number of bits per sample (usually 16 or 32, sometimes 24 or 8) + Can be 0 for some codecs + + + + + Gets or Sets the number of extra bytes used by this waveformat. + Often 0, except for compressed formats which store extra data after the WAVEFORMATEX header + + + + diff --git a/Assets/Packages/ManagedBass.3.1.1/lib/net45/ManagedBass.xml.meta b/Assets/Packages/ManagedBass.3.1.1/lib/net45/ManagedBass.xml.meta new file mode 100644 index 00000000..28ac8239 --- /dev/null +++ b/Assets/Packages/ManagedBass.3.1.1/lib/net45/ManagedBass.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 42eaae3fd10de984ca3296f4003a84f4 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Asio.3.1.1.meta b/Assets/Packages/ManagedBass.Asio.3.1.1.meta new file mode 100644 index 00000000..b8a6f7c4 --- /dev/null +++ b/Assets/Packages/ManagedBass.Asio.3.1.1.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e9242001357af62418dbe4badead9339 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Asio.3.1.1/.signature.p7s b/Assets/Packages/ManagedBass.Asio.3.1.1/.signature.p7s new file mode 100644 index 00000000..8e7daf60 Binary files /dev/null and b/Assets/Packages/ManagedBass.Asio.3.1.1/.signature.p7s differ diff --git a/Assets/Packages/ManagedBass.Asio.3.1.1/LICENSE.md b/Assets/Packages/ManagedBass.Asio.3.1.1/LICENSE.md new file mode 100644 index 00000000..51cb76d4 --- /dev/null +++ b/Assets/Packages/ManagedBass.Asio.3.1.1/LICENSE.md @@ -0,0 +1,18 @@ +# ManagedBass +Copyright (c) 2016 [Mathew Sachin](https://github.com/MathewSachin) + +## The MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/Assets/Packages/ManagedBass.Asio.3.1.1/LICENSE.md.meta b/Assets/Packages/ManagedBass.Asio.3.1.1/LICENSE.md.meta new file mode 100644 index 00000000..495b2865 --- /dev/null +++ b/Assets/Packages/ManagedBass.Asio.3.1.1/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: abeaf73faace67b42a3a3948f71d4960 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Asio.3.1.1/ManagedBass.Asio.nuspec b/Assets/Packages/ManagedBass.Asio.3.1.1/ManagedBass.Asio.nuspec new file mode 100644 index 00000000..1fcd5fc5 --- /dev/null +++ b/Assets/Packages/ManagedBass.Asio.3.1.1/ManagedBass.Asio.nuspec @@ -0,0 +1,20 @@ + + + + ManagedBass.Asio + 3.1.1 + MathewSachin + LICENSE.md + https://aka.ms/deprecateLicenseUrl + icon.png + https://github.com/ManagedBass/ManagedBass + ManagedBass ASIO AddOn + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/ManagedBass.Asio.3.1.1/ManagedBass.Asio.nuspec.meta b/Assets/Packages/ManagedBass.Asio.3.1.1/ManagedBass.Asio.nuspec.meta new file mode 100644 index 00000000..1bd4e919 --- /dev/null +++ b/Assets/Packages/ManagedBass.Asio.3.1.1/ManagedBass.Asio.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 81fe5ac64d8586d4e940c55a8b3ec163 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Asio.3.1.1/icon.png b/Assets/Packages/ManagedBass.Asio.3.1.1/icon.png new file mode 100644 index 00000000..2692e2bc Binary files /dev/null and b/Assets/Packages/ManagedBass.Asio.3.1.1/icon.png differ diff --git a/Assets/Packages/ManagedBass.Asio.3.1.1/icon.png.meta b/Assets/Packages/ManagedBass.Asio.3.1.1/icon.png.meta new file mode 100644 index 00000000..aebac26d --- /dev/null +++ b/Assets/Packages/ManagedBass.Asio.3.1.1/icon.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: 40214557857cee5499fe9b818b7ae9bc +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Asio.3.1.1/lib.meta b/Assets/Packages/ManagedBass.Asio.3.1.1/lib.meta new file mode 100644 index 00000000..1af4db4c --- /dev/null +++ b/Assets/Packages/ManagedBass.Asio.3.1.1/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 63ff06f9d167f56489e07488eb48c8f7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Asio.3.1.1/lib/netstandard1.4.meta b/Assets/Packages/ManagedBass.Asio.3.1.1/lib/netstandard1.4.meta new file mode 100644 index 00000000..86c98b64 --- /dev/null +++ b/Assets/Packages/ManagedBass.Asio.3.1.1/lib/netstandard1.4.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b444cde790fd52a40becfd1f43e5c4d1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Asio.3.1.1/lib/netstandard1.4/ManagedBass.Asio.dll b/Assets/Packages/ManagedBass.Asio.3.1.1/lib/netstandard1.4/ManagedBass.Asio.dll new file mode 100644 index 00000000..379e191e Binary files /dev/null and b/Assets/Packages/ManagedBass.Asio.3.1.1/lib/netstandard1.4/ManagedBass.Asio.dll differ diff --git a/Assets/Packages/ManagedBass.Asio.3.1.1/lib/netstandard1.4/ManagedBass.Asio.dll.meta b/Assets/Packages/ManagedBass.Asio.3.1.1/lib/netstandard1.4/ManagedBass.Asio.dll.meta new file mode 100644 index 00000000..bfa1ef3d --- /dev/null +++ b/Assets/Packages/ManagedBass.Asio.3.1.1/lib/netstandard1.4/ManagedBass.Asio.dll.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: 769c9f33ac3cfab429c8519f395a0ad0 +labels: +- NuGetForUnity +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Asio.3.1.1/lib/netstandard1.4/ManagedBass.Asio.xml b/Assets/Packages/ManagedBass.Asio.3.1.1/lib/netstandard1.4/ManagedBass.Asio.xml new file mode 100644 index 00000000..4419fc12 --- /dev/null +++ b/Assets/Packages/ManagedBass.Asio.3.1.1/lib/netstandard1.4/ManagedBass.Asio.xml @@ -0,0 +1,1237 @@ + + + + ManagedBass.Asio + + + + + User defined notification callback function (to be used with ). + + The notification. + The User instance data given when was called. + + When using multiple devices, can be used to determine which the notification applies to. + + + + + User defined ASIO channel callback function (to be used with ). + + Dealing with an Input channel? = an output channel. + The Input/output channel number... 0 = first. + The pointer to the Buffer containing the recorded data (Input channel), or in which to put the data to output (output channel). + The number of bytes to process. + The User instance data given when was called. + The number of bytes written (ignored with Input channels). + + ASIO is a low latency system, so a channel callback function should obviously be as quick as possible. can be used to monitor that. + + When multiple channels are joined together, the sample data of the channels is interleaved; + the channel that was enabled via comes first, followed by the channels that have been joined to it. + The order of the joined channels defaults to numerically ascending order unless the flag was used in the call, + in which case they will be in the order in which was called to join then. + + + When an output channel's function returns less data than requested, the remainder of the Buffer is filled with silence, and some processing is saved by that. + When 0 is returned, the level of processing is the same as if the channel had been paused with , ie. the ASIO Buffer is simply filled with silence and all additional processing (resampling/etc) is bypassed. + + + ASIO is a low latency system, so a channel callback function should obviously be as quick as possible. + can be used to monitor that. + Do not call the or functions from within an ASIO callback. + Also, if it is an output channel, and should not be used on the channel being processed by the callback. + + + Prior to calling this function, BassAsio will set the thread's device context to the device that the channel belongs to. + So when using multiple devices, can be used to determine which device the channel is on. + + + + + + BassAsio active values return by . + + + + + The channel is not enabled. + + + + + The channel is enabled. + + + + + The channel is enabled and paused. + + + + + Applied to the channel handle when requesting to obtain RMS values instead of peak values. + + + + + BassAsio attributes to be used when to reset a channel with . + + + + + Disable Channel + + + + + Unjoin Channel + + + + + Unpause Channel + + + + + Reset sample format to native format + + + + + Reset sample rate to device rate + + + + + Reset Volume to 1.0 + + + + + Apply to joined channels too + + + + + BassAsio Future values that might be used with the method. + Note: Other/Additional values might be possible - see your drivers manual for details. + + + + + No arguments + + + + + No arguments + + + + + ASIOInputMonitor* in params + + + + + ASIOTransportParameters* in params + + + + + ASIOChannelControls* in params, apply gain + + + + + ASIOChannelControls* in params, fill meter + + + + + ASIOChannelControls* in params, apply gain + + + + + ASIOChannelControls* in params, fill meter + + + + + No arguments + + + + + No arguments + + + + + No arguments + + + + + No arguments + + + + + No arguments + + + + + No arguments + + + + + No arguments + + + + + No arguments + + + + + DSD support: ASIOIoFormat * in params + + + + + DSD support: ASIOIoFormat * in params + + + + + DSD support: ASIOIoFormat * in params + + + + + Initialization flags to be used with + + + + + None + + + + + Host driver in dedicated thread + + + + + Order joined channels by when they were joined + + + + + Asio IO Format type to be used with . + + + + + PCM. + + + + + DSD. + + + + + Invalid. + + + + + BassAsio notify values as used in the . + + + + + The device's sample rate has changed. + The new rate is available from . + + + + + The driver has requested a reset/reinitialization; + for example, following a change of the default Buffer size. + This request can be ignored, but if a reinitialization is performed, it should not be done within the callback. + + + + + BassAsio sample formats to be used with and . + + + + + Unknown format. Error. + + + + + 16-bit integer. + + + + + 24-bit integer. + + + + + 32-bit integer. + + + + + 32-bit floating-point. + + + + + DSD (LSB 1st) + + + + + DSD (MSB 1st) + + + + + Asio Transport Command to be used with . + + + + + Start + + + + + Stop + + + + + Locate + + + + + Punch in + + + + + Punch out + + + + + Arm on + + + + + Arm off + + + + + Monitor on + + + + + Monitor off + + + + + Arm + + + + + Monitor + + + + + BassAsio makes it simple to use ASIO hardware, drivers, and can be used with or without BASS. + + + + + Adds a driver to the device list. + + The driver's class ID. + The filename of the driver. + An optional description of the driver. + + If successful, the new device number is returned (which might be used in a subsequent call), else -1 is returned. + Use to get the error code. + + + A list of installed ASIO drivers is kept in the Windows registry, which is where BassAsio gets its device list from, + but it is also possible to add unregistered drivers (eg. private drivers) to the list via this function. + If successful, the returned device number can be used in a call to use the driver. + The and strings are expected to be in Unicode from. + + The file does not exist. + + + + Checks if a sample rate is supported by the device. + + The sample rate to check. + If the sample rate is supported, then is returned, else is returned. Use to get the error code. + has not been successfully called. + The sample rate is not supported by the device/drivers. + Some other mystery problem! + + + + Displays the current Asio driver's control panel. + + If successful, then is returned, else is returned. Use to get the error code. + has not been successfully called. + Some other mystery problem! + + + + Retrieves the error code for the most recent BassAsio function call in the current thread. + + + If no error occured during the last BassAsio function call then is returned, else one of the values is returned. + See the function description for an explanation of what the error code means. + + Error codes are stored for each thread. So if you happen to call 2 or more BassAsio functions at the same time, they will not interfere with eachother's error codes. + + + + Releases the Asio device/driver. + + If successful, then is returned, else is returned. Use to get the error code. + Make sure to free each Asio device you have initialized with , is used to switch the current device. + has not been successfully called. + + + + Provides access to the driver's 'future' function. + + Operation code. + Pointer to the operation's parameters, if applicable. + If successful, then is returned, else is returned. Use to get the error code. + This method is a general purpose extension method serving various purposes. + has not been successfully called. + The is not supported by the driver. + Some other mystery problem. + + + + Retrieves the current CPU usage of BASSASIO. + + The BASSASIO CPU usage as a percentage of total CPU time. + This function includes the time taken by the callback functions. + + + + Gets or Sets the Asio device to use for subsequent calls in the current thread... 0 = first device. + + + Throws on Error while setting value. + + As in BASS, simultaneously using multiple devices is supported in the BASSASIO API via a context switching system - instead of there being an extra "device" parameter in the function calls, the device to be used needs to be set via this function prior to calling the function. + The device setting is local to the current thread, so calling functions with different devices simultaneously in multiple threads is not a problem. + + + The device context setting is used by any function that may result in a error (except this function), which is the majority of them. + When one if those functions is called, it will check the current thread's device setting, and if no device is selected (or the selected device is not initialized), BassAsio will automatically select the lowest device that is initialized. + This means that when using a single device, there is no need to use this function - BassAsio will automatically use the device that's initialized. + Even if you free the device, and initialize another, BassAsio will automatically switch to the one that is initialized. + + + The device has not been initialized or there are no initialised devices. + The device number specified is invalid. + + + + Retrieves information on an Asio device. + + The device to get the information of... 0 = first. + An instance of the structure to store the information at. + If successful, then is returned, else is returned. Use to get the error code. + + This function can be used to enumerate the available Asio devices for a setup dialog. + + The number specified is invalid. + + + + Retrieves information on an Asio device. + + The device to get the information of... 0 = first. + An instance of the structure is returned. Throws on Error. + + This function can be used to enumerate the available Asio devices for a setup dialog. + + The number specified is invalid. + + + + Returns the total number of available Asio devices. + + Number of ASIO devices available. + Uses internally. + + + + Retrieves information on the Asio device being used. + + An instance of the structure to store the information at. + If successful, is returned, else is returned. Use to get the error code. + + As in BASS, simultaneously using multiple devices is supported in the BASSASIO API via a context switching system - instead of there being an extra "device" parameter in the function calls, the device to be used needs to be set via prior to calling the function. + The device setting is local to the current thread, so calling functions with different devices simultaneously in multiple threads is not a problem. + + has not been successfully called. + + + + Retrieves information on the Asio device being used. + + An instance of the structure. Throws on Error. + + As in BASS, simultaneously using multiple devices is supported in the BASSASIO API via a context switching system - instead of there being an extra "device" parameter in the function calls, the device to be used needs to be set via prior to calling the function. + The device setting is local to the current thread, so calling functions with different devices simultaneously in multiple threads is not a problem. + + has not been successfully called. + + + + Retrieves the latency of input or output channels of the current Asio device + + Get the input latency? = the output latency. + If successful, the latency in samples is returned, else -1 is returned. Use to get the error code. + + + The latency is the delay between the sound being recorded and reaching an , in the case of input channels. + And the delay between the sample data being fed to an and actually being heard, in the case of output channels. + The latency is dependant on the buffer size, as specified in the call. + So the latency should be checked after making that call, not before. + + + The latency time can by calculated be dividing the sample latency by the device sample rate. + When a channel is being resampled, the sample latency will change, but the effective latency time remains constant. + + + has not been successfully called. + + + + Gets or Sets the current Asio device's sample rate. + + + Throws on Error while setting value. + When it's not possible to set the device to the rate wanted, this can be used to overcome that. + + has not been successfully called. + The sample rate is not supported by the device/drivers. + Some other mystery problem! + + + + Gets the version of BassAsio that is Loaded. + + + + + Initializes an Asio device/driver. + + The device to use... 0 = first device. can be used to get the total number of devices. + Any combination of . + If the device was successfully initialized, is returned, else is returned. Use to get the error code. + + This function must be successfully called before any input or output can be performed. + + The ASIO driver is accessed via a COM object using the single-threaded apartment model, which means that requests to the driver go through the thread that initialized it, so the thread needs to exist as long as the driver remains initialized. + The thread should also have a message queue. + If device initializing and releasing from multiple threads is required, or the application does not have a message queue (eg. a console application), then the flag can be used to have BassAsio create a dedicated thread to host the ASIO driver. + + + Simultaneously using multiple devices is supported in the BassAsio API via a context switching system - instead of there being an extra "device" parameter in the function calls, the device to be used is set prior to calling the functions. + is used to switch the current device. + When successful, the current thread's device is set to the one that was just initialized. + + + The number specified is invalid. + A device has already been initialized. You must call before you can initialize again. + The driver couldn't be initialized. + + + + Checks, if the current Asio device has been started. + + Returns , if the device has been started, else is returned. Use to get the error code. + + + + Set the direct input monitoring state. + + The input channel to set the monitoring state of... -1 = all. + The suggested output channel for the monitoring. + Suggested Gain, ranging from 0 to 0x7fffffff (-inf to +12 dB), 0x20000000 equals 0 dB. + Monitoring state... 0 = off, 1 = on. Other settings may be possible depending on the drivers, e.g.: + 0 = input monitoring off. + 1 = input monitoring on. + 2 = playback monitoring off. + 3 = playback monitoring on. + + Suggested Pan, ranging from 0 = left to 0x7fffffff = right (centre should be 0x40000000). + If succesful, then is returned, else is returned. Use to get the error code. + + If the hardware does not support patching and mixing a straight 1 to 1 routing is suggested. + The driver should ignore all the information of ASIOMonitor it cannot deal with, usually these might be either or all of output, gain, pan. + + Output is the base channel of a stereo channel pair, i.e. output is always an even channel (0,2,4...). + If an odd input channel should be monitored and no panning or output routing can be applied, the driver has to use the next higher output (imply a hard right pan). + Note that the output, gain and pan settings are just suggestions, and may be ignored by the device/driver. + + Some cards/drivers might also support direct output monitoring, in such case use the parameter to denote the output channel to monitor and specify an appropriate value. + + ADM has originally been based on a mono in - stereo out scheme. Meaning if you need to monitor a stereo input channel pair you need to call this twice, both using the same output value, but using an odd and an even input value. + In such case set the odd input to pan hard left and the even input to pan hard right. + + + Also note, that if you have channels in-between not activated in ASIO these will not counted. + So if for example channels 3 and 4 are inactive, ADM input 3 is related to the physical input channel 5! + + + has not been successfully called. + Some other mystery problem! + + + + Sets the device's sample format to DSD or PCM. + + Set the sample format to DSD? + If successful, then is returned, else is returned. Use to get the error code. + + When a device is switched between PCM and DSD formats, the ASIO channels' format will change accordingly, as reported by . + Any and settings that have been applied will be reset to defaults. + Other channel settings are unchanged. + + has not been successfully called. + DSD is not supported by the device/driver. + Some other mystery problem. + + + + Sets a notification callback on the ASIO driver. + + User defined notification function... = disable notifications. + User instance data to pass to the callback function. + If succesful, then is returned, else is returned. Use to get the error code. + A previously set notification callback can be changed (or removed) at any time, by calling this function again. + has not been successfully called. + + + + Gets or Sets the character set used in device information text: if , ANSI is used (default), else UTF-16 is used. + + + Throws on Error setting value. + This function determines the character set that is used in the structure and in function calls. + It does not affect ASIO channel names in the and structure. + The character set choice is finalised in the first , or call, and it cannot be changed after that. + + This function is only available before any devices have been enumerated. + + + + Starts the current Asio device. + + Buffer length in samples... 0 = use current length. + The number of processing threads to use... 0 = use current number. + If successful, then is returned, else is returned. Use to get the error code. + + Before starting the device, channels must be enabled using . + Once started, channels can't be enabled or disabled until the device is stopped, using . + + The default number of processing threads is 1, which means that the functions of the enabled channels get called in series (starting with the lowest input channel). + Multiple channels can be processed in parallel if multiple threads are created for that purpose via the threads parameter. + The number of threads is automatically capped at the number of enabled channels with an function, which is sufficient to have them all processed simultaneously. + + + has not been successfully called. + The device has already been started. + No channels have been enabled. + Some other mystery problem! + + + + Stops the current Asio device. + + If successful, then is returned, else is returned. Use to get the error code. + + As in BASS, simultaneously using multiple devices is supported in the BASSASIO API via a context switching system - instead of there being an extra "device" parameter in the function calls, + the device to be used needs to be set via prior to calling the function. + The device setting is local to the current thread, so calling functions with different devices simultaneously in multiple threads is not a problem. + + has not been successfully called. + The device hasn't been started. + + + + Locks the device to the current thread. + + + Locking a device prevents other threads from performing most functions on it, including the channel processing. + Other threads wanting to access a locked device will block until it is unlocked, so it should only be locked very briefly. + A device must be unlocked in the same thread that it was locked. + + If , unlock the device, else lock it. + has not been successfully called. + If successful, is returned, else is returned. Use . + + + + Enable/disable processing of an Asio channel. + + Dealing with an input channel? = an output channel. + The input/output channel number... 0 = first. + The user defined function to process the channel... = disable the channel. + User instance data to pass to the callback function. + If succesful, then is returned, else is returned. Use to get the error code. + + + All ASIO channels are mono. + Stereo (and above) channels can be formed by joining multiple channels together using . + + Use to begin processing the enabled channels. + + You might also use this function on an already enabled ASIO channel if you just want to change the which should be used. + However changing the callback procedure to would disable the channel - which is only possible, if the ASIO device is stopped. + + + has not been successfully called. + The device has been started - it needs to be stopped before (dis)enabling channels. + The and combination is invalid. + + + + Enables a channel, and sets it to use a BASS channel. + + Dealing with an input channel? = an output channel. + The input/output channel number... 0 = first. + The BASS channel handle. + Join the next ASIO channels according to the number of audio channels in the BASS channel? + If succesful, then is returned, else is returned. Use to get the error code. + + + This function allows BASS channels to be used directly, without needing an callback function. The ASIO channel's format and rate are set accordingly. + If the BASS channel is not mono then multiple ASIO channels should also be joined accordingly. That can be done automatically via the join parameter, or manually + with . If the device does not have enough channels, the BASSmix add-on can be used to downmix the BASS channel. + + + In the case of output channels, the BASS channel must have the flag set. In the case of input channels, the BASS channel must be a "push" stream, + created with and , which will receive the data from the input channel(s). + + + Raw DSD streams are supported (with the BASSDSD add-on) but the device needs to have been successfully set to DSD mode first with . + The device's sample rate should also be set to the DSD stream's rate (its BASS_ATTRIB_DSD_RATE attribute) via . + + + has not been successfully called. + The device has been started - it needs to be stopped before (dis)enabling channels. + The and combination is invalid. + Handle is invalid + 8-bit BASS channels are not supported; the flag can be used to avoid them. + The device does not have enough channels to accommodate the BASS channel. + + + + Enables an output channel, and makes it mirror another channel. + + The output channel number... 0 = first. + Mirroring an input channel? = an output channel. + The channel to mirror. + If succesful, then is returned, else is returned. Use to get the error code. + + + This function allows an input or output channel to be duplicated in other output channel. + This can be achieved using normal processing, but it's more efficient to let BassAsio simply copy the data from one channel to another. + + + Mirror channels can't be joined together to form multi-channel mirrors. + Instead, to mirror multiple channels, an individual mirror should be setup for each of them. + + After has been called to begin processing, it's not possible to setup new mirror channels, but it is still possible to change the channel that a mirror is mirroring. + + When mirroring an output channel that hasn't been enabled, the mirror channel will just produce silence. + When mirroring an input channel that hasn't already been enabled, the channel is automatically enabled for processing when is called, so that it can be mirrored. + If the mirror is switched to a disabled input channel once processing has begun, then it will produce silence. + + + A mirror channel can be made to have a different volume level to the channel that it's mirroring, using . + The volume setting is cumulative. + For example, if the mirror channel has a volume setting of 0.5 and the mirrored channel has a volume setting of 0.4, the effective volume of the mirror channel will be 0.2 (0.5 x 0.4). + + can be used to disable a mirror channel. + + has not been successfully called. + The device has been started - it needs to be stopped before enabling channels. + At least one of the channels is invalid. + It is not possible to mirror channels that do not have the same sample format. + + + + Retrieves a channel's sample format. + + Dealing with an input channel? = an output channel. + The input/output channel number... 0 = first. + If an error occurs, -1 () is returned, use to get the error code. + has not been successfully called. + The and combination is invalid. + + + + Retrieves information on an Asio channel. + + Dealing with an input channel? = an output channel. + The input/output channel number... 0 = first. + An instance of the structure to store the information at. + If successful, is returned, else is returned. Use to get the error code. + has not been successfully called. + The and combination is invalid. + + + + Retrieves information on an Asio channel. + + Dealing with an input channel? = an output channel. + The input/output channel number... 0 = first. + An instance of the structure is returned. Throws on Error. + has not been successfully called. + The and combination is invalid. + + + + Retrieves the level (peak amplitude) of a channel. + + Dealing with an input channel? = an output channel. + The input/output channel number... 0 = first. The flag can optionally be used to get the RMS level, otherwise the peak level is given. + + If an error occurs, -1 is returned, use to get the error code. + If successful, the level of the channel is returned, ranging from 0 (silent) to 1 (max). + If the channel's native sample format is floating-point, it is actually possible for the level to go above 1. + + + This function measures the level of a single channel, and is not affected by any other channels that are joined with it. + Volume settings made via affect the level reading of output channels, but not input channels. + + When an input channel is paused, it is still possible to get its level. + Paused output channels will have a level of 0. + + Level retrieval is not supported when the sample format is DSD. + + has not been successfully called. + The and combination is invalid. + The device hasn't been started, or the channel isn't enabled. + Level retrieval is not supported for the channel's sample format (please report). + + + + Retrieves a channel's sample rate. + + Dealing with an input channel? = an output channel. + The input/output channel number... 0 = first. + If succesful, the channel's sample rate is returned (0 = device rate), else -1 is returned. Use to get the error code. + has not been successfully called. + The and combination is invalid. + + + + Retrieves a channel's volume setting. + + Dealing with an input channel? = an output channel. + The input/output channel number... 0 = first, -1 = master. + If successful, the channel's volume setting is returned, else -1 is returned. Use to get the error code. + To set a channel volume use . + has not been successfully called. + The and combination is invalid. + + + + Checks if a channel is enabled for processing. + + Dealing with an input channel? = an output channel. + The input/output channel number... 0 = first. + One value is returned. + + When a channel is joined to another, the status of the other channel is returned, as that is what determines whether the channel is enabled for processing - whether it's been enabled itself is of no consequence while it is joined to another. + For example, if channel B is joined to channel A, and channel A is not enabled, then neither is channel B. + + + + + Join a channel to another. + + Dealing with input channels? = output channels. + The input/output channel number... 0 = first. + The channel to join it to... -1 = remove current join. + If succesful, then is returned, else is returned. Use to get the error code. + + + All ASIO channels are mono. + By joining them, stereo (and above) channels can be formed, making it simpler to process stereo (and above) sample data. + + + By default, channels can only be joined to preceding channels. + For example, channel 1 can be joined to channel 0, but not vice versa. + The flag can be used in the call to remove that restriction. + When joining a group of channels, there should be one channel enabled via with the rest joined to it - + do not join a channel to a channel that is itself joined to another channel. + Mirror channels, setup using , cannot be joined with. + + + If a channel has two or more other channels joined to it, then the joined channels will default to being in numerically ascending order in the callback function's sample data unless the flag was used in the call, + in which case they will be in the order in which they were joined via this function. + In the latter case, if this function is called on an already joined channel, the channel will be moved to the end of the joined group. + + + While a channel is joined to another, it automatically takes on the attributes of the other channel - the other channel's settings determine the sample format, the sample rate and whether it is enabled. + The volume setting remains individual though, allowing balance control over the joined channels. + + + has not been successfully called. + The device has been started - it needs to be stopped before (dis)enabling channels. + The and combination is invalid. + It is not possible to join channels that do not have the same sample format. + + + + Suspends processing of a channel. + + Dealing with an input channel? = an output channel. + The input/output channel number... 0 = first. + If succesful, then is returned, else is returned. Use to get the error code. + + + Channels can only be disabled when the device is stopped. + When you want to stop processing only some of the enabled channels, there are few ways that could be done. + You could quickly stop the device, disable the unwanted channels, and restart the device. + In the case of output channels, you could fill the channels' buffers with silence (0s) in the . + Or you could pause the channels, using this function. + The less channels BassAsio has to process, the less CPU it'll use, so stopping and restarting the device would be the most efficient, but that could cause a slight break in the sound of the other channels. + Filling the buffers with silence is the least efficient, as BassAsio will still process the data as if it was "normal", but it does mean that other channels are unaffected. + Pausing is a compromise between the two - the channels will still be enabled, but BassAsio will bypass any additional processing (resampling/etc) that may normally be required. + Use to resume processing of a paused channel. + + has not been successfully called. + The and combination is invalid. + + + + Resets the attributes of a channel (or all channels). + + Dealing with an input channel? = an output channel. + The input/output channel number... 0 = first, -1 = all channels. + The attributes to reset. A combination of . + If succesful, then is returned, else is returned. Use to get the error code. + When resetting all channels (channel = -1), the resetting only applies to all channels of the specified type, ie. input or output, not both. + has not been successfully called. + The device has been started - it needs to be stopped before disabling or unjoining channels. + The and combination is invalid. + + + + Sets a channel's sample format. + + Dealing with an input channel? = an output channel. + The input/output channel number... 0 = first. + The sample format. + If succesful, then is returned, else is returned. Use to get the error code. + + + The sample format can vary between ASIO devices/drivers, which could mean a lot of extra/duplicate code being required. + To avoid that extra work, BassAsio can automatically convert the sample data, whenever necessary, to/from a format of your choice. + The native format of a channel can be retrieved via . + + + The PCM format options are only available when the device's format is PCM, and the DSD format options are only available when the device's format is DSD. + If a device supports both, it can be switched between DSD and PCM via . + + For performance reasons, it's best not to use 24-bit sample data whenever possible, as 24-bit data requires a bit more processing than the other formats. + + has not been successfully called. + The and combination, or is invalid. + Format conversion is not available for the channel's native sample format (please report). + + + + Sets a channel's sample rate. + + Dealing with an input channel? = an output channel. + The input/output channel number... 0 = first. + The sample rate... 0 = device rate. + If succesful, then is returned, else is returned. Use to get the error code. + + + For optimal quality and performance, it is best to set the device to the sample rate you want via , but that's not always possible. + Which is where this function and resampling comes into play. + 16 point sinc interpolation is used, giving a good blend of sound quality and performance. + It is also SSE2 and 3DNow optimized for an extra boost with supporting CPUs. + + When a channel's sample rate is the same as the device rate, resampling is bypassed, so there's no unnecessary performance hit. + Resampling is not supported when the sample format is DSD. + + has not been successfully called. + The and combination is invalid, or is below 0. + Format conversion is not available for the channel's native sample format (please report). + + + + Sets a channel's volume. + + Dealing with an input channel? = an output channel. + The input/output channel number... 0 = first, -1 = master. + The volume level... 0 (silent)...1.0 (normal). Above 1.0 amplifies the sound. + If succesful, then is returned, else is returned. Use to get the error code. + + + + Apart from the master volume (channel = -1), this function applies a volume level to a single channel, and does not affect any other channels that are joined with it. + This allows balance control over joined channels, by setting the individual volume levels accordingly. + The final level of a channel is = master volume * channel volume. + + The volume "curve" is linear, but logarithmic levels can be easily used. See the example below. + + ASIO drivers do not provide volume control themselves, so the volume adjustments are applied to the sample data by BassAsio. + This also means that changes do not persist across sessions, and the channel volume levels will always start at 1.0. + + When the channel's sample format is DSD, a 0 volume setting will mute the channel and anything else will be treated as 1.0 (normal). + + has not been successfully called. + The and combination is invalid, or is below 0. + + + + Used with and the Get/SetInput resp. Get/SetOutput selector. + + + + + the channel index + + + + + TRUE = Input, FALSE = Output + + + + + the gain value, ranging 0 - 0x7fffffffL (-inf to +12 dB) + + + + + returned meter value, ranging 0 - 0x7fffffffL (-inf to +12 dB) + + + + + up to 32 chars + + + + + Used with to retrieve information on the current device. + + + + + The channel's group. + + + + + The channel's sample format + + + + + The name of the channel. + + + + + Used with to retrieve information on an asio device. + + + + + The description of the device. + + + + + The filename of the driver being used. + Further information can be obtained from the file using the GetFileVersionInfo Win32 API function. + + + + + Returns the of the device. + + + + + Used with to retrieve information on the current device. + + + + + Flags used when initialising the AsioDevice. + + + + + The name of the device/driver. + + + + + The driver version. + + + + + The number of input channels available. + + + + + The number of output channels available. + + + + + The minimum Buffer Length, in samples. + + + + + The maximum Buffer Length, in samples. + + + + + The preferred/default Buffer Length, in samples. + + + + + The Buffer Length granularity, that is the smallest possible Length change... -1 = the possible Buffer lengths increase in powers of 2. + + + + + Returns the of the AsioDevice. + + + + + Used with and the SetInputMonitor selector. + + + + + this Input was set to monitor (or off), -1: all + + + + + suggested output for monitoring the Input (if so) + + + + + suggested gain, ranging 0 - 0x7fffffffL (-inf to +12 dB) + + + + + TRUE = on, FALSE = off + + + + + suggested pan, 0 = all left, 0x7fffffff = right + + + + + Used with and the DSD IoFormat selector. + + + + + Format Type + + + + + up to 508 chars + + + + + Used with and the Transport selector. + + + + + One of the values (other values might be available). + + + + + Number of samples data. + + + + + Track Index + + + + + 512 Tracks on/off + + + + + Max 64 characters. + + + + diff --git a/Assets/Packages/ManagedBass.Asio.3.1.1/lib/netstandard1.4/ManagedBass.Asio.xml.meta b/Assets/Packages/ManagedBass.Asio.3.1.1/lib/netstandard1.4/ManagedBass.Asio.xml.meta new file mode 100644 index 00000000..7ad91b99 --- /dev/null +++ b/Assets/Packages/ManagedBass.Asio.3.1.1/lib/netstandard1.4/ManagedBass.Asio.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 042c5d9da423b9044b5d793064716b2a +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Mix.3.1.1.meta b/Assets/Packages/ManagedBass.Mix.3.1.1.meta new file mode 100644 index 00000000..2c618c5d --- /dev/null +++ b/Assets/Packages/ManagedBass.Mix.3.1.1.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 195b11112f6640a43aac70a9beeef51f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Mix.3.1.1/.signature.p7s b/Assets/Packages/ManagedBass.Mix.3.1.1/.signature.p7s new file mode 100644 index 00000000..bba66930 Binary files /dev/null and b/Assets/Packages/ManagedBass.Mix.3.1.1/.signature.p7s differ diff --git a/Assets/Packages/ManagedBass.Mix.3.1.1/LICENSE.md b/Assets/Packages/ManagedBass.Mix.3.1.1/LICENSE.md new file mode 100644 index 00000000..51cb76d4 --- /dev/null +++ b/Assets/Packages/ManagedBass.Mix.3.1.1/LICENSE.md @@ -0,0 +1,18 @@ +# ManagedBass +Copyright (c) 2016 [Mathew Sachin](https://github.com/MathewSachin) + +## The MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/Assets/Packages/ManagedBass.Mix.3.1.1/LICENSE.md.meta b/Assets/Packages/ManagedBass.Mix.3.1.1/LICENSE.md.meta new file mode 100644 index 00000000..279cbd1e --- /dev/null +++ b/Assets/Packages/ManagedBass.Mix.3.1.1/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6cebce5d91bc9344abdd088467a5968d +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Mix.3.1.1/ManagedBass.Mix.nuspec b/Assets/Packages/ManagedBass.Mix.3.1.1/ManagedBass.Mix.nuspec new file mode 100644 index 00000000..760b4bdb --- /dev/null +++ b/Assets/Packages/ManagedBass.Mix.3.1.1/ManagedBass.Mix.nuspec @@ -0,0 +1,20 @@ + + + + ManagedBass.Mix + 3.1.1 + MathewSachin + LICENSE.md + https://aka.ms/deprecateLicenseUrl + icon.png + https://github.com/ManagedBass/ManagedBass + ManagedBass Mix AddOn + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/ManagedBass.Mix.3.1.1/ManagedBass.Mix.nuspec.meta b/Assets/Packages/ManagedBass.Mix.3.1.1/ManagedBass.Mix.nuspec.meta new file mode 100644 index 00000000..16cee377 --- /dev/null +++ b/Assets/Packages/ManagedBass.Mix.3.1.1/ManagedBass.Mix.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8c425960f59e0e447a831450f59430b7 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Mix.3.1.1/icon.png b/Assets/Packages/ManagedBass.Mix.3.1.1/icon.png new file mode 100644 index 00000000..2692e2bc Binary files /dev/null and b/Assets/Packages/ManagedBass.Mix.3.1.1/icon.png differ diff --git a/Assets/Packages/ManagedBass.Mix.3.1.1/icon.png.meta b/Assets/Packages/ManagedBass.Mix.3.1.1/icon.png.meta new file mode 100644 index 00000000..9427e879 --- /dev/null +++ b/Assets/Packages/ManagedBass.Mix.3.1.1/icon.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: 196efb6c8db712641ba6b0c492ffcb07 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Mix.3.1.1/lib.meta b/Assets/Packages/ManagedBass.Mix.3.1.1/lib.meta new file mode 100644 index 00000000..304ac522 --- /dev/null +++ b/Assets/Packages/ManagedBass.Mix.3.1.1/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c455dba1447006a4cb85e2baf31f5bdc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Mix.3.1.1/lib/netstandard1.4.meta b/Assets/Packages/ManagedBass.Mix.3.1.1/lib/netstandard1.4.meta new file mode 100644 index 00000000..acd9e8e4 --- /dev/null +++ b/Assets/Packages/ManagedBass.Mix.3.1.1/lib/netstandard1.4.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a31533d3f39269e49b4cab4564af758d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Mix.3.1.1/lib/netstandard1.4/ManagedBass.Mix.dll b/Assets/Packages/ManagedBass.Mix.3.1.1/lib/netstandard1.4/ManagedBass.Mix.dll new file mode 100644 index 00000000..9a1bd9a6 Binary files /dev/null and b/Assets/Packages/ManagedBass.Mix.3.1.1/lib/netstandard1.4/ManagedBass.Mix.dll differ diff --git a/Assets/Packages/ManagedBass.Mix.3.1.1/lib/netstandard1.4/ManagedBass.Mix.dll.meta b/Assets/Packages/ManagedBass.Mix.3.1.1/lib/netstandard1.4/ManagedBass.Mix.dll.meta new file mode 100644 index 00000000..093e0998 --- /dev/null +++ b/Assets/Packages/ManagedBass.Mix.3.1.1/lib/netstandard1.4/ManagedBass.Mix.dll.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: 12e6d467a1afc11459f957f7db3b8089 +labels: +- NuGetForUnity +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Mix.3.1.1/lib/netstandard1.4/ManagedBass.Mix.xml b/Assets/Packages/ManagedBass.Mix.3.1.1/lib/netstandard1.4/ManagedBass.Mix.xml new file mode 100644 index 00000000..1a76585d --- /dev/null +++ b/Assets/Packages/ManagedBass.Mix.3.1.1/lib/netstandard1.4/ManagedBass.Mix.xml @@ -0,0 +1,890 @@ + + + + ManagedBass.Mix + + + + + BassMix is a BASS addon providing the ability to mix together multiple BASS channels, with resampling and matrix mixing features. + + + + + Gets the Version of BassMix that is loaded. + + + + + Creates a splitter stream (adds a reader channel to a decoding source channel). + + The handle of the decoding source channel to split... a HMUSIC, HSTREAM or HRECORD. + The channel falgs to be used to create the reader channel. + The target (readers) channel mapping definition, which is an array of source channel index values (0=1st channel, 1=2nd channel, 2=3rd channel, 3=4th channel etc.) ending with a final -1 element (use to create a 1:1 reader). + If successful, the new reader stream's handle is returned, else 0 is returned. Use to get the error code. + + A "splitter" basically does the opposite of a mixer: it splits a single source into multiple streams rather then mixing multiple sources into a single stream. + Like mixer sources, splitter sources must be decoding channels. + + The splitter stream will have the same sample rate and resolution as its source, but it can have a different number of channels, as dictated by the mapping parameter. + Even when the number of channels is different (and so the amount of data produced is different), will give the source length, and will give the source position that is currently being output by the splitter stream. + + + All splitter streams with the same source share a buffer to access its sample data. + The length of the buffer is determined by the config option; + the splitter streams should not be allowed to drift apart beyond that, otherwise those left behind will suffer buffer overflows. + A splitter stream's buffer state can be reset via ; + that can also be used to reset a splitter stream that has ended, so that it can be played again. + + + If the flag is used, the splitter stream will only receive data from the buffer and will not request more data from the source, so it can only receive data that has already been received by another splitter stream with the same source. + The flag can be toggled at any time via . + + + When is used on a splitter stream, its source will be set to the requested position and the splitter stream's buffer state will be reset so that it immediately receives data from the new position. + The position change will affect all of the source's splitter streams, but the others will not have their buffer state reset; + they will continue to receive any buffered data before reaching the data from the new position. + can be used to reset the buffer state. + + + Use with a splitter channel to remove it from the source. + When a source is freed, all of its splitter streams are automatically freed. + + + The array defines the channel number to be created for the reader as well as which source channels should be used for each. + This enables you to create a reader stream which extract certain source channels (e.g. create a mono reader based on a stereo source), remaps the channel order (e.g. swap left and right in the reader) or even contains more channels than the source (e.g. create a 5.1 reader based on a stereo source). + + + has not been successfully called. + The is not valid. + The is not a decoding channel. + The contains an invalid channel index. + Only decoding streams () are allowed when using the . The flag is also unavailable to decoding channels. + The sample format is not supported by the device/drivers. If the stream is more than stereo or the flag is used, it could be that they are not supported (ie. no WDM drivers). + The device/drivers do not support the requested speaker(s), or you're attempting to assign a stereo stream to a mono speaker. + There is insufficent memory. + Couldn't initialize 3D support for the stream. + Some other mystery problem! + + + + Retrieves the amount of buffered data available to a splitter stream, or the amount of data in a splitter source buffer. + + The splitter (as obtained by ) or the source channel handle. + If successful, then the amount of buffered data (in bytes) is returned, else -1 is returned. Use to get the error code. + + With a splitter source, this function reports how much data is in the buffer that is shared by all of its splitter streams. + With a splitter stream, this function reports how much data is ahead of it in the buffer, before it will receive any new data from the source. + A splitter stream can be repositioned within the buffer via the function. + The amount of data that can be buffered is limited by the buffer size, which is determined by the config option. + The returned buffered byte count is always based on the source's sample format, even with splitter streams that were created with a different channel count. + + The is neither a splitter stream or source. + + + + Resets a splitter stream or all splitter streams of a source. + + The splitter (as obtained by ) or the source channel handle. + If successful, is returned, else is returned. Use to get the error code. + + This function resets the splitter stream's buffer state, so that the next sample data it receives will be from the source's current position. + If the stream has ended, that is reset too, so that it can be played again. + Unless called from within a mixtime sync callback, the stream's output buffer (if it has one) is also flushed. + + The is neither a splitter stream or source. + + + + Resets a splitter stream and sets its position in the source buffer. + + The splitter (as obtained by ) or the source channel handle. + + How far back (in bytes) to position the splitter in the source buffer. + This is based on the source's sample format, which may have a different channel count to the splitter. + + If successful, is returned, else is returned. Use to get the error code. + + This function is the same as except that it also provides the ability to position the splitter stream within the buffer that is shared by all of the splitter streams of the same source. + A splitter stream's buffer position determines what data it will next receive. + For example, if its position is half a second back, it will receive half a second of buffered data before receiving new data from the source. + Calling this function with = 0 will result in the next data that the splitter stream receives being new data from the source, and is identical to using . + + is automatically limited to the amount of data that the source buffer contains, which is in turn limited to the buffer size, determined by the config option. + The amount of source data buffered, as well as a splitter stream's position within it, is available from . + + + The is neither a splitter stream or source. + + + + Retrieves the source of a splitter stream. + + The splitter stream handle (which was add via beforehand). + If successful, the source stream's handle is returned, else 0 is returned. Use to get the error code. + The is not a splitter stream. + + + + Retrieves the channel's splitters. + + The handle to check. + The array of splitter handles ( on error, use to get the error code). + + + + Creates a mixer stream. + + The sample rate of the mixer output (e.g. 44100). + The number of channels... 1 = mono, 2 = stereo, 4 = quadraphonic, 6 = 5.1, 8 = 7.1. More than stereo requires WDM drivers (or the flag) in Windows, and the Speaker flags are ignored. + A combination of .. + If successful, the new stream's handle is returned, else 0 is returned. Use to get the error code. + + + Source channels are "plugged" into a mixer using the or functions, and "unplugged" using the function. + Sources can be added and removed at any time, so a mixer does not have a predetermined length and is not applicable. + Likewise, seeking is not possible, except to position 0, as described below. + + + If the mixer output is being played (it is not a decoding channel), then there will be some delay in the effect of adding/removing source channels or changing their attributes being heard. + This latency can be reduced by making use of the and config options. + The playback buffer can be flushed by calling (Restart = true) or (Position = 0). + That can also be done to restart a mixer that has ended. + + + Unless the flag is specified, a mixer stream will never end. + When there are no sources (or the sources have ended/stalled), it'll produce no output until there's an active source. + That's unless the flag is used, in which case it will produce silent output while there are no active sources. + The and flags can be toggled at any time, using . + + + Besides mixing channels, a mixer stream can be used as a resampler. + In that case the freq parameter would be set the new sample rate, and the source channel's attributes would be left at their defaults. + A mixer stream can also be used to downmix, upmix and generally rearrange channels, set using the . + + + has not been successfully called. + Only decoding streams () are allowed when using the . + is out of range. See and members. + The sample format is not supported by the device/drivers. If the stream is more than stereo or the flag is used, it could be that they are not supported (ie. no WDM drivers). + The device/drivers do not support the requested speaker(s), or you're attempting to assign a stereo stream to a mono speaker. + There is insufficent memory. + Couldn't initialize 3D support for the stream. + Some other mystery problem! + + + + Plugs a channel into a mixer. + + The mixer handle (created with ). + The handle of the channel to plug into the mixer... a HMUSIC, HSTREAM or HRECORD. + A combination of . + If successful, then is returned, else is returned. Use to get the error code. + + + Internally, a mixer will use the function to get data from its source channels. + That means that the source channels must be decoding channels (not using a in the case of a recording channel). + Plugging a channel into more than one mixer at a time is not possible because the mixers would be taking data away from each other. + An advantage of this is that there is no need for a mixer's handle to be provided with the channel functions. + It is actually possible to plug a channel into multiple mixers via the use of splitter streams. + + Channels are 'unplugged' using the function. + Channels are also automatically unplugged when they are freed. + + + When mixing a channel, the mixer makes use of the channel's attributes (freq/volume/pan), as set with or . + The and config option settings are also used. + + + If a multi-channel stream has more channels than the mixer output, the extra channels will be discarded. + For example, if a 5.1 stream is plugged into a stereo mixer, only the front-left/right channels will be retained. + That is unless matrix mixing is used. + + + The mixer processing is performed in floating-point, so it makes sense (for both quality and efficiency reasons) for the source channels to be floating-point too, though they do not have to be. + It is also more efficient if the source channels have the same sample rate as the mixer output because no sample rate conversion is required then. + When sample rate conversion is required, windowed sinc interpolation is used and the source's attribute determines how many points/samples are used in that, as follows: + 0 (or below) = 4 points, 1 = 8 points, 2 = 16 points, 3 = 32 points, 4 = 64 points, 5 = 128 points, 6 (or above) = 256 points. + 8 points are used if the attribute is unavailable (old BASS version). + A higher number of points results in better sound quality (less aliasing and smaller transition band in the low-pass filter), but also higher CPU usage. + + Platform-specific: + + The sample rate conversion processing is limited to 128 points on iOS and Android. + The mixer processing is also performed in fixed-point rather than floating-point on Android. + + + At least one of and is not valid. + is not a decoding channel. + is already plugged into a mixer. It must be unplugged first. + The mixer does not support the requested speaker(s), or you're attempting to assign a stereo stream to a mono speaker. + + + + Plugs a channel into a mixer, optionally delaying the start and limiting the length. + + The mixer handle (created with ). + The handle of the channel to plug into the mixer... a HMUSIC, HSTREAM or HRECORD. + A combination of . + Delay (in bytes) before the channel is mixed in. + The maximum amount of data (in bytes) to mix... 0 = no limit. Once this end point is reached, the channel will be removed from the mixer. + If successful, then is returned, else is returned. Use to get the error code. + + This function is identical to , but with the additional ability to specify a delay and duration for the channel. + + The and parameters relate to the mixer output. + So when calculating these values, use the mixer stream's sample format rather than the source channel's. + The start parameter is automatically rounded-down to the nearest sample boundary, while the length parameter is rounded-up to the nearest sample boundary. + + + At least one of and is not valid. + is not a decoding channel. + is already plugged into a mixer. It must be unplugged first. + The mixer does not support the requested speaker(s), or you're attempting to assign a stereo stream to a mono speaker. + + + + Unplugs a channel from a mixer. + + The handle of the mixer source channel to unplug (which was addded via or ) beforehand). + If successful, then is returned, else is returned. Use to get the error code. + The channel is not plugged into a mixer. + + + + Retrieves a mixer's source channels. + + The Mixer Handle. + An array containing mixer source channels or null on error. Use to get the error code. + To determine whether a particular channel is plugged in a mixer, it is simpler to use instead of this function. + + + + The splitter Buffer Length in milliseconds... 100 (min) to 5000 (max). + + + If the value specified is outside this range, it is automatically capped. + When a source has its first splitter stream created, a Buffer is allocated + for its sample data, which all of its subsequently created splitter streams + will share. This config option determines how big that Buffer is. The default + is 2000ms. + The Buffer will always be kept as empty as possible, so its size does not + necessarily affect latency; it just determines how far splitter streams can + drift apart before there are Buffer overflow issues for those left behind. + Changes do not affect buffers that have already been allocated; any sources + that have already had splitter streams created will continue to use their + existing buffers. + + + + + The source channel Buffer size multiplier... 1 (min) to 5 (max). + + + If the value specified is outside this range, it is automatically capped. + When a source channel has buffering enabled, the mixer will Buffer the decoded data, + so that it is available to the and functions. + To reach the source channel's Buffer size, the multiplier (multiple) is applied to the + setting at the time of the mixer's creation. + If the source is played at it's default rate, then the Buffer only need to be as big as the mixer's Buffer. + But if it's played at a faster rate, then the Buffer needs to be bigger for it to contain the data that + is currently being heard from the mixer. + For example, playing a channel at 2x its normal speed would require the Buffer to be 2x the normal size (multiple = 2). + Larger buffers obviously require more memory, so the multiplier should not be set higher than necessary. + The default multiplier is 2x. + Changes only affect subsequently setup channel buffers. + An existing channel can have its Buffer reinitilized by disabling and then re-enabling + the flag using . + + + + + BASSmix add-on: How far back to keep record of source positions + to make available for , in milliseconds. + + + If a mixer is not a decoding channel (not using the BassFlag.Decode flag), + this config setting will just be a minimum and the mixer will + always have a position record at least equal to its playback Buffer Length, + as determined by the PlaybackBufferLength config option. + The default setting is 2000ms. + Changes only affect newly created mixers, not any that already exist. + + + + + Modifies and/or retrieves a channel's mixer flags. + + The handle of the mixer source channel to modify (which was add via or ) beforehand). + A combination of . + + The flags (as above) to modify. + Flags that are not included in this are left as they are, so it can be set to 0 () in order to just retrieve the current flags. + To modify the speaker flags, any of the Speaker flags can be used in the mask (no need to include all of them). + + If successful, the channel's updated flags are returned, else -1 is returned. Use to get the error code. + + This function only deals with the channel's mixer related flags. + The channel's standard flags, for example looping (), are unaffected - use to modify them. + + The channel is not plugged into a mixer. + The mixer does not support the requested speaker(s), or the channel has matrix mixing enabled. + + + + Gets whether a flag is present. + + + + + Adds a flag to Mixer. + + + + + Removes a flag from Mixer. + + + + + + + + Retrieves the immediate sample data (or an FFT representation of it) of a mixer source channel. + + The handle of the mixer source channel (which was addded via or beforehand). + Location to write the data as an (can be when handle is a recording channel (HRECORD), to discard the requested amount of data from the recording buffer). + Number of bytes wanted, and/or . + + If an error occurs, -1 is returned, use to get the error code. + When requesting FFT data, the number of bytes read from the channel (to perform the FFT) is returned. + When requesting sample data, the number of bytes written to buffer will be returned (not necessarily the same as the number of bytes read when using the flag). + When using the flag, the number of bytes in the channel's buffer is returned. + + + + This function is like the standard , but it gets the data from the channel's buffer instead of decoding it from the channel, which means that the mixer doesn't miss out on any data. + In order to do this, the source channel must have buffering enabled, via the flag. + + + If the mixer is a decoding channel, then the channel's most recent data will be returned. + Otherwise, the data will be in sync with what is currently being heard from the mixer, unless the buffer is too small so that the currently heard data isn't in it. + The config option can be used to set the buffer size. + + + is not plugged into a mixer. + The channel does not have buffering () enabled. + + + + Retrieves the immediate sample data (or an FFT representation of it) of a mixer source channel. + + The handle of the mixer source channel (which was addded via or beforehand). + byte[] to write the data to. + Number of bytes wanted, and/or . + + If an error occurs, -1 is returned, use to get the error code. + When requesting FFT data, the number of bytes read from the channel (to perform the FFT) is returned. + When requesting sample data, the number of bytes written to buffer will be returned (not necessarily the same as the number of bytes read when using the flag). + When using the flag, the number of bytes in the channel's buffer is returned. + + + + This function is like the standard , but it gets the data from the channel's buffer instead of decoding it from the channel, which means that the mixer doesn't miss out on any data. + In order to do this, the source channel must have buffering enabled, via the flag. + + + If the mixer is a decoding channel, then the channel's most recent data will be returned. + Otherwise, the data will be in sync with what is currently being heard from the mixer, unless the buffer is too small so that the currently heard data isn't in it. + The config option can be used to set the buffer size. + + + is not plugged into a mixer. + The channel does not have buffering () enabled. + + + + Retrieves the immediate sample data (or an FFT representation of it) of a mixer source channel. + + The handle of the mixer source channel (which was addded via or beforehand). + short[] to write the data to. + Number of bytes wanted, and/or . + + If an error occurs, -1 is returned, use to get the error code. + When requesting FFT data, the number of bytes read from the channel (to perform the FFT) is returned. + When requesting sample data, the number of bytes written to buffer will be returned (not necessarily the same as the number of bytes read when using the flag). + When using the flag, the number of bytes in the channel's buffer is returned. + + + + This function is like the standard , but it gets the data from the channel's buffer instead of decoding it from the channel, which means that the mixer doesn't miss out on any data. + In order to do this, the source channel must have buffering enabled, via the flag. + + + If the mixer is a decoding channel, then the channel's most recent data will be returned. + Otherwise, the data will be in sync with what is currently being heard from the mixer, unless the buffer is too small so that the currently heard data isn't in it. + The config option can be used to set the buffer size. + + + is not plugged into a mixer. + The channel does not have buffering () enabled. + + + + Retrieves the immediate sample data (or an FFT representation of it) of a mixer source channel. + + The handle of the mixer source channel (which was addded via or beforehand). + int[] to write the data to. + Number of bytes wanted, and/or . + + If an error occurs, -1 is returned, use to get the error code. + When requesting FFT data, the number of bytes read from the channel (to perform the FFT) is returned. + When requesting sample data, the number of bytes written to buffer will be returned (not necessarily the same as the number of bytes read when using the flag). + When using the flag, the number of bytes in the channel's buffer is returned. + + + + This function is like the standard , but it gets the data from the channel's buffer instead of decoding it from the channel, which means that the mixer doesn't miss out on any data. + In order to do this, the source channel must have buffering enabled, via the flag. + + + If the mixer is a decoding channel, then the channel's most recent data will be returned. + Otherwise, the data will be in sync with what is currently being heard from the mixer, unless the buffer is too small so that the currently heard data isn't in it. + The config option can be used to set the buffer size. + + + is not plugged into a mixer. + The channel does not have buffering () enabled. + + + + Retrieves the immediate sample data (or an FFT representation of it) of a mixer source channel. + + The handle of the mixer source channel (which was addded via or beforehand). + float[] to write the data to. + Number of bytes wanted, and/or . + + If an error occurs, -1 is returned, use to get the error code. + When requesting FFT data, the number of bytes read from the channel (to perform the FFT) is returned. + When requesting sample data, the number of bytes written to buffer will be returned (not necessarily the same as the number of bytes read when using the flag). + When using the flag, the number of bytes in the channel's buffer is returned. + + + + This function is like the standard , but it gets the data from the channel's buffer instead of decoding it from the channel, which means that the mixer doesn't miss out on any data. + In order to do this, the source channel must have buffering enabled, via the flag. + + + If the mixer is a decoding channel, then the channel's most recent data will be returned. + Otherwise, the data will be in sync with what is currently being heard from the mixer, unless the buffer is too small so that the currently heard data isn't in it. + The config option can be used to set the buffer size. + + + is not plugged into a mixer. + The channel does not have buffering () enabled. + + + + Retrieves the level (peak amplitude) of a mixer source channel. + + The handle of the mixer source channel (which was add via or ) beforehand). + + If an error occurs, -1 is returned, use to get the error code. + + If successful, the level of the left channel is returned in the low word (low 16-bits), and the level of the right channel is returned in the high word (high 16-bits). + If the channel is mono, then the low word is duplicated in the high word. + The level ranges linearly from 0 (silent) to 32768 (max). 0 will be returned when a channel is stalled. + + + + + This function is like the standard , but it gets the level from the channel's buffer instead of decoding data from the channel, which means that the mixer doesn't miss out on any data. + In order to do this, the source channel must have buffering enabled, via the flag. + + + If the mixer is a decoding channel, then the channel's most recent data will be used to get the level. + Otherwise, the level will be in sync with what is currently being heard from the mixer, unless the buffer is too small so that the currently heard data isn't in it. + The config option can be used to set the buffer size. + + + is not plugged into a mixer. + The channel does not have buffering () enabled. + The mixer is not playing. + + + + Retrieves the level of a mixer source channel. + + The handle of the mixer source channel (which was add via or ) beforehand). + An array to receive the levels. + The amount of data to inspect to calculate the level, in seconds. The maximum is 1 second. Less data than requested may be used if the full amount is not available, eg. if the source's buffer (determined by the config option) is shorter. + A combination of . + + If an error occurs, -1 is returned, use to get the error code. + + If successful, the level of the left channel is returned in the low word (low 16-bits), and the level of the right channel is returned in the high word (high 16-bits). + If the channel is mono, then the low word is duplicated in the high word. + The level ranges linearly from 0 (silent) to 32768 (max). 0 will be returned when a channel is stalled. + + + + + This function is like the standard , but it gets the level from the channel's buffer instead of decoding data from the channel, which means that the mixer doesn't miss out on any data. + In order to do this, the source channel must have buffering enabled, via the flag. + + + is not plugged into a mixer. + The channel does not have buffering () enabled. + The mixer is not playing. + + + + Retrieves a channel's mixing matrix, if it has one. + + The mixer source channel handle (which was add via or ) beforehand). + The 2-dimentional array (float[,]) where to write the matrix. + If successful, a is returned, else is returned. Use to get the error code. + + For more details see . + The array must be big enough to get the matrix. + + is not plugged into a mixer. + The channel is not using matrix mixing. + + + + Retrieves the mixer that a channel is plugged into. + + The mixer source channel handle (which was add via or beforehand). + If successful, the mixer stream's handle is returned, else 0 is returned. Use to get the error code. + The channel is not plugged into a mixer. + + + + Sets a channel's mixing matrix, if it has one. + + The mixer source channel handle (which was addded via or beforehand) + The 2-dimensional array (float[,]) of the mixing matrix. + If successful, a is returned, else is returned. Use to get the error code. + + + Normally when mixing channels, the source channels are sent to the output in the same order - the left input is sent to the left output, and so on. + Sometimes something a bit more complex than that is required. + For example, if the source has more channels than the output, you may want to "downmix" the source so that all channels are present in the output. + Equally, if the source has fewer channels than the output, you may want to "upmix" it so that all output channels have sound. + Or you may just want to rearrange the channels. Matrix mixing allows all of these. + + + A matrix mixer is created on a per-source basis (you can mix'n'match normal and matrix mixing), by using the and/or flag when calling or . + The matrix itself is a 2-dimensional array of floating-point mixing levels, with the source channels on one axis, and the output channels on the other. + + + is not plugged into a mixer. + The channel is not using matrix mixing. + + + + Sets a channel's mixing matrix, transitioning from the current matrix. + + The mixer source channel handle (which was add via or beforehand). + The 2-dimensional array (float[,]) of the new mixing matrix. + The time to take (in seconds) to transition from the current matrix to the specified matrix. + If successful, a is returned, else is returned. Use to get the error code. + + This method is identical to but with the option of transitioning over time to the specified matrix. + If this function or is called while a previous matrix transition is still in progress, then that transition will be stopped. + If is called mid-transition, it will give the mid-transition matrix values. + + is not plugged into a mixer. + The channel is not using matrix mixing. + + + + Retrieves the playback position of a mixer source channel. + + The mixer source channel handle (which was addded via or beforehand). + Position mode... default = . + If an error occurs, -1 is returned, use to get the error code. If successful, the position is returned. + + This function is like the standard , but it compensates for the mixer's buffering to return the source channel position that is currently being heard. + So when used with a decoding channel (eg. a mixer source channel), this method will return the current decoding position. + But if the mixer output is being played, then there is a playback buffer involved. + This function compensates for that, to return the position that is currently being heard. + If the mixer itself is a decoding channel, then this function is identical to using . + + is not plugged into a mixer. + The requested position is not available. + Some other mystery problem! + + + + Retrieves the playback position of a mixer source channel, optionally accounting for some latency. + + The mixer source channel handle (which was addded via or beforehand). + Position mode. + How far back (in bytes) in the mixer output to get the source channel's position from. + If an error occurs, -1 is returned, use to get the error code. If successful, the channel's position is returned. + + compensates for the mixer's playback buffering to give the position that is currently being heard, but if the mixer is feeding some other output system, it will not know how to compensate for that. + This function fills that gap by allowing the latency to be specified in the call. + This functionality requires the mixer to keep a record of its sources' position going back some time, and that is enabled via the flag when a mixer is created, with the config option determining how far back the position record goes. + If the mixer is not a decoding channel (not using the flag), then it will automatically have a position record at least equal to its playback buffer length. + + is not plugged into a mixer. + The requested position is not available, or delay goes beyond where the mixer has record of the source channel's position. + Some other mystery problem! + + + + Sets the playback position of a mixer source channel. + + The mixer source channel handle (which was addded via or beforehand). + The position, in bytes. With MOD musics, the position can also be set in orders and rows instead of bytes. + Position Mode... default = . + If successful, then is returned, else is returned. Use to get the error code. + + This function works exactly like the standard , except that it also resets things for the channel in the mixer, well as supporting the flag. + See for details. + For custom looping purposes (eg. in a mixtime ), the standard function should be used instead of this + The playback buffer of the mixer can be flushed by using pos = 0. + + The channel is not plugged into a mixer. + The stream is not a file stream. + The requested position is illegal. + The download has not yet reached the requested position. + Some other mystery problem! + + + + Sets up a synchronizer on a mixer source channel. + + The mixer source channel handle. + The type of sync. + The sync parameters, depends on the sync type. + The callback function which should be invoked with the sync. + User instance data to pass to the callback function. + If succesful, then the new synchronizer's handle is returned, else 0 is returned. Use to get the error code. + + + When used on a decoding channel (eg. a mixer source channel), syncs set with are automatically , + which means that they will be triggered as soon as the sync event is encountered during decoding. + But if the mixer output is being played, then there is a playback buffer involved, which will delay the hearing of the sync event. + This function compensates for that, delaying the triggering of the sync until the event is actually heard. + If the mixer itself is a decoding channel, or the flag is used, then there is effectively no real difference between this function and . + One sync type that is slightly different is the sync, which can be either mixtime or not. + + + Sync types that would automatically be mixtime when using are not so when using this function. + The flag should be specified in those cases, or used instead. + + + When a source is removed from a mixer, any syncs that have been set on it via this function are automatically removed. + If the channel is subsequently plugged back into a mixer, the previous syncs will not still be set on it. + Syncs set via are unaffected. + + + The channel is not plugged into a mixer. + An illegal was specified. + An illegal was specified. + + + + Sets up an extended synchronizer on a mixer source channel. + + The mixer source channel handle. + The type of sync. + The sync parameters, depends on the sync type. + The callback function which should be invoked with the sync. + User instance data to pass to the callback function. + If succesful, then the new synchronizer's handle is returned, else 0 is returned. Use to get the error code. + + + The main difference between this method and is, that this method invokes the callback. + This callback contains an extra 'Offset' parameter, which defines the position of the sync occurrence within the current update cycle of the source converted to the mixer stream position. + This offset might be used to calculate more accurate non-mixtime sync triggers (as with non-mixtime sync's a variable delay is to be expected, as the accuracy depends on the sync thread waking in time, and there is no guarantee when that will happen) - + as well as mixtime syncs are only accurate to the current update period, as they are triggered within such. + So a mixtime sync is being triggered ahead of the actual mixer position being heard. + The 'Offset' parameter might be used to compensate for that. + + + When used on a decoding channel (eg. a mixer source channel), syncs set with are automatically , + which means that they will be triggered as soon as the sync event is encountered during decoding. + But if the mixer output is being played, then there is a playback buffer involved, which will delay the hearing of the sync event. + This function compensates for that, delaying the triggering of the sync until the event is actually heard. + If the mixer itself is a decoding channel, or the flag is used, then there is effectively no real difference between this function and . + One sync type that is slightly different is the sync, which can be either mixtime or not. + + + Sync types that would automatically be mixtime when using are not so when using this function. + The flag should be specified in those cases, or used instead. + + + When a source is removed from a mixer, any syncs that have been set on it via this function are automatically removed. + If the channel is subsequently plugged back into a mixer, the previous syncs will not still be set on it. + Syncs set via are unaffected. + + + The channel is not plugged into a mixer. + An illegal was specified. + An illegal was specified. + + + + Removes a synchronizer from a mixer source channel. + + The mixer source channel handle (as returned by or ). + Handle of the synchronizer to remove (return value of a previous call). + If succesful, is returned, else is returned. Use to get the error code. + This function can only remove syncs that were set via , not those that were set via . + At least one of and is not valid. + + + + Retrieves the current position and value of an envelope on a channel. + + The mixer source channel handle (which was add via or ) beforehand). + The envelope to get the position/value of. + A reference to a variable to receive the envelope value at the current position. + If successful, the current position of the envelope is returned, else -1 is returned. Use to get the error code. + The envelope's current position is not necessarily what is currently being heard, due to buffering. + is not plugged into a mixer. + is not valid. + There is no envelope of the requested type on the channel. + + + + Sets the current position of an envelope on a channel. + + The mixer source channel handle. + The envelope to set the position/value of. + The new envelope position, in bytes. If this is beyond the end of the envelope it will be capped or looped, depending on whether the envelope has looping enabled. + If successful, the current position of the envelope is returned, else -1 is returned. Use to get the error code. + + During playback, the effect of changes are not heard instantaneously, due to buffering. To reduce the delay, use the config option config option to reduce the buffer length. + + Note: Envelopes deal in mixer positions, not sources! + So when you are changing the source position (e.g. via the envelope's positions doesn't change with it. + You might use this method to align the envelope position accorting to the new source position + . + + is not plugged into a mixer. + is not valid. + There is no envelope of the requested type on the channel. + + + + Sets an envelope to modify the sample rate, volume or pan of a channel over a period of time. + + The mixer source channel handle. + The envelope to get the position/value of. + The array of envelope nodes, which should have sequential positions. + The number of elements in the nodes array... 0 = no envelope. + If successful, is returned, else is returned. Use to get the error code. + + + Envelopes are applied on top of the channel's attributes, as set via . + In the case of and , + the final sample rate and volume is a product of the channel attribute and the envelope. + While in the case, the final panning is a sum of the channel attribute and envelope. + + + can be used to get the current envelope position, + and a sync can be set via to be informed of when an envelope ends. + The function can be called again from such a sync, in order to set a new envelope to follow the old one. + + + Any previous envelope of the same type is replaced by the new envelope. + A copy is made of the nodes array, so it does not need to persist beyond this function call. + + Note: Envelopes deal in mixer positions, not sources! + You might use to adjust the envelope to a source channel position. + + is not plugged into a mixer. + is not valid. + + + + Mixer envelope attribute types, used with , and to set/retrieve an envelope on a mixer source channel. + + + + + Sample rate. + Envelopes are applied on top of the channel's attributes. + The final sample rate is the product of the channel attribute and the envelope. + + + + + Volume. + Envelopes are applied on top of the channel's attributes. + The final volume is the product of the channel attribute and the envelope. + + + + + Panning/Balance. + Envelopes are applied on top of the channel's attributes. + The final panning is a sum of the channel attribute and envelope. + + + + + Loop the envelope (flag). + + + + + Remove the source from the mixer at the end of the envelope. This is a flag and can be used in combination with any of the above. + + + + + Used with to set an envelope on a mixer source channel. + + + Envelopes are applied on top of the channel's attributes, as set via . + In the case of and , + the final sample rate and volume is a product of the channel attribute and the envelope. + While in the case, the final panning is a sum of the channel attribute and envelope. + + + + + The postion of the node in bytes. This is based on the mixer's sample format, not the source channel's format! + + Note: Envelopes deal with mixer positions, not sources! + + + + The envelope value at the position. + + + + + User defined extended mixer synchronizer callback function (see for details). + + The sync handle that has occured (as returned by ). + The channel that the sync occured on (the mixer source channel). + Additional data associated with the sync's occurance. + The user instance data given when was called. + The offset in bytes containing the position of the sync occurrence within the update cycle converted to the mixer stream. + + + A sync callback function should be very quick as other syncs can't be processed until it has finished. + Attribute slides () are also performed by the sync thread, so are also affected if a sync callback takes a long time. + + + If the sync is a sync, then depending on the sync type, the callback will be executed in the update thread. + The specifies the position of the sync within the update buffer converted to the mixer stream position. + Note that the is based on the mixer's sample format, so you'll need to convert that to the source's format if using the sync to trigger things on the source. + + + The usual restrictions on which BASS functions can be called that apply to stream callbacks () also apply here. + It is also unsafe to call on the same channel from a mixtime sync callback. + can be used in a mixtime sync to implement custom looping, eg. set a sync at the loop end position and seek to the loop start position in the callback. + + + + + diff --git a/Assets/Packages/ManagedBass.Mix.3.1.1/lib/netstandard1.4/ManagedBass.Mix.xml.meta b/Assets/Packages/ManagedBass.Mix.3.1.1/lib/netstandard1.4/ManagedBass.Mix.xml.meta new file mode 100644 index 00000000..40ee4f27 --- /dev/null +++ b/Assets/Packages/ManagedBass.Mix.3.1.1/lib/netstandard1.4/ManagedBass.Mix.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2aa1950a8e0a7a349aa86a51cbe679a9 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Wasapi.3.1.1.meta b/Assets/Packages/ManagedBass.Wasapi.3.1.1.meta new file mode 100644 index 00000000..f0a32091 --- /dev/null +++ b/Assets/Packages/ManagedBass.Wasapi.3.1.1.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a4960d02ec06a944c9c062986049f8e8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Wasapi.3.1.1/.signature.p7s b/Assets/Packages/ManagedBass.Wasapi.3.1.1/.signature.p7s new file mode 100644 index 00000000..7884035b Binary files /dev/null and b/Assets/Packages/ManagedBass.Wasapi.3.1.1/.signature.p7s differ diff --git a/Assets/Packages/ManagedBass.Wasapi.3.1.1/LICENSE.md b/Assets/Packages/ManagedBass.Wasapi.3.1.1/LICENSE.md new file mode 100644 index 00000000..51cb76d4 --- /dev/null +++ b/Assets/Packages/ManagedBass.Wasapi.3.1.1/LICENSE.md @@ -0,0 +1,18 @@ +# ManagedBass +Copyright (c) 2016 [Mathew Sachin](https://github.com/MathewSachin) + +## The MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/Assets/Packages/ManagedBass.Wasapi.3.1.1/LICENSE.md.meta b/Assets/Packages/ManagedBass.Wasapi.3.1.1/LICENSE.md.meta new file mode 100644 index 00000000..f704a0e0 --- /dev/null +++ b/Assets/Packages/ManagedBass.Wasapi.3.1.1/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6fae8815aa213204fb577721194a63b2 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Wasapi.3.1.1/ManagedBass.Wasapi.nuspec b/Assets/Packages/ManagedBass.Wasapi.3.1.1/ManagedBass.Wasapi.nuspec new file mode 100644 index 00000000..8de17594 --- /dev/null +++ b/Assets/Packages/ManagedBass.Wasapi.3.1.1/ManagedBass.Wasapi.nuspec @@ -0,0 +1,20 @@ + + + + ManagedBass.Wasapi + 3.1.1 + MathewSachin + LICENSE.md + https://aka.ms/deprecateLicenseUrl + icon.png + https://github.com/ManagedBass/ManagedBass + ManagedBass WASAPI AddOn + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/ManagedBass.Wasapi.3.1.1/ManagedBass.Wasapi.nuspec.meta b/Assets/Packages/ManagedBass.Wasapi.3.1.1/ManagedBass.Wasapi.nuspec.meta new file mode 100644 index 00000000..0fc196ee --- /dev/null +++ b/Assets/Packages/ManagedBass.Wasapi.3.1.1/ManagedBass.Wasapi.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 962551a97279b0a4c9fbd3200dadf0f5 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Wasapi.3.1.1/icon.png b/Assets/Packages/ManagedBass.Wasapi.3.1.1/icon.png new file mode 100644 index 00000000..2692e2bc Binary files /dev/null and b/Assets/Packages/ManagedBass.Wasapi.3.1.1/icon.png differ diff --git a/Assets/Packages/ManagedBass.Wasapi.3.1.1/icon.png.meta b/Assets/Packages/ManagedBass.Wasapi.3.1.1/icon.png.meta new file mode 100644 index 00000000..31819e46 --- /dev/null +++ b/Assets/Packages/ManagedBass.Wasapi.3.1.1/icon.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: 66ff345eb55407c43a34b8a588f8c1b2 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Wasapi.3.1.1/lib.meta b/Assets/Packages/ManagedBass.Wasapi.3.1.1/lib.meta new file mode 100644 index 00000000..8f4945d6 --- /dev/null +++ b/Assets/Packages/ManagedBass.Wasapi.3.1.1/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 51ef580d5ff29ed45b1357c246ccdec7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Wasapi.3.1.1/lib/netstandard1.4.meta b/Assets/Packages/ManagedBass.Wasapi.3.1.1/lib/netstandard1.4.meta new file mode 100644 index 00000000..9c336c40 --- /dev/null +++ b/Assets/Packages/ManagedBass.Wasapi.3.1.1/lib/netstandard1.4.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 66d39559c2d7c9a449346d483046df85 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Wasapi.3.1.1/lib/netstandard1.4/ManagedBass.Wasapi.dll b/Assets/Packages/ManagedBass.Wasapi.3.1.1/lib/netstandard1.4/ManagedBass.Wasapi.dll new file mode 100644 index 00000000..2f4a2c17 Binary files /dev/null and b/Assets/Packages/ManagedBass.Wasapi.3.1.1/lib/netstandard1.4/ManagedBass.Wasapi.dll differ diff --git a/Assets/Packages/ManagedBass.Wasapi.3.1.1/lib/netstandard1.4/ManagedBass.Wasapi.dll.meta b/Assets/Packages/ManagedBass.Wasapi.3.1.1/lib/netstandard1.4/ManagedBass.Wasapi.dll.meta new file mode 100644 index 00000000..077e8f0d --- /dev/null +++ b/Assets/Packages/ManagedBass.Wasapi.3.1.1/lib/netstandard1.4/ManagedBass.Wasapi.dll.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: 84c88198790d3a34f8f89c8c2bb98427 +labels: +- NuGetForUnity +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/ManagedBass.Wasapi.3.1.1/lib/netstandard1.4/ManagedBass.Wasapi.xml b/Assets/Packages/ManagedBass.Wasapi.3.1.1/lib/netstandard1.4/ManagedBass.Wasapi.xml new file mode 100644 index 00000000..bad15920 --- /dev/null +++ b/Assets/Packages/ManagedBass.Wasapi.3.1.1/lib/netstandard1.4/ManagedBass.Wasapi.xml @@ -0,0 +1,1111 @@ + + + + ManagedBass.Wasapi + + + + + Wraps basswasapi.dll: Windows Audio Session API driver library + + + BASSWASAPI is basically a wrapper for Windows Audio Session API drivers, with the addition of channel joining, format conversion and resampling. + + BASSWASAPI requires a soundcard with a Windows Session API drivers installed (Vista or above). + It also makes use of SSE2 and 3DNow optimizations, but is fully functional without them. + BASS is not required by BASSWASAPI, but BASS can of course be used to decode, apply DSP/FX, etc. + + + + + + Identifier for Default Device. + + + + + Identifier for Default Recording Device. + + + + + Identifier for Default Loopback Device. + + + + + Instead of BASSWASAPI pulling data from a WASAPIPROC function, data is pushed to + BASSWASAPI via BASS_WASAPI_PutData. This cannot be used with input devices or the + BASS_WASAPI_EVENT flag. + + + + + Feed data to/from a BASS channel, specified in the user parameter. + It must be a decoding channel (using BASS_STREAM_DECODE) for an output device, + or a "push" or "dummy" stream (using STREAMPROC_PUSH or STREAMPROC_DUMMY) for + an input device. The freq and chans parameters are ignored and the sample format + of the BASS channel is used instead, but it must be floating-point (BASS_SAMPLE_FLOAT). + + + + + Retrieves the current CPU usage of BASSWASAPI. + + The BASSWASAPI CPU usage as a percentage of total CPU time. + This function includes the time taken by the callback functions. + + + + Gets or Sets the Wasapi device to use for susequent calls in the current thread... 0 = first device. Use to get the error code. + + + Throws on Error setting value. + + Simultaneously using multiple devices is supported in the BASS API via a context switching system; + instead of there being an extra "device" parameter in the function calls, the device to be used is set prior to calling the functions. + The device setting is local to the current thread, so calling functions with different devices simultaneously in multiple threads is not a problem. + + + All of the BassWasapi functions that do not have their own "device" parameter make use of this device selection. + When one of them is called, BassWasapi will check the current thread's device setting, and if no device is selected (or the selected device is not initialized), BassWasapi will automatically select the lowest device that is initialized. + This means that when using a single device, there is no need to use this function; + BassWasapi will automatically use the device that is initialized. + Even if you free the device, and initialize another, BassWasapi will automatically switch to the one that is initialized. + + + has not been successfully called. + The device number specified is invalid. + + + + Retrieves information on a Wasapi device (endpoint). + + The device to get the information of... 0 = first. + An instance of the class to store the information at. + If successful, then is returned, else is returned. Use to get the error code. + + This function can be used to enumerate the available Wasapi devices (endpoints) for a setup dialog. + Note: Input (capture) devices can be determined by evaluating and members. + + WASAPI is not available + The device number specified is invalid. + + + + Retrieves information on a Wasapi device (endpoint). + + The device to get the information of... 0 = first. + An instance of structure is returned. Throws on Error. + + This function can be used to enumerate the available Wasapi devices (endpoints) for a setup dialog. + Note: Input (capture) devices can be determined by evaluating and members. + + WASAPI is not available + The device number specified is invalid. + + + + Sets a device change notification callback. + + User defined notification function... = disable notifications. + User instance data to pass to the callback function. + If successful, is returned, else is returned. Use to get the error code. + A previously set notification callback can be changed (or removed) at any time, by calling this function again. + + + + Gets the total number of available Wasapi devices. + + + + + Checks if a particular sample format is supported by a device (endpoint). + + The device to use... 0 = first device, -1 = default device, -2 = default input device. can be used to enumerate the available devices. + The sample rate to check. + The number of channels to check... 1 = mono, 2 = stereo, etc. + + Any combination of and . + The HIWORD can be used to limit the sample formats that are checked in exclusive mode. + The default is to check 32-bit floating-point, 32-bit integer, 24-bit integer, 16-bit integer, 8-bit integer, in that order. + A value can be used to bypass the formats that precede it in that list. + + If the sample format is supported, the maximum supported resolution (a value) is returned, else -1 is returned. Use to get the error code. + + Call this method prior to in order to make sure the requested format is supported by the Wasapi output device/driver (endpoint). + + Shared and exclusive modes may have different sample formats available. + Only the "mix format" (available from ) is generally supported in shared mode. + + + WASAPI is not available. + The number specified is invalid. + The driver could not be initialized. + Unsupported sample format or number of channels. + + + + Retrieves information on the Wasapi device being used. + + An instance of the structure to store the information at. + If successful, then is returned, else is returned. Use to get the error code. + + This method can be used to get the effective settings used with an initialized Wasapi device (endpoint). + When using multiple devices, the current thread's device setting (as set with ) determines which device this function call applies to. + + has not been successfully called. + + + + Retrieves information on the Wasapi device being used. + + An instance of the structure is returned. Throws on Error. + + This method can be used to get the effective settings used with an initialized Wasapi device (endpoint). + When using multiple devices, the current thread's device setting (as set with ) determines which device this function call applies to. + + has not been successfully called. + + + + Frees the Wasapi device/driver (endpoint). + + If successful, then is returned, else is returned. Use to get the error code. + + This function should be called for all initialized devices before the program closes. + Freed devices do not need to have been stopped with beforehand. + When using multiple devices, the current thread's device setting (as set with ) determines which device this function call applies to. + + has not been successfully called. + + + + Retrieves the immediate sample data (or an FFT representation of it) of the current Wasapi device/driver (endpoint). + + An to write the data to. + Number of bytes wanted, and/or . + + If an error occurs, -1 is returned, use to get the error code. + When requesting FFT data, the number of bytes read from the device (to perform the FFT) is returned. + When requesting sample data, the number of bytes written to buffer will be returned (not necessarily the same as the number of bytes read when using the flag). + When using the flag, the number of bytes in the device's buffer is returned. + + + + This function is like the standard , but it gets the data from the device's buffer instead of decoding it from a channel, + which means that the device doesn't miss out on any data. + In order to do this, the device must have buffering enabled, via the flag. + + + Internally, a BASS stream is used for that, so the usual are supported. + That also means that BASS needs to have been initialized first; it specifically uses the . + If the device is subsequently freed, this method call will fail. + + + As in BASS, simultaneously using multiple devices is supported in the BASSWASAPI API via a context switching system - instead of there being an extra "device" parameter in the function calls, + the device to be used needs to be set via prior to calling the function. + The device setting is local to the current thread, so calling functions with different devices simultaneously in multiple threads is not a problem. + + + has not been successfully called. + The device was not initialized using buffering (). + + + + Retrieves the immediate sample data (or an FFT representation of it) of the current Wasapi device/driver (endpoint). + + A float[] to write the data to. + Number of bytes wanted, and/or . + + If an error occurs, -1 is returned, use to get the error code. + When requesting FFT data, the number of bytes read from the device (to perform the FFT) is returned. + When requesting sample data, the number of bytes written to buffer will be returned (not necessarily the same as the number of bytes read when using the flag). + When using the flag, the number of bytes in the device's buffer is returned. + + + + This function is like the standard , but it gets the data from the device's buffer instead of decoding it from a channel, + which means that the device doesn't miss out on any data. + In order to do this, the device must have buffering enabled, via the flag. + + + Internally, a BASS stream is used for that, so the usual are supported. + That also means that BASS needs to have been initialized first; it specifically uses the . + If the device is subsequently freed, this method call will fail. + + + As in BASS, simultaneously using multiple devices is supported in the BASSWASAPI API via a context switching system - instead of there being an extra "device" parameter in the function calls, + the device to be used needs to be set via prior to calling the function. + The device setting is local to the current thread, so calling functions with different devices simultaneously in multiple threads is not a problem. + + + has not been successfully called. + The device was not initialized using buffering (). + + + + Adds sample data to an output device buffer ("push" device). + + The pointer to the sample data to provide. + The amount of data in bytes. with the flag can be used to check how much data is queued. + + If successful, the the amount of data copied from the provided buffer will be returned + (which may be less than requested if it doesn't all fit in the device buffer, see the property), else -1 is returned. + Use to get the error code. + + + You must have initialized the device via with = . + As much data as possible will be placed in the device's buffer; this function will have to be called again for any remainder. + + Data should be provided at a rate sufficent to sustain playback. + If the buffer gets exhausted, ouput will stall until more data is provided. + with the flag can be used to check how much data is buffered. + + + has not been successfully called. + The device is being fed by a callback function, or it is an input device. + is not valid, it must equate to a whole number of samples. + Some other mystery problem! + + + + Adds sample data to an output device buffer ("push" device). + + float[] providing the sample data. + The amount of data in bytes. with the flag can be used to check how much data is queued. + + If successful, the the amount of data copied from the provided buffer will be returned + (which may be less than requested if it doesn't all fit in the device buffer, see the property), else -1 is returned. + Use to get the error code. + + + You must have initialized the device via with = . + As much data as possible will be placed in the device's buffer; this function will have to be called again for any remainder. + + Data should be provided at a rate sufficent to sustain playback. + If the buffer gets exhausted, ouput will stall until more data is provided. + with the flag can be used to check how much data is buffered. + + + has not been successfully called. + The device is being fed by a callback function, or it is an input device. + is not valid, it must equate to a whole number of samples. + Some other mystery problem! + + + + Locks the device to the current thread. + + If , unlock WASAPI, else lock it. + If successful, is returned, else is returned. Use to get the error code. + + Locking a device prevents other threads from accessing the device buffer, including a . + Other threads wanting to access a locked device will block until it is unlocked, so a device should only be locked very briefly. + A device must be unlocked in the same thread that it was locked. + + + + + Gets the mute status of the current Wasapi device/driver (endpoint). + + The type of volume to get. + , if the device/session is muted and if unmuted, else -1. Use to get the error code. + + When using multiple devices, the current thread's device setting (as set with ) determines which device this function call applies to. + + has not been successfully called. + There is no volume control available. + Some other mystery problem! + + + + Sets the mute status of the current Wasapi device/driver (endpoint). + + The type of volume to set. + to mute the device, to unmute the device. + If successful, then is returned, else is returned. Use to get the error code. + + When using multiple devices, the current thread's device setting (as set with ) determines which device this function call applies to. + + has not been successfully called. + There is no volume control available. + Some other mystery problem! + + + + Gets the audio meter information of the current Wasapi device/driver (endpoint). + + The device to use... 0 = first device. can be used to get the total number of devices. + The channel number to get the audio level meter information from (0=first, -1=all). + The audio level between 0.0 (silence) and 1.0 (maximum). + + This method returns the global session level for the device which might include the level of other applications using the same device in shared-mode. + + This function gets the level from the device/driver, or WASAPI if the device does not have its own level meter. + If the latter case, the level will be unavailable when exclusive mode is active. + + + WASAPI is not available. + is not valid. + The device driver does not support level retrieval. + is not valid. + Some other mystery problem! + + + + Retrieves the current volume level. + + Volume curve to use. + If successful, the volume level is returned, else -1 is returned. Use to get the error code. + + Session volume always uses . + When using multiple devices, the current thread's device setting (as set with ) determines which device this function call applies to. + + has not been successfully called. + There is no volume control available. + Some other mystery problem! + + + + Sets the volume of the current Wasapi device/driver (endpoint). + + Volume curve to use. + The new volume to set between 0.0 (silent) and 1.0 (maximum) if linear, or else a dB level. + Returns on success, else is returned. Use to get the error code. + + Session volume only affects the current process, so other users of the device are unaffected. + It has no effect on exclusive mode output, and maps to the device volume with input devices (so does affect other users). + Session volume always uses . + If you need to control the volume of the stream only, you need to apply that directly within the yourself. + When using multiple devices, the current thread's device setting (as set with ) determines which device this function call applies to. + + has not been successfully called. + There is no volume control available. + is invalid. + Some other mystery problem! + + + + Initializes a Wasapi device/driver (endpoint). + + The device to use... 0 = first device, -1 = default output device, -2 = default input device. can be used to enumerate the available devices. + The sample rate to use... 0 = "mix format" sample rate. + The number of channels to use... 0 = "mix format" channels, 1 = mono, 2 = stereo, etc. + A combination of . + + The length of the device's buffer in seconds. + This is a minimum and the driver may choose to use a larger buffer; + can be used to confirm what the buffer size is. + For an output device, the buffer size determines the latency. + + + The interval (in seconds) between callback function calls... 0 = use default. + If the specified period is below the minimum update period, it will automatically be raised to that. + + The update period specifies the time between calls. + The (see ) "minperiod" and "defperiod" values are actually minimum/default update periods. + + + + The user defined function to process the channel. + Use to create a Wasapi "push" device (to which you can feed sample data via ). + + User instance data to pass to the callback function. + If the device was successfully initialized, is returned, else is returned. Use to get the error code. + + + For convenience, devices are always initialized to use their highest sample resolution and that is then converted to 32-bit floating-point, so that callback functions and the and functions are always dealing with the same sample format. + The device's sample format can be obtained via . + + + WASAPI does not support arbitrary sample formats, like DirectSound does. + In particular, only the "mix format" (available from ) is generally supported in shared mode. + can be used to check whether a particular sample format is supported. + The BASSmix add-on can be used to play (or record) in otherwise unsupported sample formats, as well as playing multiple sources. + + The initialized device will not begin processing data until is called. + + Simultaneously using multiple devices is supported in the BASS API via a context switching system; instead of there being an extra "device" parameter in the function calls, the device to be used is set prior to calling the functions. + is used to switch the current device. + When successful, automatically sets the current thread's device to the one that was just initialized. + + When using the default output or input device, can be used to find out which device it was mapped to. + In SHARED mode you must initialize the device with the current WASAPI mixer sample rate and number of channels (see the "mixfreq" and "mixchans" properties). + In EXCLUSIVE mode you might use any sample rate and number of channels which are supported by the device/driver. + This function must be successfully called before any input or output can be performed. + + In EXCLUSIVE mode, the "period" value will affect what's an acceptable "buffer" value (it appears that the buffer must be at least 4x the period). + In SHARED mode, it's the other way round, the "period" will be reduced to fit the "buffer" if necessary (with a minimum of the "defperiod" value). + The system will limit them to an acceptable range, so for example, you could use a very small value (eg. 0.0001) for both, to get the minimum possible latency. + + + Note: When initializing an input (capture or loopback) device, it might be the case, that the device is automatically muted once initialized. + You can use the / methods to check and probably toggle this. + + + WASAPI is not available. + The number specified is invalid. + A device has already been initialized. You must call before you can initialize again. + An illegal parameter was specified (a must be provided for an input device). + The driver could not be initialized. + The specified format is not supported by the device. If the flag was specified, no other format could be found either. + The has not been initialized. + The device is busy (eg. in "exclusive" use by another process). + Some other mystery error. + + + + Initializes a Wasapi device/driver (endpoint). + + The device to use... 0 = first device, -1 = default output device, -2 = default input device. can be used to enumerate the available devices. + The sample rate to use... 0 = "mix format" sample rate. + The number of channels to use... 0 = "mix format" channels, 1 = mono, 2 = stereo, etc. + A combination of . + + The length of the device's buffer in seconds. + This is a minimum and the driver may choose to use a larger buffer; + can be used to confirm what the buffer size is. + For an output device, the buffer size determines the latency. + + + The interval (in seconds) between callback function calls... 0 = use default. + If the specified period is below the minimum update period, it will automatically be raised to that. + + The update period specifies the time between calls. + The (see ) "minperiod" and "defperiod" values are actually minimum/default update periods. + + + + The user defined function to process the channel. + Use to create a Wasapi "push" device (to which you can feed sample data via ). + + User instance data to pass to the callback function. + If the device was successfully initialized, is returned, else is returned. Use to get the error code. + + + For convenience, devices are always initialized to use their highest sample resolution and that is then converted to 32-bit floating-point, so that callback functions and the and functions are always dealing with the same sample format. + The device's sample format can be obtained via . + + + WASAPI does not support arbitrary sample formats, like DirectSound does. + In particular, only the "mix format" (available from ) is generally supported in shared mode. + can be used to check whether a particular sample format is supported. + The BASSmix add-on can be used to play (or record) in otherwise unsupported sample formats, as well as playing multiple sources. + + The initialized device will not begin processing data until is called. + + Simultaneously using multiple devices is supported in the BASS API via a context switching system; instead of there being an extra "device" parameter in the function calls, the device to be used is set prior to calling the functions. + is used to switch the current device. + When successful, automatically sets the current thread's device to the one that was just initialized. + + When using the default output or input device, can be used to find out which device it was mapped to. + In SHARED mode you must initialize the device with the current WASAPI mixer sample rate and number of channels (see the "mixfreq" and "mixchans" properties). + In EXCLUSIVE mode you might use any sample rate and number of channels which are supported by the device/driver. + This function must be successfully called before any input or output can be performed. + + In EXCLUSIVE mode, the "period" value will affect what's an acceptable "buffer" value (it appears that the buffer must be at least 4x the period). + In SHARED mode, it's the other way round, the "period" will be reduced to fit the "buffer" if necessary (with a minimum of the "defperiod" value). + The system will limit them to an acceptable range, so for example, you could use a very small value (eg. 0.0001) for both, to get the minimum possible latency. + + + Note: When initializing an input (capture or loopback) device, it might be the case, that the device is automatically muted once initialized. + You can use the / methods to check and probably toggle this. + + + WASAPI is not available. + The number specified is invalid. + A device has already been initialized. You must call before you can initialize again. + An illegal parameter was specified (a must be provided for an input device). + The driver could not be initialized. + The specified format is not supported by the device. If the flag was specified, no other format could be found either. + The has not been initialized. + The device is busy (eg. in "exclusive" use by another process). + Some other mystery error. + + + + Checks, if the current Wasapi device/driver (endpoint) has been already started (via ). + + Returns , if the device has been started, else is returned. Use to get the error code. + + When using multiple devices, the current thread's device setting (as set with ) determines which device this function call applies to. + + + + + Starts processing the current Wasapi device/driver (endpoint). + + If successful, then is returned, else is returned. Use to get the error code. + + Before starting the device, it must be initialized using . + Use to stop processing the device. + When using multiple devices, the current thread's device setting (as set with ) determines which device this function call applies to. + + has not been successfully called. + Some other mystery problem! + + + + Stops the current Wasapi device/driver (endpoint). + + Flush the device buffer? + + will clear the output buffer. + Otherwise it is like pausing, eg. will resume playing the buffered data. + + + If successful, then is returned, else is returned. Use to get the error code. + + If the device buffer is left unflushed ( = ), a subsequent call will resume things with the buffered data, otherwise it will resume with fresh data. + When using multiple devices, the current thread's device setting (as set with ) determines which device this function call applies to. + + has not been successfully called. + The device hasn't been started. + Some other mystery problem! + + + + Retrieves the level (peak amplitude) of the current Wasapi device/driver (endpoint). + + If an error occurs, -1 is returned, use to get the error code. + + If successful, the level of the left channel is returned in the low word (low 16-bits), and the level of the right channel is returned in the high word (high 16-bits). + If the channel is mono, then the low word is duplicated in the high word. + The level ranges linearly from 0 (silent) to 32768 (max). 0 will be returned when a channel is stalled. + + + + This function is like the standard , but it gets the level from the devices's buffer instead of decoding data from a channel, which means that the device doesn't miss out on any data. + The flag needs to have been specified in the device's initialization to enable the use of this function. + + has not been successfully called. + The device was not initialized using buffering (). + + + + Retreives the level + + An array to receive the levels. + + + true on success, else false. Use to get the Error code. + + This function uses internally, so it behaves identically to that. + The flag needs to have been specified in the device's initialization to enable the use of this function. + + has not been successfully called. + The device was not initialized using buffering (). + is not valid. + + + + Gets the Version of BassWasapi that is loaded. + + + + + Gets the Bass device index for a Wasapi Device. + + + + + User defined notification callback function. + + The notification + The device that the notification applies to. + The user instance data given when was called. + + + + User defined WASAPI output/input processing callback function (to be used with ). + + Pointer to the buffer to put the sample data for an output device, or to get the data from an input device. The sample data is always 32-bit floating-point. + The number of bytes to process. + The user instance data given when was called. + In the case of an output device, the number of bytes written to the buffer. In the case of an input device, 0 = stop the device, else continue. + + + An output/input processing function should obviously be as quick as possible, to avoid buffer underruns (output) or overruns (input). + Using a larger buffer makes that less crucial. + () can be used to check how much data is buffered. + + + An output device's may return less data than requested, but be careful not to do so by too much, too often. + If the buffer gets exhausted, output will stall until more data is provided. + If you do return less than the requested amount of data, the number of bytes should still equate to a whole number of samples. + + + When multiple channels are used, the sample data of the channels is interleaved. + For example, with 2 channels (ie. stereo), the sample data would be arranged as channel 1, channel 2, channel 1, channel 2, channel 1, etc. + + When an output channel needs to be empty/silent but still enabled, the channel's function could fill the buffer with 0s to achieve that. + Do not call from within a callback function. + + Prior to calling this function, BassWasapi will set the thread's device context to the device that the channel belongs to. + So when using multiple devices, can be used to determine which device the channel is on. + + + It is not supported to change the once a device was initialized via . + If you need to change some internal processing logic during processing, you might use some kind of "if" statements within this callback procedure. + + + + + + Unknown flags. + e.g. the WASAPI device is not present. + + + + + The WASAPI device is enabled (active). + + + + + The WASAPI device is the default device. + + + + + The WASAPI device is initialized. + + + + + The WASAPI device is a loopback device. + + + + + The WASAPI device is an Input (capture) device. + + + + + The WASAPI device is unplugged. + + + + + The WASAPI device is disabled. + + + + + Wasapi Device Type to be used with . + + + + + A network device. + + + + + A speakers device. + + + + + A line level device. + + + + + A headphone device. + + + + + A microphone device. + + + + + A headset device. + + + + + A handset device. + + + + + A digital device. + + + + + A S/PDIF device. + + + + + A HDMI device. + + + + + An unknown device. + + + + + BassWasapi sample formats to be used with and . + + + + + Unknown + + + + + 32-bit floating-point. + + + + + 8-bit integer. + + + + + 16-bit integer. + + + + + 24-bit integer. + + + + + 32-bit integer. + + + + + BassWasapi initialization flags to be used with . + + + + + Init the device (endpoint) in shared mode. + + + + + Init the device (endpoint) in exclusive mode. + + + + + Automatically choose another sample format if the specified format is not supported. + If possible, a higher sample rate than freq will be used, rather than a lower one. + + + + + Enable double buffering, for use by and . + This requires the BASS device to have been initilized, via . + Internally, a BASS stream is used for that, so the usual flags are supported. + + + + + Enables the event-driven WASAPI system. + It is only supported when a function is provided, ie. not when using . + When used with shared mode, the User-provided 'Buffer' and 'period' lengths are ignored + and WASAPI decides what Buffer to use ( can be used to check that). + + + + + buffer and period are in samples rather than seconds. + + + + + Apply dither (TPDF) when converting floating-point sample data to the device's format. + This flag only has effect on exclusive mode output. + + + + + Request raw mode, which bypasses any sound enhancements that have been enabled on the device. This is only available on Windows 8.1 and above. + + + + + Call the callback function asynchronously. This only applies to event-driven exclusive mode output and is otherwise ignored. When enabled, + a buffer is filled asynchronously in advance. This reduces the chances of underruns but also increases latency by up to one buffer length. If an underrun does occur, a silent buffer (rather than nothing) is still sent to the device, which can prevent sound glitches on some devices following an underrun. + + + + + A mask to isolate the category flags. + + + + + Other audio stream. + + + + + Unknown flag. + + + + + Unknown flag. + + + + + Real-time communications, such as VOIP or chat. + + + + + Alert sounds. For output devices only. + + + + + Sound effects. For output devices only. + + + + + Game sound effects. For output devices only. + + + + + Background audio for games. For output devices only. + + + + + Game chat audio. Similar to COMMUNICATIONS except that this will not attenuate other streams. For output devices only. + + + + + Speech. + + + + + Stream that includes audio with dialog. For output devices only. + + + + + Stream that includes audio without dialog. For output devices only. + + + + + BassWasapi Notification type to be used with . + + + + + The device has been enabled. + + + + + The device has been disabled. + + + + + The device is now the default Input device. + + + + + The device is now the default output device. + + + + + The device has failed and been stopped. + If the device is still enabled and shared mode was being used, then it may be that the device's sample format has changed. + It can be freed and reinitialized, with and , to resume in that case. + + + + + The BassWasapi Volume curve to use with and . + + + + + Use the device volume. + + + + + Logarithmic curve. + + + + + Linear curve. + + + + + Windows' hybrid curve. + + + + + Use the session volume. + + + + + Used with to retrieve information on a Wasapi device. + + + + + The Type of the devices. + + + + + The minimum update period (in seconds) of the device. + + + + + The default update period (in seconds) of the device. + + + + + The shared-mode format mixers sample rate. + + + + + The shared-mode format mixers number of channels. + + + + + The description of the device. + + + + + The ID of the driver being used. + + + + + Gets whether the device is the system default device. + + + + + Gets whether the device is enabled. + + + + + Gets whether the device is input device. + + + + + Gets whether the device is a loopback device (output capture). + + + + + Gets whether the device is initialized (using ). + + + + + Gets whether the device is unplugged. + + + + + Gets whether the device is disabled. + + + + + Returns the of the device. + + + + + Used with to retrieve information on the current device. + + + + + The flags parameter of the call. + + + + + The device's sample format used. + + + + + The sample rate used. + + + + + The number of channels used (1 = mono, 2 = stereo, etc.). + + + + + The buffer size in bytes. + + + + + The maximum volume setting in dB. + + + + + The minimum volume setting in dB. + + + + + The volume step size in dB. + + + + + Is the device used in event-driven mode? + + + + + Is the device used in exclusive mode? + + + + diff --git a/Assets/Packages/ManagedBass.Wasapi.3.1.1/lib/netstandard1.4/ManagedBass.Wasapi.xml.meta b/Assets/Packages/ManagedBass.Wasapi.3.1.1/lib/netstandard1.4/ManagedBass.Wasapi.xml.meta new file mode 100644 index 00000000..72f62a85 --- /dev/null +++ b/Assets/Packages/ManagedBass.Wasapi.3.1.1/lib/netstandard1.4/ManagedBass.Wasapi.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 76d21071b66ec1241848fa3fa3d2e171 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0.meta b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0.meta new file mode 100644 index 00000000..24ecd524 --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 61181e07acba7a743857578cdea919b6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/.signature.p7s b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/.signature.p7s new file mode 100644 index 00000000..2b030499 Binary files /dev/null and b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/.signature.p7s differ diff --git a/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/Microsoft.NETCore.Platforms.nuspec b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/Microsoft.NETCore.Platforms.nuspec new file mode 100644 index 00000000..e28f3cd1 --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/Microsoft.NETCore.Platforms.nuspec @@ -0,0 +1,19 @@ + + + + Microsoft.NETCore.Platforms + 1.1.0 + Microsoft.NETCore.Platforms + Microsoft + microsoft,dotnetframework + true + http://go.microsoft.com/fwlink/?LinkId=329770 + https://dot.net/ + http://go.microsoft.com/fwlink/?LinkID=288859 + Provides runtime information required to resolve target framework, platform, and runtime specific implementations of .NETCore packages. +When using NuGet 3.x this package requires at least version 3.4. + https://go.microsoft.com/fwlink/?LinkID=799421 + © Microsoft Corporation. All rights reserved. + true + + \ No newline at end of file diff --git a/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/Microsoft.NETCore.Platforms.nuspec.meta b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/Microsoft.NETCore.Platforms.nuspec.meta new file mode 100644 index 00000000..02639e49 --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/Microsoft.NETCore.Platforms.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1003def9ef51baf46b810679d2d89940 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/ThirdPartyNotices.txt b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/ThirdPartyNotices.txt new file mode 100644 index 00000000..55cfb208 --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/ThirdPartyNotices.txt @@ -0,0 +1,31 @@ +This Microsoft .NET Library may incorporate components from the projects listed +below. Microsoft licenses these components under the Microsoft .NET Library +software license terms. The original copyright notices and the licenses under +which Microsoft received such components are set forth below for informational +purposes only. Microsoft reserves all rights not expressly granted herein, +whether by implication, estoppel or otherwise. + +1. .NET Core (https://github.com/dotnet/core/) + +.NET Core +Copyright (c) .NET Foundation and Contributors + +The MIT License (MIT) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/ThirdPartyNotices.txt.meta b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/ThirdPartyNotices.txt.meta new file mode 100644 index 00000000..bb1060fb --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/ThirdPartyNotices.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4dd5b32d2de44b34a8eb69d3527effcf +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/dotnet_library_license.txt b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/dotnet_library_license.txt new file mode 100644 index 00000000..92b6c443 --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/dotnet_library_license.txt @@ -0,0 +1,128 @@ + +MICROSOFT SOFTWARE LICENSE TERMS + + +MICROSOFT .NET LIBRARY + +These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to the software named above, which includes the media on which you received it, if any. The terms also apply to any Microsoft + +· updates, + +· supplements, + +· Internet-based services, and + +· support services + +for this software, unless other terms accompany those items. If so, those terms apply. + +BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE. + + +IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE PERPETUAL RIGHTS BELOW. + +1. INSTALLATION AND USE RIGHTS. + +a. Installation and Use. You may install and use any number of copies of the software to design, develop and test your programs. + +b. Third Party Programs. The software may include third party programs that Microsoft, not the third party, licenses to you under this agreement. Notices, if any, for the third party program are included for your information only. + +2. ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS. + +a. DISTRIBUTABLE CODE. The software is comprised of Distributable Code. “Distributable Code” is code that you are permitted to distribute in programs you develop if you comply with the terms below. + +i. Right to Use and Distribute. + +· You may copy and distribute the object code form of the software. + +· Third Party Distribution. You may permit distributors of your programs to copy and distribute the Distributable Code as part of those programs. + +ii. Distribution Requirements. For any Distributable Code you distribute, you must + +· add significant primary functionality to it in your programs; + +· require distributors and external end users to agree to terms that protect it at least as much as this agreement; + +· display your valid copyright notice on your programs; and + +· indemnify, defend, and hold harmless Microsoft from any claims, including attorneys’ fees, related to the distribution or use of your programs. + +iii. Distribution Restrictions. You may not + +· alter any copyright, trademark or patent notice in the Distributable Code; + +· use Microsoft’s trademarks in your programs’ names or in a way that suggests your programs come from or are endorsed by Microsoft; + +· include Distributable Code in malicious, deceptive or unlawful programs; or + +· modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that + +· the code be disclosed or distributed in source code form; or + +· others have the right to modify it. + +3. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not + +· work around any technical limitations in the software; + +· reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation; + +· publish the software for others to copy; + +· rent, lease or lend the software; + +· transfer the software or this agreement to any third party; or + +· use the software for commercial software hosting services. + +4. BACKUP COPY. You may make one backup copy of the software. You may use it only to reinstall the software. + +5. DOCUMENTATION. Any person that has valid access to your computer or internal network may copy and use the documentation for your internal, reference purposes. + +6. EXPORT RESTRICTIONS. The software is subject to United States export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and end use. For additional information, see www.microsoft.com/exporting. + +7. SUPPORT SERVICES. Because this software is “as is,” we may not provide support services for it. + +8. ENTIRE AGREEMENT. This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services. + +9. APPLICABLE LAW. + +a. United States. If you acquired the software in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws of the state where you live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort. + +b. Outside the United States. If you acquired the software in any other country, the laws of that country apply. + +10. LEGAL EFFECT. This agreement describes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your rights under the laws of your country if the laws of your country do not permit it to do so. + +11. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS-IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. YOU MAY HAVE ADDITIONAL CONSUMER RIGHTS OR STATUTORY GUARANTEES UNDER YOUR LOCAL LAWS WHICH THIS AGREEMENT CANNOT CHANGE. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + +FOR AUSTRALIA – YOU HAVE STATUTORY GUARANTEES UNDER THE AUSTRALIAN CONSUMER LAW AND NOTHING IN THESE TERMS IS INTENDED TO AFFECT THOSE RIGHTS. + +12. LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES. + +This limitation applies to + +· anything related to the software, services, content (including code) on third party Internet sites, or third party programs; and + +· claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law. + +It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages. + +Please note: As this software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French. + +Remarque : Ce logiciel étant distribué au Québec, Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français. + +EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualité marchande, d’adéquation à un usage particulier et d’absence de contrefaçon sont exclues. + +LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices. + +Cette limitation concerne : + +· tout ce qui est relié au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et + +· les réclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilité stricte, de négligence ou d’une autre faute dans la limite autorisée par la loi en vigueur. + +Elle s’applique également, même si Microsoft connaissait ou devrait connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas l’exclusion ou la limitation de responsabilité pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre égard. + +EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous pourriez avoir d’autres droits prévus par les lois de votre pays. Le présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas. + + diff --git a/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/dotnet_library_license.txt.meta b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/dotnet_library_license.txt.meta new file mode 100644 index 00000000..16c56a05 --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/dotnet_library_license.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3da9935bd422e824badaf5d44d7f2458 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/lib.meta b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/lib.meta new file mode 100644 index 00000000..db382c20 --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 06e450aff280304489269143e4ee31df +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/lib/netstandard1.0.meta b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/lib/netstandard1.0.meta new file mode 100644 index 00000000..c49c7709 --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/lib/netstandard1.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 892a4b5f47274094e81790de8ea81d57 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/lib/netstandard1.0/_._ b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/lib/netstandard1.0/_._ new file mode 100644 index 00000000..e69de29b diff --git a/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/lib/netstandard1.0/_._.meta b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/lib/netstandard1.0/_._.meta new file mode 100644 index 00000000..f61e8b7a --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/lib/netstandard1.0/_._.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: eba1595a1a26d5a4887efac18bff5a64 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/runtime.json b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/runtime.json new file mode 100644 index 00000000..54769f26 --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/runtime.json @@ -0,0 +1,406 @@ +{ + "runtimes": { + "base": { + }, + + "any": { + "#import": [ "base" ] + }, + + "win": { + "#import": [ "any" ] + }, + "win-x86": { + "#import": [ "win" ] + }, + "win-x64": { + "#import": [ "win" ] + }, + + "win7": { + "#import": [ "win" ] + }, + "win7-x86": { + "#import": [ "win7", "win-x86" ] + }, + "win7-x64": { + "#import": [ "win7", "win-x64" ] + }, + + "win8": { + "#import": [ "win7" ] + }, + "win8-x86": { + "#import": [ "win8", "win7-x86" ] + }, + "win8-x64": { + "#import": [ "win8", "win7-x64" ] + }, + "win8-arm": { + "#import": [ "win8" ] + }, + + "win81": { + "#import": [ "win8" ] + }, + "win81-x86": { + "#import": [ "win81", "win8-x86" ] + }, + "win81-x64": { + "#import": [ "win81", "win8-x64" ] + }, + "win81-arm": { + "#import": [ "win81", "win8-arm" ] + }, + + "win10": { + "#import": [ "win81" ] + }, + "win10-x86": { + "#import": [ "win10", "win81-x86" ] + }, + "win10-x64": { + "#import": [ "win10", "win81-x64" ] + }, + "win10-arm": { + "#import": [ "win10", "win81-arm" ] + }, + "win10-arm64": { + "#import": [ "win10" ] + }, + + "aot": { + "#import": [ "any" ] + }, + + "win-aot": { + "#import": [ "win", "aot" ] + }, + "win-x86-aot": { + "#import": [ "win-aot", "win-x86" ] + }, + "win-x64-aot": { + "#import": [ "win-aot", "win-x64" ] + }, + + "win7-aot": { + "#import": [ "win-aot", "win7" ] + }, + "win7-x86-aot": { + "#import": [ "win7-aot", "win7-x86" ] + }, + "win7-x64-aot": { + "#import": [ "win7-aot", "win7-x64" ] + }, + + "win8-aot": { + "#import": [ "win8", "win7-aot" ] + }, + "win8-x86-aot": { + "#import": [ "win8-aot", "win8-x86", "win7-x86-aot" ] + }, + "win8-x64-aot": { + "#import": [ "win8-aot", "win8-x64", "win7-x64-aot" ] + }, + "win8-arm-aot": { + "#import": [ "win8-aot", "win8-arm" ] + }, + + "win81-aot": { + "#import": [ "win81", "win8-aot" ] + }, + "win81-x86-aot": { + "#import": [ "win81-aot", "win81-x86", "win8-x86-aot" ] + }, + "win81-x64-aot": { + "#import": [ "win81-aot", "win81-x64", "win8-x64-aot" ] + }, + "win81-arm-aot": { + "#import": [ "win81-aot", "win81-arm", "win8-arm-aot" ] + }, + + "win10-aot": { + "#import": [ "win10", "win81-aot" ] + }, + "win10-x86-aot": { + "#import": [ "win10-aot", "win10-x86", "win81-x86-aot" ] + }, + "win10-x64-aot": { + "#import": [ "win10-aot", "win10-x64", "win81-x64-aot" ] + }, + "win10-arm-aot": { + "#import": [ "win10-aot", "win10-arm", "win81-arm-aot" ] + }, + "win10-arm64-aot": { + "#import": [ "win10-aot", "win10-arm64" ] + }, + + "unix": { + "#import": [ "any" ] + }, + "unix-x64": { + "#import": [ "unix" ] + }, + + "osx": { + "#import": [ "unix" ] + }, + "osx-x64": { + "#import": [ "osx", "unix-x64" ] + }, + + "osx.10.10": { + "#import": [ "osx" ] + }, + "osx.10.10-x64": { + "#import": [ "osx.10.10", "osx-x64" ] + }, + + "osx.10.11": { + "#import": [ "osx.10.10" ] + }, + "osx.10.11-x64": { + "#import": [ "osx.10.11", "osx.10.10-x64" ] + }, + + "osx.10.12": { + "#import": [ "osx.10.11" ] + }, + "osx.10.12-x64": { + "#import": [ "osx.10.12", "osx.10.11-x64" ] + }, + + "linux": { + "#import": [ "unix" ] + }, + "linux-x64": { + "#import": [ "linux", "unix-x64" ] + }, + + "rhel": { + "#import": [ "linux" ] + }, + "rhel-x64": { + "#import": [ "rhel", "linux-x64" ] + }, + + "rhel.7": { + "#import": [ "rhel" ] + }, + "rhel.7-x64": { + "#import": [ "rhel", "rhel-x64" ] + }, + + "rhel.7.0": { + "#import": [ "rhel.7" ] + }, + "rhel.7.0-x64": { + "#import": [ "rhel.7", "rhel.7-x64" ] + }, + + "rhel.7.1": { + "#import": [ "rhel.7.0" ] + }, + "rhel.7.1-x64": { + "#import": [ "rhel.7.0", "rhel.7.0-x64" ] + }, + + "rhel.7.2": { + "#import": [ "rhel.7.1" ] + }, + "rhel.7.2-x64": { + "#import": [ "rhel.7.1", "rhel.7.1-x64" ] + }, + + "ol": { + "#import": [ "rhel" ] + }, + "ol-x64": { + "#import": [ "ol", "rhel-x64" ] + }, + + "ol.7": { + "#import": [ "ol", "rhel.7" ] + }, + "ol.7-x64": { + "#import": [ "ol.7", "ol-x64", "rhel.7-x64" ] + }, + + "ol.7.0": { + "#import": [ "ol.7", "rhel.7.0" ] + }, + "ol.7.0-x64": { + "#import": [ "ol.7", "ol.7-x64", "rhel.7.0-x64" ] + }, + + "ol.7.1": { + "#import": [ "ol.7.0", "rhel.7.1" ] + }, + "ol.7.1-x64": { + "#import": [ "ol.7.0", "ol.7.0-x64", "rhel.7.1-x64" ] + }, + + "ol.7.2": { + "#import": [ "ol.7.1", "rhel.7.2" ] + }, + "ol.7.2-x64": { + "#import": [ "ol.7.1", "ol.7.1-x64", "rhel.7.2-x64" ] + }, + + "centos": { + "#import": [ "rhel" ] + }, + "centos-x64": { + "#import": [ "centos", "rhel-x64" ] + }, + + "centos.7": { + "#import": [ "centos", "rhel.7" ] + }, + "centos.7-x64": { + "#import": [ "centos.7", "centos-x64", "rhel.7-x64" ] + }, + + "debian": { + "#import": [ "linux" ] + }, + "debian-x64": { + "#import": [ "debian", "linux-x64" ] + }, + + "debian.8": { + "#import": [ "debian" ] + }, + "debian.8-x64": { + "#import": [ "debian.8", "debian-x64" ] + }, + + "ubuntu": { + "#import": [ "debian" ] + }, + + "ubuntu-x64": { + "#import": [ "ubuntu", "debian-x64" ] + }, + + "ubuntu.14.04": { + "#import": [ "ubuntu" ] + }, + "ubuntu.14.04-x64": { + "#import": [ "ubuntu.14.04", "ubuntu-x64" ] + }, + + "ubuntu.14.10": { + "#import": [ "ubuntu" ] + }, + "ubuntu.14.10-x64": { + "#import": [ "ubuntu.14.10", "ubuntu-x64" ] + }, + + "ubuntu.15.04": { + "#import": [ "ubuntu" ] + }, + "ubuntu.15.04-x64": { + "#import": [ "ubuntu.15.04", "ubuntu-x64" ] + }, + + "ubuntu.15.10": { + "#import": [ "ubuntu" ] + }, + "ubuntu.15.10-x64": { + "#import": [ "ubuntu.15.10", "ubuntu-x64" ] + }, + + "ubuntu.16.04": { + "#import": [ "ubuntu" ] + }, + "ubuntu.16.04-x64": { + "#import": [ "ubuntu.16.04", "ubuntu-x64" ] + }, + + "ubuntu.16.10": { + "#import": [ "ubuntu" ] + }, + "ubuntu.16.10-x64": { + "#import": [ "ubuntu.16.10", "ubuntu-x64" ] + }, + + "linuxmint.17": { + "#import": [ "ubuntu.14.04" ] + }, + "linuxmint.17-x64": { + "#import": [ "linuxmint.17", "ubuntu.14.04-x64" ] + }, + + "linuxmint.17.1": { + "#import": [ "linuxmint.17" ] + }, + "linuxmint.17.1-x64": { + "#import": [ "linuxmint.17.1", "linuxmint.17-x64" ] + }, + + "linuxmint.17.2": { + "#import": [ "linuxmint.17.1" ] + }, + "linuxmint.17.2-x64": { + "#import": [ "linuxmint.17.2", "linuxmint.17.1-x64" ] + }, + + "linuxmint.17.3": { + "#import": [ "linuxmint.17.2" ] + }, + "linuxmint.17.3-x64": { + "#import": [ "linuxmint.17.3", "linuxmint.17.2-x64" ] + }, + + "linuxmint.18": { + "#import": [ "ubuntu.16.04" ] + }, + "linuxmint.18-x64": { + "#import": [ "linuxmint.18", "ubuntu.16.04-x64" ] + }, + + "fedora": { + "#import": [ "linux" ] + }, + "fedora-x64": { + "#import": [ "fedora", "linux-x64" ] + }, + + "fedora.23": { + "#import": [ "fedora" ] + }, + "fedora.23-x64": { + "#import": [ "fedora.23", "fedora-x64" ] + }, + + "fedora.24": { + "#import": [ "fedora" ] + }, + "fedora.24-x64": { + "#import": [ "fedora.24", "fedora-x64" ] + }, + + "opensuse": { + "#import": [ "linux" ] + }, + "opensuse-x64": { + "#import": [ "opensuse", "linux-x64" ] + }, + + "opensuse.13.2": { + "#import": [ "opensuse" ] + }, + "opensuse.13.2-x64": { + "#import": [ "opensuse.13.2", "opensuse-x64" ] + }, + + "opensuse.42.1": { + "#import": [ "opensuse" ] + }, + "opensuse.42.1-x64": { + "#import": [ "opensuse.42.1", "opensuse-x64" ] + } + } + } + diff --git a/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/runtime.json.meta b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/runtime.json.meta new file mode 100644 index 00000000..043dc67e --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Platforms.1.1.0/runtime.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c31df42695763c84594ebeece21bf71f +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.NETCore.Targets.1.1.0.meta b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0.meta new file mode 100644 index 00000000..c6101788 --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fdacde3c93ed1c449bf6f63fd8e4e09b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/.signature.p7s b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/.signature.p7s new file mode 100644 index 00000000..7f224480 Binary files /dev/null and b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/.signature.p7s differ diff --git a/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/Microsoft.NETCore.Targets.nuspec b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/Microsoft.NETCore.Targets.nuspec new file mode 100644 index 00000000..a9acb496 --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/Microsoft.NETCore.Targets.nuspec @@ -0,0 +1,19 @@ + + + + Microsoft.NETCore.Targets + 1.1.0 + Microsoft.NETCore.Targets + Microsoft + microsoft,dotnetframework + true + http://go.microsoft.com/fwlink/?LinkId=329770 + https://dot.net/ + http://go.microsoft.com/fwlink/?LinkID=288859 + Provides supporting infrastructure for portable projects: support identifiers that define framework and runtime for support targets and packages that reference the minimum supported package versions when targeting these. +When using NuGet 3.x this package requires at least version 3.4. + https://go.microsoft.com/fwlink/?LinkID=799421 + © Microsoft Corporation. All rights reserved. + true + + \ No newline at end of file diff --git a/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/Microsoft.NETCore.Targets.nuspec.meta b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/Microsoft.NETCore.Targets.nuspec.meta new file mode 100644 index 00000000..3ddcea0a --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/Microsoft.NETCore.Targets.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d76b21269ed58ae48a011055ce7677db +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/ThirdPartyNotices.txt b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/ThirdPartyNotices.txt new file mode 100644 index 00000000..55cfb208 --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/ThirdPartyNotices.txt @@ -0,0 +1,31 @@ +This Microsoft .NET Library may incorporate components from the projects listed +below. Microsoft licenses these components under the Microsoft .NET Library +software license terms. The original copyright notices and the licenses under +which Microsoft received such components are set forth below for informational +purposes only. Microsoft reserves all rights not expressly granted herein, +whether by implication, estoppel or otherwise. + +1. .NET Core (https://github.com/dotnet/core/) + +.NET Core +Copyright (c) .NET Foundation and Contributors + +The MIT License (MIT) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/ThirdPartyNotices.txt.meta b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/ThirdPartyNotices.txt.meta new file mode 100644 index 00000000..d1db7ac7 --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/ThirdPartyNotices.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ec6d2d4e1e9b6b642baf331f5b526373 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/dotnet_library_license.txt b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/dotnet_library_license.txt new file mode 100644 index 00000000..92b6c443 --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/dotnet_library_license.txt @@ -0,0 +1,128 @@ + +MICROSOFT SOFTWARE LICENSE TERMS + + +MICROSOFT .NET LIBRARY + +These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to the software named above, which includes the media on which you received it, if any. The terms also apply to any Microsoft + +· updates, + +· supplements, + +· Internet-based services, and + +· support services + +for this software, unless other terms accompany those items. If so, those terms apply. + +BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE. + + +IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE PERPETUAL RIGHTS BELOW. + +1. INSTALLATION AND USE RIGHTS. + +a. Installation and Use. You may install and use any number of copies of the software to design, develop and test your programs. + +b. Third Party Programs. The software may include third party programs that Microsoft, not the third party, licenses to you under this agreement. Notices, if any, for the third party program are included for your information only. + +2. ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS. + +a. DISTRIBUTABLE CODE. The software is comprised of Distributable Code. “Distributable Code” is code that you are permitted to distribute in programs you develop if you comply with the terms below. + +i. Right to Use and Distribute. + +· You may copy and distribute the object code form of the software. + +· Third Party Distribution. You may permit distributors of your programs to copy and distribute the Distributable Code as part of those programs. + +ii. Distribution Requirements. For any Distributable Code you distribute, you must + +· add significant primary functionality to it in your programs; + +· require distributors and external end users to agree to terms that protect it at least as much as this agreement; + +· display your valid copyright notice on your programs; and + +· indemnify, defend, and hold harmless Microsoft from any claims, including attorneys’ fees, related to the distribution or use of your programs. + +iii. Distribution Restrictions. You may not + +· alter any copyright, trademark or patent notice in the Distributable Code; + +· use Microsoft’s trademarks in your programs’ names or in a way that suggests your programs come from or are endorsed by Microsoft; + +· include Distributable Code in malicious, deceptive or unlawful programs; or + +· modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that + +· the code be disclosed or distributed in source code form; or + +· others have the right to modify it. + +3. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not + +· work around any technical limitations in the software; + +· reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation; + +· publish the software for others to copy; + +· rent, lease or lend the software; + +· transfer the software or this agreement to any third party; or + +· use the software for commercial software hosting services. + +4. BACKUP COPY. You may make one backup copy of the software. You may use it only to reinstall the software. + +5. DOCUMENTATION. Any person that has valid access to your computer or internal network may copy and use the documentation for your internal, reference purposes. + +6. EXPORT RESTRICTIONS. The software is subject to United States export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and end use. For additional information, see www.microsoft.com/exporting. + +7. SUPPORT SERVICES. Because this software is “as is,” we may not provide support services for it. + +8. ENTIRE AGREEMENT. This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services. + +9. APPLICABLE LAW. + +a. United States. If you acquired the software in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws of the state where you live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort. + +b. Outside the United States. If you acquired the software in any other country, the laws of that country apply. + +10. LEGAL EFFECT. This agreement describes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your rights under the laws of your country if the laws of your country do not permit it to do so. + +11. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS-IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. YOU MAY HAVE ADDITIONAL CONSUMER RIGHTS OR STATUTORY GUARANTEES UNDER YOUR LOCAL LAWS WHICH THIS AGREEMENT CANNOT CHANGE. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + +FOR AUSTRALIA – YOU HAVE STATUTORY GUARANTEES UNDER THE AUSTRALIAN CONSUMER LAW AND NOTHING IN THESE TERMS IS INTENDED TO AFFECT THOSE RIGHTS. + +12. LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES. + +This limitation applies to + +· anything related to the software, services, content (including code) on third party Internet sites, or third party programs; and + +· claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law. + +It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages. + +Please note: As this software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French. + +Remarque : Ce logiciel étant distribué au Québec, Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français. + +EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualité marchande, d’adéquation à un usage particulier et d’absence de contrefaçon sont exclues. + +LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices. + +Cette limitation concerne : + +· tout ce qui est relié au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et + +· les réclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilité stricte, de négligence ou d’une autre faute dans la limite autorisée par la loi en vigueur. + +Elle s’applique également, même si Microsoft connaissait ou devrait connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas l’exclusion ou la limitation de responsabilité pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre égard. + +EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous pourriez avoir d’autres droits prévus par les lois de votre pays. Le présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas. + + diff --git a/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/dotnet_library_license.txt.meta b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/dotnet_library_license.txt.meta new file mode 100644 index 00000000..67b090ac --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/dotnet_library_license.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f9620f03b99e01b478f919d70bcf5ea0 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/lib.meta b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/lib.meta new file mode 100644 index 00000000..95079dc5 --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 43e0e3096d5bd1d4ea0fec0468a2a54c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/lib/netstandard1.0.meta b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/lib/netstandard1.0.meta new file mode 100644 index 00000000..85f79fd5 --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/lib/netstandard1.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 83f85377338d5854892f0aa4afaf8d23 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/lib/netstandard1.0/_._ b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/lib/netstandard1.0/_._ new file mode 100644 index 00000000..e69de29b diff --git a/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/lib/netstandard1.0/_._.meta b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/lib/netstandard1.0/_._.meta new file mode 100644 index 00000000..566f09fc --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/lib/netstandard1.0/_._.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 708a6c297817c494da8e88d03319afb6 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/runtime.json b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/runtime.json new file mode 100644 index 00000000..1585ef62 --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/runtime.json @@ -0,0 +1,438 @@ +{ + "runtimes": { + "win": { + "Microsoft.Win32.Primitives": { + "runtime.win.Microsoft.Win32.Primitives": "4.3.0" + }, + "System.Console": { + "runtime.win.System.Console": "4.3.0" + }, + "System.Diagnostics.Debug": { + "runtime.win.System.Diagnostics.Debug": "4.3.0" + }, + "System.IO.FileSystem": { + "runtime.win.System.IO.FileSystem": "4.3.0" + }, + "System.Net.Primitives": { + "runtime.win.System.Net.Primitives": "4.3.0" + }, + "System.Net.Sockets": { + "runtime.win.System.Net.Sockets": "4.3.0" + }, + "System.Runtime.Extensions": { + "runtime.win.System.Runtime.Extensions": "4.3.0" + } + }, + "unix": { + "Microsoft.Win32.Primitives": { + "runtime.unix.Microsoft.Win32.Primitives": "4.3.0" + }, + "System.Console": { + "runtime.unix.System.Console": "4.3.0" + }, + "System.Diagnostics.Debug": { + "runtime.unix.System.Diagnostics.Debug": "4.3.0" + }, + "System.IO.FileSystem": { + "runtime.unix.System.IO.FileSystem": "4.3.0" + }, + "System.Net.Primitives": { + "runtime.unix.System.Net.Primitives": "4.3.0" + }, + "System.Net.Sockets": { + "runtime.unix.System.Net.Sockets": "4.3.0" + }, + "System.Runtime.Extensions": { + "runtime.unix.System.Runtime.Extensions": "4.3.0" + }, + "System.Private.Uri": { + "runtime.unix.System.Private.Uri": "4.3.0" + } + }, + "any": { + "System.Collections": { + "runtime.any.System.Collections": "4.3.0" + }, + "System.Diagnostics.Tools": { + "runtime.any.System.Diagnostics.Tools": "4.3.0" + }, + "System.Diagnostics.Tracing": { + "runtime.any.System.Diagnostics.Tracing": "4.3.0" + }, + "System.Globalization": { + "runtime.any.System.Globalization": "4.3.0" + }, + "System.Globalization.Calendars": { + "runtime.any.System.Globalization.Calendars": "4.3.0" + }, + "System.IO": { + "runtime.any.System.IO": "4.3.0" + }, + "System.Reflection": { + "runtime.any.System.Reflection": "4.3.0" + }, + "System.Reflection.Extensions": { + "runtime.any.System.Reflection.Extensions": "4.3.0" + }, + "System.Reflection.Primitives": { + "runtime.any.System.Reflection.Primitives": "4.3.0" + }, + "System.Resources.ResourceManager": { + "runtime.any.System.Resources.ResourceManager": "4.3.0" + }, + "System.Runtime": { + "runtime.any.System.Runtime": "4.3.0" + }, + "System.Runtime.Handles": { + "runtime.any.System.Runtime.Handles": "4.3.0" + }, + "System.Runtime.InteropServices": { + "runtime.any.System.Runtime.InteropServices": "4.3.0" + }, + "System.Text.Encoding": { + "runtime.any.System.Text.Encoding": "4.3.0" + }, + "System.Text.Encoding.Extensions": { + "runtime.any.System.Text.Encoding.Extensions": "4.3.0" + }, + "System.Threading.Tasks": { + "runtime.any.System.Threading.Tasks": "4.3.0" + }, + "System.Threading.Timer": { + "runtime.any.System.Threading.Timer": "4.3.0" + } + }, + "aot": { + "System.Collections": { + "runtime.aot.System.Collections": "4.3.0" + }, + "System.Diagnostics.Tools": { + "runtime.aot.System.Diagnostics.Tools": "4.3.0" + }, + "System.Diagnostics.Tracing": { + "runtime.aot.System.Diagnostics.Tracing": "4.3.0" + }, + "System.Globalization": { + "runtime.aot.System.Globalization": "4.3.0" + }, + "System.Globalization.Calendars": { + "runtime.aot.System.Globalization.Calendars": "4.3.0" + }, + "System.IO": { + "runtime.aot.System.IO": "4.3.0" + }, + "System.Reflection": { + "runtime.aot.System.Reflection": "4.3.0" + }, + "System.Reflection.Extensions": { + "runtime.aot.System.Reflection.Extensions": "4.3.0" + }, + "System.Reflection.Primitives": { + "runtime.aot.System.Reflection.Primitives": "4.3.0" + }, + "System.Resources.ResourceManager": { + "runtime.aot.System.Resources.ResourceManager": "4.3.0" + }, + "System.Runtime": { + "runtime.aot.System.Runtime": "4.3.0" + }, + "System.Runtime.Handles": { + "runtime.aot.System.Runtime.Handles": "4.3.0" + }, + "System.Runtime.InteropServices": { + "runtime.aot.System.Runtime.InteropServices": "4.3.0" + }, + "System.Text.Encoding": { + "runtime.aot.System.Text.Encoding": "4.3.0" + }, + "System.Text.Encoding.Extensions": { + "runtime.aot.System.Text.Encoding.Extensions": "4.3.0" + }, + "System.Threading.Tasks": { + "runtime.aot.System.Threading.Tasks": "4.3.0" + }, + "System.Threading.Timer": { + "runtime.aot.System.Threading.Timer": "4.3.0" + } + }, + "win7": { + "System.Private.Uri": { + "runtime.win7.System.Private.Uri": "4.3.0" + } + }, + "win10-x64-aot": { + "runtime.native.System.IO.Compression": { + "runtime.win10-x64-aot.runtime.native.System.IO.Compression": "4.0.1" + } + }, + "win10-arm-aot": { + "runtime.native.System.IO.Compression": { + "runtime.win10-arm-aot.runtime.native.System.IO.Compression": "4.0.1" + } + }, + "win10-x86-aot": { + "runtime.native.System.IO.Compression": { + "runtime.win10-x86-aot.runtime.native.System.IO.Compression": "4.0.1" + } + }, + "rhel.7-x64": { + "runtime.native.System.IO.Compression": { + "runtime.rhel.7-x64.runtime.native.System.IO.Compression": "4.3.0" + }, + "runtime.native.System": { + "runtime.rhel.7-x64.runtime.native.System": "4.3.0" + }, + "runtime.native.System.Net.Http": { + "runtime.rhel.7-x64.runtime.native.System.Net.Http": "4.3.0" + }, + "runtime.native.System.Net.Security": { + "runtime.rhel.7-x64.runtime.native.System.Net.Security": "4.3.0" + } + }, + "debian.8-x64": { + "runtime.native.System.IO.Compression": { + "runtime.debian.8-x64.runtime.native.System.IO.Compression": "4.3.0" + }, + "runtime.native.System": { + "runtime.debian.8-x64.runtime.native.System": "4.3.0" + }, + "runtime.native.System.Net.Http": { + "runtime.debian.8-x64.runtime.native.System.Net.Http": "4.3.0" + }, + "runtime.native.System.Net.Security": { + "runtime.debian.8-x64.runtime.native.System.Net.Security": "4.3.0" + } + }, + "fedora.23-x64": { + "runtime.native.System.IO.Compression": { + "runtime.fedora.23-x64.runtime.native.System.IO.Compression": "4.3.0" + }, + "runtime.native.System": { + "runtime.fedora.23-x64.runtime.native.System": "4.3.0" + }, + "runtime.native.System.Net.Http": { + "runtime.fedora.23-x64.runtime.native.System.Net.Http": "4.3.0" + }, + "runtime.native.System.Net.Security": { + "runtime.fedora.23-x64.runtime.native.System.Net.Security": "4.3.0" + } + }, + "fedora.24-x64": { + "runtime.native.System.IO.Compression": { + "runtime.fedora.24-x64.runtime.native.System.IO.Compression": "4.3.0" + }, + "runtime.native.System": { + "runtime.fedora.24-x64.runtime.native.System": "4.3.0" + }, + "runtime.native.System.Net.Http": { + "runtime.fedora.24-x64.runtime.native.System.Net.Http": "4.3.0" + }, + "runtime.native.System.Net.Security": { + "runtime.fedora.24-x64.runtime.native.System.Net.Security": "4.3.0" + } + }, + "osx.10.10-x64": { + "runtime.native.System.IO.Compression": { + "runtime.osx.10.10-x64.runtime.native.System.IO.Compression": "4.3.0" + }, + "runtime.native.System": { + "runtime.osx.10.10-x64.runtime.native.System": "4.3.0" + }, + "runtime.native.System.Net.Http": { + "runtime.osx.10.10-x64.runtime.native.System.Net.Http": "4.3.0" + }, + "runtime.native.System.Net.Security": { + "runtime.osx.10.10-x64.runtime.native.System.Net.Security": "4.3.0" + } + }, + "opensuse.13.2-x64": { + "runtime.native.System.IO.Compression": { + "runtime.opensuse.13.2-x64.runtime.native.System.IO.Compression": "4.3.0" + }, + "runtime.native.System": { + "runtime.opensuse.13.2-x64.runtime.native.System": "4.3.0" + }, + "runtime.native.System.Net.Http": { + "runtime.opensuse.13.2-x64.runtime.native.System.Net.Http": "4.3.0" + }, + "runtime.native.System.Net.Security": { + "runtime.opensuse.13.2-x64.runtime.native.System.Net.Security": "4.3.0" + } + }, + "opensuse.42.1-x64": { + "runtime.native.System.IO.Compression": { + "runtime.opensuse.42.1-x64.runtime.native.System.IO.Compression": "4.3.0" + }, + "runtime.native.System": { + "runtime.opensuse.42.1-x64.runtime.native.System": "4.3.0" + }, + "runtime.native.System.Net.Http": { + "runtime.opensuse.42.1-x64.runtime.native.System.Net.Http": "4.3.0" + }, + "runtime.native.System.Net.Security": { + "runtime.opensuse.42.1-x64.runtime.native.System.Net.Security": "4.3.0" + } + }, + "ubuntu.14.04-x64": { + "runtime.native.System.IO.Compression": { + "runtime.ubuntu.14.04-x64.runtime.native.System.IO.Compression": "4.3.0" + }, + "runtime.native.System": { + "runtime.ubuntu.14.04-x64.runtime.native.System": "4.3.0" + }, + "runtime.native.System.Net.Http": { + "runtime.ubuntu.14.04-x64.runtime.native.System.Net.Http": "4.3.0" + }, + "runtime.native.System.Net.Security": { + "runtime.ubuntu.14.04-x64.runtime.native.System.Net.Security": "4.3.0" + } + }, + "ubuntu.16.04-x64": { + "runtime.native.System.IO.Compression": { + "runtime.ubuntu.16.04-x64.runtime.native.System.IO.Compression": "4.3.0" + }, + "runtime.native.System": { + "runtime.ubuntu.16.04-x64.runtime.native.System": "4.3.0" + }, + "runtime.native.System.Net.Http": { + "runtime.ubuntu.16.04-x64.runtime.native.System.Net.Http": "4.3.0" + }, + "runtime.native.System.Net.Security": { + "runtime.ubuntu.16.04-x64.runtime.native.System.Net.Security": "4.3.0" + } + }, + "ubuntu.16.10-x64": { + "runtime.native.System.IO.Compression": { + "runtime.ubuntu.16.10-x64.runtime.native.System.IO.Compression": "4.3.0" + }, + "runtime.native.System": { + "runtime.ubuntu.16.10-x64.runtime.native.System": "4.3.0" + }, + "runtime.native.System.Net.Http": { + "runtime.ubuntu.16.10-x64.runtime.native.System.Net.Http": "4.3.0" + }, + "runtime.native.System.Net.Security": { + "runtime.ubuntu.16.10-x64.runtime.native.System.Net.Security": "4.3.0" + } + }, + "win7-x86": { + "runtime.native.System.IO.Compression": { + "runtime.win7-x86.runtime.native.System.IO.Compression": "4.3.0" + } + }, + "win7-x64": { + "runtime.native.System.IO.Compression": { + "runtime.win7-x64.runtime.native.System.IO.Compression": "4.3.0" + } + }, + "win8-arm": { + "runtime.native.System.IO.Compression": { + "runtime.win8-arm.runtime.native.System.IO.Compression": "4.3.0" + } + }, + "win10-arm64": { + "runtime.native.System.IO.Compression": { + "runtime.win10-arm64.runtime.native.System.IO.Compression": "4.3.0" + } + } + }, + "supports": { + "uwp.10.0.app": { + "uap10.0": [ + "win10-x86", + "win10-x86-aot", + "win10-x64", + "win10-x64-aot", + "win10-arm", + "win10-arm-aot" + ] + }, + "net45.app": { + "net45": [ + "", + "win-x86", + "win-x64" + ] + }, + "net451.app": { + "net451": [ + "", + "win-x86", + "win-x64" + ] + }, + "net452.app": { + "net452": [ + "", + "win-x86", + "win-x64" + ] + }, + "net46.app": { + "net46": [ + "", + "win-x86", + "win-x64" + ] + }, + "net461.app": { + "net461": [ + "", + "win-x86", + "win-x64" + ] + }, + "net462.app": { + "net462": [ + "", + "win-x86", + "win-x64" + ] + }, + "netcoreapp1.0.app": { + "netcoreapp1.0": [ + "win7-x86", + "win7-x64", + "osx.10.11-x64", + "centos.7-x64", + "debian.8-x64", + "linuxmint.17-x64", + "opensuse.13.2-x64", + "rhel.7.2-x64", + "ubuntu.14.04-x64", + "ubuntu.16.04-x64" + ] + }, + "win8.app": { + "win8": [ + "" + ] + }, + "win81.app": { + "win81": [ + "" + ] + }, + "wp8.app": { + "wp8": [ + "" + ] + }, + "wp81.app": { + "wp81": [ + "" + ] + }, + "wpa81.app": { + "wpa81": [ + "" + ] + }, + "dnxcore50.app": { + "dnxcore50": [ + "win7-x86", + "win7-x64" + ] + } + } +} \ No newline at end of file diff --git a/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/runtime.json.meta b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/runtime.json.meta new file mode 100644 index 00000000..0eae5b38 --- /dev/null +++ b/Assets/Packages/Microsoft.NETCore.Targets.1.1.0/runtime.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b2e7b77dd0f388a4e90c297b36d4f5f0 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/NETStandard.Library.1.6.1.meta b/Assets/Packages/NETStandard.Library.1.6.1.meta new file mode 100644 index 00000000..95950e63 --- /dev/null +++ b/Assets/Packages/NETStandard.Library.1.6.1.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 00826b18acda291408f02d26511e0ba2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/NETStandard.Library.1.6.1/.signature.p7s b/Assets/Packages/NETStandard.Library.1.6.1/.signature.p7s new file mode 100644 index 00000000..8cfa25f6 Binary files /dev/null and b/Assets/Packages/NETStandard.Library.1.6.1/.signature.p7s differ diff --git a/Assets/Packages/NETStandard.Library.1.6.1/NETStandard.Library.nuspec b/Assets/Packages/NETStandard.Library.1.6.1/NETStandard.Library.nuspec new file mode 100644 index 00000000..2d97aca6 --- /dev/null +++ b/Assets/Packages/NETStandard.Library.1.6.1/NETStandard.Library.nuspec @@ -0,0 +1,157 @@ + + + + NETStandard.Library + 1.6.1 + NETStandard.Library + Microsoft + microsoft,dotnetframework + true + http://go.microsoft.com/fwlink/?LinkId=329770 + https://dot.net/ + http://go.microsoft.com/fwlink/?LinkID=288859 + A set of standard .NET APIs that are prescribed to be used and supported together. This includes all of the APIs in the NETStandard.Platform package plus additional libraries that are core to .NET but built on top of NETStandard.Platform. +When using NuGet 3.x this package requires at least version 3.4. + https://go.microsoft.com/fwlink/?LinkID=799421 + © Microsoft Corporation. All rights reserved. + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/NETStandard.Library.1.6.1/NETStandard.Library.nuspec.meta b/Assets/Packages/NETStandard.Library.1.6.1/NETStandard.Library.nuspec.meta new file mode 100644 index 00000000..f0fa4a15 --- /dev/null +++ b/Assets/Packages/NETStandard.Library.1.6.1/NETStandard.Library.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8101890fcdf2f434abd00545b455a303 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/NETStandard.Library.1.6.1/ThirdPartyNotices.txt b/Assets/Packages/NETStandard.Library.1.6.1/ThirdPartyNotices.txt new file mode 100644 index 00000000..55cfb208 --- /dev/null +++ b/Assets/Packages/NETStandard.Library.1.6.1/ThirdPartyNotices.txt @@ -0,0 +1,31 @@ +This Microsoft .NET Library may incorporate components from the projects listed +below. Microsoft licenses these components under the Microsoft .NET Library +software license terms. The original copyright notices and the licenses under +which Microsoft received such components are set forth below for informational +purposes only. Microsoft reserves all rights not expressly granted herein, +whether by implication, estoppel or otherwise. + +1. .NET Core (https://github.com/dotnet/core/) + +.NET Core +Copyright (c) .NET Foundation and Contributors + +The MIT License (MIT) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/Assets/Packages/NETStandard.Library.1.6.1/ThirdPartyNotices.txt.meta b/Assets/Packages/NETStandard.Library.1.6.1/ThirdPartyNotices.txt.meta new file mode 100644 index 00000000..67c99a06 --- /dev/null +++ b/Assets/Packages/NETStandard.Library.1.6.1/ThirdPartyNotices.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 81ed601028326cb4cb479c6b37901c94 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/NETStandard.Library.1.6.1/dotnet_library_license.txt b/Assets/Packages/NETStandard.Library.1.6.1/dotnet_library_license.txt new file mode 100644 index 00000000..92b6c443 --- /dev/null +++ b/Assets/Packages/NETStandard.Library.1.6.1/dotnet_library_license.txt @@ -0,0 +1,128 @@ + +MICROSOFT SOFTWARE LICENSE TERMS + + +MICROSOFT .NET LIBRARY + +These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to the software named above, which includes the media on which you received it, if any. The terms also apply to any Microsoft + +· updates, + +· supplements, + +· Internet-based services, and + +· support services + +for this software, unless other terms accompany those items. If so, those terms apply. + +BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE. + + +IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE PERPETUAL RIGHTS BELOW. + +1. INSTALLATION AND USE RIGHTS. + +a. Installation and Use. You may install and use any number of copies of the software to design, develop and test your programs. + +b. Third Party Programs. The software may include third party programs that Microsoft, not the third party, licenses to you under this agreement. Notices, if any, for the third party program are included for your information only. + +2. ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS. + +a. DISTRIBUTABLE CODE. The software is comprised of Distributable Code. “Distributable Code” is code that you are permitted to distribute in programs you develop if you comply with the terms below. + +i. Right to Use and Distribute. + +· You may copy and distribute the object code form of the software. + +· Third Party Distribution. You may permit distributors of your programs to copy and distribute the Distributable Code as part of those programs. + +ii. Distribution Requirements. For any Distributable Code you distribute, you must + +· add significant primary functionality to it in your programs; + +· require distributors and external end users to agree to terms that protect it at least as much as this agreement; + +· display your valid copyright notice on your programs; and + +· indemnify, defend, and hold harmless Microsoft from any claims, including attorneys’ fees, related to the distribution or use of your programs. + +iii. Distribution Restrictions. You may not + +· alter any copyright, trademark or patent notice in the Distributable Code; + +· use Microsoft’s trademarks in your programs’ names or in a way that suggests your programs come from or are endorsed by Microsoft; + +· include Distributable Code in malicious, deceptive or unlawful programs; or + +· modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that + +· the code be disclosed or distributed in source code form; or + +· others have the right to modify it. + +3. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not + +· work around any technical limitations in the software; + +· reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation; + +· publish the software for others to copy; + +· rent, lease or lend the software; + +· transfer the software or this agreement to any third party; or + +· use the software for commercial software hosting services. + +4. BACKUP COPY. You may make one backup copy of the software. You may use it only to reinstall the software. + +5. DOCUMENTATION. Any person that has valid access to your computer or internal network may copy and use the documentation for your internal, reference purposes. + +6. EXPORT RESTRICTIONS. The software is subject to United States export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and end use. For additional information, see www.microsoft.com/exporting. + +7. SUPPORT SERVICES. Because this software is “as is,” we may not provide support services for it. + +8. ENTIRE AGREEMENT. This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services. + +9. APPLICABLE LAW. + +a. United States. If you acquired the software in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws of the state where you live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort. + +b. Outside the United States. If you acquired the software in any other country, the laws of that country apply. + +10. LEGAL EFFECT. This agreement describes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your rights under the laws of your country if the laws of your country do not permit it to do so. + +11. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS-IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. YOU MAY HAVE ADDITIONAL CONSUMER RIGHTS OR STATUTORY GUARANTEES UNDER YOUR LOCAL LAWS WHICH THIS AGREEMENT CANNOT CHANGE. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + +FOR AUSTRALIA – YOU HAVE STATUTORY GUARANTEES UNDER THE AUSTRALIAN CONSUMER LAW AND NOTHING IN THESE TERMS IS INTENDED TO AFFECT THOSE RIGHTS. + +12. LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES. + +This limitation applies to + +· anything related to the software, services, content (including code) on third party Internet sites, or third party programs; and + +· claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law. + +It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages. + +Please note: As this software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French. + +Remarque : Ce logiciel étant distribué au Québec, Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français. + +EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualité marchande, d’adéquation à un usage particulier et d’absence de contrefaçon sont exclues. + +LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices. + +Cette limitation concerne : + +· tout ce qui est relié au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et + +· les réclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilité stricte, de négligence ou d’une autre faute dans la limite autorisée par la loi en vigueur. + +Elle s’applique également, même si Microsoft connaissait ou devrait connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas l’exclusion ou la limitation de responsabilité pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre égard. + +EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous pourriez avoir d’autres droits prévus par les lois de votre pays. Le présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas. + + diff --git a/Assets/Packages/NETStandard.Library.1.6.1/dotnet_library_license.txt.meta b/Assets/Packages/NETStandard.Library.1.6.1/dotnet_library_license.txt.meta new file mode 100644 index 00000000..db2590f5 --- /dev/null +++ b/Assets/Packages/NETStandard.Library.1.6.1/dotnet_library_license.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 49c1c818a62901f4295f6d8f809dd4d4 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Diagnostics.Tracing.4.3.0.meta b/Assets/Packages/System.Diagnostics.Tracing.4.3.0.meta new file mode 100644 index 00000000..8241fede --- /dev/null +++ b/Assets/Packages/System.Diagnostics.Tracing.4.3.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 511a8eae13b56be4daffd3c874e6a6de +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Diagnostics.Tracing.4.3.0/.signature.p7s b/Assets/Packages/System.Diagnostics.Tracing.4.3.0/.signature.p7s new file mode 100644 index 00000000..69b21c14 Binary files /dev/null and b/Assets/Packages/System.Diagnostics.Tracing.4.3.0/.signature.p7s differ diff --git a/Assets/Packages/System.Diagnostics.Tracing.4.3.0/System.Diagnostics.Tracing.nuspec b/Assets/Packages/System.Diagnostics.Tracing.4.3.0/System.Diagnostics.Tracing.nuspec new file mode 100644 index 00000000..9f04b024 --- /dev/null +++ b/Assets/Packages/System.Diagnostics.Tracing.4.3.0/System.Diagnostics.Tracing.nuspec @@ -0,0 +1,71 @@ + + + + System.Diagnostics.Tracing + 4.3.0 + System.Diagnostics.Tracing + Microsoft + microsoft,dotnetframework + true + http://go.microsoft.com/fwlink/?LinkId=329770 + https://dot.net/ + http://go.microsoft.com/fwlink/?LinkID=288859 + Provides class that enable you to create high performance tracing events to be captured by event tracing for Windows (ETW). + +Commonly Used Types: +System.Diagnostics.Tracing.EventSource +System.Diagnostics.Tracing.EventListener +System.Diagnostics.Tracing.EventLevel +System.Diagnostics.Tracing.EventKeywords +System.Diagnostics.Tracing.EventWrittenEventArgs +System.Diagnostics.Tracing.EventAttribute +System.Diagnostics.Tracing.EventSourceAttribute +System.Diagnostics.Tracing.NonEventAttribute + +When using NuGet 3.x this package requires at least version 3.4. + https://go.microsoft.com/fwlink/?LinkID=799421 + © Microsoft Corporation. All rights reserved. + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/System.Diagnostics.Tracing.4.3.0/System.Diagnostics.Tracing.nuspec.meta b/Assets/Packages/System.Diagnostics.Tracing.4.3.0/System.Diagnostics.Tracing.nuspec.meta new file mode 100644 index 00000000..566e0e20 --- /dev/null +++ b/Assets/Packages/System.Diagnostics.Tracing.4.3.0/System.Diagnostics.Tracing.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a9ade246c81983a41bc340b44d52b4fc +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Diagnostics.Tracing.4.3.0/ThirdPartyNotices.txt b/Assets/Packages/System.Diagnostics.Tracing.4.3.0/ThirdPartyNotices.txt new file mode 100644 index 00000000..55cfb208 --- /dev/null +++ b/Assets/Packages/System.Diagnostics.Tracing.4.3.0/ThirdPartyNotices.txt @@ -0,0 +1,31 @@ +This Microsoft .NET Library may incorporate components from the projects listed +below. Microsoft licenses these components under the Microsoft .NET Library +software license terms. The original copyright notices and the licenses under +which Microsoft received such components are set forth below for informational +purposes only. Microsoft reserves all rights not expressly granted herein, +whether by implication, estoppel or otherwise. + +1. .NET Core (https://github.com/dotnet/core/) + +.NET Core +Copyright (c) .NET Foundation and Contributors + +The MIT License (MIT) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/Assets/Packages/System.Diagnostics.Tracing.4.3.0/ThirdPartyNotices.txt.meta b/Assets/Packages/System.Diagnostics.Tracing.4.3.0/ThirdPartyNotices.txt.meta new file mode 100644 index 00000000..1977f6c3 --- /dev/null +++ b/Assets/Packages/System.Diagnostics.Tracing.4.3.0/ThirdPartyNotices.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c620895728b224e4c935e693146fcfbf +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Diagnostics.Tracing.4.3.0/dotnet_library_license.txt b/Assets/Packages/System.Diagnostics.Tracing.4.3.0/dotnet_library_license.txt new file mode 100644 index 00000000..92b6c443 --- /dev/null +++ b/Assets/Packages/System.Diagnostics.Tracing.4.3.0/dotnet_library_license.txt @@ -0,0 +1,128 @@ + +MICROSOFT SOFTWARE LICENSE TERMS + + +MICROSOFT .NET LIBRARY + +These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to the software named above, which includes the media on which you received it, if any. The terms also apply to any Microsoft + +· updates, + +· supplements, + +· Internet-based services, and + +· support services + +for this software, unless other terms accompany those items. If so, those terms apply. + +BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE. + + +IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE PERPETUAL RIGHTS BELOW. + +1. INSTALLATION AND USE RIGHTS. + +a. Installation and Use. You may install and use any number of copies of the software to design, develop and test your programs. + +b. Third Party Programs. The software may include third party programs that Microsoft, not the third party, licenses to you under this agreement. Notices, if any, for the third party program are included for your information only. + +2. ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS. + +a. DISTRIBUTABLE CODE. The software is comprised of Distributable Code. “Distributable Code” is code that you are permitted to distribute in programs you develop if you comply with the terms below. + +i. Right to Use and Distribute. + +· You may copy and distribute the object code form of the software. + +· Third Party Distribution. You may permit distributors of your programs to copy and distribute the Distributable Code as part of those programs. + +ii. Distribution Requirements. For any Distributable Code you distribute, you must + +· add significant primary functionality to it in your programs; + +· require distributors and external end users to agree to terms that protect it at least as much as this agreement; + +· display your valid copyright notice on your programs; and + +· indemnify, defend, and hold harmless Microsoft from any claims, including attorneys’ fees, related to the distribution or use of your programs. + +iii. Distribution Restrictions. You may not + +· alter any copyright, trademark or patent notice in the Distributable Code; + +· use Microsoft’s trademarks in your programs’ names or in a way that suggests your programs come from or are endorsed by Microsoft; + +· include Distributable Code in malicious, deceptive or unlawful programs; or + +· modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that + +· the code be disclosed or distributed in source code form; or + +· others have the right to modify it. + +3. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not + +· work around any technical limitations in the software; + +· reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation; + +· publish the software for others to copy; + +· rent, lease or lend the software; + +· transfer the software or this agreement to any third party; or + +· use the software for commercial software hosting services. + +4. BACKUP COPY. You may make one backup copy of the software. You may use it only to reinstall the software. + +5. DOCUMENTATION. Any person that has valid access to your computer or internal network may copy and use the documentation for your internal, reference purposes. + +6. EXPORT RESTRICTIONS. The software is subject to United States export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and end use. For additional information, see www.microsoft.com/exporting. + +7. SUPPORT SERVICES. Because this software is “as is,” we may not provide support services for it. + +8. ENTIRE AGREEMENT. This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services. + +9. APPLICABLE LAW. + +a. United States. If you acquired the software in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws of the state where you live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort. + +b. Outside the United States. If you acquired the software in any other country, the laws of that country apply. + +10. LEGAL EFFECT. This agreement describes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your rights under the laws of your country if the laws of your country do not permit it to do so. + +11. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS-IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. YOU MAY HAVE ADDITIONAL CONSUMER RIGHTS OR STATUTORY GUARANTEES UNDER YOUR LOCAL LAWS WHICH THIS AGREEMENT CANNOT CHANGE. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + +FOR AUSTRALIA – YOU HAVE STATUTORY GUARANTEES UNDER THE AUSTRALIAN CONSUMER LAW AND NOTHING IN THESE TERMS IS INTENDED TO AFFECT THOSE RIGHTS. + +12. LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES. + +This limitation applies to + +· anything related to the software, services, content (including code) on third party Internet sites, or third party programs; and + +· claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law. + +It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages. + +Please note: As this software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French. + +Remarque : Ce logiciel étant distribué au Québec, Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français. + +EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualité marchande, d’adéquation à un usage particulier et d’absence de contrefaçon sont exclues. + +LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices. + +Cette limitation concerne : + +· tout ce qui est relié au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et + +· les réclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilité stricte, de négligence ou d’une autre faute dans la limite autorisée par la loi en vigueur. + +Elle s’applique également, même si Microsoft connaissait ou devrait connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas l’exclusion ou la limitation de responsabilité pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre égard. + +EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous pourriez avoir d’autres droits prévus par les lois de votre pays. Le présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas. + + diff --git a/Assets/Packages/System.Diagnostics.Tracing.4.3.0/dotnet_library_license.txt.meta b/Assets/Packages/System.Diagnostics.Tracing.4.3.0/dotnet_library_license.txt.meta new file mode 100644 index 00000000..bfcf1e0f --- /dev/null +++ b/Assets/Packages/System.Diagnostics.Tracing.4.3.0/dotnet_library_license.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: cf620679651d4a242b8d037f304d820c +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Diagnostics.Tracing.4.3.0/lib.meta b/Assets/Packages/System.Diagnostics.Tracing.4.3.0/lib.meta new file mode 100644 index 00000000..07c8df96 --- /dev/null +++ b/Assets/Packages/System.Diagnostics.Tracing.4.3.0/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b13fb044e3b4ab84da4321caebe269a1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Diagnostics.Tracing.4.3.0/lib/net462.meta b/Assets/Packages/System.Diagnostics.Tracing.4.3.0/lib/net462.meta new file mode 100644 index 00000000..1c365d9c --- /dev/null +++ b/Assets/Packages/System.Diagnostics.Tracing.4.3.0/lib/net462.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 100325d97f3ae1a44a0aea6a6f221624 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Diagnostics.Tracing.4.3.0/lib/net462/System.Diagnostics.Tracing.dll b/Assets/Packages/System.Diagnostics.Tracing.4.3.0/lib/net462/System.Diagnostics.Tracing.dll new file mode 100644 index 00000000..a1e63a6e Binary files /dev/null and b/Assets/Packages/System.Diagnostics.Tracing.4.3.0/lib/net462/System.Diagnostics.Tracing.dll differ diff --git a/Assets/Packages/System.Diagnostics.Tracing.4.3.0/lib/net462/System.Diagnostics.Tracing.dll.meta b/Assets/Packages/System.Diagnostics.Tracing.4.3.0/lib/net462/System.Diagnostics.Tracing.dll.meta new file mode 100644 index 00000000..5fdec733 --- /dev/null +++ b/Assets/Packages/System.Diagnostics.Tracing.4.3.0/lib/net462/System.Diagnostics.Tracing.dll.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: 6f6f305e0f7482845bba33bd064a5e85 +labels: +- NuGetForUnity +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Un4seen.Bass/Bass.Net.dll b/Assets/Plugins/Un4seen.Bass/Bass.Net.dll deleted file mode 100644 index d03b9381..00000000 Binary files a/Assets/Plugins/Un4seen.Bass/Bass.Net.dll and /dev/null differ diff --git a/Assets/Plugins/Un4seen.Bass/bass.dll b/Assets/Plugins/Un4seen.Bass/bass.dll new file mode 100644 index 00000000..e02c3704 Binary files /dev/null and b/Assets/Plugins/Un4seen.Bass/bass.dll differ diff --git a/Assets/Plugins/Un4seen.Bass/Bass.Net.dll.meta b/Assets/Plugins/Un4seen.Bass/bass.dll.meta similarity index 75% rename from Assets/Plugins/Un4seen.Bass/Bass.Net.dll.meta rename to Assets/Plugins/Un4seen.Bass/bass.dll.meta index 1a390986..e090452a 100644 --- a/Assets/Plugins/Un4seen.Bass/Bass.Net.dll.meta +++ b/Assets/Plugins/Un4seen.Bass/bass.dll.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 5fdaaffb4ff79ea45ad844e1d99442c4 +guid: 8b3e11f0b7138ba4d968f949280bf0e5 PluginImporter: externalObjects: {} serializedVersion: 2 @@ -22,12 +22,6 @@ PluginImporter: enabled: 0 settings: DefaultValueInitialized: true - - first: - Windows Store Apps: WindowsStoreApps - second: - enabled: 0 - settings: - CPU: AnyCPU userData: assetBundleName: assetBundleVariant: diff --git a/Assets/Plugins/Un4seen.Bass/bassasio.dll b/Assets/Plugins/Un4seen.Bass/bassasio.dll new file mode 100644 index 00000000..d6d1e05d Binary files /dev/null and b/Assets/Plugins/Un4seen.Bass/bassasio.dll differ diff --git a/Assets/Plugins/Un4seen.Bass/bassasio.dll.meta b/Assets/Plugins/Un4seen.Bass/bassasio.dll.meta new file mode 100644 index 00000000..ce56b6b5 --- /dev/null +++ b/Assets/Plugins/Un4seen.Bass/bassasio.dll.meta @@ -0,0 +1,27 @@ +fileFormatVersion: 2 +guid: 754d8e3e96ea33541b669101e1e6eacf +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Un4seen.Bass/bassmix.dll b/Assets/Plugins/Un4seen.Bass/bassmix.dll new file mode 100644 index 00000000..e19f75fa Binary files /dev/null and b/Assets/Plugins/Un4seen.Bass/bassmix.dll differ diff --git a/Assets/Plugins/Un4seen.Bass/bassmix.dll.meta b/Assets/Plugins/Un4seen.Bass/bassmix.dll.meta new file mode 100644 index 00000000..bec960e7 --- /dev/null +++ b/Assets/Plugins/Un4seen.Bass/bassmix.dll.meta @@ -0,0 +1,27 @@ +fileFormatVersion: 2 +guid: 3161573b0e7291247842e8675fa7a07b +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/DontDestroy/IO/AudioManager.cs b/Assets/Script/DontDestroy/IO/AudioManager.cs index e1090f4a..8d483caf 100644 --- a/Assets/Script/DontDestroy/IO/AudioManager.cs +++ b/Assets/Script/DontDestroy/IO/AudioManager.cs @@ -10,6 +10,13 @@ using System.Threading.Tasks; using System.Runtime.CompilerServices; using MajdataPlay.Utils; + +using ManagedBass; +using ManagedBass.Wasapi; +using ManagedBass.Mix; +using ManagedBass.Asio; +using UnityEngine.Profiling; + #nullable enable namespace MajdataPlay.IO { @@ -48,8 +55,15 @@ public class AudioManager : MonoBehaviour "DontTouchMe.wav" }; private List SFXSamples = new(); + IWavePlayer? audioOutputDevice = null; - private MixingSampleProvider mixer; + private MixingSampleProvider NAudioGlobalMixer; + + private WasapiProcedure? wasapiProcedure; + private AsioProcedure? asioProcedure; + private WasapiNotifyProcedure? wasapiNotifyProcedure; + private int BassGlobalMixer = -114514; + public bool PlayDebug; private void Awake() { @@ -60,15 +74,13 @@ void Start() { var backend = MajInstances.Setting.Audio.Backend; var sampleRate = MajInstances.Setting.Audio.Samplerate; + var deviceIndex = MajInstances.Setting.Audio.AsioDeviceIndex; if (backend != SoundBackendType.Unity) { - var waveformat = WaveFormat.CreateIeeeFloatWaveFormat(sampleRate, 2); - mixer = new MixingSampleProvider(waveformat); - mixer.ReadFully = true; + var waveformat = NAudio.Wave.WaveFormat.CreateIeeeFloatWaveFormat(sampleRate, 2); + NAudioGlobalMixer = new MixingSampleProvider(waveformat); + NAudioGlobalMixer.ReadFully = true; } - InitSFXSample(SFXFileNames,SFXFilePath); - InitSFXSample(VoiceFileNames,VoiceFilePath); - var deviceIndex = MajInstances.Setting.Audio.AsioDeviceIndex; switch (backend) { case SoundBackendType.Asio: @@ -82,30 +94,63 @@ void Start() var asioOut = new AsioOut(devices[deviceIndex]); print("Starting ASIO...at " + asioOut.DriverName + " as " + sampleRate); audioOutputDevice = asioOut; - audioOutputDevice.Init(mixer); + audioOutputDevice.Init(NAudioGlobalMixer); audioOutputDevice.Play(); } break; + case SoundBackendType.BassAsio: + { + Debug.Log("Bass Init " + Bass.Init(-1, sampleRate, Bass.NoSoundDevice)); + asioProcedure = (input, channel, buffer, length, _) => + { + if (BassGlobalMixer == -114514) + return 0; + //Debug.Log("wasapi get"); + return Bass.ChannelGetData(BassGlobalMixer, buffer, length); + }; + Debug.Log("Asio Init " + BassAsio.Init(deviceIndex, AsioInitFlags.Thread)); + BassGlobalMixer = BassMix.CreateMixerStream(44100, 2, BassFlags.MixerNonStop | BassFlags.Decode | BassFlags.Float); + Bass.ChannelSetAttribute(BassGlobalMixer, ChannelAttribute.Buffer, 0); + BassAsio.ChannelEnable(false, 0, asioProcedure); + BassAsio.Start(); + } + break; case SoundBackendType.WaveOut: { print("Starting WaveOut... with " + sampleRate); var waveOut = new WaveOutEvent(); waveOut.NumberOfBuffers = 12; audioOutputDevice = waveOut; - audioOutputDevice.Init(mixer, false); + audioOutputDevice.Init(NAudioGlobalMixer, false); audioOutputDevice.Play(); } break; case SoundBackendType.Wasapi: { - print("Starting Wasapi... with " + sampleRate); - var wasapi = new WasapiOut(AudioClientShareMode.Shared, 0); - wasapi.Init(mixer); - audioOutputDevice = wasapi; - audioOutputDevice.Play(); + //Bass.Init(-1, sampleRate); + Debug.Log("Bass Init " + Bass.Init(-1, sampleRate,Bass.NoSoundDevice)); + + wasapiProcedure = (buffer, length, _) => + { + if (BassGlobalMixer == -114514) + return 0; + //Debug.Log("wasapi get"); + return Bass.ChannelGetData(BassGlobalMixer, buffer, length); + }; + + Debug.Log("Wasapi Init " + BassWasapi.Init(-1, Procedure: wasapiProcedure, Buffer: 0f, Period: 0f)); + BassWasapi.GetInfo(out var wasapiInfo); + BassGlobalMixer = BassMix.CreateMixerStream(wasapiInfo.Frequency, wasapiInfo.Channels, BassFlags.MixerNonStop | BassFlags.Decode | BassFlags.Float); + Bass.ChannelSetAttribute(BassGlobalMixer, ChannelAttribute.Buffer, 0); + BassWasapi.Start(); } break; } + InitSFXSample(SFXFileNames,SFXFilePath); + InitSFXSample(VoiceFileNames,VoiceFilePath); + + Debug.Log(Bass.LastError); + if (PlayDebug) MajInstances.InputManager.BindAnyArea(OnAnyAreaDown); ReadVolumeFromSettings(); @@ -127,12 +172,15 @@ void InitSFXSample(string[] fileNameList,string rootPath) case SoundBackendType.Unity: SFXSamples.Add(UnityAudioSample.ReadFromFile($"file://{path}", gameObject)); break; - case SoundBackendType.Wasapi: case SoundBackendType.WaveOut: case SoundBackendType.Asio: - var provider = new CachedSampleProvider(new CachedSound(path), mixer); + var provider = new CachedSampleProvider(new CachedSound(path), NAudioGlobalMixer); SFXSamples.Add(new NAudioAudioSample(provider)); break; + case SoundBackendType.BassAsio: + case SoundBackendType.Wasapi: + SFXSamples.Add(new BassAudioSample(path,BassGlobalMixer)); + break; } } } @@ -153,6 +201,22 @@ private void OnDestroy() audioOutputDevice.Stop(); audioOutputDevice.Dispose(); } + if(MajInstances.Setting.Audio.Backend == SoundBackendType.Wasapi + || MajInstances.Setting.Audio.Backend == SoundBackendType.BassAsio) + { + foreach (var sample in SFXSamples) + { + if(sample is not null) + sample.Dispose(); + } + Bass.StreamFree(BassGlobalMixer); + BassAsio.Stop(); + BassAsio.Free(); + BassWasapi.Stop(); + BassWasapi.Free(); + Bass.Stop(); + Bass.Free(); + } } public void ReadVolumeFromSettings() @@ -192,8 +256,11 @@ public void ReadVolumeFromSettings() { case SoundBackendType.Unity: return UnityAudioSample.ReadFromFile($"file://{path}", gameObject); + case SoundBackendType.BassAsio: + case SoundBackendType.Wasapi: + return new BassAudioSample(path, BassGlobalMixer); default: - var provider = new UncachedSampleProvider(path, mixer); + var provider = new UncachedSampleProvider(path, NAudioGlobalMixer); return new NAudioAudioSample(provider); } } @@ -214,9 +281,12 @@ public void ReadVolumeFromSettings() case SoundBackendType.Unity: await UniTask.SwitchToMainThread(); return await UnityAudioSample.ReadFromFileAsync($"file://{path}", gameObject); + case SoundBackendType.BassAsio: + case SoundBackendType.Wasapi: + return new BassAudioSample(path, BassGlobalMixer); default: //var provider = new CachedSampleProvider(new CachedSound(path), mixer); - var provider = new UncachedSampleProvider(path,mixer); + var provider = new UncachedSampleProvider(path,NAudioGlobalMixer); return new NAudioAudioSample(provider); } } @@ -256,14 +326,21 @@ public void StopSFX(in SFXSampleType sfxType) { var psp = SFXSamples[(int)sfxType]; if (psp is not null) - psp.Pause(); + psp.Stop(); else Debug.LogError("No such SFX"); } public void OpenAsioPannel() { - if(audioOutputDevice is AsioOut asioOut) - asioOut.ShowControlPanel(); + if (MajInstances.Setting.Audio.Backend == SoundBackendType.Asio) + { + if (audioOutputDevice is AsioOut asioOut) + asioOut.ShowControlPanel(); + } + if(MajInstances.Setting.Audio.Backend == SoundBackendType.BassAsio) + { + BassAsio.ControlPanel(); + } } } } \ No newline at end of file diff --git a/Assets/Script/Misc/Types/DataFormats/GameSetting.cs b/Assets/Script/Misc/Types/DataFormats/GameSetting.cs index a5347284..088b9b26 100644 --- a/Assets/Script/Misc/Types/DataFormats/GameSetting.cs +++ b/Assets/Script/Misc/Types/DataFormats/GameSetting.cs @@ -55,7 +55,7 @@ public class SoundOptions public int Samplerate { get; set; } = 44100; public int AsioDeviceIndex { get; set; } = 0; public SFXVolume Volume { get; set; } = new(); - public SoundBackendType Backend { get; set; } = SoundBackendType.Unity; + public SoundBackendType Backend { get; set; } = SoundBackendType.Wasapi; } public class SFXVolume { @@ -87,9 +87,9 @@ public class ApiEndpoint public class DebugOptions { public bool DisplaySensor { get; set; } = false; - public bool DisplayFPS { get; set; } = false; + public bool DisplayFPS { get; set; } = true; public bool FullScreen { get; set; } = true; - public bool TryFixAudioSync { get; set; } = true; + public bool TryFixAudioSync { get; set; } = false; public float NoteAppearRate { get; set; } = 0.36f; public bool DisableGCInGameing { get; set; } = true; } diff --git a/Assets/Script/Misc/Types/Enums.cs b/Assets/Script/Misc/Types/Enums.cs index 093c79ba..0a2c1ba7 100644 --- a/Assets/Script/Misc/Types/Enums.cs +++ b/Assets/Script/Misc/Types/Enums.cs @@ -118,7 +118,7 @@ public enum ChartLevel } public enum SoundBackendType { - WaveOut, Asio, Unity, Wasapi, DirectSound + WaveOut, Asio, Unity, Wasapi, BassAsio } public enum JudgeMode { diff --git a/Assets/Script/Misc/Types/IO/Audio/BassAudioSample.cs b/Assets/Script/Misc/Types/IO/Audio/BassAudioSample.cs new file mode 100644 index 00000000..c2a0fc06 --- /dev/null +++ b/Assets/Script/Misc/Types/IO/Audio/BassAudioSample.cs @@ -0,0 +1,100 @@ +using Cysharp.Threading.Tasks; +using MajdataPlay.Extensions; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UnityEngine.Networking; +using UnityEngine; +using ManagedBass; +using NAudio.Wave.Compression; +using static UnityEngine.Rendering.VirtualTexturing.Debugging; +using Unity.Collections.LowLevel.Unsafe; +using ManagedBass.Mix; +using ManagedBass.Wasapi; + +namespace MajdataPlay.IO +{ + public class BassAudioSample : AudioSampleWrap + { + private int stream; + private double length; + private int resampler; + public override bool IsLoop + { + get + { + return Bass.ChannelHasFlag(stream, BassFlags.Loop); + } + set + { + if (value) + { + if (!Bass.ChannelHasFlag(stream, BassFlags.Loop)) + Bass.ChannelAddFlag(stream, BassFlags.Loop); + }else + { + if (Bass.ChannelHasFlag(stream, BassFlags.Loop)) + Bass.ChannelRemoveFlag(stream, BassFlags.Loop); + } + } + } + public override double CurrentSec + { + get => Bass.ChannelBytes2Seconds(stream, Bass.ChannelGetPosition(stream)); + set => Bass.ChannelSetPosition(stream,Bass.ChannelSeconds2Bytes(stream,value)); + } + public override float Volume + { + get => (float)Bass.ChannelGetAttribute(stream, ChannelAttribute.Volume); + set => Bass.ChannelSetAttribute(stream, ChannelAttribute.Volume, value.Clamp(0, 1)) ; + } + public override TimeSpan Length => TimeSpan.FromSeconds(length); + public override bool IsPlaying => Bass.ChannelIsActive(stream) == PlaybackState.Playing; + public BassAudioSample(string path , int globalMixer) + { + stream = Bass.CreateStream(path,0,0, BassFlags.Prescan); + Debug.Log(Bass.LastError); + Bass.ChannelSetAttribute(stream,ChannelAttribute.Buffer,0); + + var decode = Bass.CreateStream(path, 0, 0, BassFlags.Decode); + length = Bass.ChannelBytes2Seconds(decode, + Bass.ChannelGetLength(decode)); + Bass.StreamFree(decode); + + var reqfreq = (int)Bass.ChannelGetAttribute(globalMixer, ChannelAttribute.Frequency); + resampler = BassMix.CreateMixerStream(reqfreq,2 , BassFlags.MixerNonStop | BassFlags.Decode | BassFlags.Float); + Bass.ChannelSetAttribute(resampler, ChannelAttribute.Buffer, 0); + BassMix.MixerAddChannel(stream, resampler, BassFlags.Default); + Debug.Log("Mixer Add Channel" + path + BassMix.MixerAddChannel(globalMixer, resampler, BassFlags.Default)); + } + ~BassAudioSample() => Dispose(); + + public override void PlayOneShot() + { + Bass.ChannelPlay(stream,true); + } + public override void SetVolume(float volume) => Volume = volume; + public override void Play() + { + Bass.ChannelPlay(stream); + } + public override void Pause() + { + Bass.ChannelPause(stream); + } + public override void Stop() + { + Bass.ChannelStop(stream); + Bass.ChannelSetPosition(stream, 0); + } + public override void Dispose() + { + BassMix.MixerRemoveChannel(resampler); + BassMix.MixerRemoveChannel(stream); + Bass.ChannelStop(stream); + Bass.StreamFree(stream); + } + } +} diff --git a/Assets/Script/Misc/Types/IO/Audio/BassAudioSample.cs.meta b/Assets/Script/Misc/Types/IO/Audio/BassAudioSample.cs.meta new file mode 100644 index 00000000..601edd8d --- /dev/null +++ b/Assets/Script/Misc/Types/IO/Audio/BassAudioSample.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0c7a74f5d57769d40a51f67eb48c6005 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/packages.config b/Assets/packages.config index a849da03..aad6b9d9 100644 --- a/Assets/packages.config +++ b/Assets/packages.config @@ -1,15 +1,23 @@  + + + + + + + + diff --git a/README.md b/README.md index 106dc54e..4da2224e 100644 --- a/README.md +++ b/README.md @@ -6,19 +6,17 @@ ## How to use -By default, the app use unity audio, this provide somehow acceptable latency. - -However, for best performance, you will need an asio driver. [ASIO4ALL](https://asio4all.org/about/download-asio4all/) is a common choice. - -If you encounter desync issues, try to tweak the sound control pannel: Turn off all audio enhancements and allow exclusive control. - For the big iPod, you need to ensure the touch sensors are connected to COM3, and the lights are connected to COM21. Put your songs folder in `MaiCharts\` folder, and you are good to go. You will need to group your songs by folder. +If you are not satisfied with audio latency, you can use an asio driver. [ASIO4ALL](https://asio4all.org/about/download-asio4all/) is a common choice. + +If you encounter desync issues, try to tweak the sound control pannel: Turn off all audio enhancements and allow exclusive control. + ## Online Charts -Fill in the api endpoint for downloading charts online. More online functions comming soon. +The api endpoints fills in by default now. If you have majnet account, you can login by modify `setting.json` to enable chart reaction. ## Adjusting settings @@ -31,80 +29,89 @@ You can use the in-game UI for most settings now. "Game": { "TapSpeed": 7.5, "TouchSpeed": 7.5, - "SlideFadeInOffset": 0, // in seconds. this will advance or delay the timing of the Slide fade-in. + is delay - "BackgroundDim": 0.800000012, // 0-1 bigger dimmer - "StarRotation": false, - "BGInfo": "Combo" // what the center will display in game - // options: - // Combo - // PCombo - // CPCombo - // Achievement_101 - // Achievement_100 - // Achievement - // AchievementClassical - // AchievementClassical_100 - // DXScore - // DXScoreRank - // S_Board - // SS_Board - // SSS_Board - // MyBest - // Diff - // None + "SlideFadeInOffset": 0, // in seconds. this will advance or delay the timing of the Slide fade-in. + is delay + "BackgroundDim": 0.8, + "StarRotation": true, + "Language": "ja-JP - Majdata", + "BGInfo": "Combo" }, "Judge": { - "AudioOffset": 0, // in seconds. + is late. same as &first - "JudgeOffset": 0, // in seconds. + is late. influence judge - "Mode": "Modern" // judge mode, options: "Modern" or "Classic" + "AudioOffset": 0, + "JudgeOffset": 0, + "Mode": "Modern" }, "Display": { - "Skin": "default", // the subdirectory name under "Skins" + "Skin": "default", "DisplayCriticalPerfect": false, - "FastLateType": "Disable", // options: All, BelowCP, BelowP, BelowGR, Disable - "NoteJudgeType": "All", // ditto - "TouchJudgeType": "All", // ditto - "SlideJudgeType": "All", // ditto - "OuterJudgeDistance": 1, // adjust the value to control where the judge result is displayed - // options: 1 - 0 - // influence: Tap, Hold, Star, Break - "InnerJudgeDistance": 1, // adjust the value to control where the judge result is displayed - // options: 1 - 0 - // influence: Touch, TouchHold - "Resolution": "Auto" // Screen Resolution - // format: "width x height" or "Auto" - // e.g. "1080x1920" - }, + "FastLateType": "Disable", + "NoteJudgeType": "All", + "TouchJudgeType": "All", + "SlideJudgeType": "All", + "BreakJudgeType": "All", + "BreakFastLateType": "Disable", + "SlideSortOrder": "Modern", + "OuterJudgeDistance": 1, + "InnerJudgeDistance": 1, + "Resolution": "Auto" + }, "Audio": { - "Samplerate": 44100, // Dont touch this if you dont know what does it mean - "AsioDeviceIndex": 0, // If you have multiple ASIO devices you can choose them here + "Samplerate": 44100, + "AsioDeviceIndex": 0, + //Select your ASIO sound card here "Volume": { - "Anwser": 0.800000012, + "Answer": 0.8, "BGM": 1, - "Judge": 0.300000012, - "Slide": 0.300000012, - "Break": 0.300000012, - "Touch": 0.300000012, + "Tap": 0.3, + "Slide": 0.3, + "Break": 0.3, + "Touch": 0.3, "Voice": 1 }, - "Backend": "Asio" // WaveOut(High Latency), Asio(Low Latency, Driver needed), Unity(Unity Classic, FMod i think?) + "Backend": "Wasapi" + //"WaveOut" (NAudio), "Asio" (NAudio), "Unity", "Wasapi" (Bass), "BassAsio" (Bass) }, "Debug": { - "DisplaySensor": false, // this will display sensor feedback - "DisplayFPS": true, // this will display FPS at the top right of the screen - "FullScreen": true, // MajdataPlay will be windowed if this option is false - "TryFixAudioSync": true, - "NoteAppearRate": 0.360000014 + "DisplaySensor": false, + "DisplayFPS": true, + "FullScreen": true, + "TryFixAudioSync": false, + "NoteAppearRate": 0.36, + //Important! this affects the note fade in speed before it drops!! + "DisableGCInGameing": true + }, + "Online": { + "Enable": false, + "ApiEndpoints": [ + { + "Name": "Majnet", + "Url": "https://majdata.net/api3/api", + "Username": "YourUsername", + "Password": "YourPassword" + }, + { + "Name": "Contest", + "Url": "https://majdata.net/api1/api", + "Username": null, + "Password": null + } + ] }, - "SelectedIndex": 0, // dont touch it - "SelectedDiff": "Easy" // dont touch it + "Misc": { + "SelectedIndex": 0, + "SelectedDir": 0, + "SelectedDiff": "Easy", + "OrderBy": { + "Keyword": "", + "SortBy": "Default" + } + } } ``` ## Keybindings * Buttons: QWEDCXZA -* Exit Song: * (One of the side button on your big iPod) +* Exit Song: Num* (One of the side button on your big iPod) ## Custom Adjusting @@ -124,7 +131,7 @@ Note this is project is still in a very early stage. Feel free if you wanna part Please report problems to issues page. -The log files should be in `C:\Users\YOUR_USERNAME\AppData\LocalLow\bbben\MajdataPlay\Player.log` +The log files should be in `MajPlayRuntime.log` ## Note