/******************************************************************************* | |
* Copyright 2011 See AUTHORS file. | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
******************************************************************************/ | |
package com.badlogic.gdx; | |
import com.badlogic.gdx.audio.AudioDevice; | |
import com.badlogic.gdx.audio.AudioRecorder; | |
import com.badlogic.gdx.audio.Music; | |
import com.badlogic.gdx.audio.Sound; | |
import com.badlogic.gdx.files.FileHandle; | |
import com.badlogic.gdx.utils.GdxRuntimeException; | |
/** This interface encapsulates the creation and management of audio resources. It allows you to get direct access to the audio | |
* hardware via the {@link AudioDevice} and {@link AudioRecorder} interfaces, create sound effects via the {@link Sound} interface | |
* and play music streams via the {@link Music} interface. | |
* | |
* <p> | |
* All resources created via this interface have to be disposed as soon as they are no longer used. | |
* </p> | |
* | |
* <p> | |
* Note that all {@link Music} instances will be automatically paused when the {@link ApplicationListener#pause()} method is | |
* called, and automatically resumed when the {@link ApplicationListener#resume()} method is called. | |
* </p> | |
* | |
* @author mzechner */ | |
public interface Audio { | |
/** Creates a new {@link AudioDevice} either in mono or stereo mode. The AudioDevice has to be disposed via its | |
* {@link AudioDevice#dispose()} method when it is no longer used. | |
* | |
* @param samplingRate the sampling rate. | |
* @param isMono whether the AudioDevice should be in mono or stereo mode | |
* @return the AudioDevice | |
* | |
* @throws GdxRuntimeException in case the device could not be created */ | |
public AudioDevice newAudioDevice (int samplingRate, boolean isMono); | |
/** Creates a new {@link AudioRecorder}. The AudioRecorder has to be disposed after it is no longer used. | |
* | |
* @param samplingRate the sampling rate in Hertz | |
* @param isMono whether the recorder records in mono or stereo | |
* @return the AudioRecorder | |
* | |
* @throws GdxRuntimeException in case the recorder could not be created */ | |
public AudioRecorder newAudioRecorder (int samplingRate, boolean isMono); | |
/** <p> | |
* Creates a new {@link Sound} which is used to play back audio effects such as gun shots or explosions. The Sound's audio data | |
* is retrieved from the file specified via the {@link FileHandle}. Note that the complete audio data is loaded into RAM. You | |
* should therefore not load big audio files with this methods. The current upper limit for decoded audio is 1 MB. | |
* </p> | |
* | |
* <p> | |
* Currently supported formats are WAV, MP3 and OGG. | |
* </p> | |
* | |
* <p> | |
* The Sound has to be disposed if it is no longer used via the {@link Sound#dispose()} method. | |
* </p> | |
* | |
* @return the new Sound | |
* @throws GdxRuntimeException in case the sound could not be loaded */ | |
public Sound newSound (FileHandle fileHandle); | |
/** Creates a new {@link Music} instance which is used to play back a music stream from a file. Currently supported formats are | |
* WAV, MP3 and OGG. The Music instance has to be disposed if it is no longer used via the {@link Music#dispose()} method. | |
* Music instances are automatically paused when {@link ApplicationListener#pause()} is called and resumed when | |
* {@link ApplicationListener#resume()} is called. | |
* | |
* @param file the FileHandle | |
* @return the new Music or null if the Music could not be loaded | |
* @throws GdxRuntimeException in case the music could not be loaded */ | |
public Music newMusic (FileHandle file); | |
} |