commit 28/07/2025
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
import audio.AudioPlayer
|
import audio.AudioPlayer
|
||||||
|
import content.ContentCache
|
||||||
import org.tinylog.Logger
|
import org.tinylog.Logger
|
||||||
|
|
||||||
|
|
||||||
@@ -7,5 +8,6 @@ fun main() {
|
|||||||
Logger.info("Application started" as Any)
|
Logger.info("Application started" as Any)
|
||||||
val audioPlayer = AudioPlayer(44100) // 44100 Hz sampling rate
|
val audioPlayer = AudioPlayer(44100) // 44100 Hz sampling rate
|
||||||
audioPlayer.InitAudio(1)
|
audioPlayer.InitAudio(1)
|
||||||
|
val content = ContentCache()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
15
src/content/Category.kt
Normal file
15
src/content/Category.kt
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
package content
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
enum class Category(name: String) {
|
||||||
|
AirlineCode("Airline_Code"),
|
||||||
|
AirplaneName("Airplane_Name"),
|
||||||
|
AlphabetNumeric("AlphabetNumeric"),
|
||||||
|
City("City"),
|
||||||
|
Phrase("Phrase"),
|
||||||
|
Places("Places"),
|
||||||
|
PlatNomor("PlatNomor"),
|
||||||
|
Shalat("Shalat"),
|
||||||
|
Year("Year"),
|
||||||
|
Birthday("Birthday");
|
||||||
|
}
|
||||||
44
src/content/ContentCache.kt
Normal file
44
src/content/ContentCache.kt
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
package content
|
||||||
|
|
||||||
|
import audio.AudioFileInfo
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class to manage loaded content in the application.
|
||||||
|
* This class provides methods to retrieve and add soundbank data based on specific criteria.
|
||||||
|
*/
|
||||||
|
@Suppress("unused")
|
||||||
|
class ContentCache {
|
||||||
|
val contentList = ArrayList<SoundbankData>()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the specified SoundbankData from tag, category, language, and voiceType.
|
||||||
|
* @return SoundbankData if found, null otherwise.
|
||||||
|
*/
|
||||||
|
fun Get(tag: String, category: Category, language: Language, voiceType: VoiceType): SoundbankData? {
|
||||||
|
|
||||||
|
return contentList.find { it ->
|
||||||
|
it.TAG == tag &&
|
||||||
|
it.Category == category &&
|
||||||
|
it.Language == language &&
|
||||||
|
it.VoiceType == voiceType &&
|
||||||
|
it.audio.isValid()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a new soundbank to the content list if it does not already exist.
|
||||||
|
*
|
||||||
|
* @param tag The unique identifier for the soundbank.
|
||||||
|
* @param category The category of the soundbank.
|
||||||
|
* @param language The language of the soundbank.
|
||||||
|
* @param voiceType The voice type of the soundbank.
|
||||||
|
* @param audio The audio file information for the soundbank.
|
||||||
|
* @return True if the soundbank was added, false if it already exists.
|
||||||
|
*/
|
||||||
|
fun Add(tag: String, category: Category, language: Language, voiceType: VoiceType, audio: AudioFileInfo): Boolean {
|
||||||
|
val existing = Get(tag, category, language, voiceType)
|
||||||
|
if (existing!=null) return false
|
||||||
|
contentList.add(SoundbankData(tag, category, language, voiceType, audio))
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
16
src/content/Language.kt
Normal file
16
src/content/Language.kt
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
package content
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enum class representing different languages.
|
||||||
|
*
|
||||||
|
* @property name The name of the language, as in Soundbank Database
|
||||||
|
*/
|
||||||
|
@Suppress("unused")
|
||||||
|
enum class Language(name: String) {
|
||||||
|
Indonesia("INDONESIA"),
|
||||||
|
English("ENGLISH"),
|
||||||
|
Local("LOCAL"),
|
||||||
|
Japanese("JAPANESE"),
|
||||||
|
Chinese("CHINESE"),
|
||||||
|
Arabic("ARABIC"),;
|
||||||
|
}
|
||||||
6
src/content/SoundbankData.kt
Normal file
6
src/content/SoundbankData.kt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
package content
|
||||||
|
|
||||||
|
import audio.AudioFileInfo
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
data class SoundbankData(val TAG: String, val Category: Category, val Language: Language, val VoiceType: VoiceType, val audio: AudioFileInfo)
|
||||||
13
src/content/VoiceType.kt
Normal file
13
src/content/VoiceType.kt
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
package content
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enum class representing different voice types.
|
||||||
|
*
|
||||||
|
* @property voicename The name of the voice type.
|
||||||
|
*/
|
||||||
|
@Suppress("unused")
|
||||||
|
enum class VoiceType(voicename: String) {
|
||||||
|
Voice1("VOICE_1"),
|
||||||
|
Voice2("VOICE_2"),
|
||||||
|
Voice3("VOICE_3");
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user