/*
* Created on Jun 25, 2007 Copyright (C) 2001-2007, Anthony Harrison
* anh23@pitt.edu (jactr.org) This library is free software; you can
* redistribute it and/or modify it under the terms of the GNU Lesser General
* Public License as published by the Free Software Foundation; either version
* 2.1 of the License, or (at your option) any later version. This library is
* distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details. You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.jactr.modules.pm.aural;
import java.util.concurrent.Future;
import org.jactr.core.buffer.IActivationBuffer;
import org.jactr.core.chunk.IChunk;
import org.jactr.core.chunktype.IChunkType;
import org.jactr.core.production.request.ChunkTypeRequest;
import org.jactr.modules.pm.IPerceptualModule;
import org.jactr.modules.pm.aural.audicon.IAudicon;
import org.jactr.modules.pm.aural.buffer.IAuralActivationBuffer;
import org.jactr.modules.pm.aural.buffer.IAuralLocationBuffer;
/**
* @author developer
*/
public interface IAuralModule extends IPerceptualModule
{
static public final String CLEAR_CHUNK_TYPE = "clear";
static public final String AUDIO_EVENT_CHUNK_TYPE = "audio-event";
static public final String SOUND_CHUNK_TYPE = "sound";
static public final String DIGIT_CHUNK_TYPE = "digit";
static public final String WORD_CHUNK_TYPE = "word";
static public final String SPEECH_CHUNK_TYPE = "speech";
static public final String TONE_CHUNK_TYPE = "tone";
static public final String EXTERNAL_CHUNK = "external";
static public final String INTERNAL_CHUNK = "internal";
static public final String DURATION_SLOT = "duration";
static public final String KIND_SLOT = "kind";
static public final String LOCATION_SLOT = "location";
static public final String ONSET_SLOT = "onset";
static public final String OFFSET_SLOT = "offset";
static public final String PITCH_SLOT = "pitch";
static public final String AZIMUTH_SLOT = "azimuth";
static public final String ELEVATION_SLOT = "elevation";
static public final String CONTENT_SLOT = "content";
static public final String EVENT_SLOT = "event";
static public final String ATTENDED_STATUS_SLOT = ":attended";
static public final String AURAL_LOCATION_BUFFER = IActivationBuffer.AURAL_LOCATION;
static public final String AURAL_BUFFER = IActivationBuffer.AURAL;
public IAuralLocationBuffer getAuralLocationBuffer();
public IAuralActivationBuffer getAuralBuffer();
public IAuralEncodingTimeEquation getEncodingTimeEquation();
/**
* return the audicon that is actually responsible for tracking and updating
* of auditory feature maps
*
* @return
*/
public IAudicon getAudicon();
/**
* how long does a sound take to decay out of the audicon
*
* @return
*/
public double getAuralDecayTime();
public void setAuralDecayTime(double time);
/**
* reset the auditory sysyem
*/
public void reset();
public IChunkType getClearChunkType();
public IChunkType getSoundChunkType();
public IChunkType getAudioEventChunkType();
public IChunk getLowestChunk();
public IChunk getHighestChunk();
public IChunk getInternalChunk();
public IChunk getExternalChunk();
/**
* scan the audicon for an audio-event that matches the provided pattern
*
* @param request
* @return
*/
public Future<IChunk> scanAuditoryField(ChunkTypeRequest request,
double requestTime, boolean isStuffRequest);
/**
* encode the sound represented by audioEvent
*
* @param audioEvent
* @return
*/
public Future<IChunk> encodeAuditoryChunkAt(IChunk audioEvent,
double requestTime);
}