public RESULT getRealEvent(ref Event realevent)
		{
			RESULT result = RESULT.OK;
			IntPtr eventraw = new IntPtr();

			try
			{
				result = FMOD_EventQueueEntry_GetRealEvent(eventqueueentryraw, ref eventraw);
			}
			catch
			{
				result = RESULT.ERR_INVALID_PARAM;
			}
			if (result != RESULT.OK)
			{
				return result;
			}

			if (realevent == null)
			{
				Event eventnew = new Event();
				eventnew.setRaw(eventraw);
				realevent = eventnew;
			}
			else
			{
				realevent.setRaw(eventraw);
			}

			return result;
		}
		public RESULT getEvent(string name, EVENT_MODE mode, ref Event _event)
		{
			RESULT result = RESULT.OK;
			IntPtr eventraw = new IntPtr();
			Event eventnew = null;

			try
			{
				result = FMOD_EventGroup_GetEvent(eventgroupraw, name, mode, ref eventraw);
			}
			catch
			{
				result = RESULT.ERR_INVALID_PARAM;
			}
			if (result != RESULT.OK)
			{
				return result;
			}

			if (_event == null)
			{
				eventnew = new Event();
				eventnew.setRaw(eventraw);
				_event = eventnew;
			}
			else
			{
				_event.setRaw(eventraw);
			}

			return result;
		}
		public RESULT getEventByIndex(int index, EVENT_MODE mode, ref Event _event)
		{
			RESULT result = RESULT.OK;
			IntPtr eventraw = new IntPtr();
			Event eventnew = null;

			try
			{
				result = FMOD_EventCategory_GetEventByIndex(eventcategoryraw, index, mode, ref eventraw);
			}
			catch
			{
				result = RESULT.ERR_INVALID_PARAM;
			}
			if (result != RESULT.OK)
			{
				return result;
			}

			if (_event == null)
			{
				eventnew = new Event();
				eventnew.setRaw(eventraw);
				_event = eventnew;
			}
			else
			{
				_event.setRaw(eventraw);
			}

			return result;
		}
		public RESULT freeEventData(Event _event, bool waituntilready)
		{
			return FMOD_EventGroup_FreeEventData(eventgroupraw, _event.getRaw(), waituntilready ? 1 : 0);
		}
		public RESULT freeEventData(Event _event)
		{
			return FMOD_EventGroup_FreeEventData(eventgroupraw, _event.getRaw(), 1);
		}
		public RESULT getEventByProjectID(uint projectid, EVENT_MODE mode, ref Event _event)
		{
			RESULT result = RESULT.OK;
			IntPtr eventraw = new IntPtr();
			Event eventnew = null;

			try
			{
				result = FMOD_EventProject_GetEventByProjectID(eventprojectraw, projectid, mode, ref eventraw);
			}
			catch
			{
				result = RESULT.ERR_INVALID_PARAM;
			}
			if (result != RESULT.OK)
			{
				return result;
			}

			if (_event == null)
			{
				eventnew = new Event();
				eventnew.setRaw(eventraw);
				_event = eventnew;
			}
			else
			{
				_event.setRaw(eventraw);
			}

			return result;
		}
		public RESULT createEventQueueEntry(Event _event, ref EventQueueEntry entry)
		{
			RESULT result = RESULT.OK;
			IntPtr entryraw = new IntPtr();

			try
			{
				result = FMOD_EventSystem_CreateEventQueueEntry(eventsystemraw, _event.getRaw(), ref entryraw);
			}
			catch
			{
				result = RESULT.ERR_INVALID_PARAM;
			}
			if (result != RESULT.OK)
			{
				return result;
			}

			if (entry == null)
			{
				EventQueueEntry entrynew = new EventQueueEntry();
				entrynew.setRaw(entryraw);
				entry = entrynew;
			}
			else
			{
				entry.setRaw(entryraw);
			}

			return result;
		}
		public RESULT getEventByGUIDString(string guid, EVENT_MODE mode, ref Event _event)
		{
			RESULT result = RESULT.OK;
			IntPtr eventraw = new IntPtr();
			Event eventnew = null;

			try
			{
				result = FMOD_EventSystem_GetEventByGUIDString(eventsystemraw, guid, mode, ref eventraw);
			}
			catch
			{
				result = RESULT.ERR_INVALID_PARAM;
			}
			if (result != RESULT.OK)
			{
				return result;
			}

			if (_event == null)
			{
				eventnew = new Event();
				eventnew.setRaw(eventraw);
				_event = eventnew;
			}
			else
			{
				_event.setRaw(eventraw);
			}

			return result;
		}