protected virtual void Dispose(bool disposing)
		{
			if (!disposed)
			{
				if (disposing)
				{
					if (drivers != null)
					{
						drivers.Dispose();
						drivers = null;
					}
					
					if (recordDrivers != null)
					{
						recordDrivers.Dispose();
						recordDrivers = null;
					}
					
					if (masterChannelGroup != null)
					{
						masterChannelGroup.Dispose();
						masterChannelGroup = null;
					}
					
					if (dspHead != null)
					{
						dspHead.Dispose();
						dspHead = null;
					}
				}
				
				if (handle != IntPtr.Zero)
				{
					NativeMethods.FMOD_System_Release(handle);
					handle = IntPtr.Zero;
				}
			}
			disposed = true;
		}
		public ChannelGroup CreateChannelGroup(string name)
		{
			currentResult = Result.Ok;
			IntPtr channelGroupHandle = new IntPtr();
			ChannelGroup channelGroup = null;

			try
			{
				currentResult = NativeMethods.FMOD_System_CreateChannelGroup(handle, name, ref channelGroupHandle);
			}
			catch (System.Runtime.InteropServices.ExternalException)
			{
				currentResult = Result.InvalidParameterError;
			}
			
			if (currentResult == Result.Ok)
			{			
				channelGroup = new ChannelGroup();
				channelGroup.Handle = channelGroupHandle;				
			}

			return channelGroup;
		}